Selbstverwaltete Windows-Knoten starten - Amazon EKS

Selbstverwaltete Windows-Knoten starten

In diesem Thema finden Sie Hinweise zum Starten einer Auto Scaling-Gruppe 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.

Sie müssen Windows-Unterstützung für Ihren Cluster aktivieren. Es wird empfohlen, wichtige Überlegungen zu überprüfen, bevor Sie eine Windows-Workerknoten-Gruppe 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.67.0 ist. Sie können Ihre Version mit dem folgenden Befehl überprüfen:

eksctl version

Weitere Informationen zur Installation oder zum Upgrade von eksctl finden Sie im Abschnitt Installieren oder Aktualisieren von eksctl.

Anmerkung

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

  1. (Optional) Wenn dieAmazonEKS_CNI_Policyverwaltete IAM-Richtlinie ist an IhreAmazon-EKS-Knoten-IAM-Rollewird empfohlen, sie einer IAM-Rolle zuzuweisen, die Sie dem Kubernetesaws-node-Dienstkonto. Weitere Informationen finden Sie unter Konfigurieren des Amazon-VPC-CNI-Plug-Ins zur Verwendung von IAM-Rollen für Servicekonten.

  2. Bei dieser Prozedur wird vorausgesetzt, dass Sie einen vorhandenen Cluster namensmy-clusterimus-west-2Region : Ändern Sie für einen anderen vorhandenen Cluster die Werte. Wenn Sie noch nicht über einen Amazon EKS-Cluster und eine Linux-2-Knoten-Gruppe verfügen, zu der Sie eine Windows-Knoten-Gruppe hinzufügen können, sollten Sie stattdessen die Erste Schritte mit Amazon EKS – eksctl-Anleitung befolgen. Die Handbücher bieten eine vollständige durchgängige exemplarische Vorgehensweise zum Erstellen eines Amazon EKS-Clusters mit Linux-Workerknoten.

    Erstellen Sie Ihre Worker-Knoten-Gruppe mit dem folgenden Befehl. Ersetzen Sie <example values> (einschließlich<>) durch eigene Werte.

    Wichtig

    Wenn Sie eine Knotengruppe für AWS Outposts, AWS Wavelength,oder AWSLocal Zones-Subnetze bereitstellen wollen, dann dürfeen die AWS Outposts, AWS Wavelength oder AWS Local Zones-Subnetze beim Erstellen des Clusters nicht übergeben worden sein. Sie müssen die Knotengruppe mit einer Konfigurationsdatei erstellen und die AWS Outposts, AWS Wavelength oder AWS Local Zones Subnetze. Weitere Informationen finden Sie unter Verwenden von Config-Dateien und im Config-Datei-Schema in der eksctl-Dokumentation.

    eksctl create nodegroup \ --region <us-west-2> \ --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.

    • Weitere Informationen zu den verfügbaren Optionen füreksctlGeben Sie den folgenden Befehl ein.

      eksctl <command> -help

    Ausgabe:

    Sie stellen einen oder mehrere Arbeitsknoten in einer Knotengruppe bereit. Die letzte Ausgabezeile ähnelt der folgenden Beispielzeile.

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

  4. (Optional) Wenn Sie planen, IAM-Rollen allen Kubernetes-Dienstkonten zuzuweisen, sodass Pods nur über die erforderlichen Mindestberechtigungen verfügen und keine Pods im Cluster aus anderen Gründen Zugriff auf den Amazon EC2 Instance-Metadaten-Dienst (IMDS) benötigen, z. B. das Abrufen der aktuellen Region, dann müssen wir empfehlen, den Pod-Zugriff auf IMDS zu blockieren. Weitere Informationen erhalten Sie unter IAM-Rollen für Servicekonten und Einschränken des Zugriffs auf die Anmeldeinformationen des IMDS- und Amazon EC2-Instance-Profils.

AWS Management Console

Prerequisites

  • Ein vorhandener Amazon EKS-Cluster und eine Linux-Knotengruppe. Wenn Sie nicht über diese Ressourcen verfügen, empfehlen wir Ihnen, einem unserer Erste Schritte mit Amazon EKS-Leitfäden zu folgen, um sie zu erstellen. Die Handbücher bieten eine vollständige durchgängige exemplarische Vorgehensweise zum Erstellen eines Amazon EKS-Clusters mit Linux-Workerknoten.

  • Eine vorhandene VPC und eine Sicherheitsgruppe, die die Voraussetzungen für einen Amazon EKS-Cluster erfüllen. Weitere Informationen erhalten Sie unter Überlegungen zur Cluster-VPC und Überlegungen zur Amazon-EKS-Sicherheitsgruppe. In der Erste Schritte mit Amazon EKS-Anleitung wird eine VPC erstellt, die diese Voraussetzungen erfüllt. Sie können aber auch Erstellen einer VPC für Ihren Amazon-EKS-Cluster befolgen, um manuell eine VPC zu erstellen.

  • Ein vorhandener Amazon EKS-Cluster, der eine VPC und eine Sicherheitsgruppe verwendet, die die Voraussetzungen eines Amazon EKS--Clusters erfüllen. Weitere Informationen finden Sie unter Erstellen eines Amazon-EKS-Clusters. Wenn Sie Subnetze imAWSRegion, in der SieAWS Outposts,AWS Wavelength, oderAWSLocal Zones aktiviert sind, dürfen diese Subnetze beim Erstellen des Clusters nicht übergeben worden sein.

So starten Sie selbstverwaltete Windows-Knoten mit derAWS Management Console

  1. Warten Sie, bis der Status des Clusters als angezeigt wird ACTIVE. Wenn Sie Ihre Worker-Knoten starten, bevor der Cluster aktiv ist, werden die Worker-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 -URL aus, kopieren Sie die folgende URL, fügen Sie sie in die -URL ein und wählen Sie zweimal Next (Weiter) aus.

    https://amazon-eks.s3.us-west-2.amazonaws.com/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 Worker-Knoten dem Cluster nicht beitreten.

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

    • 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 Worker-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.

      Anmerkung

      Die unterstützten Instance-Typen für die neueste Version des -CNI-Plugins für Kubernetes werden hier angezeigt. Möglicherweise müssen Sie Ihre CNI-Version aktualisieren, um die Vorteile der neuesten unterstützten Instance-Typen zu nutzen. Weitere Informationen finden Sie unter Aktualisieren des selbstverwalteten Amazon-VPC-CNI-Add-ons.

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

    • NodeImageId: (Optional) Wenn Sie Ihr eigenes benutzerdefiniertes AMI (anstelle des Amazon EKS-optimierten AMI) verwenden, geben Sie eine Workerknoten-AMI-ID für Ihre Region ein. Wenn Sie hier einen Wert angeben, werden alle Werte im Feld NodeImageIdSSMParam außer Kraft gesetzt.

    • NodeVolumeSize: Geben Sie eine Stamm-Volume-Größe für Ihre Workerknoten 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 vorliegen 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.

    • DisableImdsv1: Jeder Knoten unterstützt standardmäßig den Instanz-Metadatendienst Version 1 (IMDSv1) und IMDSv2, Sie können jedoch IMDSv1 deaktivieren. Selecttrue, wenn keine Knoten in der Knotengruppe oder Pods, die auf den Knoten in der Knotengruppe geplant sind, IMDSv1 verwenden sollen. 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-Workerknoten-Gruppe in VPC erstellt wurde. Wenn Ihren Linux-Workerknoten mehr als eine Sicherheitsgruppe angehängt ist (z. B. wenn die Linux-Workerknoten-Gruppe mit eksctl erstellt wurde), geben Sie hier alle an.

    • Subnets (Subnetze): Wählen Sie die Subnetze aus, die Sie in 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 Worker-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 Worker-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 kennen Private Cluster.

      • Wenn Sie die Knoten in einem Cluster von 1.18 oder früher bereitstellen, stellen Sie sicher, dass die ausgewählten Subnetze mit dem Clusternamen gekennzeichnet sind. Ersetzenmy-cluster(einschließlich<>) mit dem Namen Ihres Clusters und 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-Markierung.

      • Wenn Sie die OptionAWS Outposts,AWS Wavelength, oderAWSSubnetze für Local Zones verwenden, dürfen die 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-Workerknoten konfigurieren.

So aktivieren Sie die Worker-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://amazon-eks.s3.us-west-2.amazonaws.com/cloudformation/2020-10-29/aws-auth-cm-windows.yaml
    2. Öffnen Sie die Datei mit einem Texteditor Ihrer Wahl. Ersetzen Sie die<ARN of instance role (not instance profile) of **Linux** node>und<ARN of instance role (not instance profile) of **Windows** node>-Abschnitte mit demNodeInstanceRole-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.

      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 Windows-Beispielanwendung Stellen Sie eine Beispielanwendung bereit, um Ihren Cluster und Ihre Windows-Workerknoten zu testen.

  4. (Optional) Wenn dieAmazonEKS_CNI_Policyverwaltete IAM-Richtlinie ist an IhreAmazon-EKS-Knoten-IAM-Rollewird empfohlen, sie einer IAM-Rolle zuzuweisen, die Sie dem Kubernetesaws-node-Dienstkonto. Weitere Informationen finden Sie unter Konfigurieren des Amazon-VPC-CNI-Plug-Ins zur Verwendung von IAM-Rollen für Servicekonten.

  5. (Optional) Wenn Sie planen, IAM-Rollen allen Kubernetes-Dienstkonten zuzuweisen, sodass Pods nur über die erforderlichen Mindestberechtigungen verfügen und keine Pods im Cluster aus anderen Gründen Zugriff auf den Amazon EC2 Instance-Metadaten-Dienst (IMDS) benötigen, z. B. das Abrufen der aktuellen Region, dann müssen wir empfehlen, den Pod-Zugriff auf IMDS zu blockieren. Weitere Informationen erhalten Sie unter IAM-Rollen für Servicekonten und Einschränken des Zugriffs auf die Anmeldeinformationen des IMDS- und Amazon EC2-Instance-Profils.