一、kubernetes中的资源计算方式
节点可为pod分配的资源计算方法:
Node Allocatable Resource = Node Capacity(资源总大小) - Kube-reserved(kube组件保留资源) - system-reserved(系统保留资源) - eviction-threshold(用户设置的驱逐阈值)
二、资源预留配置
配置在kubelet服务
1、硬驱逐阈值
--eviction-hard=memory.available<500Mi,nodefs.available<1Gi,imagefs.available<100Gi
当出现MemoryPressure时,Scheduler不会调度新的Best-Effort QoS Pods到此节点。
当出现DiskPressure时,Scheduler不会调度任何新Pods到此节点。
2、最小驱逐回收
--eviction-minimum-reclaim="memory.available=500Mi,nodefs.available=500Mi,imagefs.available=2Gi"`
3、驱逐等待时间
--eviction-pressure-transition-period=20s
4、节点状态更新间隔
--node-status-update-frequency=10s
5、设置预留系统服务的资源
--system-reserved=cpu=200m,memory=1G
6、用于配置为kube组件(kubelet,kube-proxy,dockerd等)预留的资源量
--kube-reserved=cpu=200m,memory=1G
三、调整实例
# vim /usr/lib/systemd/system/kubelet.service [Unit] Description=Kubernetes Kubelet Documentation=https://github.com/GoogleCloudPlatform/kubernetes After=docker.service Requires=docker.service [Service] WorkingDirectory=/var/lib/kubelet ExecStart=/opt/kubernetes/bin/kubelet --address=10.30.20.44 --hostname-override=10.30.20.44 --pod-infra-container-image=mirrorgooglecontainers/pause-amd64:3.0 --experimental-bootstrap-kubeconfig=/opt/kubernetes/cfg/bootstrap.kubeconfig --kubeconfig=/opt/kubernetes/cfg/kubelet.kubeconfig --cert-dir=/opt/kubernetes/ssl --client-ca-file=/opt/kubernetes/ssl/ca.pem --network-plugin=cni --eviction-hard=memory.available<1600Mi,nodefs.available<5Gi,imagefs.available<5Gi --eviction-minimum-reclaim=memory.available=2000Mi,nodefs.available=10Gi,imagefs.available=10Gi --eviction-pressure-transition-period=20s --node-status-update-frequency=10s --system-reserved=cpu=200m,memory=1G --kube-reserved=cpu=200m,memory=1G --cni-conf-dir=/etc/cni/net.d --cni-bin-dir=/opt/kubernetes/bin/cni --cluster-dns=10.10.0.2 --cluster-domain=cluster.local. --hairpin-mode hairpin-veth --allow-privileged=true --anonymous-auth=false --fail-swap-on=false --logtostderr=true --v=2 --log-dir=/opt/kubernetes/log --authentication-token-webhook Restart=on-failure RestartSec=5 [Install] WantedBy=multi-user.target
调整前,可分配内存:32841936Ki
Capacity: cpu: 16 ephemeral-storage: 20469Mi hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 32944336Ki pods: 110 Allocatable: cpu: 16 ephemeral-storage: 19316971898 hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 32841936Ki pods: 110
调整后,可分配内存:29352811Ki
Capacity: cpu: 16 ephemeral-storage: 20469Mi hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 32944336Ki pods: 110 Allocatable: cpu: 15600m ephemeral-storage: 15349Mi hugepages-1Gi: 0 hugepages-2Mi: 0 memory: 29352811Ki pods: 110