

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Arbeiten Sie mit Knotengruppen
<a name="general-nodegroups"></a>

## Knotengruppen erstellen
<a name="_creating_nodegroups"></a>

Sie können zusätzlich zu der ursprünglichen Knotengruppe, die zusammen mit dem Cluster erstellt wurde, eine oder mehrere Knotengruppen hinzufügen.

Um eine zusätzliche Knotengruppe zu erstellen, verwenden Sie:

```
eksctl create nodegroup --cluster=<clusterName> [--name=<nodegroupName>]
```

**Anmerkung**  
 `--version`Flag wird für verwaltete Knotengruppen nicht unterstützt. Es erbt immer die Version von der Steuerungsebene.

Standardmäßig erben neue, nicht verwaltete Knotengruppen die Version von der Steuerungsebene (`--version=auto`). Sie können jedoch auch eine andere Version angeben und damit die Verwendung der jeweils neuesten Version `--version=latest` erzwingen.

Darüber hinaus können Sie dieselbe Konfigurationsdatei verwenden, die für Folgendes verwendet wurde: `eksctl create cluster`

```
eksctl create nodegroup --config-file=<path>
```

### Eine Knotengruppe aus einer Konfigurationsdatei erstellen
<a name="_creating_a_nodegroup_from_a_config_file"></a>

Knotengruppen können auch über eine Clusterdefinition oder eine Konfigurationsdatei erstellt werden. Ausgehend von der folgenden Beispiel-Konfigurationsdatei und einem vorhandenen Cluster mit dem Namen: `dev-cluster`

```
# dev-cluster.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: dev-cluster
  region: eu-north-1

managedNodeGroups:
  - name: ng-1-workers
    labels: { role: workers }
    instanceType: m5.xlarge
    desiredCapacity: 10
    volumeSize: 80
    privateNetworking: true
  - name: ng-2-builders
    labels: { role: builders }
    instanceType: m5.2xlarge
    desiredCapacity: 2
    volumeSize: 100
    privateNetworking: true
```

Die Nodegroups `ng-1-workers` und `ng-2-builders` können mit diesem Befehl erstellt werden:

```
eksctl create nodegroup --config-file=dev-cluster.yaml
```

#### Lastausgleich
<a name="_load_balancing"></a>

Wenn Sie sich bereits darauf vorbereitet haben, bestehende Classic Load or/and Balancer-Zielgruppen an die Nodegroups anzuhängen, können Sie diese in der Konfigurationsdatei angeben. Die or/and Zielgruppen der klassischen Load Balancer werden bei der Erstellung von Nodegroups automatisch mit der ASG verknüpft. Dies wird nur für selbstverwaltete Knotengruppen unterstützt, die über das Feld definiert wurden. `nodeGroups`

```
# dev-cluster-with-lb.yaml
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: dev-cluster
  region: eu-north-1

nodeGroups:
  - name: ng-1-web
    labels: { role: web }
    instanceType: m5.xlarge
    desiredCapacity: 10
    privateNetworking: true
    classicLoadBalancerNames:
      - dev-clb-1
      - dev-clb-2
    asgMetricsCollection:
      - granularity: 1Minute
        metrics:
          - GroupMinSize
          - GroupMaxSize
          - GroupDesiredCapacity
          - GroupInServiceInstances
          - GroupPendingInstances
          - GroupStandbyInstances
          - GroupTerminatingInstances
          - GroupTotalInstances
  - name: ng-2-api
    labels: { role: api }
    instanceType: m5.2xlarge
    desiredCapacity: 2
    privateNetworking: true
    targetGroupARNs:
      - arn:aws:elasticloadbalancing:eu-north-1:01234567890:targetgroup/dev-target-group-1/abcdef0123456789
```

## Auswahl der Knotengruppe in den Konfigurationsdateien
<a name="_nodegroup_selection_in_config_files"></a>

Um eine `create` `delete` Oder-Operation nur für eine Teilmenge der in einer Konfigurationsdatei angegebenen Knotengruppen auszuführen, gibt es zwei CLI-Flags, die eine Liste von Globs akzeptieren, `0` und z. B.: `1`

```
eksctl create nodegroup --config-file=<path> --include='ng-prod-*-??' --exclude='ng-test-1-ml-a,ng-test-2-?'
```

Mit der obigen Beispielkonfigurationsdatei kann man mit dem folgenden Befehl alle Worker-Knotengruppen außer der Worker-Knotengruppe erstellen:

```
eksctl create nodegroup --config-file=dev-cluster.yaml --exclude=ng-1-workers
```

Oder man könnte die Builder-Knotengruppe löschen mit:

```
eksctl delete nodegroup --config-file=dev-cluster.yaml --include=ng-2-builders --approve
```

In diesem Fall müssen wir auch den `--approve` Befehl angeben, um die Knotengruppe tatsächlich zu löschen.

### Regeln einschließen und ausschließen
<a name="node-include"></a>
+ wenn kein `--include` oder angegeben `--exclude` ist, ist alles enthalten
+ wenn only angegeben `--include` ist, werden nur Knotengruppen eingeschlossen, die diesen Globs entsprechen
+ wenn only angegeben `--exclude` ist, werden alle Knotengruppen eingeschlossen, die nicht zu diesen Globs passen
+ wenn beide angegeben sind, haben `--exclude` Regeln Vorrang vor `--include` (d. h. Knotengruppen, die den Regeln in beiden Gruppen entsprechen, werden ausgeschlossen)

## Knotengruppen auflisten
<a name="_listing_nodegroups"></a>

Um die Details zu einer Knotengruppe oder allen Knotengruppen aufzulisten, verwenden Sie:

```
eksctl get nodegroup --cluster=<clusterName> [--name=<nodegroupName>]
```

Um eine oder mehrere Knotengruppen im YAML- oder JSON-Format aufzulisten, das mehr Informationen als die Standard-Logtabelle ausgibt, verwenden Sie:

```
# YAML format
eksctl get nodegroup --cluster=<clusterName> [--name=<nodegroupName>] --output=yaml

# JSON format
eksctl get nodegroup --cluster=<clusterName> [--name=<nodegroupName>] --output=json
```

## Unveränderlichkeit der Knotengruppe
<a name="_nodegroup_immutability"></a>

Knotengruppen sind konstruktionsbedingt unveränderlich. Das heißt, wenn Sie etwas (außer Skalierung) ändern müssen, wie das AMI oder den Instance-Typ einer Knotengruppe, müssten Sie eine neue Knotengruppe mit den gewünschten Änderungen erstellen, die Last verschieben und die alte löschen. Weitere Informationen finden Sie im Abschnitt [Löschen und Löschen von Knotengruppen](#nodegroup-delete).

## Skalieren von Knotengruppen
<a name="_scaling_nodegroups"></a>

Die Skalierung von Knotengruppen ist ein Vorgang, der bis zu einigen Minuten dauern kann. Wenn das `--wait` Flag nicht angegeben ist, erwartet `eksctl` optimistisch, dass die Knotengruppe skaliert wird, und kehrt zurück, sobald die AWS-API-Anfrage gesendet wurde. Um zu `eksctl` warten, bis die Knoten verfügbar sind, fügen Sie ein `--wait` Flag wie im folgenden Beispiel hinzu.

**Anmerkung**  
Die Skalierung einer Knotengruppe down/in (d. h. die Reduzierung der Anzahl der Knoten) kann zu Fehlern führen, da wir uns ausschließlich auf Änderungen an der ASG verlassen. Das bedeutet, dass die Knoten, die gerade bearbeitet werden, removed/terminated nicht explizit entleert werden. Dies könnte in future ein Bereich sein, in dem Verbesserungen möglich sind.

Die Skalierung einer verwalteten Knotengruppe erfolgt durch den direkten Aufruf der EKS-API, die die Konfiguration einer verwalteten Knotengruppe aktualisiert.

### Skalierung einer einzelnen Knotengruppe
<a name="_scaling_a_single_nodegroup"></a>

Eine Knotengruppe kann mit dem folgenden Befehl skaliert werden: `eksctl scale nodegroup`

```
eksctl scale nodegroup --cluster=<clusterName> --nodes=<desiredCount> --name=<nodegroupName> [ --nodes-min=<minSize> ] [ --nodes-max=<maxSize> ] --wait
```

Um beispielsweise eine Knotengruppe auf 5 Knoten zu skalieren, führen Sie folgenden `ng-a345f4e1` Befehl `cluster-1` aus:

```
eksctl scale nodegroup --cluster=cluster-1 --nodes=5 ng-a345f4e1
```

Eine Knotengruppe kann auch skaliert werden, indem eine Konfigurationsdatei verwendet wird, die an die Knotengruppe übergeben wird, `--config-file` und indem der Name der Knotengruppe angegeben wird, mit der skaliert werden soll. `--name` Eksctl durchsucht die Konfigurationsdatei und entdeckt diese Knotengruppe sowie ihre Skalierungskonfigurationswerte.

Wenn die gewünschte Anzahl von Knoten `NOT` innerhalb des Bereichs der aktuellen minimalen und aktuellen maximalen Anzahl von Knoten liegt, wird ein bestimmter Fehler angezeigt. Diese Werte können auch mit Flags `--nodes-min` und `--nodes-max` entsprechend übergeben werden.

### Skalierung mehrerer Knotengruppen
<a name="_scaling_multiple_nodegroups"></a>

Eksctl kann alle Knotengruppen in einer mitgelieferten Konfigurationsdatei erkennen und skalieren. `--config-file`

Ähnlich wie bei der Skalierung einer einzelnen Knotengruppe gelten für jede Knotengruppe die gleichen Validierungen. Beispielsweise muss die gewünschte Anzahl von Knoten im Bereich der minimalen und maximalen Anzahl von Knoten liegen.

## Löschen und Entleeren von Knotengruppen
<a name="nodegroup-delete"></a>

Um eine Knotengruppe zu löschen, führen Sie folgenden Befehl aus:

```
eksctl delete nodegroup --cluster=<clusterName> --name=<nodegroupName>
```

 Mit diesem Befehl können auch [Regeln zum Einschließen und Ausschließen](#node-include) verwendet werden.

**Anmerkung**  
Dadurch werden alle Pods aus dieser Knotengruppe gelöscht, bevor die Instanzen gelöscht werden.

Um die Räumungsregeln während des Löschvorgangs zu überspringen, führen Sie folgenden Befehl aus:

```
eksctl delete nodegroup --cluster=<clusterName> --name=<nodegroupName> --disable-eviction
```

Alle Knoten sind gesperrt und alle Pods werden beim Löschen aus einer Knotengruppe entfernt. Wenn Sie jedoch eine Knotengruppe leeren müssen, ohne sie zu löschen, führen Sie folgenden Befehl aus:

```
eksctl drain nodegroup --cluster=<clusterName> --name=<nodegroupName>
```

Um eine Knotengruppe abzukoppeln, führen Sie folgenden Befehl aus:

```
eksctl drain nodegroup --cluster=<clusterName> --name=<nodegroupName> --undo
```

Um Räumungsregeln wie Einstellungen zu ignorieren, führen Sie folgenden Befehl aus: PodDisruptionBudget 

```
eksctl drain nodegroup --cluster=<clusterName> --name=<nodegroupName> --disable-eviction
```

Um den Entleerungsprozess zu beschleunigen, können Sie `--parallel <value>` die Anzahl der Knoten angeben, die parallel entleert werden sollen.

## Weitere Funktionen
<a name="_other_features"></a>

Sie können auch SSH-, ASG-Zugriff und andere Funktionen für eine Knotengruppe aktivieren, z. B.:

```
eksctl create nodegroup --cluster=cluster-1 --node-labels="autoscaling=enabled,purpose=ci-worker" --asg-access --full-ecr-access --ssh-access
```

### Beschriftungen aktualisieren
<a name="_update_labels"></a>

Es gibt keine speziellen Befehle`eksctl`, um die Labels einer Knotengruppe zu aktualisieren, aber es kann leicht erreicht werden`kubectl`, z. B. mit:

```
kubectl label nodes -l alpha.eksctl.io/nodegroup-name=ng-1 new-label=foo
```

### SSH-Zugang
<a name="_ssh_access"></a>

Sie können den SSH-Zugriff für Knotengruppen aktivieren, indem Sie eine von `publicKey` `publicKeyName` und `publicKeyPath` in Ihrer Knotengruppenkonfiguration konfigurieren. Alternativ können Sie [AWS Systems Manager (SSM) verwenden, um per SSH](https://docs.aws.amazon.com/systems-manager/latest/userguide/session-manager-working-with-sessions-start.html#sessions-start-cli) auf Knoten zuzugreifen, indem Sie die Knotengruppe wie folgt konfigurieren: `enableSsm`

```
managedNodeGroups:
  - name: ng-1
    instanceType: m5.large
    desiredCapacity: 1
    ssh: # import public key from file
      publicKeyPath: ~/.ssh/id_rsa_tests.pub
  - name: ng-2
    instanceType: m5.large
    desiredCapacity: 1
    ssh: # use existing EC2 key
      publicKeyName: ec2_dev_key
  - name: ng-3
    instanceType: m5.large
    desiredCapacity: 1
    ssh: # import inline public key
      publicKey: "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDqZEdzvHnK/GVP8nLngRHu/GDi/3PeES7+Bx6l3koXn/Oi/UmM9/jcW5XGziZ/oe1cPJ777eZV7muEvXg5ZMQBrYxUtYCdvd8Rt6DIoSqDLsIPqbuuNlQoBHq/PU2IjpWnp/wrJQXMk94IIrGjY8QHfCnpuMENCucVaifgAhwyeyuO5KiqUmD8E0RmcsotHKBV9X8H5eqLXd8zMQaPl+Ub7j5PG+9KftQu0F/QhdFvpSLsHaxvBzA5nhIltjkaFcwGQnD1rpCM3+UnQE7Izoa5Yt1xoUWRwnF+L2TKovW7+bYQ1kxsuuiX149jXTCJDVjkYCqi7HkrXYqcC1sbsror someuser@hostname"
  - name: ng-4
    instanceType: m5.large
    desiredCapacity: 1
    ssh: # enable SSH using SSM
      enableSsm: true
```