k8s部署-34-初始k8s的驱逐策略

网友投稿 1029 2022-11-05

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

k8s部署-34-初始k8s的驱逐策略

常见驱逐策略

1、软驱逐

# 当内存小于1.5G--eviction-soft=memory.available<1.5Gi# 持续时间--eviction-soft-grace-period=memory.available=2m30s

上面的含义是说,当节点内存小于1.5G,并持续时间长达2分30秒的时候,进行驱逐。

2、硬驱逐

如果说只有软驱逐的话,会不会有这么一种情况,在小于1.5G的时候,并没有在持续2分30秒,内存就消耗殆尽了,那样子我们的整个节点都容易出现故障,更别说上面运行的服务了。

所以需要搭配一个最低值,一旦到达哪个阈值,直接进行驱逐。

# 内存小于100M# 磁盘小于1G# cpu空余小于5%--eviction-hard=memory.available<100Mi,nodefs.available<1G,nodefs.inodesFree<5%

满足以上任一条件,则立刻开始驱逐。

磁盘紧缺的驱逐

当磁盘剩余空间触发到上面的驱逐策略的时候,是按照什么顺序进行驱逐的呢?

1、删除死掉的容器、POD2、删除无用的镜像3、按优先级、资源占用情况驱逐POD# 如果优先级一致,就找到占用资源最大的进行驱逐

内存紧缺的驱逐

当内存剩余容量触发到上面的驱逐策略的时候,又是按照什么顺序进行驱逐的呢?

1、驱逐不可靠的pod2、驱逐基本可靠的pod3、直接停掉占用内存最大的pod4、驱逐可靠的pod

PS:比如说当node1资源满了,然后把POD-A停掉了,这个时候node2还有足够的资源,是会将POD-A从node2上启动。

配置在哪儿

由于这个是kubelet控制的,且kubelet只有worker节点上存在,那么自然而然的要在worker节点上了,修改配置文件路径为下:

[root@node2 ~]# vim etc/systemd/system/kubelet.service[Unit]Description=Kubernetes KubeletDocumentation=https://github.com/kubernetes/kubernetesAfter=containerd.serviceRequires=containerd.service[Service]ExecStart=/usr/local/bin/kubelet \ --config=/etc/kubernetes/kubelet-config.yaml \ --container-runtime=remote \ --container-runtime-endpoint=unix:///var/run/containerd/containerd.sock \ --image-pull-progress-deadline=2m \ --kubeconfig=/etc/kubernetes/kubeconfig \ --network-plugin=cni \ --node-ip=192.168.112.131 \ --register-node=true \ --v=2Restart=on-failureRestartSec=5[Install]WantedBy=multi-user.target[root@node2 ~]# # 驱逐参数配置到ExecStart后面,然后重新启动下kubelet即可

至此,本文结束。

上一篇:软件测试培训之测试用例评审结束标准
下一篇:软件测试培训之用例设计步骤
相关文章

 发表评论

暂时没有评论,来抢沙发吧~