Kubernetes Pod卡在状态=节点进入状态后终止=未就绪?

时间:2019-10-22 14:34:42

标签: kubernetes

我在k8s集群中有3个节点,所有节点都是主节点,即,我已经移除了node-role.kubernetes.io/master异味。

我物理上拔掉了foo2上的网络电缆,所以我有

kubectl get nodes
NAME   STATUS     ROLES    AGE     VERSION
foo1   Ready      master   3d22h   v1.13.5
foo2   NotReady   master   3d22h   v1.13.5
foo3   Ready      master   3d22h   v1.13.5

几个小时后,某些豆荚仍在STATUS = Terminating中,尽管我认为它们应该在Terminated中?

我在https://www.bluematador.com/docs/troubleshooting/kubernetes-pod阅读

  

在极少数情况下,吊舱有可能卡在终止状态。通过找到每个容器都已终止但容器仍在运行的任何容器来检测到此情况。通常,这是由于群集中的某个节点突然退出服务而导致的,并且群集调度程序和控制器管理器没有清理该节点上的所有Pod。

     

解决此问题就像使用kubectl delete pod手动删除pod一样简单。

豆荚描述说,如果5分钟内无法到达,将容忍...

Conditions:
  Type              Status
  Initialized       True 
  Ready             False 
  ContainersReady   True 
  PodScheduled      True 
Volumes:
  etcd-data:
    Type:        EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:      
    SizeLimit:   <unset>
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
Events:          <none>

我已经尝试kubectl delete pod etcd-lns4g5xkcw挂起了,尽管强制{strong>确实可以按照answer的方式工作...

kubectl delete pod etcd-lns4g5xkcw  --force=true --grace-period=0
warning: Immediate deletion does not wait for confirmation that the running resource has been terminated. The resource may continue to run on the cluster indefinitely.
pod "etcd-lns4g5xkcw" force deleted

(1)为什么会发生这种情况?它不应该更改为终止吗?

(2)STATUS = Terminating甚至来自哪里?在https://v1-13.docs.kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/,我仅看到等待/正在运行/已终止作为选项?

1 个答案:

答案 0 :(得分:1)

处于termination状态的Pod数量和网络清​​理可能会花费更多时间。 正确的方法是排空节点,以使Pod在宽限期内成功终止。 由于您已拔出网络电缆,因此该节点的状态已更改为not ready,并且已经在其上运行了Pod。 由于此吊舱无法终止。

您可能会从k8s文档中找到有关terminating状态的以下信息:

  

Kubernetes(1.5或更高版本)不会因为以下原因而删除Pod:   节点不可达。在无法访问的节点上运行的Pod进入   超时后处于“终止”或“未知”状态。豆荚也可能进入   当用户尝试正常删除Pod上的Pod时,这些状态   无法访问的节点:

     

有3种建议的方法将其从apiserver中删除:

     

Node对象被删除(由您或由Node Controller删除)。   无响应节点上的kubelet开始响应,杀死Pod   并从apiserver中删除该条目。强制删除Pod   用户。

在这里您可以找到有关从k8s offical documentation

中删除背景的更多信息。