Direkt zum Inhalt

Wie erstelle ich mit eksctl mehrere Knotengruppen für Amazon-EKS-Knoten?

Lesedauer: 4 Minute
0

Ich möchte mithilfe von eksctl mehrere Knotengruppen für Amazon Elastic Kubernetes Service (Amazon EKS)-Knoten erstellen.

Lösung

Du kannst eine Knotengruppe mit eksctl und Standardparametern erstellen. Oder erstelle eine mit benutzerdefinierten Parametern und einer Konfigurationsdatei für mehrere Knotengruppen.

Hinweis: Informationen zur Installation der neuesten Version von eksctl findest du unter Installationsoptionen für Eksctl.

Um zu bestätigen, dass eksctl auf deinem lokalen Computer konfiguriert und installiert ist, öffne dein bevorzugtes Terminal oder die Eingabeaufforderung und führe den folgenden Befehl aus:

eksctl version

Wähle dann je nach Art der Parameter, die du verwenden möchtest, eine der folgenden Auflösungen aus.

Knotengruppe mit Standardparametern erstellen

  1. Führe diesen Befehl aus, um eine zusätzliche Knotengruppe mit Standardparametern zu erstellen:

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

    Hinweis: Ersetze CLUSTER_NAME durch deinen Cluster-Namen, NODEGROUP_NAME durch deinen Knotengruppennamen und REGION_NAME durch deine AWS-Region.

    Im Folgenden findest du die Standardparameter:

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

    Hinweis: Standardmäßig erben neue Knotengruppen die Version von Kubernetes von der Steuerebene. Du kannst eine andere Version von Kubernetes angeben (z. B. version=1.27). Um die neueste Version von Kubernetes zu verwenden, führe den Befehl –version=latest aus.

  2. Führe den folgenden Befehl aus, um zu bestätigen, dass die neuen Knotengruppen an den Cluster angehängt sind, und um zu überprüfen, ob die Knoten dem Cluster beigetreten sind:

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

    Hinweis: Ersetze CLUSTER_NAME durch den Namen deines Clusters und REGION_NAME durch deine AWS-Region.

  3. Bestätige in der Ausgabe, dass der Knotengruppenstatus AKTIV und der Knotenstatus BEREIT ist.
    Beispiel für den Status einer Knotengruppe:

    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

    Beispiel für den Status eines Knotens:

    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

Knotengruppe mit benutzerdefinierten Parametern erstellen

  1. Definiere die Parameter für die neue Knotengruppe in einer Konfigurationsdatei. Zum Beispiel:

    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'

    Hinweis: Ersetze CLUSTER_NAME durch deinen Clusternamen, REGION_NAME durch deine AWS-Region, NODEGROUP_NAME durch deinen Knotengruppennamen. SECURITY_GROUP_ID durch deine Sicherheitsgruppen-ID, KEY_PAIR_NAME durch deinen Schlüsselpaar-Namen und AVAILABILITY_ZONE durch deine Availability Zone.

    Weitere Informationen zu unterstützten Parametern und Knotengruppentypen findest du unter Knotengruppen.

  2. Um eine zusätzliche Knotengruppe mit der Konfigurationsdatei zu erstellen, führe den folgenden Befehl aus:

    eksctl create nodegroup --config-file=CONFIG_FILE

    Hinweis: Ersetze CONFIG\ _FILE durch deinen Konfigurationsdateinamen.

  3. (Optional) Der Befehl in Schritt 2 stellt einen AWS-CloudFormation-Stack bereit, um Ressourcen für die EKS-Knotengruppe zu erstellen. Um den Stack-Status zu überprüfen, greife auf die CloudFormation-Konsole zu und vergewissere dich, dass die AWS-Region mit der des Clusters identisch ist.
    Nachdem sich der Stack im Status CREATE_COMPLETE befindet, wird der Befehl eksctl erfolgreich beendet.

  4. Führe den folgenden Befehl aus, um zu bestätigen, dass die neuen Knotengruppen an den Cluster angehängt sind, und um zu überprüfen, ob die Knoten dem Cluster beigetreten sind:

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

    Hinweis: Ersetze CLUSTER_NAME durch den Namen deines Clusters und REGION_NAME durch deine AWS-Region.

    Bestätige in der Ausgabe, dass der Knotengruppenstatus AKTIV und der Knotenstatus BEREIT ist.

    Beispiel für den Status einer Knotengruppe:

    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

    Beispiel für den Status eines Knotens:

    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