如何配置 Amazon EKS Worker 节点,以按指定的磁盘使用百分比清理映像缓存?
我想要使用 Amazon Elastic Kubernetes Service(Amazon EKS)Worker 节点按指定的磁盘使用百分比清理映像缓存。
简短描述
要使用 Amazon EKS Worker 节点清理映像缓存,请使用下面的 kubelet 垃圾回收(来自 Kubernetes 网站)参数:
- --image-gc-high-threshold 参数用于定义启动映像垃圾回收的磁盘使用百分比。默认值为 85%。
- --image-gc-low-threshold 参数用于定义映像垃圾收集尝试释放的磁盘使用百分比。默认值为 80%。
注意:在下面的解决方案中,kubelet 垃圾回收参数在磁盘使用率达到 70% 时清理 Worker 节点中的映像缓存。--image-gc-high-threshold 设置为 70%。--image-gc-low-threshold 设置为 50%。
要将 kubelet 垃圾回收参数添加到新的 Worker 节点中,请完成以下部分中的步骤:
- 使用新 Worker 节点的 UserData 将 kubelet 垃圾回收参数添加到亚马逊云机器镜像(AMI)中的默认 kubelet-config 文件
- 验证新的 kubelet 垃圾回收参数在节点 configz 端点中
要将 kubelet 垃圾收集参数添加到现有的工作线程节点中,请完成以下部分中的步骤:
- 将 kubelet 垃圾收集参数添加到现有的工作线程节点中
- 验证新的 kubelet 垃圾收集参数在节点 configz 终端节点中
解决方案
**注意:**以下解决方案适用于 Amazon EKS 优化的 Linux AMI。
使用新 Worker 节点的 UserData 将 kubelet 垃圾回收参数添加到 AMI 中的默认 kubelet-config 文件
1. 启动一个 Amazon Elastic Compute Cloud (Amazon EC2) 实例。
使用 sed 命令在 Amazon EKS 优化的 Linux AMI 的 kubelet-config.json 文件中添加 --image-gc-low-threshold 和 --image-gc-high-threshold。sed 命令位于步骤 3:配置实例详细信息的 UserData 部分。
例如:
#!/bin/bash set -o xtrace # Inject imageGCHighThresholdPercent value unless it has already been set. if ! grep -q imageGCHighThresholdPercent /etc/kubernetes/kubelet/kubelet-config.json; then sed -i '/"apiVersion*/a \ \ "imageGCHighThresholdPercent": 70,' /etc/kubernetes/kubelet/kubelet-config.json fi # Inject imageGCLowThresholdPercent value unless it has already been set. if ! grep -q imageGCLowThresholdPercent /etc/kubernetes/kubelet/kubelet-config.json; then sed -i '/"imageGCHigh*/a \ \ "imageGCLowThresholdPercent": 50,' /etc/kubernetes/kubelet/kubelet-config.json fi /etc/eks/bootstrap.sh your-cluster-name
**注意:**将 your-cluster-name 替换为您的 Amazon EKS 集群名称。如果您使用的是其他 kubelet 配置文件,请在 sed 命令中更新文件名。
2. 将工作线程节点添加到您的 Amazon EKS 集群中。
3. 要验证更改,请遵照验证新的 kubelet 垃圾回收参数在节点 configz 端点中部分中的步骤。
将 kubelet 垃圾回收参数添加到现有的 Worker 节点中
**重要提示:**以下步骤需要您使用 SSH 连接到现有工作线程节点并具有 sudo 访问权。您必须在您的 Amazon EKS 集群中的所有现有工作线程节点上完成这些步骤。
2. 在您的 Worker 节点中打开 /etc/kubernetes/kubelet/kubelet-config.json 文件。
如果使用 EKSCTL 启动 Worker 节点,则打开 /etc/eksctl/kubelet.yaml。请参阅以下示例:
sudo vi /etc/kubernetes/kubelet/kubelet-config.json #WORKER NODES LAUNCHED USING EKSCTL sudo vi /etc/eksctl/kubelet.yaml
3. 将 kubelet 垃圾回收参数添加到 kubelet-config.json 文件或 kubelet.yaml 文件中,具体取决于如何启动 Worker 节点。然后,保存文件。请参阅以下示例:
{ "kind": "KubeletConfiguration", "apiVersion": "kubelet.config.k8s.io/v1beta1", . . . "imageGCHighThresholdPercent": 70, ==> Add the argument under the same alignment as the "kind" "imageGCLowThresholdPercent": 50, "maxPods": ... } #WORKER NODES LAUNCHED USING EKSCTL kind: KubeletConfiguration kubeReserved: cpu: 70m ephemeral-storage: 1Gi memory: 1843Mi serverTLSBootstrap: true imageGCHighThresholdPercent: 70 ==> Add the arguments under the alignment "Kind" in the yaml file imageGCLowThresholdPercent: 50
4. 要在工作线程节点中重新启动 kubelet 服务,请运行以下命令:
sudo service kubelet restart
5. 要验证更改,请遵照验证新的 kubelet 垃圾回收参数在节点 configz 端点中部分中的步骤。
验证新的 kubelet 垃圾回收参数在节点 configz 端点中
1. 要获取工作线程节点的名称,请运行以下命令:
kubectl get nodes
2. 要打开至 API 服务器的连接,请运行以下命令:
kubectl proxy
3. 要检查节点 configz,请打开一个新终端,然后运行以下命令:
curl -sSL "http://localhost:8001/api/v1/nodes/node_name/proxy/configz" | python3 -m json.tool
**注意:**将 node_name 替换为在步骤 1 中检索的节点列表中的节点名称。如果 curl 和 python 不可用,则在 Web 浏览器中打开 URL。
前面的命令返回来自 kubeletconfig 的输出。此输出包括您在 bootstrap.sh 文件中的设置。请参阅以下示例:
{ "kubeletconfig": { . . "imageGCHighThresholdPercent": 70, <=== The new value is set to 70 as given in UserData "imageGCLowThresholdPercent": 50, <=== The new value is set to 50 as given in UserData . . } }

相关内容
- 已提问 1 个月前lg...
- 已提问 4 个月前lg...
- 已提问 5 个月前lg...
- 已提问 5 个月前lg...
- 已提问 5 个月前lg...
- AWS 官方已更新 2 个月前
- AWS 官方已更新 6 个月前
- AWS 官方已更新 2 个月前