スキップしてコンテンツを表示

eksctl を使用して Amazon EKS ノードのノードグループを複数作成する方法を教えてください。

所要時間3分
0

eksctl を使用して Amazon Elastic Kubernetes Service (Amazon EKS) ノードのノードグループを複数作成したいと考えています。

解決策

ノードグループは eksctl とデフォルトパラメータで作成します。または、カスタムパラメータと複数ノードグループの設定ファイルで作成します。

注: eksctl の最新バージョンをインストールするには、「Eksctl のインストールオプション」を参照してください。

eksctl がローカルマシンに設定され、インストールされていることを確認するには、任意のターミナルまたはコマンドプロンプトを開き、次のコマンドを実行します。

eksctl version

続いて、使用するパラメータのタイプに基づき、次の解決方法のいずれかを選択します。

ノードグループをデフォルトパラメータで作成する

  1. 追加のノードグループをデフォルトパラメータで作成するには、次のコマンドを実行します。

    eksctl create nodegroup --cluster=CLUSTER_NAME --name=NODEGROUP_NAME --region REGION_NAME

    注: CLUSTER_NAME は実際のクラスター名に、NODEGROUP_NAME はノードグループ名に、REGION_NAME は AWS リージョンに置き換えてください。

    デフォルトパラメータは次のようになります。

    Instance type = m5.largeAMI : latest AWS EKS AMI
    Nodes-desired capacity = 2
    Nodes-min capacity =2
    Nodes-max capacity=2

    注: デフォルトでは、コントロールプレーンの Kubernetes のバージョンが新しいノードグループで継承されます。Kubernetes の別のバージョン (version=1.27 など) を指定することもできます。Kubernetes の最新バージョンを使用するには、–version=latest コマンドを実行てください。

  2. 新しいノードグループがクラスターにアタッチされていることを確認し、ノードがクラスターに参加したことを確認するため、次のコマンドを実行します。

    kubectl get nodes
    eksctl get nodegroups --cluster CLUSTER_NAME --region REGION_NAME

    注: CLUSTER_NAME は実際のクラスター名に、REGION_NAME は AWS リージョン名に置き換えてください。

  3. 出力結果で、ノードグループのステータスが ACTIVE であること、ノードのステータスが READY であることを確認します。
    ノードグループのステータスの例:

    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 example-workers ACTIVE  2023-10-28T14:30:00Z  2         2         2                 m5.large      AL2_x86_64   eks-example-workers-11223344  managed

    ノードステータスの例:

    kubectl get nodes
    NAME                                          STATUS  ROLES  AGE  VERSION
    ip-192-168-100-101.us-west-2.compute.internal Ready   <none> 4h   v1.27.1-eks-1
    ip-192-168-100-102.us-west-2.compute.internal Ready   <none> 4h   v1.27.1-eks-1

ノードグループをカスタムパラメータで作成する

  1. 新しいノードグループのパラメータを設定ファイルで定義します。例:

    kind: ClusterConfig
    apiVersion: eksctl.io/v1alpha5
    metadata:
        name: CLUSTER_NAME
        region: REGION_NAME
    nodeGroups:
      - name: NODEGROUP_NAME
        availabilityZones: ["AVAILABILITY_ZONE"]
        desiredCapacity: 3
        instanceType: m5.large
        iam:
          instanceProfileARN: "arn:aws:iam::444455556666:instance-profile/eks-nodes-base-role" #Attaching IAM role
          instanceRoleARN: "arn:aws:iam::444455556666:role/eks-nodes-base-role"
        privateNetworking: true
        securityGroups:
          withShared: true
          withLocal: true
          attachIDs: ['SECURITY_GROUP_ID']
        ssh:
          publicKeyName: 'KEY-PAIR-NAME'
        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'

    注: CLUSTER_NAME は実際のクラスター名に、REGION_NAME は AWS リージョンに、NODEGROUP_NAME はノードグループ名に置き換えてください。SECURITY_GROUP_ID はセキュリティグループ ID に、KEY_PAIR_NAME はキーペア名に、AVAILABILITY_ZONE はアベイラビリティーゾーンに置き換えてください。

    サポートされているパラメータとノードグループタイプの詳細については、「ノードグループ」を参照してください。

  2. 追加のノードグループを設定ファイルで作成するため、次のコマンドを実行します。

    eksctl create nodegroup --config-file=CONFIG_FILE

    **注:**CONFIG\ _FILE をご使用のコンフィギュレーションファイル名に置き換えてください。

  3. (オプション) 手順2のコマンドで、AWS CloudFormation スタックをデプロイして EKS ノードグループのリソースを作成します。スタックの状態を確認するには、CloudFormation コンソールにアクセスして、AWS リージョンがクラスターのリージョンと同じであることを確認します。
    スタックが CREATE_COMPLETE 状態になれば、eksctl コマンドは正常終了です。

  4. 新しいノードグループがクラスターにアタッチされていることを確認し、ノードがクラスターに参加したことを確認するため、次のコマンドを実行します。

    kubectl get nodes
    eksctl get nodegroups --cluster CLUSTER_NAME --region REGION_NAME

    注: CLUSTER_NAME は実際のクラスター名に、REGION_NAME は AWS リージョン名に置き換えてください。

    出力結果で、ノードグループのステータスが ACTIVE であること、ノードのステータスが READY であることを確認します。

    ノードグループのステータスの例:

    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 example-workers ACTIVE  2023-10-28T14:30:00Z  2         2         3                 m5.large      AL2_x86_64   eks-example-workers-11223344  managed

    ノードステータスの例:

    kubectl get nodes
    NAME                                          STATUS  ROLES  AGE  VERSION
    ip-192-168-100-101.us-west-2.compute.internal Ready   <none> 4h   v1.27.1-eks-1
    ip-192-168-100-102.us-west-2.compute.internal Ready   <none> 4h   v1.27.1-eks-1
    ip-192-168-100-103.us-west-2.compute.internal Ready   <none> 4h   v1.27.1-eks-1
AWS公式更新しました 4ヶ月前
コメントはありません

関連するコンテンツ