In diesem Thema wird beschrieben, wie Sie die Konfiguration eines Anthos-Clusters in AWS (GKE-Nutzercluster) von AWS anpassen.
Das Erstellen eines benutzerdefinierten Nutzerclusters kann folgende Gründe haben:
- Weiteren Cluster für eine Staging- oder Testumgebung erstellen
- Knotenpools mit unterschiedlichen Maschinentypen hinzufügen
- Cluster in bestimmten AWS-Verfügbarkeitszonen erstellen
Hinweis
Bevor Sie Anthos-Cluster auf AWS verwenden, führen Sie die folgenden Aufgaben aus:
- Sie haben dafür gesorgt, dass die Voraussetzungen erfüllt sind.
Der Verwaltungsdienst muss installiert sein.
Wenn Sie einen Cluster erstellen möchten, ohne
terraform output example_cluster
zu verwenden, benötigen Sie private AWS-Subnetze für die Steuerungsebene. Jedes Subnetz muss zu einer anderen Verfügbarkeitszone in derselben AWS-Region gehören. Routentabellen müssen so konfiguriert sein, dass Traffic zwischen privaten Subnetzen zugelassen wird. Außerdem muss jedes Subnetz Zugriff auf ein NAT-Gateway haben.Halten Sie Ihre AWS VPC-ID (Virtual Private Cloud) bereit. Eine VPC-ID hat das Format
vpc-012345678abcde
. Sie finden die VPC-ID in der AWS-Konsole.
Führen Sie die folgenden Schritte aus, um eine Verbindung zu Ihren Anthos-Clustern auf AWS-Ressourcen herzustellen. Wählen Sie aus, ob Sie eine bestehende AWS-VPC (oder eine direkte Verbindung zu Ihrer VPC) verwenden oder beim Erstellen Ihres Verwaltungsdienstes eine dedizierte VPC angelegt haben.
Vorhandene VPC
Wenn Sie eine direkte Verbindung oder eine VPN-Verbindung zu einer vorhandenen VPC verwenden, lassen Sie die Zeile env HTTP_PROXY=http://localhost:8118
in den Befehlen in diesem Thema weg.
Dedizierte VPC
Wenn Sie einen Verwaltungsdienst in einer dedizierten VPC erstellen, enthält Anthos-Cluster auf AWS einen Bastion-Host in einem öffentlichen Subnetz.
So stellen Sie eine Verbindung zu Ihrem Verwaltungsdienst her:
Wechseln Sie in das Verzeichnis mit Ihrer Anthos-Cluster auf AWS-Konfiguration. Sie haben dieses Verzeichnis bei der Installation des Verwaltungsdienstes erstellt.
cd anthos-aws
Führen Sie das Skript
bastion-tunnel.sh
aus, um den Tunnel zu öffnen. Über den Tunnel erfolgt eine Weiterleitung zulocalhost:8118
.Führen Sie den folgenden Befehl aus, um einen Tunnel zum Bastion Host zu öffnen:
./bastion-tunnel.sh -N
In diesem Fenster werden Nachrichten aus dem SSH-Tunnel angezeigt. Wenn Sie bereit sind, die Verbindung zu trennen, beenden Sie den Vorgang mit Strg+C oder schließen Sie das Fenster.
Öffnen Sie ein neues Terminal und wechseln Sie in das Verzeichnis
anthos-aws
:cd anthos-aws
Prüfen Sie, ob Sie mit
kubectl
eine Verbindung zum Cluster herstellen können.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
Die Ausgabe enthält die URL für den API-Server des Verwaltungsdienstes.
Größe der Instanz der Steuerungsebene auswählen
Anthos-Cluster auf AWS unterstützen keine Größenanpassung der Steuerungsebeneninstanzen. Sie müssen deshalb vor dem Erstellen Ihres Nutzerclusters die Instanzgröße der Steuerungsebenen auswählen. Die Größe der Steuerungsebene hängt von der Anzahl der Knoten im Cluster ab. Die folgende Tabelle enthält die empfohlenen Instanzgrößen für die Steuerungsebene bei verschiedenen Clustergrößen.
Clustergröße (Knoten) | Instanztyp der Steuerungsebene |
---|---|
1–10 | m5.large |
11–100 | m5.xlarge |
101–200 | m5.2xlarge |
Neuen Cluster mit einer benutzerdefinierten Konfiguration erstellen
Sie können mit terraform output example_cluster
eine Konfiguration für einen Nutzercluster pro Verwaltungscluster erstellen. Wenn Sie weitere Cluster erstellen möchten, müssen Sie eine benutzerdefinierte Konfiguration anwenden.
In diesem Beispiel erstellen Sie manuell einen Cluster aus den CRDs von AWSCluster
und AWSNodePool
.
Wechseln Sie in das Verzeichnis mit Ihrer Anthos Cluster auf AWS-Konfiguration. Sie haben dieses Verzeichnis bei der Installation des Verwaltungsdienstes erstellt.
cd anthos-aws
Verwenden Sie
anthos-gke
im Verzeichnisanthos-aws
, um den Kontext zu Ihrem Verwaltungsdienst zu wechseln.cd anthos-aws anthos-gke aws management get-credentials
Öffnen Sie einen Texteditor und kopieren Sie die folgende
AWSCluster
-Definition in eine Datei mit dem Namencustom-cluster.yaml
.apiVersion: multicloud.cluster.gke.io/v1 kind: AWSCluster metadata: name: CLUSTER_NAME spec: region: AWS_REGION networking: vpcID: VPC_ID podAddressCIDRBlocks: POD_ADDRESS_CIDR_BLOCKS serviceAddressCIDRBlocks: SERVICE_ADDRESS_CIDR_BLOCKS ServiceLoadBalancerSubnetIDs: SERVICE_LOAD_BALANCER_SUBNETS controlPlane: version: CLUSTER_VERSION # Latest version is 1.25.5-gke.2100 instanceType: AWS_INSTANCE_TYPE keyName: SSH_KEY_NAME subnetIDs: - CONTROL_PLANE_SUBNET_IDS securityGroupIDs: - CONTROL_PLANE_SECURITY_GROUPS iamInstanceProfile: CONTROL_PLANE_IAM_ROLE rootVolume: sizeGiB: ROOT_VOLUME_SIZE volumeType: ROOT_VOLUME_TYPE # Optional iops: ROOT_VOLUME_IOPS # Optional kmsKeyARN: ROOT_VOLUME_KEY # Optional etcd: mainVolume: sizeGiB: ETCD_VOLUME_SIZE volumeType: ETCD_VOLUME_TYPE # Optional iops: ETCD_VOLUME_IOPS # Optional kmsKeyARN: ETCD_VOLUME_KEY # Optional databaseEncryption: kmsKeyARN: ARN_OF_KMS_KEY hub: # Optional membershipName: ANTHOS_CONNECT_NAME cloudOperations: # Optional projectID: YOUR_PROJECT location: GCP_REGION enableLogging: ENABLE_LOGGING enableMonitoring: ENABLE_MONITORING workloadIdentity: # Optional oidcDiscoveryGCSBucket: WORKLOAD_IDENTITY_BUCKET
Dabei gilt:
- CLUSTER_NAME: Der Name Ihres Clusters.
AWS_REGION: AWS-Region, in der Ihr Cluster ausgeführt wird.
VPC_ID: ID der VPC, in der Ihr Cluster ausgeführt wird.
POD_ADDRESS_CIDR_BLOCKS: Bereich der IPv4-Adressen, der von den Pods des Clusters verwendet wird. Derzeit wird nur ein Bereich unterstützt. Der Bereich darf sich nicht mit Subnetzen überschneiden, die von Ihrem Netzwerk erreichbar sind. Sie können denselben Bereich für mehrere unterschiedliche AWSCluster-Objekte verwenden. Beispiel:
10.2.0.0/16
.SERVICE_ADDRESS_CIDR_BLOCKS: IPv4-Adressbereich, der von den Diensten des Clusters verwendet wird. Derzeit wird nur ein Bereich unterstützt. Der Bereich darf sich nicht mit Subnetzen überschneiden, die von Ihrem Netzwerk erreichbar sind. Sie können denselben Bereich für mehrere unterschiedliche AWSCluster-Objekte verwenden. Beispiel:
10.1.0.0/16
.SERVICE_LOAD_BALANCER_SUBNETS: Die Subnetz-IDs, in denen Anthos-Cluster in AWS öffentliche oder private Load-Balancer erstellen können.
CLUSTER_VERSION: Eine Kubernetes-Version, die von Anthos-Clustern in AWS unterstützt wird. Die neueste Version ist 1.25.5-gke.2100.
AWS_INSTANCE_TYPE: Ein unterstützter EC2-Instanztyp.
SSH_KEY_NAME: Ein AWS-EC2-Schlüsselpaar
CONTROL_PLANE_SUBNET_IDS: Die IDs der Subnetze in den Verfügbarkeitszonen, in denen Ihre Instanzen auf der Steuerungsebene ausgeführt werden.
CONTROL_PLANE_SECURITY_GROUPS: Eine securityGroupID, die während der Installation des Verwaltungsdiensts erstellt wurde. Sie können dies dadurch anpassen, dass Sie alle securityGroupIDs hinzufügen, die für die Verbindung mit der Steuerungsebene erforderlich sind.
CONTROL_PLANE_IAM_PROFILE: Der Name des AWS EC2-Instanzprofils, das den Replikaten der Steuerungsebene zugewiesen ist.
ROOT_VOLUME_SIZE ist die Größe in Gibibyte (GiB) der Root-Volumes auf der Steuerungsebene.
ROOT_VOLUME_TYPE durch den EBS-Volume-Typ. Beispiel:
gp3
ROOT_VOLUME_IOPS durch die Anzahl der bereitgestellten E/A-Vorgänge pro Sekunde (IOPS) für das Volume. Nur gültig, wenn
volumeType
GP3
ist. Weitere Informationen finden Sie unter SSD-Volumes für allgemeine Zwecke (gp3).ROOT_VOLUME_KEY durch den Amazon-Ressourcennamen des AWS-KMS-Schlüssels, der Ihre Root-Volumes auf der Steuerungsebene verschlüsselt.
ETCD_VOLUME_SIZE ist die Größe der von etcd verwendeten Volumes.
ETCD_VOLUME_TYPE durch den EBS-Volume-Typ. Beispiel:
gp3
ETCD_VOLUME_IOPS durch die Anzahl der bereitgestellten E/A-Vorgänge pro Sekunde (IOPS) für das Volume. Nur gültig, wenn
volumeType
gp3
ist. Weitere Informationen finden Sie unter SSD-Volumes für allgemeine Zwecke (gp3).ETCD_VOLUME_KEY durch den Amazon-Ressourcennamen des AWS-KMS-Schlüssels, mit dem die etcd-Daten-Volumes der Steuerungsebene verschlüsselt werden.
ARN_OF_KMS_KEY ist der AWS KMS-Schlüssel, der zum Verschlüsseln von Cluster-Secrets verwendet wird.
ANTHOS_CONNECT_NAME ist der Name der Connect-Mitgliedschaft, der für die Registrierung Ihres Clusters verwendet wird. Der Name der Mitgliedschaft muss eindeutig sein. Beispiel:
projects/YOUR_PROJECT/locations/global/memberships/CLUSTER_NAME
, wobeiYOUR_PROJECT
Ihr Google Cloud-Projekt undCLUSTER_NAME
ein eindeutiger Name in Ihrem Projekt ist. Dieses Feld ist optional.YOUR_PROJECT ist Ihre Projekt-ID.
GCP_REGION: Die Google Cloud-Region, in der Sie Logs speichern möchten. Wählen Sie eine Region in der Nähe der AWS-Region aus. Weitere Informationen finden Sie unter Globale Standorte: Regionen und Zonen, z. B.
us-central1
.ENABLE_LOGGING:
true
oderfalse
, abhängig davon, ob Cloud Logging auf Knoten der Steuerungsebene aktiviert ist.ENABLE_MONITORING:
true
oderfalse
, abhängig davon, ob Cloud Monitoring auf Knoten der Steuerungsebene aktiviert ist.WORKLOAD_IDENTITY_BUCKET ist der Name des Cloud Storage-Buckets mit den Workload Identity-Erkennungsinformationen. Dieses Feld ist optional.
Erstellen Sie einen oder mehrere AWSNodePools für Ihren Cluster. Öffnen Sie einen Texteditor und kopieren Sie die folgende AWSCluster-Definition in eine Datei mit dem Namen
custom-nodepools.yaml
.apiVersion: multicloud.cluster.gke.io/v1 kind: AWSNodePool metadata: name: NODE_POOL_NAME spec: clusterName: AWSCLUSTER_NAME version: CLUSTER_VERSION # latest version is 1.25.5-gke.2100 region: AWS_REGION subnetID: AWS_SUBNET_ID minNodeCount: MINIMUM_NODE_COUNT maxNodeCount: MAXIMUM_NODE_COUNT maxPodsPerNode: MAXIMUM_PODS_PER_NODE_COUNT instanceType: AWS_NODE_TYPE keyName: KMS_KEY_PAIR_NAME iamInstanceProfile: NODE_IAM_PROFILE proxySecretName: PROXY_SECRET_NAME rootVolume: sizeGiB: ROOT_VOLUME_SIZE volumeType: VOLUME_TYPE # Optional iops: IOPS # Optional kmsKeyARN: NODE_VOLUME_KEY # Optional
Dabei gilt:
- NODE_POOL_NAME ist ein eindeutiger Name für Ihren AWSNodePool.
- AWSCLUSTER_NAME ist der Name Ihres AWSClusters. Beispiel:
staging-cluster
- CLUSTER_VERSION ist eine unterstützte Version von Anthos-Clustern auf AWS Kubernetes.
- AWS_REGION ist die gleiche AWS-Region wie für Ihren AWS-Cluster.
- AWS_SUBNET_ID: AWS-Subnetz, das sich in derselben Region wie Ihr AWS-Cluster befindet.
- MINIMUM_NODE_COUNT ist die maximale Anzahl von Knoten im Knotenpool. Weitere Informationen finden Sie unter Nutzercluster skalieren.
- MAXIMUM_NODE_COUNT: Die maximale Anzahl von Knoten im Knotenpool.
- MAXIMUM_PODS_PER_NODE_COUNT: ist die maximale Anzahl von Pods, die Anthos-Cluster in AWS einem Knoten zuweisen können.
- AWS_NODE_TYPE ist ein AWS EC2-Instanztyp.
- KMS_KEY_PAIR_NAME ist das AWS KMS-Schlüsselpaar, das jedem Knotenpool-Worker zugewiesen wurde.
- NODE_IAM_PROFILE ist der Name des AWS EC2-Instanzprofils, das Knoten im Pool zugewiesen wurde.
- ROOT_VOLUME_SIZE ist die Größe in Gibibyte (GiB) der Root-Volumes auf der Steuerungsebene.
- VOLUME_TYPE ist der AWS-EBS-Volume-Typ des Knotens.
Beispiel:
gp3
- IOPS ist die Menge der bereitgestellten E/A-Vorgänge pro Sekunde (IOPS) für Volumes. Nur gültig, wenn
volumeType
gp3
ist. - NODE_VOLUME_KEY ist der ARN des AWS-KMS-Schlüssels, der zum Verschlüsseln des Volumes verwendet wird. Weitere Informationen finden Sie unter Vom Kunden verwalteten CMK zum Verschlüsseln von Volumes verwenden.
Wenden Sie die Manifeste auf Ihren Verwaltungsdienst an.
env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f custom-cluster.yaml env HTTPS_PROXY=http://localhost:8118 \ kubectl apply -f custom-nodepools.yaml
kubeconfig erstellen
Während Ihr Nutzercluster gestartet wird, können Sie einen kubeconfig
-Kontext für Ihren neuen Nutzercluster erstellen. Sie verwenden den Kontext, um sich bei einem Nutzer- oder Verwaltungscluster zu authentifizieren.
Verwenden Sie
anthos-gke aws clusters get-credentials
, um einenkubeconfig
für Ihren Nutzercluster in~/.kube/config
zu generieren.env HTTPS_PROXY=http://localhost:8118 \ anthos-gke aws clusters get-credentials CLUSTER_NAME
Ersetzen Sie dabei CLUSTER_NAME durch den Namen Ihres Clusters. Beispiel:
cluster-0
.Verwenden Sie
kubectl
, um sich beim neuen Nutzercluster zu authentifizieren.env HTTPS_PROXY=http://localhost:8118 \ kubectl cluster-info
Wenn Ihr Cluster bereit ist, enthält die Ausgabe die URLs für Kubernetes-Komponenten in Ihrem Cluster.
Status des Clusters ansehen
Der Verwaltungsdienst stellt AWS-Ressourcen bereit, wenn Sie AWSCluster
oder AWSNodePool
anwenden.
Verwenden Sie
anthos-gke
im Verzeichnisanthos-aws
, um den Kontext zu Ihrem Verwaltungsdienst zu wechseln.cd anthos-aws anthos-gke aws management get-credentials
Verwenden Sie
kubectl get AWSClusters
, um Ihre Cluster aufzulisten.env HTTPS_PROXY=http://localhost:8118 \ kubectl get AWSClusters
Die Ausgabe enthält den Namen, den Status, das Alter, die Version und den Endpunkt jedes Clusters.
Die folgende Ausgabe enthält beispielsweise nur einen
AWSCluster
mit dem Namencluster-0
:NAME STATE AGE VERSION ENDPOINT cluster-0 Provisioning 2m41s 1.25.5-gke.2100 gke-xyz.elb.us-east-1.amazonaws.com
Cluster-Ereignisse abrufen
Verwenden Sie kubectl get events
, um aktuelle Kubernetes-Ereignisse aus Ihrem Nutzercluster aufzurufen.
Verwenden Sie
anthos-gke
im Verzeichnisanthos-aws
, um den Kontext zu Ihrem Verwaltungsdienst zu wechseln.cd anthos-aws anthos-gke aws management get-credentials
Führen Sie
kubectl get events
aus.env HTTPS_PROXY=http://localhost:8118 \ kubectl get events
Die Ausgabe enthält Informationen, Warnungen und Fehler in Verbindung mit Ihrem Verwaltungsdienst.
Nutzercluster löschen
So löschen Sie einen Nutzercluster:
Verwenden Sie
anthos-gke
im Verzeichnisanthos-aws
, um den Kontext zu Ihrem Verwaltungsdienst zu wechseln.cd anthos-aws anthos-gke aws management get-credentials
Löschen Sie mit
kubectl delete
das Manifest, das Ihre Nutzercluster enthält.env HTTPS_PROXY=http://localhost:8118 \ kubectl delete -f CLUSTER_FILE
Ersetzen Sie CLUSTER_FILE durch den Namen des Manifests, das Ihre AWS-Cluster- und AWSNodePool-Objekte enthält. Beispiel:
cluster-0.yaml
.
Alle Nutzercluster löschen
Führen Sie die folgenden Schritte aus, um alle Nutzercluster zu löschen:
Verwenden Sie
anthos-gke
im Verzeichnisanthos-aws
, um den Kontext zu Ihrem Verwaltungsdienst zu wechseln.cd anthos-aws anthos-gke aws management get-credentials
Löschen Sie mit
kubectl delete
Ihre AWSNodePools und AWSCluster aus Ihrem Verwaltungsdienst.env HTTPS_PROXY=http://localhost:8118 \ kubectl delete AWSNodePool --all env HTTPS_PROXY=http://localhost:8118 \ kubectl delete AWSCluster --all
Weitere Informationen finden Sie unter Anthos-Cluster auf AWS deinstallieren.
Nächste Schritte
Konfigurieren Sie Ihren Identitätsanbieter mit dem Anthos Identity-Dienst.
Starten Sie Ihre erste Arbeitslast in Anthos-Cluster auf AWS.
Erstellen Sie ein extern ausgerichtetes Deployment mit einem Load-Balancer oder Ingress.
Lesen Sie die Spezifikationen für die benutzerdefinierten Ressourcendefinitionen für AWSCluster und AWSNodePools.