当前位置: 首页 > 知识库问答 >
问题:

计算节点关闭后,吊舱卡在“终止”上

堵恺
2023-03-14

我正在运行一个带有RHEL7.8 BareMetal计算节点的OCP4.6。我们正在集群上运行功能和HA测试。我们在这个集群上的主要应用程序是一个包含大约250个吊舱的StatefulSet。

关闭节点后,在该节点上运行的吊舱进入终止状态,并停留在那里。由于这是一个状态集,所以在原始pod结束终止之前,pod不能在另一个节点上重新启动。

查看K8S的文档--我发现在节点关闭后StatefulSet pod不终止实际上是一种安全的机制,并且实际上是一种特性:https://kubernetes.io/docs/tasks/run-application/force-delete-stateful-set-pod/

共有1个答案

牛迪
2023-03-14

如果您想在击落节点时避免豆荚被卡住,您应该尝试安全地耗尽节点:

您可以使用Kubectl Drain在对节点执行维护(例如内核升级、硬件维护等)之前安全地从节点中驱逐所有的豆荚。安全驱逐允许POD的容器优雅地终止,并尊重您指定的poddisruptionbudgets

Kubectl Drain成功返回时,这表明所有的pod都已被安全地驱逐(考虑到所需的合理终止周期,并考虑到您定义poddisruptionbudget)。然后,通过关闭物理机或者如果运行在云平台上,删除虚拟机来关闭节点是安全的。

还要注意,如果驱逐被搁置:

>

  • 中止或暂停自动操作。调查应用程序卡顿的原因,并重新启动自动化。

    经过适当长时间的等待后,从集群的控制平面删除该Pod,而不是使用驱逐API。

    更多细节可以在链接文档中找到。

  •  类似资料:
    • 我们正在使用Docker 1.19运行库伯内特斯(1.18) Container是一个基于Java13的Spring启动应用程序(使用基本图像作为openjdk: 13-alpin),下面是内存设置。 豆荚: 内存-最小448M,最大2500M cpu-最小值0.1 容器: Xms:256M,Xmx:512M 当流量发送更长时间时,容器会突然重新启动;在Prometheus中,我可以看到Pod内存

    • 但不知何故,豆荚卡在“容器创建”的状态,当我运行docker图像时,我看不到nginx图像被拉出。通常nginx图像没有那么大,所以现在必须已经拉了(15分钟)。kubectl description pods给出了pod沙箱创建失败的错误,kubernetes将重新创建它。 我搜索了关于这个问题的所有内容,并尝试了stackoverflow上的解决方案(重新启动以重新启动集群,搜索描述豆荚,新的

    • 以前我的MySQL pod停留在终止状态,然后我尝试使用如下命令强制删除 后来我再次尝试helm升级,我的吊舱被卡在containercreating状态,这个事件来自吊舱 任何人请帮助我解决这个问题,非常感谢。

    • 我已经设置了ingress nginx Helm图表来在集群上设置ingress控制器,但是默认情况下它只运行一个pod实例。 由于我们在Digital Ocean的k8s群集上运行,因此我们使用externalTrafficPolicy:Local来允许cert manager在内部访问其他POD,因此我们的请求网络跳数更少。 为了获得弹性,我们已将后端服务配置为至少在2个节点上运行,因此我们在

    • 我已经在节点(node1)上的pod(pod1)上部署了一个Spring Boot应用程序。我还在不同节点(node2)上的另一个pod(pod2)上部署了JMeter。我试图从POD2执行自动负载测试。为了执行负载测试,我要求为每个测试用例重新启动pod1。如何从POD2重新启动pod1?

    • 问题内容: 我想使用新配置重新启动elasticsearch节点。正常关闭节点的最佳方法是什么? 关闭进程是关闭服务器的最佳方法,还是我可以使用一些神奇的URL关闭节点? 问题答案: 更新的答案。 API已在elasticsearch 2.x中删除。 一些选项: 在您的终端(基本上是开发模式)中,只需键入“ Ctrl-C” 如果您以守护程序()的身份启动它,请找到PID并终止该进程:将彻底关闭El