Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ubuntu 一个节点关闭后,Kubernetes服务停止_Ubuntu_Kubernetes - Fatal编程技术网

Ubuntu 一个节点关闭后,Kubernetes服务停止

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.

我正在使用一个VM(主机)和3个裸机服务器(都运行Ubuntu 14.04)建立一个小型Kubernetes集群。我跟着库伯内特一家。每个裸机服务器还使用导出的磁盘空间为2T。一切正常,但当一个节点启动失败(无法挂载分区)时,集群提供的唯一服务也停止工作。我运行了一些命令:

$ 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