翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
EKS マネージド型ノードグループ
Amazon EKS マネージド型ノードグループは、Amazon EKS Kubernetes クラスターのノード (EC2 インスタンス) のプロビジョニングとライフサイクル管理を自動化する機能です。お客様はクラスター用に最適化されたノードグループをプロビジョニングでき、EKS はノードを最新の Kubernetes およびホスト OS バージョンで最新の状態に保ちます。
EKS マネージド型ノードグループは、Amazon EKS クラスターの AWS によって管理される自動スケーリンググループおよび関連する EC2 インスタンスです。各ノードグループは、Amazon EKS に最適化された Amazon Linux 2 AMI を使用します。Amazon EKS を使用すると、ノードにバグ修正とセキュリティパッチを簡単に適用し、最新の Kubernetes バージョンに更新できます。各ノードグループは、クラスターの Auto Scaling グループを起動します。このグループは、高可用性のために複数の AWS VPC アベイラビリティーゾーンとサブネットにまたがることができます。
マネージド型ノードグループの新しい起動テンプレートのサポート Managed Nodegroups の起動テンプレートのサポート
注記
「アンマネージド型ノードグループ」という用語は、eksctl が最初からサポートしているノードグループ ( nodeGroups
フィールドで表される) を参照するために使用されています。ClusterConfig
ファイルは引き続き nodeGroups
フィールドを使用してアンマネージド型ノードグループを定義し、マネージド型ノードグループは managedNodeGroups
フィールドで定義されます。
マネージド型ノードグループの作成
$ eksctl create nodegroup
新しいクラスター
マネージド型ノードグループを使用して新しいクラスターを作成するには、 を実行します。
eksctl create cluster
複数のマネージド型ノードグループを作成し、設定をより詳細に制御するには、設定ファイルを使用できます。
注記
マネージド型ノードグループには、アンマネージド型ノードグループとの完全な機能パリティはありません。
# cluster.yaml # A cluster with two managed nodegroups --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: managed-cluster region: us-west-2 managedNodeGroups: - name: managed-ng-1 minSize: 2 maxSize: 4 desiredCapacity: 3 volumeSize: 20 ssh: allow: true publicKeyPath: ~/.ssh/ec2_id_rsa.pub # new feature for restricting SSH access to certain AWS security group IDs sourceSecurityGroupIds: ["sg-00241fbb12c607007"] labels: {role: worker} tags: nodegroup-role: worker iam: withAddonPolicies: externalDNS: true certManager: true - name: managed-ng-2 instanceType: t2.large minSize: 2 maxSize: 3
マネージド型ノードグループを作成するための設定ファイルの別の例については、こちら
マネージド型ノードグループとアンマネージド型ノードグループの両方を持つクラスターを持つことができます。アンマネージド型ノードグループは AWS EKS コンソールには表示されませんが、両方のタイプのノードグループが一覧表示eksctl get nodegroup
されます。
# cluster.yaml # A cluster with an unmanaged nodegroup and two managed nodegroups. --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: managed-cluster region: us-west-2 nodeGroups: - name: ng-1 minSize: 2 managedNodeGroups: - name: managed-ng-1 minSize: 2 maxSize: 4 desiredCapacity: 3 volumeSize: 20 ssh: allow: true publicKeyPath: ~/.ssh/ec2_id_rsa.pub # new feature for restricting SSH access to certain AWS security group IDs sourceSecurityGroupIds: ["sg-00241fbb12c607007"] labels: {role: worker} tags: nodegroup-role: worker iam: withAddonPolicies: externalDNS: true certManager: true - name: managed-ng-2 instanceType: t2.large privateNetworking: true minSize: 2 maxSize: 3
カスタム AMI、セキュリティグループ、instancePrefix
、、、instanceName
ebsOptimized
、volumeType
、volumeName
、volumeEncrypted
、volumeKmsKeyID
、volumeIOPS
maxPodsPerNode
preBootstrapCommands
overrideBootstrapCommand
、、 の新しいサポート disableIMDSv1
# cluster.yaml # A cluster with a managed nodegroup with customization. --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: managed-cluster region: us-west-2 managedNodeGroups: - name: custom-ng ami: ami-0e124de4755b2734d securityGroups: attachIDs: ["sg-1234"] maxPodsPerNode: 80 ssh: allow: true volumeSize: 100 volumeName: /dev/xvda volumeEncrypted: true # defaults to true, which enforces the use of IMDSv2 tokens disableIMDSv1: false overrideBootstrapCommand: | #!/bin/bash /etc/eks/bootstrap.sh managed-cluster --kubelet-extra-args '--node-labels=eks.amazonaws.com/nodegroup=custom-ng,eks.amazonaws.com/nodegroup-image=ami-0e124de4755b2734d'
1 つのゾーンでのみ使用可能なインスタンスタイプをリクエストする場合 (eksctl 設定には 2 つの仕様が必要です)、ノードグループリクエストにアベイラビリティーゾーンを追加してください。
# cluster.yaml # A cluster with a managed nodegroup with "availabilityZones" --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: flux-cluster region: us-east-2 version: "1.23" availabilityZones: ["us-east-2b", "us-east-2c"] managedNodeGroups: - name: workers instanceType: hpc6a.48xlarge minSize: 64 maxSize: 64 labels: { "fluxoperator": "true" } availabilityZones: ["us-east-2b"] efaEnabled: true placement: groupName: eks-efa-testing
これは、1 つのゾーンでのみ利用可能な Hpc6 ファミリー
既存のクラスター
eksctl create nodegroup --managed
ヒント: ClusterConfig
ファイルを使用してクラスター全体を記述する場合は、 managedNodeGroups
フィールドに新しいマネージドノードグループを記述し、以下を実行します。
eksctl create nodegroup --config-file=YOUR_CLUSTER.yaml
マネージド型ノードグループのアップグレード
ノードグループは、使用している AMI タイプの最新の EKS 最適化 AMI リリースバージョンにいつでも更新できます。
ノードグループがクラスターと同じ Kubernetes バージョンである場合は、使用している AMI タイプのその Kubernetes バージョンの最新の AMI リリースバージョンに更新できます。ノードグループがクラスターの Kubernetes バージョンから以前の Kubernetes バージョンである場合は、ノードグループをノードグループの Kubernetes バージョンに一致する最新の AMI リリースバージョンに更新するか、クラスターの Kubernetes バージョンに一致する最新の AMI リリースバージョンに更新できます。ノードグループを以前の Kubernetes バージョンにロールバックすることはできません。
マネージド型ノードグループを最新の AMI リリースバージョンにアップグレードするには:
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster
ノードグループは、以下を使用して、指定された Kubernetes バージョンの最新の AMI リリースにアップグレードできます。
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster --kubernetes-version=<kubernetes-version>
最新バージョンではなく特定の AMI リリースバージョンにアップグレードするには、 を渡します--release-version
。
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster --release-version=1.19.6-20210310
注記
マネージドノードがカスタム AMIs を使用してデプロイされている場合、カスタム AMI の新しいバージョンをデプロイするには、次のワークフローに従う必要があります。
-
ノードグループの初期デプロイは、起動テンプレートを使用して実行する必要があります。例:
managedNodeGroups: - name: launch-template-ng launchTemplate: id: lt-1234 version: "2" #optional (uses the default version of the launch template if unspecified)
-
カスタム AMI の新しいバージョンを作成します (AWS EKS コンソールを使用)。
-
新しい AMI ID を使用して新しい起動テンプレートバージョンを作成します (AWS EKS コンソールを使用)。
-
ノードを起動テンプレートの新しいバージョンにアップグレードします。例:
eksctl upgrade nodegroup --name nodegroup-name --cluster cluster-name --launch-template-version new-template-version
ノードの並列アップグレードの処理
複数のマネージドノードを同時にアップグレードできます。並列アップグレードを設定するには、updateConfig
ノードグループの作成時にノードグループの を定義します。例についてはupdateConfig
、こちら
複数のノードを一度にアップグレードすることによるワークロードのダウンタイムを回避するには、 の maxUnavailable
フィールドにこれを指定することで、アップグレード中に使用できなくなるノードの数を制限できますupdateConfig
。または、 を使用します。これはmaxUnavailablePercentage
、使用できないノードの最大数をノードの合計数に対する割合として定義します。
を より大きくmaxUnavailable
することはできませんmaxSize
。また、 maxUnavailable
と maxUnavailablePercentage
を同時に使用することはできません。
この機能はマネージドノードでのみ使用できます。
マネージド型ノードグループの更新
eksctl
では、マネージド型ノードグループの UpdateConfig セクションを更新できます。このセクションでは、 MaxUnavailable
と の 2 つのフィールドを定義しますMaxUnavailablePercentage
。更新中、ノードグループは影響を受けないため、ダウンタイムは予想されません。
コマンドは、 --config-file
フラグを使用する設定ファイルとともに使用update nodegroup
する必要があります。ノードグループには nodeGroup.updateConfig
セクションが含まれている必要があります。詳細については、こちら
Nodegroup のヘルスの問題
EKS Managed Nodegroups は、ノードグループとノードのヘルス問題の設定を自動的にチェックし、EKS API とコンソールを通じてレポートします。ノードグループのヘルス問題を表示するには:
eksctl utils nodegroup-health --name=managed-ng-1 --cluster=managed-cluster
ラベルの管理
EKS Managed Nodegroups は、ノードグループの Kubernetes ノードに適用されるラベルのアタッチをサポートしています。これは、クラスターまたはノードグループの作成時に eksctl の labels
フィールドを介して指定されます。
ノードグループで新しいラベルを設定したり、既存のラベルを更新したりするには:
eksctl set labels --cluster managed-cluster --nodegroup managed-ng-1 --labels kubernetes.io/managed-by=eks,kubernetes.io/role=worker
ノードグループからラベルを設定解除または削除するには:
eksctl unset labels --cluster managed-cluster --nodegroup managed-ng-1 --labels kubernetes.io/managed-by,kubernetes.io/role
ノードグループに設定されたすべてのラベルを表示するには:
eksctl get labels --cluster managed-cluster --nodegroup managed-ng-1
マネージド型ノードグループのスケーリング
eksctl scale nodegroup
はマネージド型ノードグループもサポートしています。マネージド型ノードグループまたはアンマネージド型ノードグループをスケーリングするための構文は同じです。
eksctl scale nodegroup --name=managed-ng-1 --cluster=managed-cluster --nodes=4 --nodes-min=3 --nodes-max=5