Erstellung eines EKS-Auto-Mode-Clusters mit der AWS-CLI - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

Um zu diesem Benutzerhandbuch beizutragen, klicken Sie auf den Link Diese Seite auf GitHub bearbeiten, der sich im rechten Bereich jeder Seite befindet.

Erstellung eines EKS-Auto-Mode-Clusters mit der AWS-CLI

EKS-Auto-Mode-Cluster automatisieren routinemäßige Cluster-Verwaltungsaufgaben für Rechenleistung, Speicher und Netzwerke. EKS-Auto-Mode-Cluster erkennen beispielsweise automatisch, wenn zusätzliche Knoten erforderlich sind, und stellen neue EC2-Instances bereit, um den Workload-Anforderungen gerecht zu werden.

Dieses Thema führt Sie durch die Erstellung eines neuen EKS-Auto-Mode-Cluster mithilfe der AWS-CLI und optional durch die Bereitstellung eines Beispiel-Workloads.

Voraussetzungen

  • Die neueste Version der AWS-Befehlszeilenschnittstelle (AWS-CLI) muss auf Ihrem Gerät installiert und konfiguriert sein. Um Ihre aktuelle Version zu überprüfen, verwenden Sie aws --version. Um die neueste Version zu installieren, lesen Sie Installation und Schnellkonfiguration mit aws configure im Benutzerhandbuch zur AWS-Befehlszeilenschnittstelle.

    • Melden Sie sich mit ausreichenden IAM-Berechtigungen bei der CLI an, um AWS-Ressourcen wie IAM-Richtlinien, IAM-Rollen und EKS-Cluster zu erstellen.

  • Das auf Ihrem Gerät installierte Befehlszeilen-Tool kubectl. AWS schlägt vor, dass Sie dieselbe kubectl-Version wie die Kubernetes-Version Ihres EKS-Clusters verwenden. Informationen zum Installieren von kubectl finden Sie unter kubectl und eksctl einrichten.

Angabe von VPC-Subnetzen

Amazon EKS Auto Mode stellt Knoten in VPC-Subnetzen bereit. Beim Erstellen eines EKS-Clusters müssen Sie die VPC-Subnetze angeben, in denen die Knoten bereitgestellt werden sollen. Sie können die Standard-VPC-Subnetze in Ihrem AWS-Konto verwenden oder eine dedizierte VPC für kritische Workloads erstellen.

Verwenden der AWS-CLI:

  1. Führen Sie den folgenden Befehl aus, um die Standard-VPC und ihre Subnetze aufzulisten:

    aws ec2 describe-subnets --filters "Name=vpc-id,Values=$(aws ec2 describe-vpcs --query 'Vpcs[?IsDefault==`true`].VpcId' --output text)" --query 'Subnets[*].{ID:SubnetId,AZ:AvailabilityZone}' --output table
  2. Speichern Sie die Ausgabe und notieren Sie sich die Subnetz-IDs.

    Beispielausgabe:

    ----------------------------------------
    |             DescribeSubnets          |
    ----------------------------------------
    |   SubnetId        |   AvailabilityZone  |
    |--------------------|---------------------|
    |   subnet-012345678 |   us-west-2a        |
    |   subnet-234567890 |   us-west-2b        |
    |   subnet-345678901 |   us-west-2c        |
    ----------------------------------------

IAM-Rollen für Cluster in EKS Auto Mode

Cluster-IAM-Rolle

EKS Auto Mode erfordert eine Cluster-IAM-Rolle, um Aktionen in Ihrem AWS-Konto ausführen zu können, beispielsweise die Bereitstellung neuer EC2-Instances. Sie müssen diese Rolle erstellen, um EKS die erforderlichen Berechtigungen zu gewähren. AWS empfiehlt, die folgenden von AWS verwalteten Richtlinien der Cluster-IAM-Rolle anzufügen:

Knoten-IAM-Rolle

Wenn Sie einen EKS-Auto-Mode-Cluster erstellen, geben Sie eine IAM-Rolle für den Knoten an. Wenn EKS Auto Mode Knoten zur Verarbeitung ausstehender Workloads erstellt, wird jedem neuen EC2-Instance-Knoten die Knoten-IAM-Rolle zugewiesen. Diese Rolle ermöglicht es dem Knoten, mit EKS zu kommunizieren, wird jedoch in der Regel nicht von den auf dem Knoten ausgeführten Workloads aufgerufen.

Wenn Sie Workloads, die auf einem Knoten ausgeführt werden, Berechtigungen gewähren möchten, verwenden Sie EKS Pod Identity. Weitere Informationen finden Sie unter Erfahren Sie, wie EKS Pod Identity Pods Zugriff auf AWS-Services gewährt.

Sie müssen diese Rolle erstellen und die folgende von AWS verwaltete Richtlinie anfügen:

Serviceverknüpfte Rolle

EKS Auto Mode erfordert außerdem eine serviceverknüpfte Rolle, die automatisch von AWS erstellt und konfiguriert wird. Weitere Informationen finden Sie unter AWSServiceRoleForAmazonEKS.

Erstellung einer IAM-Rolle für einen Cluster in EKS Auto Mode

Schritt 1: Vertrauensrichtlinie erstellen

Erstellen Sie eine Vertrauensrichtlinie, mit welcher der Amazon-EKS-Service die Rolle übernehmen kann. Speichern Sie die Richtlinie als trust-policy.json:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "eks.amazonaws.com" }, "Action": [ "sts:AssumeRole", "sts:TagSession" ] } ] }

Schritt 2: Erstellen der IAM-Rolle

Verwenden Sie die Vertrauensrichtlinie, um die Cluster-IAM-Rolle zu erstellen:

aws iam create-role \
    --role-name AmazonEKSAutoClusterRole \
    --assume-role-policy-document file://trust-policy.json

Schritt 3: Rollen-ARN notieren

Rufen Sie die ARN der neuen Rolle ab und speichern Sie sie für die Verwendung in den folgenden Schritten:

aws iam get-role --role-name AmazonEKSAutoClusterRole --query "Role.Arn" --output text

Schritt 4: Erforderliche Richtlinien hinzufügen

Fügen Sie der Cluster-IAM-Rolle die folgenden von AWS verwalteten Richtlinien hinzu, um die erforderlichen Berechtigungen zu gewähren:

AmazonEKSClusterPolicy:

aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSClusterPolicy

AmazonEKSComputePolicy:

aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSComputePolicy

AmazonEKSBlockStoragePolicy:

aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSBlockStoragePolicy

AmazonEKSLoadBalancingPolicy:

aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSLoadBalancingPolicy

AmazonEKSNetworkingPolicy:

aws iam attach-role-policy \ --role-name AmazonEKSAutoClusterRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSNetworkingPolicy

Erstellung einer Knoten-IAM-Rolle in EKS Auto Mode

Schritt 1: Vertrauensrichtlinie erstellen

Erstellen Sie eine Vertrauensrichtlinie, mit welcher der Amazon-EKS-Service die Rolle übernehmen kann. Speichern Sie die Richtlinie als node-trust-policy.json:

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "ec2.amazonaws.com" }, "Action": "sts:AssumeRole" } ] } ----[source,json,subs="verbatim,attributes"]

Schritt 2: Knoten-IAM-Rolle erstellen

Verwenden Sie die Datei node-trust-policy.json aus dem vorherigen Schritt, um festzulegen, welche Entitäten die Rolle übernehmen können. Führen Sie den folgenden Befehl aus, um die Knoten-IAM-Rolle zu erstellen:

aws iam create-role \
    --role-name AmazonEKSAutoNodeRole \
    --assume-role-policy-document file://node-trust-policy.json

Schritt 3: Rollen-ARN notieren

Rufen Sie nach dem Erstellen der Rolle die ARN der Knoten-IAM-Rolle ab und speichern Sie sie. Sie benötigen diese ARN in den nachfolgenden Schritten. Um die ARN abzurufen, verwenden Sie den folgenden Befehl.

aws iam get-role --role-name AmazonEKSAutoNodeRole --query "Role.Arn" --output text

Schritt 4: Erforderliche Richtlinien hinzufügen

Fügen Sie die folgenden AWS-verwalteten Richtlinien zur Knoten-IAM-Rolle hinzu, um die erforderlichen Berechtigungen zu gewähren:

AmazonEKSWorkerNodeMinimalPolicy:

aws iam attach-role-policy \ --role-name AmazonEKSAutoNodeRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEKSWorkerNodeMinimalPolicy

AmazonEC2ContainerRegistryPullOnly:

aws iam attach-role-policy \ --role-name AmazonEKSAutoNodeRole \ --policy-arn arn:aws:iam::aws:policy/AmazonEC2ContainerRegistryPullOnly

Erstellung eines Clusters in EKS Auto Mode

Übersicht

Um einen EKS-Auto-Mode-Cluster über die AWS-CLI zu erstellen, benötigen Sie die folgenden Parameter:

  • cluster-name: Der Name des Clusters.

  • k8s-version: Die Kubernetes-Version (z. B. 1.31).

  • subnet-ids: Die in den vorherigen Schritten ermittelten Subnetz-IDs.

  • cluster-role-arn: ARN der Cluster-IAM-Rolle.

  • node-role-arn: ARN der Knoten-IAM-Rolle.

Standard-Cluster-Konfigurationen

Überprüfen Sie diese Standardwerte und Feature, bevor Sie den Cluster erstellen:

  • nodePools: EKS Auto Mode beinhaltet universelle und systemseitige Standard-Knoten-Pools. Weitere Informationen zu Knoten-Pools

Hinweis: Knoten-Pools in EKS Auto Mode unterscheiden sich von Amazon EKS verwalteten Knotengruppen, können jedoch im selben Cluster koexistieren.

  • computeConfig.enabled: Automatisiert routinemäßige Rechenaufgaben, wie das Erstellen und Löschen von EC2-Instances.

  • kubernetesNetworkConfig.elasticLoadBalancing.enabled: Automatisiert Load-Balancing-Aufgaben, einschließlich des Erstellens und Löschens von Elastic Load Balancers.

  • storageConfig.blockStorage.enabled: Automatisiert Speicheraufgaben, wie das Erstellen und Löschen von Amazon-EBS-Volumes.

  • accessConfig.authenticationMode: Erfordert EKS-Zugriffseinträge. Weitere Informationen zu EKS-Authentifizierungsmodi.

Ausführen des Befehls

Verwenden Sie den folgenden Befehl, um den Cluster zu erstellen:

aws eks create-cluster \
  --region ${AWS_REGION} \
  --cli-input-json \
  "{
      \"name\": \"${CLUSTER_NAME}\",
      \"version\": \"${K8S_VERSION}\",
      \"roleArn\": \"${CLUSTER_ROLE_ARN}\",
      \"resourcesVpcConfig\": {
        \"subnetIds\": ${SUBNETS_JSON},
        \"endpointPublicAccess\": true,
        \"endpointPrivateAccess\": true
      },
      \"computeConfig\": {
        \"enabled\": true,
        \"nodeRoleArn\":\"${NODE_ROLE_ARN}\",
        \"nodePools\": [\"general-purpose\", \"system\"]
      },
      \"kubernetesNetworkConfig\": {
        \"elasticLoadBalancing\": {
          \"enabled\": true
        }
      },
      \"storageConfig\": {
        \"blockStorage\": {
          \"enabled\": true
        }
      },
      \"accessConfig\": {
        \"authenticationMode\": \"API\"
      }
    }

Cluster-Status überprüfen

Schritt 1: Cluster-Erstellung überprüfen

Führen Sie den folgenden Befehl aus, um den Status Ihres Clusters zu überprüfen. Die Cluster-Erstellung dauert in der Regel 15 Minuten.

aws eks describe-cluster --name "${CLUSTER_NAME}" --output json

Schritt 2: kubeconfig aktualisieren

Sobald der Cluster bereit ist, aktualisieren Sie Ihre lokale kubeconfig-Datei, um die Kommunikation zwischen kubectl und dem Cluster zu ermöglichen. Diese Konfiguration verwendet die AWS-CLI für die Authentifizierung.

aws eks update-kubeconfig --name "${CLUSTER_NAME}"

Schritt 3: Knoten-Pools überprüfen

Listen Sie die Knoten-Pools in Ihrem Cluster mit dem folgenden Befehl auf:

kubectl get nodepools

Nächste Schritte