Reportez-vous à ces instructions pour provisionner un cluster TKG basé sur une ClusterClass personnalisée. Notez que ces instructions sont spécifiques aux environnements vSphere 8 U2 et ultérieurs.
Conditions requises
La procédure de provisionnement d'un cluster TKG basé sur une ClusterClass personnalisée est mise à jour pour la version vSphere 8 U2.
- Environnement vSphere 8 U2 et versions ultérieures
- Gestion de la charge de travail activée
- Superviseur configuré
- Client Ubuntu avec Outils de l'interface de ligne de commande Kubernetes pour vSphere installé
Workflows de haut niveau
Les workflows de haut niveau sont les suivants.
Étape | Tâche | Instructions |
---|---|---|
1 | Créez une ClusterClass personnalisée en clonant la ClusterClass par défaut. | 1 : Créer une ClusterClass personnalisée |
2 | Provisionnez un nouveau cluster TKG basé sur la ClusterClass personnalisée et vérifiez que tous les nœuds du cluster s'activent correctement. | 2 : Créer un cluster TKG basé sur la ClusterClass personnalisée |
Étape | Tâche | Instructions |
---|---|---|
3 | Connectez-vous via SSH à l'un des nœuds worker pour confirmer qu'il existe des modules à mettre à jour. | 3 : Vérifier l'existence des mises à jour du module |
4 | Mettez à jour la ClusterClass personnalisée avec une nouvelle commande qui effectue les mises à jour. | 4 : Mettre à jour la ClusterClass personnalisée |
5 | Confirmez le déploiement de nouveaux nœuds avec les mises à jour déjà en cours d'exécution. | 5 : Vérifier la mise à jour continue des nœuds de cluster |
1 : Créer une ClusterClass personnalisée
ccc
(abréviation de
customclusterclass
) en clonant la ClusterClass par défaut nommée
tanzukubernetescluster
.
- Créez et configurez un Espace de noms vSphere nommé ccc-ns.
Configurez les autorisations, le stockage, la bibliothèque de contenu et les classes de machine virtuelle. Reportez-vous à la documentation selon vos besoins.
Note : Le nom de l' Espace de noms vSphere est défini par l'utilisateur. Si vous utilisez un autre nom, modifiez les instructions de manière appropriée. - Connectez-vous à Superviseur.
kubectl vsphere login --server=IP-ADDRESS --vsphere-username [email protected]
- Écrivez la sortie de la ClusterClass par défaut dans un fichier nommé ccc.yaml.
kubectl -n ccc-ns get clusterclass tanzukubernetescluster -o yaml > ccc.yaml
Ou, la version du raccourci :kubectl -n ccc-ns get cc tanzukubernetescluster -o yaml > ccc.yaml
- Ouvrez pour modifier le fichier ClusterClass cloné.
vim ccc.yaml
- Modifiez le fichier
ccc.yaml
.- Supprimez la ligne
metadata.creationTimestamp
- Supprimez la ligne
metadata.generation
- Supprimez la ligne
metadata.resourceVersion
- Supprimez la ligne
metadata.uid
- Modifiez la valeur de
metadata.name
detanzukubernetescluster
àccc
- Laissez la valeur
metadata.namespace
telle qu'elle est :ccc-ns
- Laissez la valeur
metadata.annotations
telle qu'elle est pourrun.tanzu.vmware.com/resolve-tkr: ""
. Cette annotation est requise pour la résolution/les données de TKR.
- Supprimez la ligne
- Enregistrez et vérifiez les modifications.
apiVersion: cluster.x-k8s.io/v1beta1 kind: ClusterClass metadata: annotations: run.tanzu.vmware.com/resolve-tkr: "" name: ccc namespace: ccc-ns spec: ...
- Créez l'objet ClusterClass personnalisé.
kubectl apply -f ccc.yaml -n ccc-ns
Résultat attendu :clusterclass.cluster.x-k8s.io/ccc created
- Répertoriez la ClusterClass personnalisée.
kubectl get cc -n ccc-ns
Résultat attendu :NAME AGE ccc 3m14s tanzukubernetescluster 29m
2 : Créer un cluster TKG basé sur la ClusterClass personnalisée
- Construisez le manifeste
ccc-cluster.yaml
pour provisionner le cluster.#ccc-cluster.yaml apiVersion: cluster.x-k8s.io/v1beta1 kind: Cluster metadata: name: ccc-cluster spec: clusterNetwork: pods: cidrBlocks: - 192.0.2.0/16 services: cidrBlocks: - 198.51.100.0/12 serviceDomain: cluster.local topology: class: ccc version: v1.26.5---vmware.2-fips.1-tkg.1 controlPlane: replicas: 1 workers: machineDeployments: - class: node-pool name: tkgs-node-pool-1 replicas: 1 variables: - name: vmClass value: guaranteed-small - name: storageClass value: tkg-storage-profile
Où :- La valeur
metadata.name
est le nom du cluster :ccc-cluster
- La valeur
spec.topology.class
est le nom de la ClusterClass personnalisée :ccc
- La valeur
spec.topology.version
est la version TKR - La valeur
spec.topology.variables.storageClass
est le nom de la classe de stockage persistant
Note : À des fins de test, 1 réplica est suffisant pour le plan de contrôle et le pool de nœuds worker. En production, utilisez 3 réplicas pour le plan de contrôle et au moins 3 réplicas pour chaque pool de nœuds worker. - La valeur
- Créez le cluster TKG en fonction de la ClusterClass personnalisée.
kubectl apply -f ccc-cluster.yaml -n ccc-ns
Résultat attendu :cluster.cluster.x-k8s.io/ccc-cluster created
- Vérifiez le provisionnement du cluster.
Exécutez la commande suivante. Attendez que tous les nœuds du cluster s'activent correctement.
kubectl -n ccc-ns get cc,clusters,vsphereclusters,kcp,machinedeployment,machineset,machine,vspheremachine,virtualmachineservice
Note : Il sera utile d'exécuter cette commande dans une session distincte afin de pouvoir surveiller la progression de la mise à jour continue à l'étape 5.
3 : Vérifier l'existence des mises à jour du module
- Exécutez la commande suivante pour obtenir le secret SSH.
export CC=ccc-cluster && kubectl get secret -n ccc-ns ${CC}-ssh -o jsonpath={.data.ssh-privatekey} | base64 -d > ${CC}-ssh && chomd 4000 ${CC}-ssh
- Exécutez la commande suivante pour obtenir l'adresse IP de la machine virtuelle du nœud worker.
kubectl -n ccc-ns get vm -o wide
Note : Si vous avez déployé plusieurs nœuds worker, choisissez-en un. N'utilisez pas de nœud de plan de contrôle. - Exécutez la commande suivante pour vous connecter via SSH à la machine virtuelle du nœud worker.
ssh -i ${CC}-ssh vmware-system-user@IP-ADDRESS-OF-WORKER-NODE
Par exemple :ssh -i ${CC}-ssh [email protected]
Note : Entrez « oui » pour continuer la connexion.Résultat attendu : après l'utilisation de SSH dans l'hôte, le message suivant doit s'afficher.tdnf update info not availble yet!
- Exécutez les commandes suivantes et recherchez les mises à jour.
sudo -i
tdnf update
- À l'invite, entrez « N » pour non (ne pas mettre à jour).
Résultat attendu :
Operation aborted
Note : L'objectif ici est simplement de vérifier l'existence des mises à jour, pas de lancer des mises à jour. Vous allez lancer les mises à jour en ajoutant une commande à la ClusterClass personnalisée dans la section suivante. - Tapez « exit » pour vous déconnecter de la session SSH, puis tapez de nouveau « exit ».
4 : Mettre à jour la ClusterClass personnalisée
- Ouvrez pour modifier la ClusterClass personnalisée nommée
ccc
.kubectl edit cc ccc -n ccc-ns
- Faites défiler l'écran vers le bas jusqu'à la section suivante avec
postKubeadmCommands
.- definitions: - jsonPatches: - op: add path: /spec/template/spec/kubeadmConfigSpec/postKubeadmCommands valueFrom: template: | - touch /root/kubeadm-complete - vmware-rpctool 'info-set guestinfo.kubeadm.phase complete' - vmware-rpctool 'info-set guestinfo.kubeadm.error ---' selector: apiVersion: controlplane.cluster.x-k8s.io/v1beta1 kind: KubeadmControlPlaneTemplate matchResources: controlPlane: true - jsonPatches: - op: add path: /spec/template/spec/postKubeadmCommands valueFrom: template: | - touch /root/kubeadm-complete - vmware-rpctool 'info-set guestinfo.kubeadm.phase complete' - vmware-rpctool 'info-set guestinfo.kubeadm.error ---' selector: apiVersion: bootstrap.cluster.x-k8s.io/v1beta1 kind: KubeadmConfigTemplate matchResources: machineDeploymentClass: names: - node-pool name: controlPlanePostKubeadmCommandsSuccess
Ajoutez la commande suivante aux champsvalueFrom.template
.- tdnf update -y
Par exemple :- definitions: - jsonPatches: - op: add path: /spec/template/spec/kubeadmConfigSpec/postKubeadmCommands valueFrom: template: | - touch /root/kubeadm-complete - vmware-rpctool 'info-set guestinfo.kubeadm.phase complete' - vmware-rpctool 'info-set guestinfo.kubeadm.error ---' - tdnf update -y selector: apiVersion: controlplane.cluster.x-k8s.io/v1beta1 kind: KubeadmControlPlaneTemplate matchResources: controlPlane: true - jsonPatches: - op: add path: /spec/template/spec/postKubeadmCommands valueFrom: template: | - touch /root/kubeadm-complete - vmware-rpctool 'info-set guestinfo.kubeadm.phase complete' - vmware-rpctool 'info-set guestinfo.kubeadm.error ---' - tdnf update -y selector: apiVersion: bootstrap.cluster.x-k8s.io/v1beta1 kind: KubeadmConfigTemplate matchResources: machineDeploymentClass: names: - node-pool name: controlPlanePostKubeadmCommandsSuccess
- Enregistrez les modifications apportées à la ClusterClass personnalisée et fermez l'éditeur.
wq
Résultat attendu :clusterclass.cluster.x-k8s/ccc edited
5 : Vérifier la mise à jour continue des nœuds de cluster
- Vérifiez le provisionnement du cluster en exécutant la commande suivante.
Attendez que tous les nœuds du cluster s'activent correctement.
kubectl -n ccc-ns get cc,clusters,vsphereclusters,kcp,machinedeployment,machineset,machine,vspheremachine,virtualmachineservice
- Vous devez voir que les nouveaux nœuds, avec de nouveaux UUID, sont déployés.
- Exécutez la commande suivante pour vous connecter via SSH à la machine virtuelle du nœud worker.
ssh -i ${CC}-ssh vmware-system-user@IP-ADDRESS-OF-WORKER-NODE
Résultat attendu : après l'utilisation de SSH dans l'hôte, le message suivant doit s'afficher.tdnf update info not availble yet!
- Exécutez les commandes suivantes :
sudo -i
tdnf update
Résultat attendu : vous devez voir beaucoup moins de modules qui doivent être mis à jour.
- À l'invite, entrez « N » pour non (ne pas mettre à jour).
Résultat attendu :
Operation aborted
- Exécutez la commande suivante pour confirmer que tdnf a été exécuté.
cat /var/log/cloud-init-output.log | grep -i tdnf
- Tapez « exit » pour vous déconnecter de la session SSH, puis tapez de nouveau « exit ».
Maintenance d'une ClusterClass personnalisée
Après la mise à niveau du Service TKG vers une nouvelle version, vous devez vous assurer que votre ClusterClass personnalisée dérivée de la ClusterClass par défaut à partir de la précédente version du Service TKG est mise à jour avec les modifications apportées à la ClusterClass par défaut fournie avec la nouvelle version du Service TKG.
- Mettre à niveau la version du Service TKG.
Par exemple, mettez à niveau le Service TKG de la version 3.0 vers la version 3.1.
Reportez-vous à la section Installation et mise à niveau du Service TKG.
- Créez une ClusterClass personnalisée en suivant les instructions de ce document.
Modifiez manuellement la nouvelle ClusterClass personnalisée en ajoutant à son nom la version du Service TKG, telle que
ccc-3.1
. - Ajoutez les correctifs et variables personnalisés de la ClusterClass personnalisée précédente à la nouvelle ClusterClass personnalisée.
Pour ce faire,
cat ccc.yaml
et copiez les correctifs et variables personnalisés à partir de celui-ci dansccc-3.1.yaml
. - Appliquez la nouvelle classe ClusterClass personnalisée et attendez que le rapprochement réussisse.
- Mettez à jour les clusters TKG à l'aide de la classe ClusterClass personnalisée précédente vers la nouvelle clusterClass personnalisée en modifiant le champ
spec.topology.class
dans l'objet de cluster.
ClusterClass non gérée
Pour vSphere 8 U2 et versions ultérieures, vous pouvez ajouter une annotation à une ClusterClass personnalisée si vous ne souhaitez pas que le contrôleur TKG gère la ClusterClass personnalisée. Sachez que si vous ajoutez cette annotation, vous êtes responsable de la création manuelle de tous les objets Kubernetes sous-jacents, tels que les certificats, les secrets, etc. Reportez-vous à la documentation du clusterClass vSphere 8 U1 personnalisé pour obtenir des instructions à ce sujet.
Clé d'annotation | Valeur |
---|---|
run.tanzu.vmware.com/unmanaged-clusterclass | « » |
ccc
:
apiVersion: cluster.x-k8s.io/v1beta1 kind: ClusterClass metadata: annotations: run.tanzu.vmware.com/resolve-tkr: "" run.tanzu.vmware.com/unmanaged-clusterclass: "" name: ccc namespace: ccc-ns spec: ...