翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Auto Scaling
Auto Scaling を有効にする
クラスターオートスケーラーの使用を許可する IAM ロールを使用して、クラスター
eksctl create cluster --asg-access
このフラグは k8s.io/cluster-autoscaler/enabled
と k8s.io/cluster-autoscaler/<clusterName>
タグも設定するため、ノードグループ検出は機能します。
クラスターが実行されたら、Cluster Autoscaler
また、マネージド型またはアンマネージド型のノードグループ定義に以下を追加して、Cluster Autoscaler がノードグループをスケーリングするために必要なタグを追加する必要があります (複数可)。
nodeGroups: - name: ng1-public iam: withAddonPolicies: autoScaler: true
0 からスケールアップする
ノードグループを 0 からスケールアップでき、ノードグループにラベルやテイントが定義されている場合は、Auto Scaling Groups (ASGs) にタグとして伝達する必要があります。
これを行う 1 つの方法は、ノードグループ定義の tags
フィールドに ASG タグを設定することです。たとえば、次のラベルとテイントを持つノードグループがあるとします。
nodeGroups: - name: ng1-public ... labels: my-cool-label: pizza taints: key: feaster value: "true" effect: NoSchedule
次の ASG タグを追加する必要があります。
nodeGroups: - name: ng1-public ... labels: my-cool-label: pizza taints: feaster: "true:NoSchedule" tags: k8s.io/cluster-autoscaler/node-template/label/my-cool-label: pizza k8s.io/cluster-autoscaler/node-template/taint/feaster: "true:NoSchedule"
マネージド型ノードグループとアンマネージド型ノードグループの両方で、これは propagateASGTags
を に設定することで自動的に実行できます。これによりtrue
、ラベルとテイントがタグとして Auto Scaling グループに追加されます。
nodeGroups: - name: ng1-public ... labels: my-cool-label: pizza taints: feaster: "true:NoSchedule" propagateASGTags: true
ゾーン対応の Auto Scaling
ワークロードがゾーン固有である場合は、ゾーンごとに個別のノードグループを作成する必要があります。これは、 がグループ内のすべてのノードが完全に同等であることをcluster-autoscaler
前提としているためです。したがって、例えば、ゾーン固有の PVC (EBS ボリュームなど) を必要とするポッドによってスケールアップイベントがトリガーされた場合、新しいノードが間違った AZ でスケジュールされ、ポッドの起動が失敗する可能性があります。
環境が次の基準を満たしている場合、AZ ごとに個別のノードグループは必要ありません。
-
ゾーン固有のストレージ要件はありません。
-
必須ではない podAffinity とホスト以外のトポロジ。
-
ゾーンラベルに nodeAffinity は必要ありません。
-
ゾーンラベルに nodeSelector がありません。
(詳細については、こちら
上記のすべての要件 (場合によってはその他) を満たしている場合は、複数の AZs にまたがる単一のノードグループで安全である必要があります。それ以外の場合は、個別の単一 AZ ノードグループを作成します。
前:
nodeGroups: - name: ng1-public instanceType: m5.xlarge # availabilityZones: ["eu-west-2a", "eu-west-2b"]
後:
nodeGroups: - name: ng1-public-2a instanceType: m5.xlarge availabilityZones: ["eu-west-2a"] - name: ng1-public-2b instanceType: m5.xlarge availabilityZones: ["eu-west-2b"]