

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.

# Was ist Eksctl?
Was ist Eksctl?

eksctl ist ein Befehlszeilen-Hilfsprogramm, das den Prozess der Erstellung, Verwaltung und des Betriebs von Amazon Elastic Kubernetes Service (Amazon EKS) -Clustern automatisiert und vereinfacht. eksctl wurde in Go geschrieben und bietet eine deklarative Syntax über YAML-Konfigurationen und CLI-Befehle, um komplexe EKS-Cluster-Operationen zu handhaben, für die andernfalls mehrere manuelle Schritte in verschiedenen AWS-Services erforderlich wären.

eksctl ist besonders nützlich für DevOps Ingenieure, Plattformteams und Kubernetes-Administratoren, die EKS-Cluster konsistent und in großem Umfang bereitstellen und verwalten müssen. Es ist besonders nützlich für Unternehmen, die von selbstverwaltetem Kubernetes zu EKS wechseln oder solche, die Infrastructure-as-Code-Praktiken (IaC) implementieren, da es in bestehende Pipelines und Automatisierungsworkflows integriert werden kann. CI/CD Das Tool abstrahiert viele der komplexen Interaktionen zwischen AWS-Services, die für die Einrichtung eines EKS-Clusters erforderlich sind, wie z. B. die VPC-Konfiguration, die Erstellung von IAM-Rollen und die Verwaltung von Sicherheitsgruppen.

Zu den wichtigsten Funktionen von eksctl gehören die Möglichkeit, voll funktionsfähige EKS-Cluster mit einem einzigen Befehl zu erstellen, Unterstützung für benutzerdefinierte Netzwerkkonfigurationen, automatisiertes Knotengruppenmanagement und Workflow-Integration. GitOps Das Tool verwaltet Cluster-Upgrades, skaliert Knotengruppen und wickelt das Add-On-Management über einen deklarativen Ansatz ab. eksctl bietet auch erweiterte Funktionen wie die Fargate-Profilkonfiguration, die Anpassung verwalteter Knotengruppen und die Spot-Instance-Integration und gewährleistet gleichzeitig die Kompatibilität mit anderen AWS-Tools und -Services durch die native AWS-SDK-Integration.

## Features


Die Funktionen, die derzeit implementiert sind, sind:
+ Cluster erstellen, abrufen, auflisten und löschen
+ Knotengruppen erstellen, entleeren und löschen
+ Skalieren Sie eine Knotengruppe
+ Aktualisieren eines -Clusters
+ Benutzerdefiniert verwenden AMIs
+ VPC-Netzwerke konfigurieren
+ Konfigurieren Sie den Zugriff auf API-Endpunkte
+ Support für GPU-Knotengruppen
+ Spot-Instances und gemischte Instances
+ IAM-Management und Zusatzrichtlinien
+ Listet die Cloudformation-Stacks der Cluster auf
+ Installieren Sie Coredns
+ Schreiben Sie die kubeconfig-Datei für einen Cluster

# Häufig gestellte Fragen zu Eksctl


## General


 **Kann ich `eksctl` damit Cluster verwalten, die nicht von erstellt wurden? `eksctl`** 

Ja\$1 Ab der Version können `0.40.0` Sie für `eksctl` jeden Cluster arbeiten, unabhängig davon, ob er von `eksctl` oder nicht erstellt wurde. Weitere Informationen finden Sie unter [Cluster, die nicht von EKSCTL erstellt wurden](unowned-clusters.md).

## Knotengruppen


 **Wie kann ich den Instanztyp meiner Nodegroup ändern?** 

Aus der Sicht von sind Knotengruppen `eksctl` unveränderlich. Das bedeutet, dass nach der Erstellung nur noch die `eksctl` Knotengruppe nach oben oder unten skaliert werden kann.

Um den Instanztyp zu ändern, erstellen Sie eine neue Knotengruppe mit dem gewünschten Instanztyp und entleeren Sie sie dann, sodass die Workloads auf die neue verschoben werden. Nachdem dieser Schritt abgeschlossen ist, können Sie die alte Knotengruppe löschen.

 **Wie kann ich die generierten Benutzerdaten für eine Knotengruppe sehen?** 

Zunächst benötigen Sie den Namen des Cloudformation-Stacks, der die Knotengruppe verwaltet:

```
eksctl utils describe-stacks --region=us-west-2 --cluster NAME
```

Sie werden einen Namen sehen, der ähnlich ist wie. `eksctl-CLUSTER_NAME-nodegroup-NODEGROUP_NAME`

Sie können Folgendes ausführen, um die Benutzerdaten abzurufen. Beachten Sie die letzte Zeile, die aus Base64 dekodiert und die gezippten Daten dekomprimiert.

```
NG_STACK=eksctl-scrumptious-monster-1595247364-nodegroup-ng-29b8862f # your stack here
LAUNCH_TEMPLATE_ID=$(aws cloudformation describe-stack-resources --stack-name $NG_STACK \
| jq -r '.StackResources | map(select(.LogicalResourceId == "NodeGroupLaunchTemplate") \
| .PhysicalResourceId)[0]')
aws ec2 describe-launch-template-versions --launch-template-id $LAUNCH_TEMPLATE_ID \
| jq -r '.LaunchTemplateVersions[0].LaunchTemplateData.UserData' \
| base64 -d | gunzip
```

## Ingress


 **Wie richte ich Ingress mit ein? `eksctl`** 

Wir empfehlen die Verwendung des [AWS Load Balancer Controllers](https://github.com/kubernetes-sigs/aws-load-balancer-controller). [Die Dokumentation zur Bereitstellung des Controllers in Ihrem Cluster sowie zur Migration vom alten ALB Ingress Controller finden Sie hier.](https://docs.aws.amazon.com/eks/latest/userguide/alb-ingress.html)

Für den Nginx Ingress Controller wäre die Einrichtung dieselbe wie bei [jedem anderen](https://kubernetes.github.io/ingress-nginx/deploy/#aws) Kubernetes-Cluster.

## Kubectl


 **Ich verwende einen HTTPS-Proxy und die Validierung des Clusterzertifikats schlägt fehl. Wie kann ich das System verwenden? CAs** 

Stellen Sie die Umgebungsvariable so `KUBECONFIG_USE_SYSTEM_CA` ein, dass sie die Zertifizierungsstellen des Systems `kubeconfig` respektiert.

# Trockenlauf


Mit der Dry-Run-Funktion können Sie die Instanzen überprüfen und ändern, denen die Instanzauswahl entspricht, bevor Sie mit der Erstellung einer Knotengruppe fortfahren.

Wenn mit den Instanzauswahloptionen und aufgerufen `eksctl create cluster` wird`--dry-run`, gibt eksctl eine ClusterConfig Datei aus, die eine Knotengruppe enthält, die die CLI-Optionen und die Instanztypen darstellt, die für die Instanzen festgelegt sind, denen die Ressourcenkriterien für die Instanzauswahl entsprechen.

```
eksctl create cluster --name development --dry-run


apiVersion: eksctl.io/v1alpha5
cloudWatch:
  clusterLogging: {}
iam:
  vpcResourceControllerPolicy: true
  withOIDC: false
kind: ClusterConfig
managedNodeGroups:
- amiFamily: AmazonLinux2
  desiredCapacity: 2
  disableIMDSv1: true
  disablePodIMDS: false
  iam:
    withAddonPolicies:
      albIngress: false
      appMesh: false
      appMeshPreview: false
      autoScaler: false
      certManager: false
      cloudWatch: false
      ebs: false
      efs: false
      externalDNS: false
      fsx: false
      imageBuilder: false
      xRay: false
  instanceSelector: {}
  instanceType: m5.large
  labels:
    alpha.eksctl.io/cluster-name: development
    alpha.eksctl.io/nodegroup-name: ng-4aba8a47
  maxSize: 2
  minSize: 2
  name: ng-4aba8a47
  privateNetworking: false
  securityGroups:
    withLocal: null
    withShared: null
  ssh:
    allow: false
    enableSsm: false
    publicKeyPath: ""
  tags:
    alpha.eksctl.io/nodegroup-name: ng-4aba8a47
    alpha.eksctl.io/nodegroup-type: managed
  volumeIOPS: 3000
  volumeSize: 80
  volumeThroughput: 125
  volumeType: gp3
metadata:
  name: development
  region: us-west-2
  version: "1.24"
privateCluster:
  enabled: false
vpc:
  autoAllocateIPv6: false
  cidr: 192.168.0.0/16
  clusterEndpoints:
    privateAccess: false
    publicAccess: true
  manageSharedNodeSecurityGroupRules: true
  nat:
    gateway: Single
```

Die generierte ClusterConfig Datei kann dann übergeben werden an: `eksctl create cluster`

```
eksctl create cluster -f generated-cluster.yaml
```

Wenn eine ClusterConfig Datei mit übergeben wird`--dry-run`, gibt eksctl eine ClusterConfig Datei aus, die die in der Datei festgelegten Werte enthält.

## Einmalige Optionen in eksctl


Es gibt bestimmte einmalige Optionen, die in der `ClusterConfig` Datei nicht dargestellt werden können, z. B. `--install-vpc-controllers`

Es wird erwartet, dass:

```
eksctl create cluster --<options...> --dry-run > config.yaml
```

gefolgt von:

```
eksctl create cluster -f config.yaml
```

wäre gleichbedeutend mit der Ausführung des ersten Befehls ohne`--dry-run`.

eksctl verbietet daher die Übergabe von Optionen, die nicht in der Konfigurationsdatei dargestellt werden können, wenn sie `--dry-run` übergeben werden.

**Wichtig**  
Wenn Sie ein AWS-Profil übergeben müssen, legen Sie die `AWS_PROFILE` Umgebungsvariable fest, anstatt die `--profile` CLI-Option zu übergeben.