k8s 设置Node节点驱逐pod的时间
官方api-server参数具体作用官方kube-controller-manager 参数具体作用官方kubelet参数具体作用官方kubelet参数具体作用以下调整是需要加入到集群中的,最后效果验证pod的迁移时间为11-16skube-controller-manager调整配置路径:/etc/kubernetes/manifests/kube-controller-manager.yaml
官方kube-controller-manager 参数具体作用
以下调整是需要加入到集群中的,最后效果验证pod的迁移时间为11-16s
kube-controller-manager调整
配置路径:/etc/kubernetes/manifests/kube-controller-manager.yaml
- --node-monitor-period=2s
. #在NodeController
中同步节点状态的周期。默认5s
- --node-monitor-grace-period=10s
#我们允许运行的节点在标记为不健康之前没有响应的时间。必须是kubelet
的nodeStatusUpdateFrequency
的N倍,其中N表示允许kubelet发布节点状态的重试次数默认40s。
- --node-startup-grace-period=30s
#我们允许启动节点在标记为不健康之前没有响应的时间。默认1m0s。(这个其实不需要调整因为是启动节点的时间,业务并没有要求启动时间)
- --pod-eviction-timeout=1m
#删除失败节点上的pods的宽限期。默认5m 失败立即删除,但是其实我是修改的pod的yaml文件所以这里不需要修改
kube-apiserver调整
配置路径: /etc/kubernetes/manifests/kube-apiserve.yaml
最终判断驱逐时间的调整还是根据kube-apiserver的参数(这个也没有设置,因为设置了下边pod单独制定,精确到了namespace级别)
- --default-not-ready-toleration-seconds=60
指示notReady:NoExecute
的容忍秒数,默认情况下添加到没有这种容忍的每个pod中。
- --default-unreachable-toleration-seconds=60
指示对不可到达的:NoExecute
的容忍秒数,默认情况下添加到没有这种容忍的每个pod中。
- --enable-admission-plugins=NodeRestriction,PodSecurityPolicy,DefaultTolerationSeconds
默认容忍的秒数开启
如果在全局中不增加此参数,那就需要在pod中单独指定,一般不建议此项操作,但是我们暴力设置了,节点出现问题直接迁移
使用全局方式定义驱逐方式来决定node节点not ready状态pod的迁移,在应用商店部署的时候直接设置
tolerations:
- key: node.kubernetes.io/not-ready
effect: NoExecute
tolerationSeconds: 0
- key: node.kubernetes.io/unreachable
operator: Exists
effect: NoExecute
tolerationSeconds: 0
kubelet调整
配置路径: /var/lib/kubectl/conf.yaml
指定的频率连续报告节点状态更新,其默认值为 10s。
指定kubelet多长时间向master发布一次节点状态。注意: 它必须与kube-controller中的nodeMonitorGracePeriod
一起协调工作。(默认 10s)
node-status-update-frequency: 10s
测试关闭一个node节点,停掉kubelet,查看默认驱逐的时候为60s,如果不设置的话,默认官方5m才会驱逐pod
创建一个nginx的示例测试,并停掉kubelet服务,查看pod的驱逐1m的变化情况
通过watch -n 1 "kubectl get pod -n kube-system |grep xxx "
更多推荐
所有评论(0)