我在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/,我仅看到等待/正在运行/已终止作为选项?
答案 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
中删除背景的更多信息。