当宿主机上的资源不足时,Kubernetes会触发Pod驱逐,释放资源以满足紧急需求。本文将深入讨论Pod驱逐策略的触发条件、配置参数以及如何通过优化来提高集群的稳定性。
1. 驱逐触发条件
Kubernetes触发Pod驱逐的主要条件包括:
可用内存不足(memory.available): 可用内存低于阈值时触发,默认阈值为100Mi。
可用磁盘空间不足(nodefs.available): 可用磁盘空间低于阈值时触发,默认阈值为总空间的10%。
可用磁盘inodes不足(nodefs.inodesFree): 仅对Linux节点生效,可用inodes低于阈值时触发,默认阈值为总inodes的5%。
容器运行时镜像存储空间不足(imagefs.available): 可用镜像存储空间低于阈值时触发,默认阈值为总空间的15%。
2. 驱逐配置参数
在kubelet配置中,可以通过以下参数配置驱逐策略:
系统保留资源:
--system-reserved=cpu=200m,memory=1G
设置预留给系统服务的资源,提高Node节点的稳定性。
Kubernetes组件保留资源:
--kube-reserved=cpu=200m,memory=1G
设置预留给Kubernetes组件的资源,如Kubelet、Docker Daemon等。
驱逐硬阈值:
--eviction-hard=memory.available<500Mi,nodefs.available<1Gi,imagefs.av