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

kubernetes节点关闭/崩溃恢复?

邹英发
2023-03-14

我们有一个带有主节点(foo-1)和两个工作节点(foo-2和foo-3)的集群。我们有一个在foo-3上运行的吊舱(由库伯内特斯决定)。我们故意关闭foo-3作为实验。

我的期望是库伯内特斯会“看到”关闭,并在foo-2中自动重启吊舱。但是,这似乎没有发生。事实上,它似乎认为吊舱仍然在foo-3上运行。

经过五分钟的等待,库伯内特斯终于意识到集群节点已经消失,并优雅地做出回应,重启fo-2上的pod。五分钟对我们来说太长了,因为这不是一个复制的应用程序。我们如何才能让超时时间大大缩短(比如10秒)?事实上,如果主机有一个优雅的关闭(比如修补),效果应该是立竿见影的。

共有1个答案

端木狐若
2023-03-14

kube控制器管理器中有一个默认值为5m的<代码>--pod收回超时参数:

 --pod-eviction-timeout duration    The grace period for deleting pods on failed nodes. (default 5m0s)

如果你想加快驱逐过程,你需要修改它。

但是,如果您想最大限度地减少pod的停机时间,当节点停机时,您还需要修改以下参数:

kubelet: node-status-update-frequency=4s (default 10s)

kube-controller-manager: node-monitor-period=2s (default 5s)
kube-controller-manager: node-monitor-grace-period=16s (default 40s)
kube-controller-manager: pod-eviction-timeout=30s (default 5m)

当然,您可以随时使用副本2进行部署,即使有一个节点出现故障,服务也会启动。

 类似资料:
  • 我正在运行一个自我管理的Kubernetes集群1.18.1。我已经部署了一些带有持久性卷的POD(基于longhorn项目)。现在,在做了一些测试之后,我观察到以下行为: 如果我模拟一个节点的硬关机,过了一段时间(5分钟),Kubernetes就会识别出丢失,并开始重新调度节点从死亡节点到另一个节点。 因为我的节点具有持久性卷,所以新的POD永远不会启动。原因是旧的pod(在死节点上)现在在终止

  • 我正在创建kubernetes集群,其中包括:1个主节点(M1),2个工作节点(W1和W2) 使用部署创建副本数为5的吊舱。

  • 有什么建议吗?

  • 我的整个节点应用程序崩溃,“未处理的承诺拒绝”SequelizeConnectionRefusedError时,由于某种原因(例如数据库负载过大)数据库拒绝连接。 我想找到一个解决方案,使应用程序不崩溃,如果可能的话,尝试重新连接。 这就是我连接数据库的方式

  • 我有一个使用Twitter API开发的Nodejs应用程序。当托管在Heroku上时,它会出现以下错误: 2018-12-14T10:00:03.678180 00:00 heroku[web.1]:错误 R10(启动超时)- 在搜索时,我遇到了这些StackOverflow问题q1 q2,但它们都使用ExpressJS并监听固定端口,而不是Heroku提供的端口,而我的应用程序没有使用Expr

  • 我有以下设置: docker集线器上的docker映像Kubernetes集群(有4个节点,每个节点大约50GB RAM)和大量资源 我按照教程将图像从dockerhub拉到kubernetes 这导致pod进入< code>CrashLoopBackoff < code > docker run-it-p 8080:9546 OMG/telperion 工作正常。 所以我的问题是这个可以调试吗?