作为Google Cloud Platform的新手,我对kubernetes群集中的节点有一个基本问题。
通过免费层访问,我推出了一个包含3个节点的 kubernetes集群。
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
尝试探索群集时,我们知道启动的节点只是pod而不是VM或服务器。
$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)?
答案 0 :(得分:2)
我认为您错过了节点的实际设置方式。
每个节点都是网络中的一个单独的虚拟机。他们在他们之间托管您的Kubernetes网络。 Kubeproxy只是节点的一个方面,它允许pod,服务和部署在节点之间进行通信。在这些节点上还运行着许多额外的部署。我通常忽略所有系统命名空间,因为它只是工作,但您可以在Guber Web界面中查看它们,在Kubernetes Engine,Workloads下。然后删除Is System Object标志。
Kubeproxy在每个节点上作为pod启动,如果失败,Kubernetes会在节点上重启它,这将(希望)恢复节点并使其能够再次正确通信。