eksctl を使用して Amazon EKS ノードのノードグループを複数作成する方法を教えてください。
eksctl を使用して Amazon Elastic Kubernetes Service (Amazon EKS) ノードのノードグループを複数作成したいと考えています。
簡単な説明
ノードグループは eksctl とデフォルトパラメータで作成します。または、カスタムパラメータと複数ノードグループの設定ファイルで作成します。
eksctl の最新バージョンをインストールするには、eksctl ウェブサイトの「インストール」を参照してください。
eksctl が正しい権限で設定されておりターミナルにインストールされていることを確認するには、次のコマンドを実行します。
$ eksctl version
続いて、使用するパラメータのタイプに基づき、次の解決方法のいずれかを選択します。
解決方法
ノードグループをデフォルトパラメータで作成する
-
追加のノードグループをデフォルトパラメータで作成するには、次のコマンドを実行します。
$ eksctl create nodegroup --cluster=yourClusterName --name=yourNodeGroupName --region yourRegionName
-
デフォルトパラメータは次のようになります。
Instance type = m5.largeAMI : lastest AWS EKS AMI Nodes-desired capacity = 2 Nodes-min capacity =2 Nodes-max capacity=2
注: デフォルトでは、コントロールプレーンの Kubernetes のバージョン (–version=auto) が新しいノードグループで継承されます。Kubernetes の別のバージョン (version=1.27 など) を指定することもできます。Kubernetes の最新バージョンを使用するには、–version=latest コマンドを実行てください。
-
新しいノードグループがクラスターにアタッチされていることを確認し、ノードがクラスターに参加したことを確認するため、次のコマンドを実行します。
$ kubectl get nodes $ eksctl get nodegroups --cluster yourClusterName --region yourRegionName
出力結果で、ノードのステータスが READY であること、ノードグループのステータスが ACTIVE であることを確認します。例:
ノードグループのステータス
$ eksctl get nodegroups --cluster yourClusterName --region yourRegionName CLUSTER NODEGROUP STATUS CREATED MIN SIZE MAX SIZE DESIRED CAPACITY INSTANCE TYPE IMAGE ID ASG NAME TYPE clusterName ngWorkers ACTIVE Date&Time * * * m5.large AL2_x86_64 ASGNAME managed
****ノードのステータス
$ kubectl get nodes NAME STATUS ROLES AGE VERSION ip-***-**-**-***.region.compute.internal Ready <none> 4h v1.2x.x-eks-xx ip-***-**-***-**.region.compute.internal Ready <none> 4h v1.2x.x-eks-xx Create a node group with custom parameters
ノードグループをカスタムパラメータで作成する
-
新しいノードグループのパラメータを設定ファイルで定義します。例:
kind: ClusterConfig apiVersion: eksctl.io/v1alpha5 metadata: name: clusterName region: region nodeGroups: - name: ngWorkers availabilityZones: ["az-name"] desiredCapacity: 3 instanceType: m5.large iam: instanceProfileARN: "arn:aws:iam::11111:instance-profile/eks-nodes-base-role" #Attaching IAM role instanceRoleARN: "arn:aws:iam::1111:role/eks-nodes-base-role" privateNetworking: true securityGroups: withShared: true withLocal: true attachIDs: ['sg-11111', 'sg-11112'] ssh: publicKeyName: 'my-instance-key' kubeletExtraConfig: kubeReserved: cpu: "300m" memory: "300Mi" ephemeral-storage: "1Gi" kubeReservedCgroup: "/kube-reserved" systemReserved: cpu: "300m" memory: "300Mi" ephemeral-storage: "1Gi" tags: 'environment': 'development' - name: ng-2-builders #example of a nodegroup that uses 50% spot instances and 50% on demand instances: minSize: 2 maxSize: 5 instancesDistribution: maxPrice: 0.017 instanceTypes: ["t3.small", "t3.medium"] # At least two instance types should be specified onDemandBaseCapacity: 0 onDemandPercentageAboveBaseCapacity: 50 spotInstancePools: 2 tags: 'environment': 'production'
サポートされているパラメータとノードグループタイプの詳細については、eksctl ウェブサイトの「ノードグループ」を参照してください。
-
追加のノードグループを設定ファイルで作成するため、次のコマンドを実行します。
$ eksctl create nodegroup --config-file=yourConfigFileName
-
(オプション) 手順2のコマンドで、AWS CloudFormation スタックをデプロイして EKS ノードグループのリソースを作成します。スタックの状態を確認するには、CloudFormation コンソールにアクセスして、AWS リージョンがクラスターのリージョンと同じであることを確認します。
スタックが CREATE_COMPLETE 状態になれば、eksctl コマンドは正常終了です。 -
新しいノードグループがクラスターにアタッチされていることを確認したら、ノードがクラスターに参加したことを確認するため、次のコマンドを実行します。
$ kubectl get nodes $ eksctl get nodegroups --cluster yourClusterName --region yourRegionName
出力結果で、ノードのステータスが READY であること、ノードグループのステータスが ACTIVE であることを確認します。例:
ノードグループのステータス$ eksctl get nodegroups --cluster yourClusterName --region yourRegionName CLUSTER NODEGROUP STATUS CREATED MIN SIZE MAX SIZE DESIRED CAPACITY INSTANCE TYPE IMAGE ID ASG NAME TYPE clusterName ngWorkers ACTIVE Date&Time * * * m5.large AL2_x86_64 ASGNAME managed
ノードのステータス
$ kubectl get nodes NAME STATUS ROLES AGE VERSION ip-***-**-**-***.region.compute.internal Ready <none> 4h v1.2x.x-eks-xx ip-***-**-***-**.region.compute.internal Ready <none> 4h v1.2x.x-eks-xx
関連するコンテンツ
- 質問済み 4ヶ月前lg...
- 質問済み 10ヶ月前lg...
- AWS公式更新しました 2年前