我有以下情况:
节点 1:
- Pod-A
节点 2:
- 没有豆荚
Pod-A 正在使用 RWO 访问模式中的 PV。
当节点 1 发生故障(虚拟机从虚拟机管理程序关闭)时,它会显示为“NotReady”,而 Pod-A 会显示为“Running”,直到 pod-eviction-timeout 结束。
然后,Pod-A 进入“终止”状态,Kubernetes 尝试在节点 2 中启动 Pod-B(因为节点 1 已感染,而所需状态要求一个 Pod 正在运行)。但是,Pod-B 无法启动,因为它需要声明的 PV 是 RWO,并且它仍然连接到 Pod-A(kubectl describe pod Pod-A
显示“卷的多重连接错误”)。
即使宽限期(应该是 30 秒)结束后,Pod-A 仍然会卡在“终止”状态(我猜是因为它无法与节点 1 的 kublet 通信)。
如果我强制删除 Pod-A(kubectl delete pods Pod-A --grace-period=0 --force
),则成功删除该 Pod。 6 分钟后,kubernetes 意识到该卷不再被 Pod-A 使用,并成功将其附加到 Pod-B 并最终开始正常运行。
我已经找到了缩短 pod-eviction-timeout 的方法(修改 /etc/kubernetes/manifests/kube-controller-manager.yaml),但我找不到让 Pod-A 自动终止并缩短 Kubernetes 在删除卷后从 Pod-A 分离卷所需的时间的方法。有没有办法让这一切更快发生?我必须安装某种监控服务吗?哪一个?
提前致谢。