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/進程