这两天试着重新去理解kubelet的每一个配置,并整理出我们最有可能要配置的项作为我们上生产的要考虑的kubelet最佳配置,如下表所示。(有些flag的value待确定)
author: garnett.wang@gmail.com
kubernetes version: 1.6.2
Kubelet Configurations We Should Care About
flagvalue
–address0.0.0.0–allow-privilegedfalse–cadvisor-port int324194–cgroup-driver stringcgroupfs–cluster-dns stringSlice10.0.0.10 //todo–cluster-domain stringcaas.vivo.com–cni-bin-dir string/opt/cni/bin–cni-conf-dir string/etc/cni/net.d–docker-endpoint stringunix:///var/run/docker.sock–eviction-hard stringmemory.available<4Gi, nodefs.available<20Gi, imagefs.available<5Gi–eviction-max-pod-grace-period int3230–eviction-minimum-reclaim stringmemory.available=500Mi, nodefs.available=2Gi,, imagefs.available=2Gi–eviction-pressure-transition-period duration5m0s–eviction-soft stringmemory.available<8Gi, nodefs.available<100Gi, imagefs.available<20Gi–eviction-soft-grace-period stringmemory.available=30s, nodefs.available=2m, imagefs.available=2m–experimental-fail-swap-on+–experimental-kernel-memcg-notification+–feature-gates stringAllAlpha=false–file-check-frequency duration20s–hairpin-mode stringpromiscuous-bridge–healthz-port int3210248–image-gc-high-threshold int3260–image-gc-low-threshold int3240–image-pull-progress-deadline duration2m0s–kube-api-qps int325–kube-reserved mapStringStringcpu=200m,memory=16G–kubeconfig string/var/lib/kubelet/kubeconfig–max-pods int3250–minimum-image-ttl-duration duration1h–network-plugin stringcni–pod-infra-container-image stringvivo.registry.com/google_containers/pause-amd64:3.0–pod-manifest-path string/var/lib/kubelet/pod_manifest–port int3210250–protect-kernel-defaults+–read-only-port int3210255–require-kubeconfig+–root-dir string/var/lib/kubelet–runtime-request-timeout duration2m0s–serialize-image-pullsfalse–sync-frequency duration1m0s–system-reserved mapStringStringcpu=100m,memory=32G–volume-plugin-dir string/usr/libexec/kubernetes/kubelet-plugins/volume/exec/–volume-stats-agg-period duration1m0s
Kubelet Configuration Best Practicies
下面是我最终梳理的,认为需要真正显示设置的flag,所谓的最佳配置(当然真实的value需要根据实际情况做调整):
-
-port=10250
-
-allow-privileged=false
-
-cluster-dns=10.0.0.1
-
-cluster-domain=caas.vivo.com
-
-max-pods=50
-
-network-plugin=cni
-
-require-kubeconfig
-
-pod-manifest-path=/etc/kubelet.d/
-
-pod-infra-container-image=vivo.registry.com/google_containers/pause-amd64:3.0
-
-eviction-hard=memory.available<4Gi,nodefs.available<20Gi,imagefs.available<5Gi
-
-eviction-max-pod-grace-period=30
-
-eviction-minimum-reclaim=memory.available=500Mi,nodefs.available=2Gi,imagefs.available=2Gi
-
-eviction-pressure-transition-period=5m0s
-
-eviction-soft=memory.available<8Gi,nodefs.available<100Gi,imagefs.available<20Gi
-
-eviction-soft-grace-period=memory.available=30s,nodefs.available=2m,imagefs.available=2m
-
-experimental-kernel-memcg-notification
-
-experimental-fail-swap-on
-
-system-reserved=cpu=100m,memory=8G
-
-kube-reserved=cpu=200m,memory=16G
-
-hairpin-mode=promiscuous-bridge
-
-image-gc-high-threshold=60
-
-image-gc-low-threshold=40
-
-serialize-image-pulls=false
-
-protect-kernel-defaults
-
-feature-gates=AllAlpha=false