eksctl を使用して Amazon Elastic Kubernetes Service (Amazon EKS) ノードの複数のノードグループを作成したいと考えています。
簡単な説明
eksctl をデフォルトのパラメータとともに使用するか、複数のノードグループの設定ファイルを使用してカスタムパラメータとともに使用して、ノードグループを作成できます。
解決方法
デフォルトのパラメータを使用してノードグループを作成する
1. eksctl をインストールします。
2. eksctl が適切な許可で設定され、ターミナルにインストールされていることを確認するには、次のコマンドを実行します。
$ eksctl version
3. デフォルトのパラメータを持つ追加のノードグループを作成するには、次のコマンドを実行します。
$ eksctl create nodegroup --cluster=yourClusterName --name=yourNodeGroupName --region yourRegionName
デフォルトのパラメータは次のとおりです。
Instance type = m5.large
AMI : lastest AWS EKS AMI
Nodes-desired capacity = 2
Nodes-min capacity =2
Nodes-max capacity=2
注意: デフォルトでは、新しいノードグループはコントロールプレーンからインストールされた Kubernetes のバージョンを継承します (–version=auto) が、異なるバージョンの Kubernetes を指定することもできます (例: version=1.13)。最新バージョンの Kubernetes を使用するには、-version=latest コマンドを実行します。
4. AWS CloudFormation コンソールを開き、作成したノードグループに関連付けられたスタックを選択します。その後、[Events] (イベント) タブを選択して、スタックがデプロイされていることを示す AWS CloudFormation イベントを探します。
5. 新しいノードグループがクラスターにアタッチされていることを確認し、ノードグループ設定が適用されていることを検証するには、次のコマンドを実行します。
$ Kubectl get nodes
$ eksctl get nodegroups --cluster yourClusterName
カスタムパラメータを使用してノードグループを作成する
1. 設定ファイルで新しいノードグループのパラメータを定義します。例:
kind: ClusterConfig
apiVersion: eksctl.io/v1alpha5
metadata:
name: yourClusterName
region: yourRegionName
nodeGroups:
- name: ng1-Workers
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'
2. 設定ファイルを使用して追加のノードグループを作成するには、次のコマンドを実行します。
$ eksctl create nodegroup --config-file= yourConfigFileName
3. AWS CloudFormation コンソールを開き、作成したノードグループに関連付けられたスタックを選択します。次に、[Events] (イベント) タブを選択して、スタックがデプロイされていることを示す AWS CloudFormation イベントを探します。
4. 新しいノードグループがクラスターにアタッチされていることを確認し、ノードグループ設定が適用されていることを検証するには、次のコマンドを実行します。
$ kubectl get nodes
$ eksctl get nodegroups --cluster yourClusterName
ノードがクラスターに参加していることを確認できます。eksctl を使用すると、2 つのノードグループが表示されます。