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.
Von EKS verwaltete Knotengruppen
Die von Amazon EKS verwalteten Knotengruppen sind eine Funktion, die die Bereitstellung und das Lebenszyklusmanagement von Knoten (EC2 Instances) für Amazon EKS Kubernetes-Cluster automatisiert. Kunden können optimierte Knotengruppen für ihre Cluster bereitstellen, und EKS hält ihre Knoten mit den neuesten Kubernetes- und Host-Betriebssystemversionen auf dem neuesten Stand.
Eine von EKS verwaltete Knotengruppe ist eine Autoscaling-Gruppe und zugehörige EC2 Instances, die von AWS für einen Amazon EKS-Cluster verwaltet werden. Jede Knotengruppe verwendet das Amazon EKS-optimierte Amazon Linux 2-AMI. Amazon EKS macht es einfach, Bugfixes und Sicherheitspatches auf Knoten anzuwenden und sie auf die neuesten Kubernetes-Versionen zu aktualisieren. Jede Knotengruppe startet eine Autoscaling-Gruppe für Ihren Cluster, die sich über mehrere AWS-VPC-Verfügbarkeitszonen und Subnetze erstrecken kann, um eine hohe Verfügbarkeit zu gewährleisten.
NEU: Launch Template-Unterstützung für verwaltete Knotengruppen
Anmerkung
Der Begriff „nicht verwaltete Knotengruppen“ wurde verwendet, um sich auf Knotengruppen zu beziehen, die eksctl von Anfang an unterstützt hat (dargestellt durch das Feld). nodeGroups
Die ClusterConfig
Datei verwendet das nodeGroups
Feld weiterhin zur Definition von nicht verwalteten Knotengruppen, und verwaltete Knotengruppen werden mit dem Feld definiert. managedNodeGroups
Verwaltete Knotengruppen erstellen
$ eksctl create nodegroup
Neue Cluster
Führen Sie folgenden Befehl aus, um einen neuen Cluster mit einer verwalteten Knotengruppe zu erstellen
eksctl create cluster
Um mehrere verwaltete Knotengruppen zu erstellen und mehr Kontrolle über die Konfiguration zu haben, kann eine Konfigurationsdatei verwendet werden.
Anmerkung
Verwaltete Knotengruppen haben keine vollständige Funktionsparität mit nicht verwalteten Knotengruppen.
# cluster.yaml # A cluster with two managed nodegroups --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: managed-cluster region: us-west-2 managedNodeGroups: - name: managed-ng-1 minSize: 2 maxSize: 4 desiredCapacity: 3 volumeSize: 20 ssh: allow: true publicKeyPath: ~/.ssh/ec2_id_rsa.pub # new feature for restricting SSH access to certain AWS security group IDs sourceSecurityGroupIds: ["sg-00241fbb12c607007"] labels: {role: worker} tags: nodegroup-role: worker iam: withAddonPolicies: externalDNS: true certManager: true - name: managed-ng-2 instanceType: t2.large minSize: 2 maxSize: 3
Es ist möglich, einen Cluster mit verwalteten und nicht verwalteten Knotengruppen zu haben. Nicht verwaltete Knotengruppen eksctl get nodegroup
werden nicht in der AWS EKS-Konsole angezeigt, sondern listen beide Arten von Knotengruppen auf.
# cluster.yaml # A cluster with an unmanaged nodegroup and two managed nodegroups. --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: managed-cluster region: us-west-2 nodeGroups: - name: ng-1 minSize: 2 managedNodeGroups: - name: managed-ng-1 minSize: 2 maxSize: 4 desiredCapacity: 3 volumeSize: 20 ssh: allow: true publicKeyPath: ~/.ssh/ec2_id_rsa.pub # new feature for restricting SSH access to certain AWS security group IDs sourceSecurityGroupIds: ["sg-00241fbb12c607007"] labels: {role: worker} tags: nodegroup-role: worker iam: withAddonPolicies: externalDNS: true certManager: true - name: managed-ng-2 instanceType: t2.large privateNetworking: true minSize: 2 maxSize: 3
NEU Support für benutzerdefiniertes AMI, SicherheitsgruppeninstancePrefix
,instanceName
,ebsOptimized
,volumeType
,volumeName
,volumeEncrypted
,volumeKmsKeyID
,volumeIOPS
,maxPodsPerNode
,preBootstrapCommands
,overrideBootstrapCommand
, und disableIMDSv1
# cluster.yaml # A cluster with a managed nodegroup with customization. --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: managed-cluster region: us-west-2 managedNodeGroups: - name: custom-ng ami: ami-0e124de4755b2734d securityGroups: attachIDs: ["sg-1234"] maxPodsPerNode: 80 ssh: allow: true volumeSize: 100 volumeName: /dev/xvda volumeEncrypted: true # defaults to true, which enforces the use of IMDSv2 tokens disableIMDSv1: false overrideBootstrapCommand: | #!/bin/bash /etc/eks/bootstrap.sh managed-cluster --kubelet-extra-args '--node-labels=eks.amazonaws.com/nodegroup=custom-ng,eks.amazonaws.com/nodegroup-image=ami-0e124de4755b2734d'
Wenn Sie einen Instance-Typ anfordern, der nur in einer Zone verfügbar ist (und die eksctl-Konfiguration erfordert die Angabe von zwei), stellen Sie sicher, dass Sie die Availability Zone zu Ihrer Knotengruppen-Anfrage hinzufügen:
# cluster.yaml # A cluster with a managed nodegroup with "availabilityZones" --- apiVersion: eksctl.io/v1alpha5 kind: ClusterConfig metadata: name: flux-cluster region: us-east-2 version: "1.23" availabilityZones: ["us-east-2b", "us-east-2c"] managedNodeGroups: - name: workers instanceType: hpc6a.48xlarge minSize: 64 maxSize: 64 labels: { "fluxoperator": "true" } availabilityZones: ["us-east-2b"] efaEnabled: true placement: groupName: eks-efa-testing
Dies kann für Instance-Typen wie die Hpc6-Familie gelten, die
Bestehende Cluster
eksctl create nodegroup --managed
Tipp: Wenn Sie eine ClusterConfig
Datei verwenden, um Ihren gesamten Cluster zu beschreiben, beschreiben Sie Ihre neue verwaltete Knotengruppe im managedNodeGroups
Feld und führen Sie Folgendes aus:
eksctl create nodegroup --config-file=YOUR_CLUSTER.yaml
Verwaltete Knotengruppen aktualisieren
Sie können eine Knotengruppe jederzeit auf die neueste EKS-optimierte AMI-Release-Version für den von Ihnen verwendeten AMI-Typ aktualisieren.
Wenn Ihre Knotengruppe dieselbe Kubernetes-Version wie der Cluster hat, können Sie auf die neueste AMI-Release-Version für diese Kubernetes-Version des AMI-Typs aktualisieren, den Sie verwenden. Wenn Ihre Knotengruppe die vorherige Kubernetes-Version der Kubernetes-Version des Clusters ist, können Sie die Knotengruppe auf die neueste AMI-Release-Version aktualisieren, die der Kubernetes-Version der Knotengruppe entspricht, oder auf die neueste AMI-Release-Version aktualisieren, die der Kubernetes-Version des Clusters entspricht. Sie können eine Knotengruppe nicht auf eine frühere Kubernetes-Version zurücksetzen.
Um eine verwaltete Knotengruppe auf die neueste AMI-Release-Version zu aktualisieren:
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster
Die Knotengruppe kann wie folgt auf die neueste AMI-Version für eine bestimmte Kubernetes-Version aktualisiert werden:
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster --kubernetes-version=<kubernetes-version>
Um auf eine bestimmte AMI-Release-Version statt auf die neueste Version zu aktualisieren, übergeben Sie--release-version
:
eksctl upgrade nodegroup --name=managed-ng-1 --cluster=managed-cluster --release-version=1.19.6-20210310
Anmerkung
Wenn die verwalteten Knoten benutzerdefiniert bereitgestellt werden AMIs, muss der folgende Workflow befolgt werden, um eine neue Version des benutzerdefinierten AMI bereitzustellen.
-
Die anfängliche Bereitstellung der Knotengruppe muss mithilfe einer Startvorlage erfolgen. z. B.
managedNodeGroups: - name: launch-template-ng launchTemplate: id: lt-1234 version: "2" #optional (uses the default version of the launch template if unspecified)
-
eine neue Version des benutzerdefinierten AMI erstellen (mithilfe der AWS EKS-Konsole).
-
eine neue Version der Startvorlage mit der neuen AMI-ID erstellen (mithilfe der AWS EKS-Konsole).
-
führen Sie ein Upgrade der Knoten auf die neue Version der Startvorlage durch. z. B.
eksctl upgrade nodegroup --name nodegroup-name --cluster cluster-name --launch-template-version new-template-version
Handhabung parallel Upgrades für Knoten
Mehrere verwaltete Knoten können gleichzeitig aktualisiert werden. Um parallel Upgrades zu konfigurieren, definieren Sie beim Erstellen updateConfig
der Knotengruppe die einer Knotengruppe. Ein Beispiel finden updateConfig
Sie hier.
Um Ausfallzeiten Ihrer Workloads aufgrund der gleichzeitigen Aktualisierung mehrerer Knoten zu vermeiden, können Sie die Anzahl der Knoten begrenzen, die während eines Upgrades nicht verfügbar sein können, indem Sie dies im maxUnavailable
Feld für angeben. updateConfig
Verwenden Sie alternativmaxUnavailablePercentage
, wodurch die maximale Anzahl nicht verfügbarer Knoten als Prozentsatz der Gesamtzahl der Knoten definiert wird.
Beachten Sie, dass dieser Wert maxUnavailable
nicht höher sein kann alsmaxSize
. Ebenfalls maxUnavailable
und maxUnavailablePercentage
kann nicht gleichzeitig verwendet werden.
Diese Funktion ist nur für verwaltete Knoten verfügbar.
Verwaltete Knotengruppen werden aktualisiert
eksctl
ermöglicht das Aktualisieren des UpdateConfigAbschnitts einer verwalteten Knotengruppe. Dieser Abschnitt definiert zwei Felder. MaxUnavailable
undMaxUnavailablePercentage
. Ihre Knotengruppen sind während des Updates nicht betroffen, sodass mit Ausfallzeiten nicht zu rechnen ist.
Der Befehl update nodegroup
sollte mit einer Konfigurationsdatei unter Verwendung des Flags verwendet werden. --config-file
Die Nodegroup sollte einen nodeGroup.updateConfig
Abschnitt enthalten. Weitere Informationen finden Sie hier.
Gesundheitsprobleme bei Nodegroup
EKS Managed Nodegroups überprüft automatisch die Konfiguration Ihrer Knotengruppe und Knoten auf Integritätsprobleme und meldet diese über die EKS-API und -Konsole. So zeigen Sie Gesundheitsprobleme für eine Knotengruppe an:
eksctl utils nodegroup-health --name=managed-ng-1 --cluster=managed-cluster
Labels verwalten
EKS Managed Nodegroups unterstützt das Anhängen von Labels, die auf die Kubernetes-Knoten in der Knotengruppe angewendet werden. Dies wird während der Cluster- oder Knotengruppenerstellung über das labels
Feld in eksctl angegeben.
Um neue Labels zu setzen oder bestehende Labels für eine Knotengruppe zu aktualisieren:
eksctl set labels --cluster managed-cluster --nodegroup managed-ng-1 --labels kubernetes.io/managed-by=eks,kubernetes.io/role=worker
So löschen oder entfernen Sie Labels aus einer Knotengruppe:
eksctl unset labels --cluster managed-cluster --nodegroup managed-ng-1 --labels kubernetes.io/managed-by,kubernetes.io/role
So zeigen Sie alle Labels an, die für eine Knotengruppe gesetzt sind:
eksctl get labels --cluster managed-cluster --nodegroup managed-ng-1
Skalierung verwalteter Knotengruppen
eksctl scale nodegroup
unterstützt auch verwaltete Knotengruppen. Die Syntax für die Skalierung einer verwalteten oder nicht verwalteten Knotengruppe ist dieselbe.
eksctl scale nodegroup --name=managed-ng-1 --cluster=managed-cluster --nodes=4 --nodes-min=3 --nodes-max=5