View a markdown version of this page

高度な Kubernetes コントロールプレーンパラメータを設定する - Amazon EKS

このページの改善にご協力ください

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。

高度な Kubernetes コントロールプレーンパラメータを設定する

このガイドでは、AWS CLI と AWS マネジメントコンソール を使用して高度な Kubernetes コントロールプレーンパラメータを設定および表示する手順を説明します。各パラメータとそれがクラスターに与える影響の説明については、「高度な Kubernetes コントロールプレーン設定」を参照してください。

前提条件

開始する前に、以下の準備が整っていることを確認します。

  • Kubernetes バージョン 1.31 以降を実行している Amazon EKS クラスター – 高度な Kubernetes コントロールプレーン設定は、Kubernetes バージョン 1.31 以降を実行している新規および既存のクラスターでサポートされています。このトピックのすべてのパラメータに、この最小バージョンが適用されます。

  • AWS CLI – Amazon EKS など AWS のサービスを操作するためのコマンドラインツールです。詳細については、AWS コマンドラインインターフェイスユーザーガイドの「インストール」を参照してください。AWS CLI のインストール後は設定も行っておくことをお勧めします。詳細については AWS コマンドラインインターフェイスユーザーガイドの「aws configure を使用したクイック設定」を参照してください。

  • 必要な IAM アクセス許可 – 使用している IAM プリンシパルには、Amazon EKS クラスターに対して describe および update を実行するためのアクセス許可が必要です。現在のプリンシパルを確認するには、次のコマンドを実行します。

    aws sts get-caller-identity
注記

このトピック内のステップはバッシュ シェル内で実行することが推奨されます。Bash シェルを使用していない場合、行継続文字や、変数の設定と使用に関する方法など、一部のスクリプトコマンドのためにシェルの調整が必要となります。さらに、シェルの引用規則とエスケープ規則は異なる場合があります。詳細については AWS コマンドラインインターフェイスのユーザーガイドの「AWS CLI での文字列への引用符の使用」を参照してください。

このトピックのコマンドを実行する前に、ご希望のクラスター名とリージョンを設定します。

export CLUSTER=my-eks-cluster export AWS_REGION=us-west-2

サポートされる値

Amazon EKS は各パラメータを次の範囲に対して検証し、その範囲外のリクエストは拒否します。

コンポーネントパラメータ サポートされる値 デフォルト

kubeSchedulerConfig.nodeResourcesFit.scoringStrategy.type

LeastAllocated, MostAllocated

LeastAllocated

kubeSchedulerConfig.nodeResourcesFit.scoringStrategy.resources[].weight

1~100

cpu: 1, memory: 1

kubeControllerManagerConfig.horizontalPodAutoscalerControllerConfig.horizontalPodAutoscalerSyncPeriod

10s~15s

15s

kubeControllerManagerConfig.podGcControllerConfig.terminatedPodGcThreshold

10000~12500

12500

kubeApiServerConfig.eventTtl

10m~60m

60m

kubeApiServerConfig.serviceNodePortRange.minPort

10260~32767

30000

kubeApiServerConfig.serviceNodePortRange.maxPort

10260~32767

32767

これらの値は公開時点で利用可能な Kubernetes バージョンに適用され、今後のバージョンで変更される可能性があります。特定のバージョンの現在の値を取得するには、次のセクションを参照してください。

Kubernetes バージョンのデフォルト値とサポートされている値を確認する

DescribeClusterVersions オペレーションは、Kubernetes バージョンごとに、すべてのコントロールプレーンパラメータのデフォルト値とサポートされている値を報告します。特にクラスター設定を自動化したり、複数の Kubernetes バージョンにまたがってクラスターを管理したりする場合は、値をハードコーディングするのではなく、このオペレーションから読み取ってください。

aws eks describe-cluster-versions --cluster-versions 1.35

応答には、コントロールプレーンコンポーネント別に整理された controlPlaneComponentConfig オブジェクトが含まれます。各パラメータは defaultValue と constraints オブジェクトを報告します。

{ "clusterVersions": [ { "clusterVersion": "1.35", "clusterType": "eks", "defaultVersion": false, "releaseDate": "2026-01-23T00:00:00+00:00", "endOfStandardSupportDate": "2027-03-23T00:00:00+00:00", "endOfExtendedSupportDate": "2028-03-23T00:00:00+00:00", "status": "STANDARD_SUPPORT", "controlPlaneScalingTiers": [ { "tierName": "tier-xl", "apiRequestConcurrency": 2000, "podSchedulingRatePerSecond": 167, "clusterDatabaseSizeGb": 16 }, { "tierName": "tier-2xl", "apiRequestConcurrency": 4000, "podSchedulingRatePerSecond": 283, "clusterDatabaseSizeGb": 16 }, { "tierName": "tier-4xl", "apiRequestConcurrency": 8000, "podSchedulingRatePerSecond": 400, "clusterDatabaseSizeGb": 16 }, { "tierName": "tier-8xl", "apiRequestConcurrency": 16000, "podSchedulingRatePerSecond": 400, "clusterDatabaseSizeGb": 16 } ], "controlPlaneComponentConfig": { "kubeApiServerConfig": { "eventTtl": { "defaultValue": "60m", "constraints": { "min": "10m", "max": "60m" } }, "serviceNodePortRange": { "defaultValue": { "minPort": 30000, "maxPort": 32767 }, "constraints": { "minPort": {"min": 10260, "max": 32767}, "maxPort": {"min": 10260, "max": 32767} } } }, "kubeSchedulerConfig": { "nodeResourcesFit": { "scoringStrategy": { "defaultValue": { "type": "LeastAllocated", "resources": [ {"name": "cpu", "weight": 1}, {"name": "memory", "weight": 1} ] }, "constraints": { "scoringStrategy": { "allowedValues": ["LeastAllocated", "MostAllocated"] }, "resources": { "name": { "allowedValues": [ "cpu", "memory", "nvidia.com/gpu", "aws.amazon.com/neuron", "aws.amazon.com/neuroncore" ] }, "weight": {"min": 1, "max": 100} } } } } }, "kubeControllerManagerConfig": { "horizontalPodAutoscalerControllerConfig": { "horizontalPodAutoscalerSyncPeriod": { "defaultValue": "15s", "constraints": { "min": "10s", "max": "15s" } } }, "podGcControllerConfig": { "terminatedPodGcThreshold": { "defaultValue": 12500, "constraints": { "min": 10000, "max": 12500 } } } } } } ] }

前述のレスポンスには、バージョンのサポート日、プロビジョンドコントロールプレーンのスケーリング階層、およびコントロールプレーン設定フィールドが表示されます。詳細については、Amazon EKS API リファレンスの「DescribeClusterVersions」を参照してください。

設定フィールドのみを返すには、--query オプションを使用します。

aws eks describe-cluster-versions --cluster-versions 1.35 \ --query 'clusterVersions[0].controlPlaneComponentConfig'

コントロールプレーン設定 – AWS CLI

各コントロールプレーンコンポーネントには、--kube-scheduler-config、--kube-controller-manager-config、--kube-api-server-config といった独自のパラメータがあります。カスタマイズするコンポーネントのみを指定します。各パラメータはインライン JSON を受け入れます。

コントロールプレーンパラメータを指定してクラスターを作成する

次のコマンドは、新しい Kubernetes イベントをデフォルトの 60 分ではなく 10 分間保持するクラスターを作成します。指定しないパラメータにはデフォルト値が使用されます。

aws eks create-cluster \ --name "$CLUSTER" \ --kubernetes-version 1.35 \ --role-arn arn:aws:iam::111122223333:role/eks-service-role \ --resources-vpc-config subnetIds=subnet-abc123,subnet-def456,securityGroupIds=sg-xyz789 \ --kube-api-server-config '{ "eventTtl": "10m" }'

レスポンス:

{ "cluster": { "name": "my-eks-cluster", "arn": "arn:aws:eks:us-west-2:111122223333:cluster/my-eks-cluster", "createdAt": 1709640000.0, "version": "1.35", "roleArn": "arn:aws:iam::111122223333:role/eks-service-role", "status": "CREATING", "kubeSchedulerConfig": { "nodeResourcesFit": { "scoringStrategy": { "type": "LeastAllocated" } } }, "kubeControllerManagerConfig": { "horizontalPodAutoscalerControllerConfig": { "horizontalPodAutoscalerSyncPeriod": "15s" } }, "kubeApiServerConfig": { "eventTtl": "10m", "serviceNodePortRange": { "minPort": 30000, "maxPort": 32767 } } } }

クラスターのコントロールプレーン設定を表示する

aws eks describe-cluster --name "$CLUSTER"

レスポンスには、kubeSchedulerConfig、kubeControllerManagerConfig、kubeApiServerConfig がトップレベルのフィールドとして含まれます。これらのフィールドは常に存在し、カスタマイズしていないパラメータとそのデフォルト値を含め、コントロールプレーンで実行されている完全な設定を示します。

単一のコンポーネントの設定を返すには、--query オプションを使用します。

aws eks describe-cluster --name "$CLUSTER" \ --query 'cluster.kubeSchedulerConfig'

レスポンス:

{ "nodeResourcesFit": { "scoringStrategy": { "type": "LeastAllocated" } } }

スケジューラのスコアリング戦略を設定する

デフォルトでは、スケジューラは LeastAllocated 戦略を使用し、ポッドをノード全体に分散させます。次のコマンドはそれを MostAllocated に変更します。これは、既にリソース割り当てが高いノードを優先し、より少ないノードにポッドを詰め込みます。

aws eks update-cluster-config \ --name "$CLUSTER" \ --kube-scheduler-config '{ "nodeResourcesFit": { "scoringStrategy": { "type": "MostAllocated" } } }'

レスポンス:

{ "update": { "id": "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111", "status": "InProgress", "type": "ControlPlaneComponentConfigUpdate", "params": [ { "type": "kubeSchedulerConfig", "value": "{\"nodeResourcesFit\":{\"scoringStrategy\":{\"type\":\"MostAllocated\"}}}" } ], "createdAt": 1709643600.0, "errors": [] } }

また、resources 配列を指定してスコアリング計算の個々のリソースに重みを付けることもできます。これは、クラスター内で特定のリソースが制約となっている場合に役立ちます。詳細については、「高度な Kubernetes コントロールプレーン設定」を参照してください。

他のコントロールプレーンパラメータも同じパターンに従い、それぞれに独自のコンポーネントフラグがあります: eventTtl と serviceNodePortRange には --kube-api-server-config、Horizontal Pod Autoscaler の同期期間には --kube-controller-manager-config です。各パラメータの機能と、変更する前に考慮すべき事項については、「高度な Kubernetes コントロールプレーン設定」を参照してください。

一度に複数のコンポーネントを更新する

1 回の呼び出しで複数のコンポーネントパラメータを指定できます。

aws eks update-cluster-config \ --name "$CLUSTER" \ --kube-scheduler-config '{"nodeResourcesFit":{"scoringStrategy":{"type":"MostAllocated"}}}' \ --kube-api-server-config '{"eventTtl":"30m"}'

更新は既存の設定とマージされます。指定したフィールドのみが変更され、省略したフィールドは現在の値を保持します。前述のコマンドは、コントローラーマネージャーの設定を変更しません。

コントロールプレーン設定の更新を監視する

update-cluster-config が返された時点では、設定変更は有効になっていません。Amazon EKS はコントロールプレーンのローリング更新を通じて新しい設定を適用します。これには数分かかります。変更が完了するまでブロックするには、次のようにします。

aws eks wait cluster-active --name "$CLUSTER"

このコマンドは、クラスターが ACTIVE ステータスに達したときに返されます。通常は数分以内に達します。

クラスターの更新を一覧表示するには、次のようにします。

aws eks list-updates --name "$CLUSTER"

レスポンス:

{ "updateIds": [ "a1b2c3d4-5678-90ab-cdef-EXAMPLE11111" ] }

特定の更新のステータスを表示するには、次のようにします。

aws eks describe-update --name "$CLUSTER" \ --update-id a1b2c3d4-5678-90ab-cdef-EXAMPLE11111

ステータスは、更新が完了すると InProgress から Successful に変わり、エラーが発生すると Failed に変わります。errors フィールドは失敗の理由を示します。

コントロールプレーン設定 – AWS マネジメントコンソール

クラスターを作成するときに高度な Kubernetes コントロールプレーンパラメータを設定するには、以下の手順を行います。

  1. Amazon EKS コンソール を開きます。

  2. [クラスターを作成] を選択します。

  3. [設定オプション] で [カスタム設定] を選択します。

  4. [コントロールプレーン設定] まで下にスクロールします。

  5. [コントロールプレーン設定を有効にする] を選択します。

  6. 希望のパラメータを設定します。変更しないパラメータにはデフォルト値が使用されます。

  7. 必要に応じて、他のクラスター設定オプションを選択します。最後のステップで、[クラスターを作成] を選択します。クラスターの作成が完了するまでに数分かかる場合があります。

既存のクラスターで高度な Kubernetes コントロールプレーンパラメータを設定するには、次のようにします。

  1. Amazon EKS コンソール を開きます。

  2. 更新するクラスターを選択します。

  3. [概要] タブを選択し、[コントロールプレーン設定] まで下にスクロールします。

  4. [管理] を選択し、次に [コントロールプレーン設定を有効にする] を選択して、変更するパラメータを設定します。次に、変更の保存を選択します。