K8s调整节点kubelet硬驱逐策略:修订间差异
来自三线的随记
无编辑摘要 |
小无编辑摘要 |
||
| (未显示同一用户的4个中间版本) | |||
| 第1行: | 第1行: | ||
--eviction-hard=nodefs.available<5Gi,imagefs.available<5Gi | --eviction-hard=nodefs.available<5Gi,imagefs.available<5Gi | ||
添加到kubelet service environment就好 | 添加到kubelet service environment就好(此配置方法在DEPRECATED阶段) | ||
[Service] | [Service] | ||
Environment="***" | Environment="***" | ||
ps: 驱逐相关的doc: | |||
https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/ | |||
https://blog.tianfeiyu.com/2020/02/06/kubelet_garbage_collect/ (部分内容过时) | |||
https://kubernetes.io/docs/concepts/architecture/garbage-collection/ | |||
PS2: 通过请求k8s-apiserver接口,可以获知节点当前kubelet配置具体值 | |||
apiserver的认证绕过可以通过 <code>kubectl proxy --port=8001</code> 等方法实现 | |||
或者直接使用命令 <code>kubectl get --raw "/api/v1/nodes/${nodeName}/proxy/configz" | jq</code> | |||
curl ${k8s-apiserver}/api/v1/nodes/${nodeName}/proxy/configz | |||
{ | |||
"kubeletconfig": { | |||
"staticPodPath": "/etc/kubernetes/kubelet/manifests", | |||
"syncFrequency": "1m0s", | |||
"fileCheckFrequency": "20s", | |||
"httpCheckFrequency": "20s", | |||
"address": "0.0.0.0", | |||
"port": 10250, | |||
"readOnlyPort": 10255, | |||
"tlsCertFile": "/var/lib/kubelet/pki/kubelet.crt", | |||
"tlsPrivateKeyFile": "/var/lib/kubelet/pki/kubelet.key", | |||
"rotateCertificates": true, | |||
"authentication": { | |||
"x509": { | |||
"clientCAFile": "/etc/kubernetes/certs/ca.crt" | |||
}, | |||
"webhook": { | |||
"enabled": true, | |||
"cacheTTL": "2m0s" | |||
}, | |||
"anonymous": { | |||
"enabled": false | |||
} | |||
}, | |||
"authorization": { | |||
"mode": "Webhook", | |||
"webhook": { | |||
"cacheAuthorizedTTL": "5m0s", | |||
"cacheUnauthorizedTTL": "30s" | |||
} | |||
}, | |||
"registryPullQPS": 5, | |||
"registryBurst": 10, | |||
"eventRecordQPS": 5, | |||
"eventBurst": 10, | |||
"enableDebuggingHandlers": true, | |||
"healthzPort": 10248, | |||
"healthzBindAddress": "127.0.0.1", | |||
"oomScoreAdj": -999, | |||
"clusterDomain": "cluster.local", | |||
"clusterDNS": [ | |||
"172.31.0.10" | |||
], | |||
"streamingConnectionIdleTimeout": "4h0m0s", | |||
"nodeStatusUpdateFrequency": "10s", | |||
"nodeStatusReportFrequency": "10s", | |||
"nodeLeaseDurationSeconds": 40, | |||
"imageMinimumGCAge": "2m0s", | |||
"imageGCHighThresholdPercent": 85, | |||
"imageGCLowThresholdPercent": 80, | |||
"volumeStatsAggPeriod": "1m0s", | |||
"cgroupsPerQOS": true, | |||
"cgroupDriver": "cgroupfs", | |||
"cpuManagerPolicy": "none", | |||
"cpuManagerReconcilePeriod": "10s", | |||
"topologyManagerPolicy": "none", | |||
"runtimeRequestTimeout": "2m0s", | |||
"hairpinMode": "promiscuous-bridge", | |||
"maxPods": 250, | |||
"podPidsLimit": 8192, | |||
"resolvConf": "/etc/resolv.conf", | |||
"cpuCFSQuota": true, | |||
"cpuCFSQuotaPeriod": "100ms", | |||
"maxOpenFiles": 1000000, | |||
"contentType": "application/vnd.kubernetes.protobuf", | |||
"kubeAPIQPS": 5, | |||
"kubeAPIBurst": 10, | |||
"serializeImagePulls": true, | |||
"evictionHard": { | |||
"imagefs.available": "15%", | |||
"memory.available": "100Mi", | |||
"nodefs.available": "10%", | |||
"nodefs.inodesFree": "5%" | |||
}, | |||
"evictionPressureTransitionPeriod": "5m0s", | |||
"enableControllerAttachDetach": true, | |||
"makeIPTablesUtilChains": true, | |||
"iptablesMasqueradeBit": 14, | |||
"iptablesDropBit": 15, | |||
"featureGates": { | |||
"CSIMigration": false, | |||
"EphemeralContainers": true | |||
}, | |||
"failSwapOn": true, | |||
"containerLogMaxSize": "10Mi", | |||
"containerLogMaxFiles": 5, | |||
"configMapAndSecretChangeDetectionStrategy": "Watch", | |||
"systemReserved": { | |||
"cpu": "500m", | |||
"memory": "512Mi", | |||
"pid": "100" | |||
}, | |||
"enforceNodeAllocatable": [ | |||
"pods" | |||
] | |||
} | |||
} | |||
[[分类:K8s]] | [[分类:K8s]] | ||
2024年1月30日 (二) 20:26的最新版本
--eviction-hard=nodefs.available<5Gi,imagefs.available<5Gi
添加到kubelet service environment就好(此配置方法在DEPRECATED阶段)
[Service] Environment="***"
ps: 驱逐相关的doc:
https://kubernetes.io/docs/concepts/scheduling-eviction/node-pressure-eviction/
https://blog.tianfeiyu.com/2020/02/06/kubelet_garbage_collect/ (部分内容过时)
https://kubernetes.io/docs/concepts/architecture/garbage-collection/
PS2: 通过请求k8s-apiserver接口,可以获知节点当前kubelet配置具体值
apiserver的认证绕过可以通过 kubectl proxy --port=8001 等方法实现
或者直接使用命令 kubectl get --raw "/api/v1/nodes/${nodeName}/proxy/configz" | jq
curl ${k8s-apiserver}/api/v1/nodes/${nodeName}/proxy/configz
{
"kubeletconfig": {
"staticPodPath": "/etc/kubernetes/kubelet/manifests",
"syncFrequency": "1m0s",
"fileCheckFrequency": "20s",
"httpCheckFrequency": "20s",
"address": "0.0.0.0",
"port": 10250,
"readOnlyPort": 10255,
"tlsCertFile": "/var/lib/kubelet/pki/kubelet.crt",
"tlsPrivateKeyFile": "/var/lib/kubelet/pki/kubelet.key",
"rotateCertificates": true,
"authentication": {
"x509": {
"clientCAFile": "/etc/kubernetes/certs/ca.crt"
},
"webhook": {
"enabled": true,
"cacheTTL": "2m0s"
},
"anonymous": {
"enabled": false
}
},
"authorization": {
"mode": "Webhook",
"webhook": {
"cacheAuthorizedTTL": "5m0s",
"cacheUnauthorizedTTL": "30s"
}
},
"registryPullQPS": 5,
"registryBurst": 10,
"eventRecordQPS": 5,
"eventBurst": 10,
"enableDebuggingHandlers": true,
"healthzPort": 10248,
"healthzBindAddress": "127.0.0.1",
"oomScoreAdj": -999,
"clusterDomain": "cluster.local",
"clusterDNS": [
"172.31.0.10"
],
"streamingConnectionIdleTimeout": "4h0m0s",
"nodeStatusUpdateFrequency": "10s",
"nodeStatusReportFrequency": "10s",
"nodeLeaseDurationSeconds": 40,
"imageMinimumGCAge": "2m0s",
"imageGCHighThresholdPercent": 85,
"imageGCLowThresholdPercent": 80,
"volumeStatsAggPeriod": "1m0s",
"cgroupsPerQOS": true,
"cgroupDriver": "cgroupfs",
"cpuManagerPolicy": "none",
"cpuManagerReconcilePeriod": "10s",
"topologyManagerPolicy": "none",
"runtimeRequestTimeout": "2m0s",
"hairpinMode": "promiscuous-bridge",
"maxPods": 250,
"podPidsLimit": 8192,
"resolvConf": "/etc/resolv.conf",
"cpuCFSQuota": true,
"cpuCFSQuotaPeriod": "100ms",
"maxOpenFiles": 1000000,
"contentType": "application/vnd.kubernetes.protobuf",
"kubeAPIQPS": 5,
"kubeAPIBurst": 10,
"serializeImagePulls": true,
"evictionHard": {
"imagefs.available": "15%",
"memory.available": "100Mi",
"nodefs.available": "10%",
"nodefs.inodesFree": "5%"
},
"evictionPressureTransitionPeriod": "5m0s",
"enableControllerAttachDetach": true,
"makeIPTablesUtilChains": true,
"iptablesMasqueradeBit": 14,
"iptablesDropBit": 15,
"featureGates": {
"CSIMigration": false,
"EphemeralContainers": true
},
"failSwapOn": true,
"containerLogMaxSize": "10Mi",
"containerLogMaxFiles": 5,
"configMapAndSecretChangeDetectionStrategy": "Watch",
"systemReserved": {
"cpu": "500m",
"memory": "512Mi",
"pid": "100"
},
"enforceNodeAllocatable": [
"pods"
]
}
}