首页 文章

为kubernetes静态pod创建服务ip的时间和地点

提问于
浏览
-1

我正在使用kubernetes 1.6.7集群,3个节点作为主节点(node1,node2和node3) .

apiserver集群ip如下:

root@node1:/etc/kubernetes/manifests# kubectl get svc 
NAME                     CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
kubernetes               10.233.0.1      <none>        443/TCP        14d

root@node1:/etc/kubernetes/manifests# kubectl get endpoints
kubernetes               172.16.10.11:6443,172.16.10.12:6443,172.16.10.13:6443            14d

问题是当node2关闭时,分蘖pod无法访问10.233.0.1:443,日志如下:

[storage] 2018/08/28 06:46:34 listing all releases with filter
[storage/driver] 2018/08/28 06:46:34 list: failed to list: Get https://10.233.0.1:443/api/v1/namespaces/kube-system/configmaps?labelSelector=OWNER%3DTILLER: dial tcp 10.233.0.1:443: connect: no route to host

服务kubernetes仍然有3个 endpoints ,但我认为172.16.10.12应该从 endpoints 列表中删除 . iptables如下:

-A KUBE-SVC-LRLUS54FOYJDJ5GT -m comment --comment "default/wangxj35-nginx:nginx" -j KUBE-SEP-GGIOR777CPKVSIB7
-A KUBE-SVC-NPX46M4PTMTKRN6Y -m comment --comment "default/kubernetes:https" -m recent --rcheck --seconds 10800 --reap --name KUBE-SEP-CS4Z4M5BFAAWBFXQ --mask 255.255.255.255 --rsource -j KUBE-SEP-CS4Z4M5BFAAWBFXQ
-A KUBE-SVC-NPX46M4PTMTKRN6Y -m comment --comment "default/kubernetes:https" -m recent --rcheck --seconds 10800 --reap --name KUBE-SEP-MQZA2ZXHX6GRRY22 --mask 255.255.255.255 --rsource -j KUBE-SEP-MQZA2ZXHX6GRRY22
-A KUBE-SVC-NPX46M4PTMTKRN6Y -m comment --comment "default/kubernetes:https" -m recent --rcheck --seconds 10800 --reap --name KUBE-SEP-ZX77NMWHNJWLXYWF --mask 255.255.255.255 --rsource -j KUBE-SEP-ZX77NMWHNJWLXYWF
-A KUBE-SVC-NPX46M4PTMTKRN6Y -m comment --comment "default/kubernetes:https" -m statistic --mode random --probability 0.33332999982 -j KUBE-SEP-CS4Z4M5BFAAWBFXQ
-A KUBE-SVC-NPX46M4PTMTKRN6Y -m comment --comment "default/kubernetes:https" -m statistic --mode random --probability 0.50000000000 -j KUBE-SEP-MQZA2ZXHX6GRRY22
-A KUBE-SVC-NPX46M4PTMTKRN6Y -m comment --comment "default/kubernetes:https" -j KUBE-SEP-ZX77NMWHNJWLXYWF

-A KUBE-SEP-CS4Z4M5BFAAWBFXQ -p tcp -m comment --comment "default/kubernetes:https" -m recent --set --name KUBE-SEP-CS4Z4M5BFAAWBFXQ --mask 255.255.255.255 --rsource -m tcp -j DNAT --to-destination 172.16.10.11:6443
-A KUBE-SEP-MQZA2ZXHX6GRRY22 -p tcp -m comment --comment "default/kubernetes:https" -m recent --set --name KUBE-SEP-MQZA2ZXHX6GRRY22 --mask 255.255.255.255 --rsource -m tcp -j DNAT --to-destination 172.16.10.12:6443
-A KUBE-SEP-ZX77NMWHNJWLXYWF -p tcp -m comment --comment "default/kubernetes:https" -m recent --set --name KUBE-SEP-ZX77NMWHNJWLXYWF --mask 255.255.255.255 --rsource -m tcp -j DNAT --to-destination 172.16.10.13:6443

任何人都可以帮助我kubernetes源代码创建的静态pods服务?

谢谢 .

1 回答

  • 0

    Controller.go创建kubernetes服务:

    // UpdateKubernetesService attempts to update the default Kube service. 
     func (c *Controller) UpdateKubernetesService(reconcile bool)> error { 
           // Update service & endpoint records.
    

    另外,要解决此问题,kubernetes1.9.0已添加 --endpoint-reconciler-type=lease 以允许apiserver跟踪活动的apiserver,请参阅issue51698,而对于1.9.0以下的版本,您可以取消设置 --apiserver-count 标志以让alive apiserver抢占唯一的一个 endpoints 位置 .

相关问题