Ubuntu 一个节点关闭后,Kubernetes服务停止
我正在使用一个VM(主机)和3个裸机服务器(都运行Ubuntu 14.04)建立一个小型Kubernetes集群。我跟着库伯内特一家。每个裸机服务器还使用导出的磁盘空间为2T。一切正常,但当一个节点启动失败(无法挂载分区)时,集群提供的唯一服务也停止工作。我运行了一些命令:Ubuntu 一个节点关闭后,Kubernetes服务停止,ubuntu,kubernetes,Ubuntu,Kubernetes,我正在使用一个VM(主机)和3个裸机服务器(都运行Ubuntu 14.04)建立一个小型Kubernetes集群。我跟着库伯内特一家。每个裸机服务器还使用导出的磁盘空间为2T。一切正常,但当一个节点启动失败(无法挂载分区)时,集群提供的唯一服务也停止工作。我运行了一些命令: $ kubectl get nodes NAME LABELS STATUS 10.70.2.1 kubernetes.io/hostname=10.
$ kubectl get nodes
NAME LABELS STATUS
10.70.2.1 kubernetes.io/hostname=10.70.2.1 Ready,SchedulingDisabled
10.70.2.2 kubernetes.io/hostname=10.70.2.2 Ready
10.70.2.3 kubernetes.io/hostname=10.70.2.3 NotReady
10.70.2.4 kubernetes.io/hostname=10.70.2.4 Ready
它只是表明我有一个结
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
java-mysql-5v7iu 1/1 Running 1 5d
java-site-vboaq 1/1 Running 0 4d
$ kubectl get services
NAME LABELS SELECTOR IP(S) PORT(S)
java-mysql name=java-mysql name=java-mysql ***.***.3.12 3306/TCP
java-site name=java-site name=java-site ***.***.3.11 80/TCP
kubernetes component=apiserver,provider=kubernetes <none> ***.***.3.1 443/TCP
但是,吊舱甚至没有在被击落的节点上运行:
$ kubectl describe pod java-mysql-5v7iu
Image(s): mysql:5
Node: 10.70.2.2/10.70.2.2
Status: Running
$ kubectl describe pod java-site-vboaq
Image(s): javasite-img
Node: 10.70.2.2/10.70.2.2
Status: Running
关闭的节点(10.70.2.3
)恢复后,一切恢复正常
如何解决此问题?如果节点不在,我希望Kubernetes相应地迁移POD并保持服务工作。这是否与宕机节点卡在启动中(等待分区挂载)而不是100%宕机这一事实有关 这里有几个潜在的问题: 1) Ceph需要其节点启动并运行才能访问:您是说这些节点是从不同的Ceph群集装载磁盘,还是说Ceph群集运行在相同的节点上?如果是相同的节点,那么不可访问的驱动器会使K8s瘫痪是有道理的 2) 有一个错误(至少在1.0.6上存在,但不确定是否解决了),即当尝试装入已装入其他节点的磁盘时,POD无法启动,因为它从未卸载过。这是一个需要关注的K8s问题(很抱歉,现在似乎找不到链接)
3) 如果只有2个节点,etcd也可能会在等待节点3时陷入困境,因为它需要多数票才能选出一个主节点。当一个节点发生故障时,kubernetes不会立即将该节点上的POD视为死亡。它等待了5分钟,然后宣布他们死亡
因此,如果您的节点重新启动,然后没有返回到kubelet运行的位置,那么该节点上的任何pod都会在重新启动开始后的5分钟内根据
kubectl
显示为存在并处于活动状态,但事实上已经死了。问题1和3不太可能出现,因为还有另一个pod(mysql)正在运行,并且它确实装载了自己的Ceph卷。每个吊舱都安装了自己的Ceph体积,因此问题2也不太可能出现。谢谢。顺便说一句,集群中有4个节点,因此如果一个节点处于停机状态,那么还有3个(而不是2个)节点可供etcd使用。正如您在我的问题中所看到的,POD没有在停机的节点上运行。为什么其中一个“丢失”了它的容器?顺便说一句,我等了5分钟多。
$ kubectl describe pod java-mysql-5v7iu
Image(s): mysql:5
Node: 10.70.2.2/10.70.2.2
Status: Running
$ kubectl describe pod java-site-vboaq
Image(s): javasite-img
Node: 10.70.2.2/10.70.2.2
Status: Running