镜像被删除及POD状态为Evicted问题参数调优方法
1 问题描述
Kubernetes默认配置情况下,当node节点的磁盘使用量达到85%,节点会对运行的容器进行驱逐,并且回收未被使用的镜像,来保证服务的自愈和高可用。
但是,通过驱逐容器以及回收镜像(回收磁盘空间),来实现服务的自愈和高可用,是有条件的:
1. k8s集群有多个node节点
2. 服务有多个POD实例,并分散部署在多个node上
2. 镜像从镜像仓库拉取,而不是存在本地
2 K8S参数调优方法
(1). POD驱逐参数设置
可以通过设置k8s参数,自动回收异常的POD容器,修改master的kube-controller-manager文件 :/etc/kubernetes/manifests/kube-controller-manager.yaml,增加或修改参数:--terminated-pod-gc-threshold=20
修改后,kube-controller-manager会自动重启生效。
(2). 镜像删除参数设置
如果想修改磁盘回收的百份比,即磁盘使用量达到多少进行POD迁移和镜像回收,则需要修改每个主机上的kubelet配置文件:/var/lib/kubelet/config.yaml
[root@node1 kubelet]# cat config.yaml apiVersion: kubelet.config.k8s.io/v1beta1 authentication: anonymous: enabled: false webhook: cacheTTL: 0s enabled: true x509: clientCAFile: /etc/kubernetes/pki/ca.crt authorization: mode: Webhook webhook: cacheAuthorizedTTL: 0s cacheUnauthorizedTTL: 0s cgroupDriver: cgroupfs clusterDNS: - 172.29.0.10 clusterDomain: cluster.local cpuManagerReconcilePeriod: 0s evictionPressureTransitionPeriod: 0s fileCheckFrequency: 0s healthzBindAddress: 127.0.0.1 healthzPort: 10248 httpCheckFrequency: 0s imageGCHighThresholdPercent: 85 imageMinimumGCAge: 0s kind: KubeletConfiguration logging: {} nodeStatusReportFrequency: 0s nodeStatusUpdateFrequency: 0s rotateCertificates: true runtimeRequestTimeout: 0s staticPodPath: /etc/kubernetes/manifests streamingConnectionIdleTimeout: 0s syncFrequency: 0s volumeStatsAggPeriod: 0s enforceNodeAllocatable: - pods - kube-reserved kubeReserved: cpu: 2000m memory: 2000Mi ephemeral-storage: 2Gi evictionHard: imagefs.available: 15% memory.available: 100Mi nodefs.available: 10% nodefs.inodesFree: 5% kubeReservedCgroup: /kubelet.slice |
参数解析:
imageGCHighThresholdPercent:表示当磁盘使用量达到百份比时,回收未使用的镜像,需要配合imagefs.available一起使用
imagefs.available:表示磁盘空间保留多少百份比,小于该百份比则回收未使用的镜像
nodefs.available:表示磁盘空间保留多少百份比,小于该百份比则回收退出的容器,或驱逐正常运行的POD(出现Evicted状态)
imagefs.available和nodefs.available谁先达到条件则谁先执行,建议imagefs.available>=nodefs.available,先进行未使用的镜像回收,再驱逐POD
如果磁盘使用量达到95%才进行镜像回收和POD驱逐,则:
imageGCHighThresholdPercent: 95
imagefs.available: 5%
nodefs.available: 5%
如果磁盘使用量达到100%才进行镜像回收和POD驱逐,则:
imageGCHighThresholdPercent: 100
imagefs.available: 0%
nodefs.available: 0%
修改kubelet配置后,需要重启生效:
systemctl restart kubelet
镜像被删除及POD状态为Evicted问题参数调优方法
本文2024-09-23 01:10:30发表“云苍穹知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-cangqiong-144256.html
- 鼎捷EAI整合規範文件V3.1.07 (集團).pdf
- 鼎捷OpenAPI應用場景說明_基礎資料.pdf
- 鼎捷OpenAPI應用場景說明_財務管理.pdf
- 鼎捷T100 API設計器使用手冊T100 APIDesigner(V1.0).docx
- 鼎新e-GoB2雲端ERP B2 線上課程E6-2應付票據整批郵寄 領取.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A4使用者建立權限設定.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程C3會計開帳與會計傳票.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程E6-1應付票據.pdf
- 鼎新e-GoB2雲端ERP B2 線上課程A5-1進銷存參數設定(初階篇).pdf
- 鼎新e-GoB2雲端ERP B2 線上課程D2帳款開帳與票據開帳.pdf