How to use `kubeconfig` to experience OpenYurt capabilities

这份文档将介绍如何使用体验中心中提供的 kubeconfig 体验 OpenYurt 的单元化部署能力。

本地配置 kubeconfig

用户需要在本地配置 kubeconfig 后,才能通过kubectl管理集群。

  1. 在“集群信息”页面下“连接信息”tab 里复制kubeconfig信息

How to use `kubeconfig` to experience OpenYurt capabilities - 图1

  1. 将复制的kubeconfig信息保存到本地~/.kube/config文件下

How to use `kubeconfig` to experience OpenYurt capabilities - 图2

  1. 如果配置无误,就可以使用kubectl来管理集群了

How to use `kubeconfig` to experience OpenYurt capabilities - 图3

体验 OpenYurt 的单元化部署功能

OpenYurt 针对边缘计算场景,允许用户将工作负载分组到分布在不同地理位置的不同单元中。下面通过一个简单的场景来体验 OpenYurt 的单元化部署能力。

现在有两个边缘端的节点 node1 与 node2 分布在不同的位置(比如 node1 在杭州,node2 在上海),我们希望部署应用到杭州的节点,而不要部署到上海的节点。OpenYurt 通过NodePoolYurtAppSet (previous UnitedDeployment)两种资源来实现这个能力。

  1. 假设我们已经在 OpenYurt 集群中接入了两个节点 node1 与 node2。(不知道如何接入节点?请参照文档:如何使用 web_console

How to use `kubeconfig` to experience OpenYurt capabilities - 图4

  1. 在配置好kubeconfig的本地通过命令行工具kubectl中创建 NodePool 资源,并将 node1 加入其中该 NodePool。
  1. # 创建nodepool hangzhou
  2. cat <<EOF | kubectl apply -f -
  3. apiVersion: apps.openyurt.io/v1alpha1
  4. kind: NodePool
  5. metadata:
  6. name: hangzhou
  7. spec:
  8. type: Edge
  9. EOF
  10. # 将node1节点加入nodepool
  11. kubectl label node node1 apps.openyurt.io/desired-nodepool=hangzhou
  12. # 获取nodepool
  13. kubectl get nodepool

How to use `kubeconfig` to experience OpenYurt capabilities - 图5

此时在控制台界面中也可以看到对应的节点池 NodePool 信息。 How to use `kubeconfig` to experience OpenYurt capabilities - 图6

  1. 通过kubectl创建 Workload 资源,通过 YurtAppSet 只把应用部署到 hangzhou 的节点池中。
  1. # 单元化部署pod
  2. cat <<EOF | kubectl apply -f -
  3. apiVersion: apps.openyurt.io/v1alpha1
  4. kind: UnitedDeployment
  5. metadata:
  6. labels:
  7. controller-tools.k8s.io: "1.0"
  8. name: ud-test
  9. namespace: "183xxxxxxxx" # 注意: 替换成你的namespace
  10. spec:
  11. selector:
  12. matchLabels:
  13. app: ud-test
  14. workloadTemplate:
  15. deploymentTemplate:
  16. metadata:
  17. labels:
  18. app: ud-test
  19. namespace: "183xxxxxxxx" # 注意: 替换成你的namespace
  20. spec:
  21. template:
  22. metadata:
  23. labels:
  24. app: ud-test
  25. spec:
  26. containers:
  27. - name: nginx
  28. image: nginx
  29. topology:
  30. pools:
  31. - name: hangzhou
  32. nodeSelectorTerm:
  33. matchExpressions:
  34. - key: apps.openyurt.io/nodepool
  35. operator: In
  36. values:
  37. - hangzhou
  38. replicas: 1
  39. revisionHistoryLimit: 5
  40. EOF
  41. # 查看资源
  42. kubectl get node
  43. kubectl get pod -A
  44. kubectl get nodepool

How to use `kubeconfig` to experience OpenYurt capabilities - 图7 How to use `kubeconfig` to experience OpenYurt capabilities - 图8

创建成功后,在控制台界面上可以看到对应的 Pod 被分配到了 hangzhou 节点池中的 node1 上。

How to use `kubeconfig` to experience OpenYurt capabilities - 图9