如何减小k8s node节点宕机后pod的等待调度时间?
经过调研发现,k8s 1.12版本之后,k8s使用default-not-ready-toleration-seconds和default-unreachable-toleration-seconds两个参数来控制节点宕机后pod的等待调度时间,可以通过修改此配置来减小等待时间。在维护公司k8s集群时发现了一个问题:当某台node节点挂掉后,上面的pod要过5~6分钟才会开始往其他节点调度,这个等
·
在维护公司k8s集群时发现了一个问题:当某台node节点挂掉后,上面的pod要过5~6分钟才会开始往其他节点调度,这个等待时间太长了,如何减小呢(k8s版本:v1.21.0)?
经过调研发现,k8s 1.12版本之后,k8s使用default-not-ready-toleration-seconds和default-unreachable-toleration-seconds两个参数来控制节点宕机后pod的等待调度时间,可以通过修改此配置来减小等待时间。
-
进入master节点 修改kubelet.service配置(可选)
vi /var/lib/kubelet/config.yaml #将config.yaml中evictionPressureTransitionPeriod的值改为20s #此参数含义是:当节点压力过大,持续超过20s,就驱逐此节点上的部分pod evictionPressureTransitionPeriod: 20s
-
修改kube-apiserver.service配置
vi /etc/systemd/system/kube-apiserver.service #在[Service]ExecStart= 下新增两行配置 #这里两个参数意思是:节点notReady或者unreachable后20s还未恢复的话,就把此节点上的pod调度到其他节点 --default-not-ready-toleration-seconds=20 \ --default-unreachable-toleration-seconds=20 \
-
修改kube-controller-manager.service配置
vi /etc/systemd/system/kube-controller-manager.service #在[Service]ExecStart= 下新增两行配置 #这两个参数的意思是: #1.控制器每5秒检查一次节点状态 2.在节点被认为是未响应后,等待15秒再将其标记为不可用 --node-monitor-period=5s \ --node-monitor-grace-period=15s \
-
重新加载系统配置
systemctl daemon-reload
-
重启三个服务
systemctl restart kubelet.service systemctl restart kube-apiserver.service systemctl restart kube-controller-manager.service #查看服务状态 systemctl status kubelet.service #如果状态为Active: active (running) 表示重启成功 systemctl status kube-apiserver.service systemctl status kube-controller-manager.service
-
注意:上述配置只对新创建的pod生效,所以需要手动重启所有的pod来应用此配置
#快速重启某个名空间下的所有pod,可以用这个命令 kubectl delete pod -n 【namespace】 --all (生产环境不要随便搞) #比如重启所有pod kubectl delete pod -A --all
不知道还没有其他更好的办法,欢迎讨论
更多推荐
已为社区贡献2条内容
所有评论(0)