Selbstverwaltete Knoten Microsoft Windows erstellen - Amazon EKS

Hilf mit, diese Seite zu verbessern

Möchten Sie zu diesem Benutzerhandbuch beitragen? Scrollen Sie zum Ende dieser Seite und wählen Sie Diese Seite bearbeiten am aus GitHub. Ihre Beiträge werden dazu beitragen, unser Benutzerhandbuch für alle zu verbessern.

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.

Selbstverwaltete Knoten Microsoft Windows erstellen

In diesem Thema wird beschrieben, wie Sie Auto Windows Scaling-Knotengruppen starten, die sich bei Ihrem EKS Amazon-Cluster registrieren. Nachdem die Knoten dem Cluster beigetreten sind, können Sie Kubernetes-Anwendungen darin bereitstellen.

Wichtig
  • EKSAmazon-Knoten sind EC2 Standard-Amazon-Instances, und sie werden Ihnen auf der Grundlage der normalen EC2 Amazon-Instance-Preise in Rechnung gestellt. Weitere Informationen finden Sie unter EC2Amazon-Preise.

  • Sie können Windows-Knoten in EKS erweiterten Amazon-Clustern auf AWS Outposts starten, aber Sie können sie nicht in lokalen Clustern auf AWS Outposts starten. Weitere Informationen finden Sie unter Stellen Sie Amazon EKS vor Ort bereit mit AWS Outposts.

Aktivieren Sie den Windows-Support für Ihren Cluster. Es wird empfohlen, wichtige Überlegungen zu berücksichtigen, bevor Sie eine Windows-Knotengruppe starten. Weitere Informationen finden Sie unter Unterstützung aktivieren Windows.

Sie können selbstverwaltete Windows-Knoten mit eksctl oder AWS Management Console launchen.

eksctl
So starten Sie selbstverwaltete Windows-Knoten mit eksctl

Bei diesem Verfahren wird davon ausgegangen, dass Sie eksctl installiert haben und dass Ihre eksctl-Version mindestens 0.187.0 ist. Sie können Ihre Version mit dem folgenden Befehl überprüfen.

eksctl version

Eine Installations- und Upgrade-Anleitung für eksctl finden Sie in der Dokumentation zu eksctl unter Installation.

Anmerkung

Dieses Verfahren funktioniert nur für Cluster, die mit eksctl erstellt wurden.

  1. (Optional) Wenn die von Amazon EKS _ CNI IAM _Policy verwaltete Richtlinie (wenn Sie einen IPv4 Cluster haben) oder die AmazonEKS_CNI_IPv6_Policy (die Sie selbst erstellt haben, wenn Sie einen IPv6 Cluster haben) an Ihre angehängt istAmazon-EKS-Knoten-IAM-Rolle, empfehlen wir, sie stattdessen einer IAM Rolle zuzuweisen, die Sie dem Kubernetes aws-node Servicekonto zuordnen. Weitere Informationen finden Sie unter Konfigurieren der Amazon VPC CNI plugin for Kubernetes zur Verwendung von IAM-Rollen für Servicekonten (IRSA).

  2. Bei diesem Verfahren wird davon ausgegangen, dass Sie einen bestehenden Cluster haben. Wenn Sie noch keinen EKS Amazon-Cluster und keine Amazon Linux-Knotengruppe haben, zu der Sie eine Windows Knotengruppe hinzufügen können, empfehlen wir Ihnen, die Erste Schritte mit Amazon EKS — eksctl Anleitung zu befolgen. Das Handbuch bietet eine vollständige Anleitung zum Erstellen eines EKS Amazon-Clusters mit Amazon Linux-Knoten.

    Erstellen Sie Ihre Knoten-Gruppe mit dem folgenden Befehl. region-codeErsetzen Sie es durch AWS-Region das, in dem sich Ihr Cluster befindet. Ersetzen Sie my-cluster mit Ihrem Clusternamen. Der Name darf nur alphanumerische Zeichen (wobei die Groß- und Kleinschreibung beachtet werden muss) und Bindestriche enthalten. Es muss mit einem alphanumerischen Zeichen beginnen und darf nicht länger als 100 Zeichen sein. Der Name muss innerhalb des AWS-Region und AWS-Konto , in dem Sie den Cluster erstellen, eindeutig sein. Ersetzen Sie ng-windows durch einen Namen für Ihre Knotengruppe. Der Knotengruppenname darf nicht länger als 63 Zeichen sein. Er muss mit einem Buchstaben oder einer Ziffer beginnen, kann danach aber auch Bindestriche und Unterstriche enthalten. Für Kubernetes-Version 1.24 oder höher können Sie 2019 durch 2022 ersetzen, um Windows Server 2022 zu verwenden. Ersetzen Sie den Rest der example values durch Ihre eigenen Werte.

    Wichtig

    Um eine Knotengruppe in Subnetzen AWS Outposts AWS Wavelength, oder AWS Local Zone bereitzustellen, übergeben Sie die Subnetze AWS Outposts, Wavelength oder Local Zone nicht, wenn Sie den Cluster erstellen. Erstellen Sie die Knotengruppe mit einer Konfigurationsdatei, in der Sie die Subnetze AWS Outposts, Wavelength oder Local Zone angeben. Weitere Informationen finden Sie unter Verwenden von Config-Dateien und im Config-Datei-Schema in der eksctl-Dokumentation.

    eksctl create nodegroup \ --region region-code \ --cluster my-cluster \ --name ng-windows \ --node-type t2.large \ --nodes 3 \ --nodes-min 1 \ --nodes-max 4 \ --managed=false \ --node-ami-family WindowsServer2019FullContainer
    Anmerkung
    • Wenn Arbeitsknoten dem Cluster nicht beitreten können, finden Sie weitere Informationen unter Knoten können nicht mit dem Cluster verknüpft werden im Handbuch zur Fehlerbehebung.

    • Geben Sie den folgenden Befehl ein, um die verfügbaren Optionen für eksctl-Befehle anzuzeigen.

      eksctl command -help

    Eine Beispielausgabe sieht wie folgt aus. Mehrere Zeilen werden ausgegeben, während die Knoten erstellt werden. Die letzte Ausgabezeile ähnelt der folgenden Beispielzeile.

    [✔]  created 1 nodegroup(s) in cluster "my-cluster"
  3. (Optional) Stellen Sie eine Beispielanwendung bereit, um Ihren Cluster und Ihre Windows-Worker-Knoten zu testen.

  4. Wir empfehlen, Pod den Zugriff auf zu blockieren, IMDS wenn die folgenden Bedingungen zutreffen:

    • Sie planen, all Ihren Kubernetes Dienstkonten IAM Rollen zuzuweisen, sodass sie Pods nur über die Mindestberechtigungen verfügen, die sie benötigen.

    • Nein Pods im Cluster benötigen aus anderen Gründen Zugriff auf den EC2 Amazon-Instance-Metadatenservice (IMDS), z. B. zum Abrufen der aktuellen AWS-Region Version.

    Weitere Informationen finden Sie unter Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist.

AWS Management Console
Voraussetzungen
Schritt 1: So starten Sie selbstverwaltete Knoten Windows mit dem AWS Management Console
  1. Warten Sie, bis der Status des Clusters als ACTIVE angezeigt wird. Wenn Sie Ihre Knoten starten, bevor der Cluster aktiv ist, werden die Knoten nicht mit dem Cluster registriert und Sie müssen sie neu starten.

  2. Öffnen Sie die AWS CloudFormation Konsole unter https://console.aws.amazon.com/cloudformation

  3. Wählen Sie Stack erstellen aus.

  4. Wählen Sie unter Vorlage angeben die Option Amazon S3 ausURL.

  5. Kopieren Sie den folgenden Text URL und fügen Sie ihn in Amazon S3 einURL.

    https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2023-02-09/amazon-eks-windows-nodegroup.yaml
  6. Wählen Sie zweimal Next (Weiter) aus.

  7. Füllen Sie auf der Seite Quick create stack (Stack schnell erstellen) die folgenden Parameter entsprechend aus:

    • Stack name (Stack-Name): Wählen Sie einen Stack-Namen für Ihren AWS CloudFormation -Stack aus. Sie können ihn beispielsweise my-cluster-nodes nennen.

    • ClusterName: Geben Sie den Namen ein, den Sie bei der Erstellung Ihres EKS Amazon-Clusters verwendet haben.

      Wichtig

      Dieser Name muss genau mit dem Namen übereinstimmen, den Sie in Schritt 1: Erstellen Sie Ihren EKS Amazon-Cluster verwendet haben. Andernfalls können Ihre Knoten dem Cluster nicht beitreten.

    • ClusterControlPlaneSecurityGroup: Wählen Sie die Sicherheitsgruppe aus der AWS CloudFormation Ausgabe aus, die Sie bei der Erstellung Ihrer generiert haben VPC.

      Die folgenden Schritte zeigen eine Methode zum Abrufen der entsprechenden Gruppe.

      1. Öffnen Sie die EKS Amazon-Konsole unter https://console.aws.amazon.com/eks/home#/clusters.

      2. Wählen Sie den Namen des Clusters.

      3. Wählen Sie die Registerkarte Network (Network) aus.

      4. Verwenden Sie den Wert Zusätzliche Sicherheitsgruppen als Referenz, wenn Sie aus der ClusterControlPlaneSecurityGroupDropdownliste auswählen.

    • NodeGroupName: Geben Sie einen Namen für Ihre Knotengruppe ein. Dieser Name kann zu einem späteren Zeitpunkt zum Identifizieren der Auto-Scaling-Knotengruppe verwendet werden, die für Ihre Knoten erstellt wurde. Der Knotengruppenname darf nicht länger als 63 Zeichen sein. Er muss mit einem Buchstaben oder einer Ziffer beginnen, kann danach aber auch Bindestriche und Unterstriche enthalten.

    • NodeAutoScalingGroupMinSize: Geben Sie die Mindestanzahl von Knoten ein, auf die Ihre Auto Scaling Scaling-Gruppe für Knoten skalieren kann.

    • NodeAutoScalingGroupDesiredCapacity: Geben Sie die gewünschte Anzahl von Knoten ein, auf die bei der Erstellung Ihres Stacks skaliert werden soll.

    • NodeAutoScalingGroupMaxSize: Geben Sie die maximale Anzahl von Knoten ein, auf die Ihre Auto Scaling Scaling-Gruppe für Knoten skalieren kann.

    • NodeInstanceType: Wählen Sie einen Instance-Typ für Ihre Knoten. Weitere Informationen finden Sie unter Wählen Sie einen optimalen EC2 Amazon-Node-Instance-Typ.

      Anmerkung

      Die unterstützten Instance-Typen für die neueste Version des Amazon VPC CNI plugin for Kubernetes für sind in vpc_ip_resource_limit.go auf GitHub aufgeführt. Möglicherweise müssen Sie Ihre CNI Version aktualisieren, um die neuesten unterstützten Instance-Typen zu verwenden. Weitere Informationen finden Sie unter Arbeiten mit dem Amazon VPC CNI plugin for Kubernetes EKS Amazon-Add-on.

    • NodeImageIdSSMParam: Vorab mit dem Amazon EC2 Systems Manager Manager-Parameter der aktuell empfohlenen, von Amazon EKS optimierten Windows AMI Core-ID gefüllt. Um die Vollversion von Windows zu verwenden, ersetzen Sie Core durch Full.

    • NodeImageId: (Optional) Wenn Sie Ihre eigene benutzerdefinierte AMI (anstelle der von Amazon EKS optimiertenAMI) verwenden, geben Sie eine AMI Knoten-ID für Ihre ein AWS-Region. Wenn Sie einen Wert für dieses Feld angeben, überschreibt dieser alle Werte in dem NodeImageIdSSMParamFeld.

    • NodeVolumeSize: Geben Sie eine Root-Volume-Größe für Ihre Knoten in GiB an.

    • KeyName: Geben Sie den Namen eines EC2 SSH Amazon-Schlüsselpaars ein, mit dem Sie nach dem Start eine Verbindung SSH zu Ihren Knoten herstellen können. Wenn Sie noch kein EC2 Amazon-Schlüsselpaar haben, können Sie eines in der erstellen AWS Management Console. Weitere Informationen finden Sie unter EC2Amazon-Schlüsselpaare im EC2Amazon-Benutzerhandbuch.

      Anmerkung

      Wenn Sie hier kein key pair angeben, kann der AWS CloudFormation Stack nicht erstellt werden.

    • BootstrapArguments: Geben Sie alle optionalen Argumente an, die an das Node-Bootstrap-Skript übergeben werden sollen, z. B. zusätzliche kubelet Argumente mit-KubeletExtraArgs.

    • D isableIMDSv 1: Standardmäßig unterstützt jeder Knoten den Instanz-Metadatendienst Version 1 (IMDSv1) undIMDSv2. Sie können deaktivierenIMDSv1. Um zu verhindern, dass future Knoten und Pods Mitglieder der Knotengruppe verwendenMDSv1, setzen Sie D isableIMDSv 1 auf true. Weitere Informationen dazu finden Sie IMDS unter Konfiguration des Instanz-Metadatendienstes.

    • VpcId: Wählen Sie die ID für den aus VPC, den Sie erstellt haben.

    • NodeSecurityGroups: Wählen Sie die Sicherheitsgruppe aus, die für Ihre Linux Knotengruppe erstellt wurde, als Sie Ihre erstellt haben VPC. Wenn Ihren Linux-Knoten mehr als eine Sicherheitsgruppe angehängt ist, geben Sie alle an. Dies z. B., wenn die Linux-Knotengruppe mit eksctl erstellt wurde.

    • Subnets (Subnetze): Wählen Sie die Subnetze aus, die Sie erstellt haben. Wenn Sie Ihre VPC mithilfe der unter beschriebenen Schritte erstellt habenErstellen einer VPC für Ihren Amazon-EKS-Cluster, geben Sie nur die privaten Subnetze innerhalb von an, in VPC denen Ihre Knoten gestartet werden sollen.

      Wichtig
      • Wenn es sich bei einem oder einigen der Subnetze um öffentliche Subnetze handelt, muss die Einstellung für die automatische Zuweisung öffentlicher IP-Adressen aktiviert sein. Wenn die Einstellung für das öffentliche Subnetz nicht aktiviert ist, wird allen Knoten, die Sie in diesem öffentlichen Subnetz bereitstellen, keine öffentliche IP-Adresse zugewiesen und sie können nicht mit dem Cluster oder anderen Diensten kommunizieren. AWS Wenn das Subnetz vor dem 26. März 2020 mithilfe einer der EKS AWS CloudFormation VPCAmazon-Vorlagen oder mithilfe von bereitgestellt wurdeeksctl, ist die automatische Zuweisung öffentlicher IP-Adressen für öffentliche Subnetze deaktiviert. Informationen zum Aktivieren der öffentlichen IP-Adresszuweisung für ein Subnetz finden Sie unter Ändern des öffentlichen IPv4-Adressattributs für Ihr Subnetz. Wenn der Knoten in einem privaten Subnetz bereitgestellt wird, kann er über ein Gateway mit dem Cluster und anderen AWS Diensten kommunizieren. NAT

      • Wenn die Subnetze keinen Internetzugang haben, stellen Sie sicher, dass Sie die Überlegungen und zusätzlichen Schritte in Stellen Sie private Cluster mit eingeschränktem Internetzugang bereit kennen.

      • Wenn Sie Wellenlängen-Subnetze oder Local Zone-Subnetze auswählen AWS Outposts, dürfen die Subnetze bei der Erstellung des Clusters nicht übergeben worden sein.

  8. Bestätigen Sie, dass der Stapel möglicherweise IAM Ressourcen erstellt, und wählen Sie dann Stapel erstellen aus.

  9. Wenn Ihr Stack fertig erstellt wurde, wählen Sie ihn in der Konsole aus und klicken Sie auf Outputs (Ausgaben).

  10. Notieren Sie das NodeInstanceRolefür die Knotengruppe, die erstellt wurde. Sie benötigen dies, wenn Sie Ihre EKS Windows Amazon-Knoten konfigurieren.

Schritt 2: Aktivieren der Knoten, die Ihrem Cluster beitreten sollen
  1. Überprüfen Sie, ob Sie bereits über eine aws-auth ConfigMap verfügen.

    kubectl describe configmap -n kube-system aws-auth
  2. Wenn eine aws-auth ConfigMap angezeigt wird, aktualisieren Sie sie nach Bedarf.

    1. Öffnen Sie ConfigMap zum Bearbeiten.

      kubectl edit -n kube-system configmap/aws-auth
    2. Fügen Sie nach Bedarf neue mapRoles-Einträge hinzu. Stellen Sie die rolearn Werte auf die NodeInstanceRoleWerte ein, die Sie in den vorherigen Verfahren aufgezeichnet haben.

      [...] data: mapRoles: | - rolearn: <ARN of linux instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes - rolearn: <ARN of windows instance role (not instance profile)> username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes - eks:kube-proxy-windows [...]
    3. Speichern Sie die Datei und beenden Sie den Text-Editor.

  3. Wenn die Fehlermeldung Error from server (NotFound): configmaps "aws-auth" not found angezeigt wird, wenden Sie die standardmäßige ConfigMap an.

    1. Laden Sie die Konfigurationszuordnung herunter.

      curl -O https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm-windows.yaml
    2. Stellen Sie in der aws-auth-cm-windows.yaml Datei die rolearn Werte auf die entsprechenden NodeInstanceRoleWerte ein, die Sie in den vorherigen Verfahren aufgezeichnet haben. Hierzu können Sie einen Texteditor verwenden oder die example values ersetzen und den folgenden Befehl ausführen:

      sed -i.bak -e 's|<ARN of linux instance role (not instance profile)>|my-node-linux-instance-role|' \ -e 's|<ARN of windows instance role (not instance profile)>|my-node-windows-instance-role|' aws-auth-cm-windows.yaml
      Wichtig
      • Ändern Sie keine weiteren Zeilen in dieser Datei.

      • Verwenden Sie nicht dieselbe IAM Rolle sowohl für Knoten als Windows auch für Linux Knoten.

    3. Wenden Sie die Konfiguration an. Die Ausführung dieses Befehls kann einige Minuten dauern.

      kubectl apply -f aws-auth-cm-windows.yaml
  4. Sehen Sie sich den Status Ihrer Knoten an und warten Sie, bis diese in den Ready-Status eintreten.

    kubectl get nodes --watch

    Geben Sie Ctrl+C ein, um zu einer Shell-Eingabeaufforderung zurückzukehren.

    Anmerkung

    Wenn Sie Autorisierungs- oder Ressourcenfehler erhalten, finden Sie weitere Informationen unter Nicht autorisiert oder Zugriff verweigert (kubectl) im Thema zur Fehlerbehebung.

    Wenn Knoten dem Cluster nicht beitreten können, finden Sie weitere Informationen unter Knoten können nicht mit dem Cluster verknüpft werden im Handbuch zur Fehlerbehebung.

Schritt 3: Zusätzliche Aktionen
  1. (Optional) Stellen Sie eine Beispielanwendung bereit, um Ihren Cluster und Ihre Windows-Worker-Knoten zu testen.

  2. (Optional) Wenn die von Amazon EKS _ CNI IAM _Policy verwaltete Richtlinie (wenn Sie einen IPv4 Cluster haben) oder die AmazonEKS_CNI_IPv6_Policy (die Sie selbst erstellt haben, wenn Sie einen IPv6 Cluster haben) an Ihre angehängt istAmazon-EKS-Knoten-IAM-Rolle, empfehlen wir, sie stattdessen einer IAM Rolle zuzuweisen, die Sie dem Kubernetes aws-node Servicekonto zuordnen. Weitere Informationen finden Sie unter Konfigurieren der Amazon VPC CNI plugin for Kubernetes zur Verwendung von IAM-Rollen für Servicekonten (IRSA).

  3. Wir empfehlen, Pod den Zugriff auf zu sperren, IMDS wenn die folgenden Bedingungen zutreffen:

    • Sie planen, all Ihren Kubernetes Dienstkonten IAM Rollen zuzuweisen, sodass sie Pods nur über die Mindestberechtigungen verfügen, die sie benötigen.

    • Nein Pods im Cluster benötigen aus anderen Gründen Zugriff auf den EC2 Amazon-Instance-Metadatenservice (IMDS), z. B. zum Abrufen der aktuellen AWS-Region Version.

    Weitere Informationen finden Sie unter Beschränken Sie den Zugriff auf das Instance-Profil, das dem Worker-Knoten zugewiesen ist.