镜像被删除及POD状态为Evicted问题参数调优方法

栏目:云苍穹知识作者:金蝶来源:金蝶云社区发布:2024-09-23浏览:1

镜像被删除及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问题参数调优方法

1 问题描述Kubernetes默认配置情况下,当node节点的磁盘使用量达到85%,节点会对运行的容器进行驱逐,并且回收未被使用的镜像,来保证服务...
点击下载文档
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息