In diesem Thema werden Möglichkeiten zur Konfiguration von Tanzu Kubernetes Grid (TKG)-Arbeitslastclustern beschrieben, um AWS-spezifische Funktionen zu nutzen, die in der flachen Konfigurationsdatei oder der Objektspezifikation im Kubernetes-Stil des Clusters nicht vollständig konfiguriert werden können.
Informationen zum Konfigurieren von Arbeitslastclustern unter AWS mithilfe von Konfigurationsdateien und Objektspezifikationen finden Sie unter AWS-Clusterkonfigurationsdateien.
WichtigTanzu Kubernetes Grid v2.4.x ist die letzte Version von TKG, die die Erstellung von TKG-Arbeitslastclustern auf AWS unterstützt. Die Möglichkeit, TKG-Arbeitslastcluster auf AWS zu erstellen, wird in Tanzu Kubernetes Grid v2.5 entfernt.
Ab sofort empfiehlt VMware die Verwendung von Tanzu Mission Control zur Erstellung nativer AWS EKS-Cluster anstelle neuer TKG-Arbeitslastcluster auf AWS. Informationen zum Erstellen nativer AWS EKS-Cluster mit Tanzu Mission Control finden Sie unter Verwalten des Lebenszyklus von AWS EKS-Clustern in der Dokumentation zu Tanzu Mission Control.
Weitere Informationen finden Sie unter Veraltete TKG-Verwaltungs- und -Arbeitslastcluster in AWS und Azure in den Versionshinweisen zu VMware Tanzu Kubernetes Grid v2.4.
Wenn Sie Dienste des Typs LoadBalancer
im Cluster erstellen möchten, müssen Sie das Tag kubernetes.io/cluster/YOUR-CLUSTER-NAME=shared
zum bzw. zu den öffentlichen Subnetzen hinzufügen, die Sie für Ihren Arbeitslastcluster verwenden möchten.
Durch Hinzufügen des Tags kubernetes.io/cluster/YOUR-CLUSTER-NAME=shared
zu den öffentlichen Subnetzen können Sie nach der Bereitstellung des Clusters Dienste vom Typ LoadBalancer
erstellen. Führen Sie die folgenden Schritte aus, um dieses Tag hinzuzufügen und den Cluster dann bereitzustellen:
Erfassen Sie die ID oder IDs des bzw. der öffentlichen Subnetze innerhalb Ihrer vorhandenen VPC, die Sie für den Cluster verwenden möchten. Um einen prod
-Arbeitslastcluster bereitzustellen, müssen Sie drei Subnetze bereitstellen.
Erstellen Sie das erforderliche Tag, indem Sie den folgenden Befehl ausführen:
aws ec2 create-tags --resources YOUR-PUBLIC-SUBNET-ID-OR-IDS --tags Key=kubernetes.io/cluster/YOUR-CLUSTER-NAME,Value=shared
Dabei gilt:
YOUR-PUBLIC-SUBNET-ID-OR-IDS
bezeichnet jeweils die IDs der öffentlichen Subnetze, die Sie im vorherigen Schritt erfasst haben.YOUR-CLUSTER-NAME
ist der Name des Arbeitslastclusters, den Sie erstellen möchten.Beispiel:
aws ec2 create-tags --resources subnet-00bd5d8c88a5305c6 subnet-0b93f0fdbae3436e8 subnet-06b29d20291797698 --tags Key=kubernetes.io/cluster/my-cluster,Value=shared
Konfigurieren Sie den Cluster.
Erstellen Sie den Cluster. Beispiel:
tanzu cluster create my-cluster -f my-cluster-config.yaml
So stellen Sie einen Arbeitslastcluster bereit, der die Vorteile der unter AWS verfügbaren NVIDIA GPU-basierten VMs nutzt:
Setzen Sie die Konfigurationsdatei für den Cluster NODE_MACHINE_TYPE
für Worker-Knoten auf eine GPU-kompatiblen VM-Typ wie beispielsweise g4dn.8xlarge
.
Stellen Sie den Cluster mit der Clusterkonfigurationsdatei bereit:
tanzu cluster create MY-GPU-CLUSTER -f MY-GPU-CONFIG
Installieren Sie eine GPU-Clusterrichtlinie und einen GPU-Operator im Cluster:
Legen Sie als Einstellung für kubectl context
den Cluster fest, sofern er nicht bereits der aktuelle Kontext ist.
Laden Sie die erforderlichen NVIDIA GPU-Ressourcen aus dem AWS-Repository des Cluster-API-Anbieters herunter und speichern Sie sie in Ihrem aktuellen Verzeichnis:
Wenden Sie die Clusterrichtlinie an:
kubectl apply clusterpolicy-crd.yaml
Wenden Sie den GPU-Operator an:
kubectl apply gpu-operator-components.yaml
Führen Sie kubectl get pods -A
aus. Die gpu-operator-
Pods sollten im default
-Namespace aufgelistet werden und die nvidia-
Pods im gpu-operator-resources
-Namespace.
Um den GPU-fähigen Cluster zu testen, führen Sie den Vektorhinzufügungstest CUDA VectorAdd in der NVIDIA-Dokumentation aus.
So testen Sie den GPU-Operator:
Skalieren sie die Anzahl der Worker-Knoten im Arbeitslastcluster vertikal hoch:
tanzu cluster scale MY-GPU-CLUSTER -w 2
Führen Sie kubectl get pods -A
erneut aus. Für die hinzugefügten Knoten sollten zusätzliche gpu-operator-
und nvidia-
Pods aufgelistet werden.
Sie können Arbeitslastcluster auf mehreren AWS-Konten bereitstellen, wenn Ihre Kubernetes-Cluster entweder mit dem Internet verbunden sind oder in Peer-VPCs über VPC-Peering oder AWS Transit Gateway bereitgestellt werden.
Um ein sekundäres AWS-Konto für die Bereitstellung von Arbeitslastclustern vorzubereiten, bereiten Sie das sekundäre Konto vor und richten Sie Vertrauensbeziehungen zwischen dem Konto und dem Verwaltungsclusterkonto ein:
Als Erstes müssen Sie IAM-Rollen im sekundären AWS-Konto einrichten.
Führen Sie hierzu den Befehl tanzu mc permissions aws
aus. Gehen Sie genauso vor, wie im Abschnitt Erstellen von IAM-Ressourcen unter Bereitstellen von Verwaltungsclustern über eine Konfigurationsdatei beschrieben.
Um einen Verwaltungscluster in einem AWS-Konto für die Bereitstellung von Arbeitslastclustern in einem sekundären AWS-Konto zu aktivieren, müssen Sie zuerst eine Vertrauensrichtlinie im Zweitkonto einrichten.
Suchen Sie dazu die von tanzu mc permissions aws
im sekundären Konto erstellten controllers.tkg.cloud.vmware.com
. Bearbeiten Sie dann die Vertrauensbeziehung wie folgt:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
},
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Principal": {
"AWS": "arn:aws:iam::MANAGEMENT-ACCOUNT-ID:root"
},
}
]
}
Dabei ist MANAGEMENT-ACCOUNT-ID
die ID des AWS-Kontos, in dem der Verwaltungscluster bereitgestellt wird.
Aktivieren Sie nach dem Einrichten der Vertrauensrichtlinie die IAM-Rolle control-plane.tkg.cloud.vmware.com
des Verwaltungsclusterkontos, um die IAM-Rolle controllers.tkg.cloud.vmware.com
im sekundären Konto zu übernehmen.
Hängen Sie dazu eine neue Richtlinie an oder fügen Sie eine Inline-Richtlinie hinzu:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::SECONDARY-ACCOUNT-ID:role/controllers.tkg.cloud.vmware.com"
}
]
}
Dabei ist SECONDARY-ACCOUNT-ID
die ID des sekundären AWS-Kontos.
AWSClusterRoleIdentity
-Ressource im VerwaltungsclusterUm die neue kontoübergreifende IAM-Rolle im Verwaltungscluster einzurichten, müssen Sie ein neues AWSClusterRoleIdentity
-Ressourcenobjekt in Kubernetes erstellen:
apiVersion: infrastructure.cluster.x-k8s.io/v1alpha4
kind: AWSClusterRoleIdentity
metadata:
name: IDENTITY-NAME
spec:
allowedNamespaces: {}
durationSeconds: 900
roleARN: "arn:aws:iam::SECONDARY-ACCOUNT-ID:role/controllers.tkg.cloud.vmware.com"
sourceIdentityRef:
kind: AWSClusterControllerIdentity
name: default
Dabei gilt:
IDENTITY-NAME
ist ein beliebiger Name zum Identifizieren der Ressource. Dies kann beispielsweise ein Name sein, der das Dev-Konto für einen Geschäftszweig bezeichnet (LOB-dev
).SECONDARY-ACCOUNT-ID
ist die ID aus den vorherigen Einrichtungsschritten.AWSClusterRoleIdentity
-Ressourcen besitzen einen globalen Geltungsbereich. Sie können das Feld allowedNamespaces
festlegen, um einzuschränken, welche Namespaces Cluster mithilfe der IAM-Rolle verwalten dürfen, indem Sie als Wert entweder eine explizite Liste von Namespaces oder einen Selektor festlegen. Weitere Informationen finden Sie im Cluster-API-Handbuch unter Geschützter Zugriff auf Identitäten.
Nachdem Sie die Ressource AWSClusterRoleIdentity
erstellt haben, können Sie sie zum Bereitstellen eines Arbeitslastclusters für das sekundäre AWS-Konto verwenden.
Fügen Sie dazu die folgende Zeile in die Clusterkonfigurationsdatei ein, und führen Sie dann tanzu cluster create
mit einer der Standardoptionen aus:
AWS_IDENTITY_REF_NAME: IDENTITY-NAME
Dabei ist IDENTITY-NAME
der Name der im vorherigen Schritt erstellten AWSClusterRoleIdentity
.