kubernetes节点关闭/崩溃恢复?

时间:2017-11-15 21:37:13

标签: kubernetes

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

我的期望是Kubernetes会“看到”关机,并在foo-2中自动重启pod。但是,它似乎没有发生。实际上,它似乎认为pod仍然在foo-3上运行。

等待五分钟后,Kubernetes终于认识到群集节点已经消失,并通过重新启动foo-2上的pod来优雅地响应。五分钟对我们来说太长了,因为这不是一个复制的应用程序。我们怎样才能使那个超时大大缩短(比如,10秒)?实际上,如果主机正常关闭(如修补),效果应立即生效。

1 个答案:

答案 0 :(得分:3)

kube-controller-manager中有一个--pod-eviction-timeout参数默认为5米:

 --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进行部署,并且服务将会启动。