AWS-Netzwerk vorbereiten

Wenn Sie einen externen Load-Balancer mit GKE on AWS einrichten möchten, müssen Sie Ihre VPC und das öffentliche Subnetz mit Ihrer Cluster-ID taggen. Wenn Sie Ihre VPC und Ihr Subnetz bereits getaggt haben, fahren Sie mit Eingehenden Traffic aktivieren fort.

Hinweis

Bevor Sie GKE on AWS verwenden, müssen die folgenden Bedingungen erfüllt sein:

GKE on AWS erfordert Tags in Subnetzen, die Load-Balancer-Endpunkte enthalten. GKE on AWS taggt automatisch alle im Feld spec.Networking.ServiceLoadBalancerSubnetIDs der AWSCluster-Ressource angegebenen Subnetze.

Wenn Sie Ihrem Nutzercluster weitere Subnetze hinzufügen oder Tags auf vorhandene Subnetze anwenden möchten, führen Sie die folgenden Schritte aus:

  1. Verwenden Sie anthos-gke im Verzeichnis anthos-aws, um den Kontext zu Ihrem Verwaltungsdienst zu wechseln.

    cd anthos-aws
    anthos-gke aws management get-credentials

  2. Rufen Sie die ID der AWS-VPC des Clusters mit kubectl ab und speichern Sie sie als Variable.

     export VPC_ID=$(\
     env HTTPS_PROXY=http://localhost:8118 \
     kubectl get awscluster cluster-0 -o jsonpath='{.spec.networking.vpcID}')
    
  3. Prüfen Sie den Inhalt der Variablen mit echo. Die Ausgabe ähnelt vpc-12345678abcdef0.

    echo $VPC_ID
    
  4. Speichern Sie die Cluster-ID in einer Umgebungsvariablen.

    export CLUSTER_ID=$(\
    env HTTPS_PROXY=http://localhost:8118 \
    kubectl get awscluster cluster-0 -o jsonpath='{.status.clusterID}')
    

    Sie können die Variable mit echo prüfen:

    echo $CLUSTER_ID
    

    Die Antwort enthält Ihre Cluster-ID.

    gke-12345678
    
  5. Wenn Sie GKE on AWS in einer dedizierten VPC installiert haben, können Sie mit dem aws-Befehlszeilentool die Subnetz-ID abrufen.

    Folgende Optionen sind verfügbar:

    • Öffentlich, wenn Sie Dienste in Ihrem öffentlichen Subnetz verfügbar machen möchten.
    • Privat, wenn Sie Dienste in Ihrem privaten Subnetz verfügbar machen möchten.
    • Mehrere Subnetze, wenn Sie Dienste in mehreren Subnetzen verfügbar machen möchten.

    Öffentlich

     export SUBNET_ID=$(aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*public*" \
     --query "Subnets[*].SubnetId" \
     --output text)
    

    Die Ausgabe ist ein Objekt, das Ihre Subnetz-ID enthält. Sie ähnelt subnet-1234abcdefg. Sie können die Variable mit echo prüfen:

    echo $SUBNET_ID
    

    Die Antwort enthält Ihre Subnetz-ID.

    subnet-012345678abcdef
    

    Privat

     export SUBNET_ID=$(aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \
     --query "Subnets[*].SubnetId" \
     --output text)
    

    Die Ausgabe ist ein Objekt, das Ihre Subnetz-ID enthält. Sie ähnelt subnet-1234abcdefg. Sie können die Variable mit echo prüfen:

    echo $SUBNET_ID
    

    Die Antwort enthält Ihre Subnetz-ID.

    subnet-012345678abcdef
    

    Mehrere Subnetze

    Wenn Sie mehrere Subnetze für Ihre AWSNodePools nutzen, z. B. wenn Sie mehrere Verfügbarkeitszonen verwenden, müssen Sie Ihre Subnetz-IDs einzeln taggen.

    Rufen Sie die Liste der Subnetz-IDs mit aws ec2 describe-subnets ab.

    Führen Sie den folgenden Befehl aus, um eine Liste aller öffentlichen Subnetze abzurufen:

    aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*public*" \
     --query "Subnets[*].SubnetId" \
     --output text
    

    Führen Sie den folgenden Befehl aus, um eine Liste aller privaten Subnetze abzurufen:

    aws ec2 describe-subnets \
     --filters "Name=vpc-id,Values=$VPC_ID" "Name=tag:Name,Values=*private*" \
     --query "Subnets[*].SubnetId" \
     --output text
    

    Die Antwort enthält Ihre Subnetz-IDs.

    subnet-012345678abcdef
    subnet-abcdef123456789
    subnet-123456789abcdef
    
  6. Taggen Sie das Subnetz mit Ihrer Cluster-ID. Wenn Sie mehrere Subnetze haben, wählen Sie die Methode für mehrere Subnetze aus.

    Einzelnes Subnetz

    aws ec2 create-tags \
    --resources $SUBNET_ID \
    --tags Key=kubernetes.io/cluster/$CLUSTER_ID,Value=shared
    

    Mehrere Subnetze

    Führen Sie für jedes Ihrer Subnetze den folgenden Befehl aus:

    aws ec2 create-tags \
    --resources subnet-ids \
    --tags Key=kubernetes.io/cluster/$CLUSTER_ID,Value=shared
    

    Ersetzen Sie subnet-ids durch die durch Leerzeichen getrennte Liste der Subnetz-IDs. Beispiel: subnet-012345678abcdef subnet-abcdef123456789 subnet-123456789abcdef