通过Kubernetes+Virtual-kubelet在一个OpenStack Zun集群上运行多个反亲和Pod副本
1、问题Kubernetes可以通过virtual-kubelet对接OpenStack Zun集群,同一个Zun集群在Kubernetes看来就是一个虚拟node。K8S在部署多个反亲和副本Pod的时候,因为只有一个node,所以只能调度一个pod,另外的pod因为没有可调度的node就会处于pending状态# kubectl get pods -o wideNAME...
1、问题
Kubernetes可以通过virtual-kubelet对接OpenStack Zun集群,同一个Zun集群在Kubernetes看来就是一个虚拟node。K8S在部署多个反亲和副本Pod的时候,因为只有一个node,所以只能调度一个pod,另外的pod因为没有可调度的node就会处于pending状态
# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
sc-0-0 1/1 Running 0 16m 172.200.1.188 virtual-kubelet <none> <none>
sc-0-1 0/1 Pending 0 16m <none> <none> <none> <none>
OpenStack Zun集群是有多个节点的,完全可以运行多副本Pod
在当前的实现机制下,怎么解决这个问题?
2、virtual-kubelet多实例特性
查看virtual-kubelet命令信息,virtual-kubelet支持运行时指定kubernetes node name
--nodename string kubernetes node name (default "virtual-kubelet")
通过virtual-kubelet这个特性是否可以起多个virtual-kubelet进程连接同一个OpenStack Zun集群?
3、验证virtual-kubelet多实例
3.1、已经在k8s-master1节点上起了一个virtual-kubelet
# kubectl get nodes
NAME STATUS ROLES AGE VERSION
k8s-master1 Ready master 4d7h v1.17.0
k8s-master2 Ready master 4d7h v1.17.0
k8s-master3 Ready master 4d7h v1.17.0
k8s-node1 Ready <none> 4d7h v1.17.0
virtual-kubelet Ready agent 2d6h v1.14.3-vk-openstack-zun-781b46a-dev
3.2、在k8s-master2节点上再起一个virtual-kubelet
3.2.1、环境变量配置参考
https://blog.csdn.net/weixin_43905458/article/details/103913735
由于要对接同一个OpenStack Zun集群,所以环境变量信息和k8s-master1节点上的virtual-kubelet一致
3.2.2、拷贝kube配置文件
从k8s-master1上拷贝kube配置文件,以便virtual-kubelet在k8s-master2上运行也能够加入k8s集群
scp /root/.kube/config k8s-master2:/root/.kube/
注:需先在k8s-master2节点上创建/root/.kube/目录
3.2.3、运行virtual-kubelet
在k8s-master2上运行virtual-kubelet,指定不一样的node name
# ./virtual-kubelet --provider openstack --nodename virtual-kubelet1
4、查看Pod多副本运行情况
第二个副本已经运行在virtual-kubelet的另外一个实例virtual-kubelet1上,
# kubectl get pods -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
sc-0-0 1/1 Running 0 25h 172.200.1.188 virtual-kubelet <none> <none>
sc-0-1 1/1 Running 0 25h 172.200.1.200 virtual-kubelet1 <none> <none>
实际第二个副本也是运行在同一个OpenStack Zun集群上
# zun capsule-list
+--------------------------------------+-------------------------------+---------+---------------+
| uuid | name | status | addresses |
+--------------------------------------+-------------------------------+---------+---------------+
| a6715753-48a2-404f-b8e1-9413fed8dbc0 | capsule-test | Running | 172.200.1.111 |
| 2a21aaf4-dff2-42f2-9e7b-4e576174cdf4 | kube-system-kube-proxy-48cb5 | Running | 172.200.1.164 |
| 3363420a-9a7a-45b2-8fc6-a3e4070eb389 | kube-system-calico-node-dlbv7 | Running | 172.200.1.118 |
| 1da5ec1a-8f98-4eff-800d-bae4d4a78dc6 | default-sc-0-0 | Running | 172.200.1.188 |
| 22a78f09-67fc-49ea-942a-46ecb54ac07a | kube-system-kube-proxy-pvhrs | Running | 172.200.1.168 |
| 30825dc7-d44d-4575-8b0d-8666c84f2a6f | kube-system-calico-node-k5vzl | Running | 172.200.1.153 |
| 03210a5f-d59c-453c-847e-b9d329e8b6c4 | default-sc-0-1 | Running | 172.200.1.200 |
+--------------------------------------+-------------------------------+---------+---------------+
5、怎么实现三副本或者更多的副本?
5.1、起更多的virtual-kubelet
在k8s-master3上或者其他node上起更多的virtual-kubelet实例
5.2、OpenStack Zun的capsule要支持反亲和
OpenStack Zun对于capsule目前还不支持亲和反亲和特性
待Zun支持这个特性后,可能会有更好的解决方案
更多推荐
所有评论(0)