Cette rubrique décrit les méthodes de configuration des clusters de charge de travail Tanzu Kubernetes Grid (TKG) pour utiliser des fonctionnalités spécifiques à AWS qui ne sont pas entièrement configurables dans le fichier de configuration plat du cluster ou dans la spécification d'objet de style Kubernetes.
Pour plus d'informations sur la configuration des clusters de charge de travail sur AWS à l'aide de fichiers de configuration et de spécifications d'objet, reportez-vous à la section Fichiers de configuration du cluster AWS.
Si vous souhaitez créer des services de type LoadBalancer
dans le cluster, vous devez ajouter la balise kubernetes.io/cluster/YOUR-CLUSTER-NAME=shared
aux sous-réseaux publics que vous prévoyez d'utiliser pour votre cluster de charge de travail.
L'ajout de la balise kubernetes.io/cluster/YOUR-CLUSTER-NAME=shared
aux sous-réseaux publics vous permet de créer des services de type LoadBalancer
après le déploiement du cluster. Pour ajouter cette balise, puis déployer le cluster, procédez comme suit :
Collectez l'ID ou les ID du ou des sous-réseaux publics dans votre VPC que vous souhaitez utiliser pour le cluster. Pour déployer un cluster de charge de travail prod
, vous devez fournir trois sous-réseaux.
Créez la balise requise en exécutant la commande suivante :
aws ec2 create-tags --resources YOUR-PUBLIC-SUBNET-ID-OR-IDS --tags Key=kubernetes.io/cluster/YOUR-CLUSTER-NAME,Value=shared
Où :
YOUR-PUBLIC-SUBNET-ID-OR-IDS
est l'ID ou les ID du ou des sous-réseaux publics que vous avez collectés à l'étape précédente.YOUR-CLUSTER-NAME
est le nom du cluster de charge de travail que vous prévoyez de créer.Par exemple :
aws ec2 create-tags --resources subnet-00bd5d8c88a5305c6 subnet-0b93f0fdbae3436e8 subnet-06b29d20291797698 --tags Key=kubernetes.io/cluster/my-cluster,Value=shared
Configurer le cluster.
Créez le cluster. Par exemple :
tanzu cluster create my-cluster -f my-cluster-config.yaml
Pour déployer un cluster de charge de travail qui tire parti des machines virtuelles basées sur NVIDIA GPU disponibles sur AWS :
Dans le fichier de configuration du cluster, définissez NODE_MACHINE_TYPE
, pour les nœuds worker, sur un type de machine virtuelle compatible GPU, tel que g4dn.8xlarge
.
Déployez le cluster avec le fichier de configuration du cluster :
tanzu cluster create MY-GPU-CLUSTER -f MY-GPU-CONFIG
Installez une stratégie de cluster GPU et un opérateur GPU sur le cluster :
Définissez le contexte kubectl context
sur le cluster, s'il ne s'agit pas déjà du contexte actuel.
Téléchargez les ressources NVIDIA GPU requises à partir du référentiel AWS du fournisseur d'API de cluster et enregistrez-les dans votre répertoire actuel :
Appliquez la stratégie de cluster :
kubectl apply clusterpolicy-crd.yaml
Appliquez l'opérateur GPU :
kubectl apply gpu-operator-components.yaml
Exécutez kubectl get pods -A
. Vous devez voir des listes pour les espaces gpu-operator-
dans l'espace de noms default
et les espaces nvidia-
dans l'espace de noms gpu-operator-resources
.
Pour tester le cluster compatible GPU, exécutez le test d'ajout de vecteur CUDA VectorAdd dans la documentation NVIDIA.
Pour tester l'opérateur GPU :
Augmentez le nombre de nœuds worker du cluster de charge de travail :
tanzu cluster scale MY-GPU-CLUSTER -w 2
Exécutez de nouveau la commande kubectl get pods -A
. Vous devez voir des espaces gpu-operator-
et nvidia-
supplémentaires répertoriés pour les nœuds ajoutés.
Vous pouvez déployer des clusters de charge de travail entre plusieurs comptes AWS si vos clusters Kubernetes sont connectés à Internet ou déployés dans des VPC homologues via l'homologation VPC ou la passerelle de transit AWS.
Pour préparer un compte AWS secondaire pour le déploiement de clusters de charge de travail, préparez le compte secondaire et configurez les relations de confiance entre celui-ci et le compte de cluster de gestion comme suit :
Tout d'abord, vous devez configurer des rôles IAM dans le compte AWS secondaire.
Pour ce faire, utilisez la commande tanzu mc permissions aws
. Suivez le même processus que celui décrit dans la section Créer des ressources IAM de Déployer des clusters de gestion à partir d'un fichier de configuration.
Pour activer un cluster de gestion dans un compte AWS afin de déployer des clusters de charge de travail dans un compte AWS secondaire, vous devez d'abord configurer une stratégie d'approbation dans le compte secondaire.
Pour ce faire, recherchez les controllers.tkg.cloud.vmware.com
créés par les tanzu mc permissions aws
dans le compte secondaire. Modifiez ensuite la relation de confiance comme suit :
{
"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"
},
}
]
}
Où MANAGEMENT-ACCOUNT-ID
est l'ID de compte AWS dans lequel le cluster de gestion est déployé.
Après avoir configuré la stratégie d'approbation, activez le rôle IAM control-plane.tkg.cloud.vmware.com
du compte du cluster de gestion pour assumer le rôle IAM controllers.tkg.cloud.vmware.com
dans le compte secondaire.
Pour ce faire, attachez une nouvelle stratégie ou ajoutez une stratégie en ligne comme suit :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": "sts:AssumeRole",
"Resource": "arn:aws:iam::SECONDARY-ACCOUNT-ID:role/controllers.tkg.cloud.vmware.com"
}
]
}
Où SECONDARY-ACCOUNT-ID
est l'ID de compte AWS du compte secondaire.
AWSClusterRoleIdentity
dans le cluster de gestionPour configurer le nouveau rôle IAM entre comptes dans le cluster de gestion, vous devez créer un objet de ressource AWSClusterRoleIdentity
dans Kubernetes comme suit :
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
Où :
IDENTITY-NAME
est tout élément qui identifie la ressource. Par exemple, un nom qui représente le compte de développement d'une branche d'activité (LOB-dev
)SECONDARY-ACCOUNT-ID
est l'ID des étapes de configuration précédentes.Les ressources AWSClusterRoleIdentity
sont étendues globalement. Vous pouvez définir le champ allowedNamespaces
pour limiter les espaces de noms autorisés à gérer les clusters à l'aide du rôle IAM, en définissant sa valeur sur une liste explicite d'espaces de noms ou sur un sélecteur. Reportez-vous à la section Sécuriser l'accès aux identités (Secure Access to Identities) du site The Cluster API Book.
Après avoir créé la ressource AWSClusterRoleIdentity
, vous pouvez l'utiliser pour déployer un cluster de charge de travail sur le compte AWS secondaire.
Pour ce faire, incluez la ligne suivante dans le fichier de configuration de cluster et exécutez la commande tanzu cluster create
avec l'une des options standard :
AWS_IDENTITY_REF_NAME: IDENTITY-NAME
IDENTITY-NAME
est le nom du AWSClusterRoleIdentity
créé à l'étape précédente.