Kubernetes 的节点能够按照 Capacity
调度。默认状况下 pod 可以使用节点所有可用容量。 这是个问题,由于节点本身一般运行了很多驱动 OS 和 Kubernetes 的系统守护进程。 除非为这些系统守护进程留出资源,不然它们将与 pod 争夺资源并致使节点资源短缺问题。node
kubelet
公开了一个名为 Node Allocatable
的特性,有助于为系统守护进程预留计算资源。 Kubernetes 推荐集群管理员按照每一个节点上的工做负载密度配置 Node Allocatable
。docker
pods,kube-reserved,system-reserve
。以32C/96G为例:spa
我是kubespray安装的在/etc/kubernetes/kubelet.env添加如下参数后重启kubelet生效:code
--system-reserved=cpu=200m,memory=10Gi \
--eviction-hard=memory.available<10Gi,nodefs.available<1Gi,imagefs.available<1Gi \ --eviction-minimum-reclaim=memory.available=1Gi,nodefs.available=500Mi,imagefs.available=1Gi \
--node-status-update-frequency=10s --eviction-pressure-transition-period=30s"
内存压测:blog
yum install -y stress stress -i 1 --vm 1 --vm-bytes 20G
参考连接:https://kubernetes.io/zh/docs/tasks/administer-cluster/reserve-compute-resources/进程