Durch die Nutzung von AWS re:Post stimmt du den AWS re:Post Nutzungsbedingungen

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.

Kurzbeschreibung

Sie können eine Knotengruppe mit eksctl und Standardparametern erstellen. Oder erstellen Sie eine mit benutzerdefinierten Parametern und einer Konfigurationsdatei für mehrere Knotengruppen.

Informationen zur Installation der neuesten Version von eksctl finden Sie unter Installation auf der eksctl-Website.

Führen Sie den folgenden Befehl aus, um zu bestätigen, dass eksctl konfiguriert und auf dem Terminal mit den richtigen Berechtigungen installiert ist:

$ eksctl version

Wählen Sie dann je nach Art der Parameter, die Sie verwenden möchten, eine der folgenden Auflösungen aus.

Behebung

Knotengruppe mit Standardparametern erstellen

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

    $ eksctl create nodegroup --cluster=yourClusterName --name=yourNodeGroupName --region yourRegionName
  2. Im Folgenden finden Sie die Standardparameter:

    Instance type = m5.largeAMI : lastest 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 Steuerungsebene (–version=auto). Sie können eine andere Version von Kubernetes angeben (z. B. version=1.27). Um die neueste Version von Kubernetes zu verwenden, führen Sie den Befehl –version=latest aus.

  3. Führen Sie die folgenden Befehle 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 yourClusterName --region yourRegionName

    Bestätigen Sie in der Ausgabe, dass der Status des Knotens READY und der Status der Knotengruppe ACTIVE ist. Zum Beispiel:

    **Status der 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  ngWorkers  ACTIVE  Date&Time    *        *              *             m5.large      AL2_x86_64   ASGNAME   managed
    

    ****Knotenstatus


    $ 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
    
    

Erstellen Sie eine Knotengruppe mit benutzerdefinierten Parametern

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

    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'

    Weitere Informationen zu unterstützten Parametern und Knotengruppen-Typen finden Sie unter Knotengruppen auf der eksctl-Website.

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

    $ eksctl create nodegroup --config-file=yourConfigFileName
  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, greifen Sie auf die CloudFormation-Konsole zu und vergewissern Sie sich, 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ühren Sie die folgenden Befehle 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 yourClusterName --region yourRegionName

    Bestätigen Sie in der Ausgabe, dass der Status des Knotens READY und der Status der Knotengruppe ACTIVE ist. Zum Beispiel:
    **Status der 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  ngWorkers  ACTIVE  Date&Time    *        *              *             m5.large      AL2_x86_64   ASGNAME   managed

    **Knotenstatus **

    $ 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
AWS OFFICIAL
AWS OFFICIALAktualisiert vor 9 Monaten