Selbstverwaltete Windows-Knoten starten - Amazon EKS

Selbstverwaltete Windows-Knoten starten

Dieses Thema beschreibt Hinweise zum Starten von Auto-Scaling-Gruppen von -Windows-Knoten, die mit Ihrem Amazon-EKS-Cluster registriert sind. Nachdem die Knoten dem Cluster beigetreten sind, können Sie Kubernetes-Anwendungen darin bereitstellen.

Wichtig

Amazon-EKS-Worker-Knoten sind Standard-Amazon-EC2-Instances und werden Ihnen basierend auf normalen Amazon-EC2-Instance-Preisen berechnet. Weitere Informationen finden Sie unter Amazon EC2 – Preise.

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 Aktivieren der Windows-Unterstützung.

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

eksctl

So starten Sie selbstverwaltete Windows-Knoten miteksctl

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

eksctl version

Anweisungen zum Installieren oder Aktualisieren von eksctl finden Sie unter Installieren oder Aktualisieren von eksctl.

Anmerkung

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

  1. (Optional) Wenn die von AmazonEKS_CNI_Policy verwaltete IAM-Richtlinie (bei einem IPv4-Cluster) oder die AmazonEKS_CNI_IPv6_Policy (die Sie bei einem IPv6-Cluster selbst erstellt haben) an Ihre Amazon-EKS-Knoten-IAM-Rolle angefügt ist, sollten Sie sie stattdessen einer IAM-Rolle zuweisen, die Sie dem aws-node-Servicekonto für Kubernetes zuordnen. Weitere Informationen finden Sie unter Konfigurieren des Amazon VPC CNI plugin for Kubernetes zur Verwendung von IAM-Rollen für Servicekonten.

  2. Bei diesem Verfahren wird davon ausgegangen, dass ein Cluster vorhanden ist. Wenn Sie noch nicht über einen Amazon-EKS-Cluster und eine Amazon-Linux-2-Knotengruppe verfügen, denen Sie eine Windows-Knotengruppe hinzufügen möchten, empfehlen wir Ihnen, die Erste Schritte mit Amazon EKS – eksctl-Anleitung zu befolgen. Das Handbuch enthält eine vollständige Anleitung zum Erstellen eines Amazon-EKS-Clusters mit Amazon-Linux-Knoten.

    Erstellen Sie Ihre Worker-Knoten-Gruppe mit dem folgenden Befehl. Ersetzen Sie jede example-value durch Ihre eigenen Werte.

    Wichtig

    Um einen Knotengruppe in den Subnetzen AWS Outposts, AWS Wavelength oder AWS Local Zone bereitzustellen, übergeben Sie beim Erstellen des Clusters keine AWS Outposts-, Wavelength- oder Local-Zone-Subnetze. Erstellen Sie die Knotengruppe mit einer Config-Datei unter Angabe der AWS Outposts-, Wavelength- oder Local-Zone-Subnetze. Weitere Informationen finden Sie unter Verwenden von Config-Dateien und im Config-Datei-Schema in der eksctl-Dokumentation.

    Anmerkung

    Amazon-EKS-optimierte Windows-AMIs können so konfiguriert werden, dass sie containerd als Laufzeit verwenden. Wenn Sie eksctl zum Start für Windows-Knoten verwenden, geben Sie in der Knotengruppenkonfiguration containerRuntime als containerd an. Weitere Informationen finden Sie unter Aktivieren der containerd-Laufzeit-Bootstrap-Flag in diesem Benutzerhandbuch oder unter Define container runtime (Container-Laufzeit definieren) in der eksctl-Dokumentation. Ersetzen Sie den region-code durch die AWS-Region, in der sich Ihr Cluster befindet.

    eksctl create nodegroup \ --region region-code \ --cluster my-cluster \ --name ng-windows \ --node-type t2.large \ --nodes 3 \ --nodes-min 1 \ --nodes-max 4 \ --node-ami-family WindowsServer2019FullContainer
    Anmerkung
    • Wenn Arbeitsknoten dem Cluster nicht beitreten können, finden Sie weitere Informationen unter Worker-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

    Die Beispielausgabe lautet wie folgt. 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) Bereitstellen einer -Beispielanwendung Stellen Sie eine Beispielanwendung bereit, um Ihren Cluster und Ihre Windows-Worker-Knoten zu testen.

  4. Wir empfehlen, den Pod-Zugriff auf das IMDS zu blockieren, wenn die folgenden Bedingungen erfüllt sind:

    • Sie planen, allen Ihren Kubernetes-Servicekonten IAM-Rollen zuzuweisen, damit Pods nur die Mindestberechtigungen haben, die sie benötigen.

    • Keine Pods im Cluster benötigen aus anderen Gründen Zugriff auf den Amazon-EC2-Instance-Metadaten-Service (IMDS), zum Beispiel zum Abrufen der aktuellen AWS-Region.

    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 Windows-Knoten mit der 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 Create stack (Stack erstellen) aus.

  4. Wählen Sie unter Specify template (Vorlage angeben) die Option Amazon S3 URL aus. Kopieren Sie die folgende URL, fügen Sie sie in die Amazon S3 URL ein und wählen Sie zweimal Next (Weiter) aus.

    https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/amazon-eks-windows-nodegroup.yaml
  5. 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 cluster-name-nodes nennen.

    • ClusterName: Geben Sie den Namen ein, den Sie beim Erstellen Ihres Amazon-EKS-Clusters verwendet haben.

      Wichtig

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

    • ClusterControlPlaneSecurityGroup: Wählen Sie die Sicherheitsgruppe aus der AWS CloudFormation-Ausgabe, die Sie mit VPC erstellt haben.

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

      1. Öffnen Sie die Amazon-EKS-Konsole unterhttps://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 Additional security groups (Zusätzliche Sicherheitsgruppen) als Referenz bei Auswahl aus der Dropdown-Liste ClusterControlPlaneSecurityGroup.

    • NodeGroupName: Geben Sie einen Namen für Ihren Knotengruppe ein. Dieser Name kann zu einem späteren Zeitpunkt zum Identifizieren der Auto-Scaling-Knotengruppe verwendet werden, die für Ihre Knoten verwendet wird.

    • NodeAutoScalingGroupMinSize: Geben Sie die Mindestanzahl an Knoten an, in die Ihre Auto Scaling-Gruppe des Worker-Knotens skaliert werden kann.

    • NodeAutoScalingGroupDesiredCapacity: Geben Sie die gewünschte Anzahl von Knoten ein, auf die beim Erstellen des Stacks skaliert werden soll.

    • NodeAutoScalingGroupMaxSize: Geben Sie die Höchstanzahl an Knoten an, aus der Ihre Auto Scaling-Gruppe des Worker-Knotens skaliert werden kann.

    • NodeInstanceType: Wählen Sie einen Instance-Typ für Ihre Worker-Knoten aus. Weitere Informationen finden Sie unter Auswählen eines Amazon-EC2-Instance-Typs.

      Anmerkung

      Die unterstützten Instance-Typen für die neueste Version des Amazon-VPC-CNI-Plugins für Kubernetes 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 nutzen. Weitere Informationen finden Sie unter Aktualisieren des selbstverwalteten Amazon VPC CNI plugin for Kubernetes-Add-ons.

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

    • NodeImageId: (Optional) Wenn Sie ein eigenes benutzerdefiniertes AMI (anstelle des Amazon-EKS-optimierten AMI) verwenden, geben Sie eine Knoten-AMI-ID für Ihre AWS-Region ein. Wenn Sie einen Wert für dieses Feld angeben, werden alle Werte im Feld NodeImageIdSSMParam überschrieben.

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

    • KeyName: Geben Sie den Namen eines Amazon-EC2-SSH-Schlüsselpaars ein, das Sie für die Verbindung über SSH in Ihre Arbeitsknoten verwenden können, nachdem sie gestartet wurden. Wenn Sie noch kein Amazon-EC2-Schlüsselpaar haben, können Sie eines in der AWS Management Console erstellen. Weitere Informationen zum Zugriff auf Ihr Schlüsselpaar finden Sie unter Amazon-EC2-Schlüsselpaare im Amazon-EC2-Benutzerhandbuch für Linux-Instances.

      Anmerkung

      Wenn Sie hier kein Schlüsselpaar angeben, schlägt die Erstellung des AWS CloudFormation-Stacks fehl.

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

      Anmerkung

      Sie können Amazon-EKS-optimierte Windows-AMIs so konfigurieren, dass sie containerd als Laufzeit verwenden. Wenn Sie eine AWS CloudFormation-Vorlage zur Erstellung von Windows-Knoten verwenden, geben Sie -ContainerRuntime containerd in einem Bootstrap-Argument ein, um die containerd-Laufzeit zu aktivieren. Weitere Informationen finden Sie unter Aktivieren der containerd-Laufzeit-Bootstrap-Flag.

    • DisableIMDSv1: Standardmäßig unterstützt jeder Knoten die Instance-Metadaten-Service-Version 1 (IMDSv1) und IMDSv2. Sie können IMDSv1 deaktivieren. Um zu verhindern, dass künftige Knoten und Pods in der Knotengruppe MDSv1 verwenden, legen Sie DisableIMDSv1 auf true fest. Weitere Informationen finden Sie unter Konfiguration des Instance-Metadatenservice.

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

    • NodeSecurityGroups: Wählen Sie die Sicherheitsgruppe aus, die für Ihre Linux-Worker-Knoten-Gruppe in VPC erstellt wurde. 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 anhand der unter Erstellen einer VPC für Ihren Amazon-EKS-Cluster beschriebenen Schritte erstellt haben, geben Sie nur die privaten Subnetze innerhalb der VPC an, in 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 Worker-Knoten, die Sie in diesem öffentlichen Subnetz bereitstellen, keine öffentliche IP-Adresse zugewiesen, und diese können nicht mit dem Cluster oder anderen AWS-Services kommunizieren. Wenn das Subnetz vor dem 26. März 2020 unter Verwendung einer der Amazon-EKS-AWS CloudFormationVPC-Vorlagen- oder von eksctl bereitgestellt wurde, 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 NAT-Gateway mit dem Cluster und anderen AWS-Services kommunizieren.

      • Wenn die Subnetze keinen Internetzugang haben, stellen Sie sicher, dass Sie die Überlegungen und zusätzlichen Schritte in Anforderungen an private Cluster kennen.

      • Wenn Sie die Knoten in einem Cluster der Version 1.18 oder früher bereitstellen, stellen Sie sicher, dass die ausgewählten Subnetze mit dem Clusternamen gekennzeichnet sind. Ersetzen Sie my-cluster durch den Namen Ihres Clusters. Führen Sie dann den folgenden Befehl aus, um eine Liste der Subnetze anzuzeigen, die derzeit mit Ihrem Clusternamen gekennzeichnet sind.

        aws ec2 describe-subnets --filters Name=tag:kubernetes.io/cluster/my-cluster,Values=shared | grep SubnetId

        Wenn das Subnetz, das Sie auswählen möchten, nicht in der Ausgabe des vorherigen Befehls zurückgegeben wird, müssen Sie das Tag manuell dem Subnetz hinzufügen. Weitere Informationen finden Sie unter Subnetz-Anforderungen und -Überlegungen.

      • Wenn Sie die Subnetze AWS Outposts, Wavelength oder Local Zone auswählen, dürfen diese Subnetze beim Erstellen des Clusters nicht übergeben worden sein.

  6. Bestätigen Sie, dass der Stack IAM-Ressourcen erstellen kann, und wählen Sie dann Create stack (Stack erstellen) aus.

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

  8. Notieren Sie die NodeInstanceRole für die Knotengruppe, die erstellt wurde. Sie benötigen diese, wenn Sie Ihre Amazon-EKS-Windows-Worker-Knoten konfigurieren.

Schritt 2: So aktivieren Sie die Knoten, die Ihrem Cluster beitreten sollen

  1. Laden Sie die AWS IAM Authenticator-Konfigurationszuordnung herunter, bearbeiten Sie sie und wenden Sie sie an.

    1. Laden Sie die Konfigurationszuordnung herunter:

      curl -o aws-auth-cm-windows.yaml https://s3.us-west-2.amazonaws.com/amazon-eks/cloudformation/2020-10-29/aws-auth-cm-windows.yaml
    2. Öffnen Sie die -Datei in einem Texteditor Ihrer Wahl. Ersetzen Sie die Ausschnitte ARN of instance role (not instance profile) of **Linux** node und ARN of instance role (not instance profile) of **Windows** node durch die NodeInstanceRole-Werte, die Sie für Ihre Linux- und Windows-Knoten aufgezeichnet haben, und speichern Sie die Datei.

      Wichtig
      • Ändern Sie keine weiteren Zeilen in dieser Datei.

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

      apiVersion: v1 kind: ConfigMap metadata: name: aws-auth namespace: kube-system data: mapRoles: | - rolearn: ARN of instance role (not instance profile) of **Linux** node username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes - rolearn: ARN of instance role (not instance profile) of **Windows** node username: system:node:{{EC2PrivateDNSName}} groups: - system:bootstrappers - system:nodes - eks:kube-proxy-windows
    3. Wenden Sie die Konfiguration an. Die Ausführung dieses Befehls kann einige Minuten dauern.

      kubectl apply -f aws-auth-cm-windows.yaml
      Anmerkung

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

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

  2. Sehen Sie sich den Status Ihrer Knoten an und warten Sie, bis diese in den Ready-Status eintreten.

    kubectl get nodes --watch
  3. (Optional) Bereitstellen einer -Beispielanwendung Stellen Sie eine Beispielanwendung bereit, um Ihren Cluster und Ihre Windows-Worker-Knoten zu testen.

  4. (Optional) Wenn die von AmazonEKS_CNI_Policy verwaltete IAM-Richtlinie (bei einem IPv4-Cluster) oder die AmazonEKS_CNI_IPv6_Policy (die Sie bei einem IPv6-Cluster selbst erstellt haben) an Ihre Amazon-EKS-Knoten-IAM-Rolle angefügt ist, sollten Sie sie stattdessen einer IAM-Rolle zuweisen, die Sie dem aws-node-Servicekonto für Kubernetes zuordnen. Weitere Informationen finden Sie unter Konfigurieren des Amazon VPC CNI plugin for Kubernetes zur Verwendung von IAM-Rollen für Servicekonten.

  5. Wir empfehlen, den Pod-Zugriff auf das IMDS zu blockieren, wenn die folgenden Bedingungen erfüllt sind:

    • Sie planen, allen Ihren Kubernetes-Servicekonten IAM-Rollen zuzuweisen, damit Pods nur die Mindestberechtigungen haben, die sie benötigen.

    • Keine Pods im Cluster benötigen aus anderen Gründen Zugriff auf den Amazon-EC2-Instance-Metadaten-Service (IMDS), zum Beispiel zum Abrufen der aktuellen AWS-Region.

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