作为Google Cloud Platform的新手,我对kubernetes集群中的节点有一个基本的问题 .
通过免费层访问,我推出了 kubernetes cluster with 3 nodes.
kubectl get nodes
NAME STATUS ROLES AGE VERSION
gke-cluster-1-default-pool-5ac7520f-097t Ready <none> 20h v1.7.8-gke.0
gke-cluster-1-default-pool-5ac7520f-9lp7 Ready <none> 20h v1.7.8-gke.0
gke-cluster-1-default-pool-5ac7520f-vhs2 Ready <none> 20h v1.7.8-gke.0
在尝试探索集群时,我们知道了 nodes which are launched are just pods but not VMs or servers .
$kubectl --namespace=kube-system get pods
NAME READY STATUS RESTARTS AGE
kube-proxy-gke-cluster-1-default-pool-5ac7520f-097t 1/1 Running 0 20h
kube-proxy-gke-cluster-1-default-pool-5ac7520f-9lp7 1/1 Running 0 20h
kube-proxy-gke-cluster-1-default-pool-5ac7520f-vhs2 1/1 Running 0 20h
(注意:删除了有关其他pod的信息以便于阅读)
这里的混淆是如何实现集群中节点的高可用性(因为pod的实例数是1/1)?
1 回答
我想你错过了节点的实际设置方式 .
每个节点都是网络中的一个单独的虚拟机 . 他们在他们之间托管您的Kubernetes网络 . Kubeproxy只是节点的一个方面,它允许pod,服务和部署在节点之间进行通信 . 在这些节点上还运行着许多额外的部署 . 我通常忽略所有系统命名空间,因为它只是工作,但您可以在Guber Web界面中查看它们,在Kubernetes Engine,Workloads下 . 然后删除Is System Object标志 .
Kubeproxy在每个节点上作为pod启动,如果它失败,Kubernetes会在节点上重新启动它,这将(希望)修复节点并使其能够再次正确通信 .