如何設定 Amazon EKS 工作節點以指定的磁碟使用率百分比清理映像快取?
我想使用 Amazon Elastic Kubernetes Service (Amazon EKS) 工作節點以指定的磁碟使用率百分比清理映像快取。
簡短說明
若要使用 Amazon EKS 工作節點清理映像快取,請使用下列 kubelet 垃圾回收引數:
- --image-gc-high-threshold 引數定義啟動映像垃圾回收的磁碟使用率百分比。預設值為 85%。
- --image-gc-low-threshold 引數定義 LowThresholdPercent 值。kubelet 會刪除映像,直到磁碟使用率達到此值。預設值為 50%。
注意:在下列解決方法中,當磁碟使用率達到 70% 時,kubelet 垃圾回收引數會清理工作節點中的映像快取。--image-gc-high-threshold 設定為 70%。--image-gc-low-threshold 設定為 50%。
根據您的使用情況,請按照解決方法步驟將 kubelet 垃圾回收新增至預設組態檔或現有節點中。然後,確認引數是否存在於節點端點中。
如需詳細資訊,請參閱 Kubernetes 網站上的未使用容器和映像的垃圾回收。
解決方法
**注意:**下列解決方法適用於 Amazon EKS 最佳化的 Linux AMI。
將 kubelet 垃圾回收引數新增至預設 kubelet-config
使用 Amazon EKS 的自訂啟動範本功能,將 kubelet 垃圾回收引數新增至 Amazon Machine Image (AMI) 中的預設 kubelet-config 檔案。建立啟動範本時,請在 UserData 中指定引數。
- 下列命令會更新 AMI 中的 KUBELET\ _CONFIG 檔案。它會設定 imageGCHighThresholdPercent=70 和 imageGCLowThresholdPercent=60。如需詳細資訊,請參閱設定執行個體詳細資訊。
注意: 使用 Amazon EKS 叢集名稱取代 your-cluster-name。如果不使用預設 kubelet config 檔案,則更新檔案名稱。#!/bin/bash set -o xtrace KUBELET_CONFIG=/etc/kubernetes/kubelet/kubelet-config.json # Inject imageGCHighThresholdPercent value unless it has already been set. if ! grep -q imageGCHighThresholdPercent $KUBELET_CONFIG; then echo "$(jq ".imageGCHighThresholdPercent=70" $KUBELET_CONFIG)" > $KUBELET_CONFIG fi # Inject imageGCLowThresholdPercent value unless it has already been set. if ! grep -q imageGCLowThresholdPercent $KUBELET_CONFIG; then echo "$(jq ".imageGCLowThresholdPercent=60" $KUBELET_CONFIG)" > $KUBELET_CONFIG fi /etc/eks/bootstrap.sh your-cluster-name
- 使用啟動範本建立工作節點群組。
將 kubelet 垃圾回收引數新增至現有工作節點
**重要:**下列步驟要求您使用 SSH 連線到現有的工作節點,並具有 sudo 存取權。您必須在 Amazon EKS 叢集中的所有現有工作節點上完成這些步驟。
-
在工作節點中開啟 /etc/kubernetes/kubelet/kubelet-config.json 檔案。如果您使用 EKSCTL 啟動工作節點,則開啟 /etc/eksctl/kubelet.yaml:
sudo vi /etc/kubernetes/kubelet/kubelet-config.json #WORKER NODES LAUNCHED USING EKSCTL sudo vi /etc/eksctl/kubelet.yaml
-
根據您啟動工作節點的方式,將 kubelet 垃圾回收引數新增至 kubelet-config.json 或 kubelet.yaml 檔案中。然後,儲存檔案:
{ "kind": "KubeletConfiguration", "apiVersion": "kubelet.config.k8s.io/v1beta1", . . . "imageGCHighThresholdPercent": 70, ==> Add the argument under the same alignment as the "kind" "imageGCLowThresholdPercent": 60, "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: 60
-
若要在工作節點中重新啟動 kubelet 服務,請執行下列命令:
sudo service kubelet restart
確認新的 kubelet 垃圾回收引數位於節點 configz 端點中
-
若要取得工作節點的名稱,請執行下列命令:
kubectl get nodes
-
若要開啟與 API 伺服器的連線,請執行下列命令:
kubectl proxy
-
若要檢查節點 configz,請開啟新的終端。然後,執行下列命令:
curl -sSL "http://localhost:8001/api/v1/nodes/node_name/proxy/configz" | python3 -m json.tool
**注意:**使用您之前擷取的節點清單中的節點名稱取代 node_name。如果無法使用 cURL 和 Python,則在網頁瀏覽器中開啟 URL。
此命令傳回 kubeletconfig 的輸出。此輸出包括來自 bootstrap.sh 檔案的設定。請參閱下列範例:
{"kubeletconfig": { . . "imageGCHighThresholdPercent": 70, <=== The new value is set to 70 as given in UserData "imageGCLowThresholdPercent": 60, <=== The new value is set to 50 as given in UserData . . } }
相關內容
- 已提問 1 年前lg...
- 已提問 9 個月前lg...
- 已提問 8 個月前lg...
- 已提問 8 個月前lg...
- 已提問 8 個月前lg...
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前
- AWS 官方已更新 1 年前