Get Hands-on with Amazon EKS - Workshop Event Series
Whether you're taking your first steps with Kubernetes or you're an experienced practitioner looking to sharpen your skills, our Amazon EKS workshop series delivers practical, real-world experience that moves you forward. Learn directly from AWS solutions architects and EKS specialists through hands-on sessions designed to build your confidence with Kubernetes. Register now and start building with Amazon EKS!
指定したディスク使用率でイメージキャッシュをクリーンアップするように Amazon EKS ワーカーノードを設定する方法を教えてください。
Amazon Elastic Kubernetes Service (Amazon EKS) ワーカーノードを使用して、指定したディスク使用率でイメージキャッシュをクリーンアップしたいと考えています。
簡単な説明
Amazon EKS ワーカーノードを使用してイメージキャッシュをクリーンアップするには、次の kubelet ガベージコレクション引数を使用します。
- --image-gc-high-threshold により、kubelet がイメージのガベージコレクションを実行開始するディスク使用率を定義します。
注: この引数のデフォルト値は 85% です。 - --image-gc-low-threshold により、kubelet イメージのガベージコレクションを実行する最小ディスク使用率を定義します。
注: この引数のデフォルト値は 80% です。
ユースケースに応じて、kubelet ガベージコレクションをデフォルトの設定ファイルまたは既存のノードに追加してください。次に、引数がノードエンドポイントに存在することを確認します。
詳細については、Kubernetes Web サイトの「未使用のコンテナとイメージのガベージコレクション」を参照してください。
解決策
注: 次の解決策は、Amazon EKS に最適化された Linux Amazon マシンイメージ (AMI) に適用されます。
kubelet ガベージコレクションの引数をデフォルトの kubelet-config に追加する
次の手順を実行します。
- AMI の kubelet-config ファイルを更新するには、次のコマンドを実行します。
注: your-cluster-name を実際の Amazon EKS クラスター名に置き換えてください。デフォルトの kubelet 設定ファイルを使用しない場合は、kubelet-config.json を使用するファイル名に置き換えてください。上記のコマンドでは、imageGCHighThresholdPercent を 70%、imageGCLowThresholdPercent を 60% に設定します。したがって、ディスク使用量が 70% に達すると、kubelet はワーカーノードのイメージキャッシュをクリーンアップします。ディスク使用量が 60% 未満の場合、kubelet はイメージキャッシュをクリーンアップしません。#!/bin/bashset -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 アクセスが必要です。
kubelet ガベージコレクションの引数を既存のワーカーノードに追加するには、次の手順を実行します。
-
ワーカーノードの /etc/kubernetes/kubelet/kubelet-config.json ファイルを開くには、次のコマンドを実行します。
sudo vi /etc/kubernetes/kubelet/kubelet-config.jsoneksctl を使用してワーカーノードを起動した場合は、次のコマンドを実行して /etc/eksctl/kubelet.yaml を開きます。
sudo vi /etc/eksctl/kubelet.yaml -
kubelet ガベージコレクションの引数を kubelet-config.json ファイルに追加し、ファイルを保存します。ファイル例:
{ "kind": "KubeletConfiguration", "apiVersion": "kubelet.config.k8s.io/v1beta1", . . . "imageGCHighThresholdPercent": 70, ==> Add the argument under the same alignment as the "kind" "imageGCLowThresholdPercent": 60, "maxPods": ... }注: 上記のコマンドでは、imageGCHighThresholdPercent を 70%、imageGCLowThresholdPercent を 60% に設定します。
eksctl を使用してワーカーノードを起動した場合は、kubelet ガベージコレクションの引数を kubelet.yaml ファイルに追加し、ファイルを保存します。ファイル例: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注: 上記のコマンドでは、imageGCHighThresholdPercent を 70%、imageGCLowThresholdPercent を 60% に設定します。
-
ワーカーノードで kubelet サービスを再起動するには、次のコマンドを実行します。
sudo service kubelet restart -
Amazon EKS クラスター内の既存のワーカーノードごとに、上記の解決手順を繰り返します。
新しい 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 を使用できない場合は、ウェブブラウザで http://localhost:8001/api/v1/nodes/node_name/proxy/configz という URL を開いてください。
出力例:{"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 . . } }注: 上記のコマンド出力には、kubeletconfig の bootstrap.sh ファイルでの設定が表示されます。
- トピック
- Containers
- 言語
- 日本語
