Vous provisionnez des clusters Tanzu Kubernetes en appelant l'API déclarative de Service Tanzu Kubernetes Grid à l'aide de kubectl et d'une spécification de cluster définie dans un fichier YAML. Après avoir provisionné un cluster, vous l'utilisez et y déployez des charges de travail à l'aide de kubectl.

Ce workflow prend en charge Service Tanzu Kubernetes Grid v1alpha2 API. Si vous utilisez l'API v1alpha1, reportez-vous à ce workflow.

Conditions préalables

Vérifiez que les conditions préalables suivantes sont remplies avant de démarrer la procédure de workflow :

Procédure

  1. Téléchargez et installez les Outils de l'interface de ligne de commande Kubernetes pour vSphere .
  2. Authentifiez-vous auprès du Cluster superviseur à l'aide du Plug-in vSphere pour kubectl.
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
    Pour obtenir des conseils, reportez-vous à la section Se connecter à Cluster superviseur en tant qu'utilisateur vCenter Single Sign-On.
  3. Vérifiez que la connexion au Cluster superviseur a réussi.
    Vous devriez voir un message semblable au suivant :
    Logged in successfully.
    
    You have access to the following contexts:
       192.197.2.65
       tkgs-ns
    192.197.2.65 est le contexte du Cluster superviseur et tkgs-ns est le contexte de l' Espace de noms vSphere dans lequel vous prévoyez de provisionner le cluster Tanzu Kubernetes.
  4. Vérifiez que l'instance cible de l'Espace de noms vSphere est le contexte actuel.
    kubectl config get-contexts
    CURRENT   NAME            CLUSTER         AUTHINFO                              NAMESPACE
              192.197.2.65    192.197.2.65    wcp:192.197.2.65:[email protected]
    *         tkgs-ns         192.197.2.65    wcp:192.197.2.65:[email protected]   tkgs-ns
    L'instance cible de l' Espace de noms vSphere n'est pas le contexte actuel, basculez sur celui-ci.
    kubectl config use-context tkgs-ns
  5. Répertoriez les liaisons de classe de machine virtuelle disponibles dans l'Espace de noms vSphere cible.
    kubectl get virtualmachineclassbindings
    Vous pouvez uniquement utiliser les classes de machine virtuelle qui sont liées à l'espace de noms cible. Si vous ne voyez aucune classe de machine virtuelle, vérifiez que les classes de machine virtuelle par défaut sont ajoutées à Espace de noms vSphere.
  6. Obtenez les classes de stockage de volume persistant disponibles.
    kubectl describe storageclasses
  7. Répertoriez les Versions de Tanzu Kubernetes disponibles.
    Vous pouvez utiliser l'une des commandes suivantes pour effectuer cette opération :
    kubectl get tkr
    kubectl get tanzukubernetesreleases
    Vous ne pouvez utiliser que les versions renvoyées par cette commande. Si vous ne voyez aucune version, ou ne voyez pas les versions souhaitées, vérifiez que vous avez synchronisé les fichiers OVA souhaités avec la bibliothèque de contenu.
  8. Créez le fichier YAML pour le provisionnement de votre cluster Tanzu Kubernetes.
    1. Passez en revue la spécification de l'API v1alpha2.
    2. Commencez par l'un des exemples de fichiers YAML pour le provisionnement d'un cluster, par défaut ou personnalisé en fonction de vos besoins.
    3. Enregistrez le fichier YAML sous tkgs-cluster-1.yaml, ou un nom similaire.
    4. Remplissez le fichier YAML en fonction de vos besoins et en utilisant les informations que vous avez obtenues à partir de la sortie des commandes précédentes, notamment :
      • Le nom du cluster tel que tkgs-cluster-1
      • L'instance cible de Espace de noms vSphere, telle que tkgs-ns
      • Les classes de machines virtuelles liées, telles que guaranteed-medium et guaranteed-small
      • Les classes de stockage pour les nœuds de cluster et les charges de travail, telles que vwt-storage-policy
      • Le nombre de nœuds de plan de contrôle et de nœuds worker (réplicas)
      • La version de Tanzu Kubernetes spécifiée par la chaîne TKR NAME, par exemple v1.21.6---vmware.1-tkg.1.b3d708a
    5. Personnalisez votre fichier YAML si nécessaire. Par exemple :
      • Ajoutez des volumes distincts pour les composants à taux de variation élevé, tels que etcd et containerd.
      • Spécifiez une classe de stockage persistant par défaut pour les nœuds de cluster
      • Personnalisez la mise en réseau du cluster, y compris le CNI, l'espace et les CIDR de service
    Le résultat de cette étape est un code YAML valide pour le provisionnement de votre cluster TKGS. Par exemple :
    apiVersion: run.tanzu.vmware.com/v1alpha2
    kind: TanzuKubernetesCluster
    metadata:
      name: tkgs-cluster-1
      namespace: tkgs-ns
    spec:
      topology:
        controlPlane:
          replicas: 3
          vmClass: guaranteed-medium
          storageClass: vwt-storage-policy
          volumes:
            - name: etcd
              mountPath: /var/lib/etcd
              capacity:
                storage: 4Gi
          tkr:
            reference:
              name: v1.21.6---vmware.1-tkg.1.b3d708a
        nodePools:
        - name: worker-nodepool-a1
          replicas: 3
          vmClass: guaranteed-medium
          storageClass: vwt-storage-policy
          volumes:
            - name: containerd
              mountPath: /var/lib/containerd
              capacity:
                storage: 16Gi
          tkr:
            reference:
              name: v1.21.6---vmware.1-tkg.1.b3d708a
        - name: worker-nodepool-a2
          replicas: 2
          vmClass: guaranteed-small
          storageClass: vwt-storage-policy
          tkr:
            reference:
              name: v1.21.6---vmware.1-tkg.1.b3d708a
      settings:
        storage:
          defaultClass: vwt-storage-policy
    Note : L'exemple ci-dessus utilise la mise en réseau de clusters par défaut, c'est-à-dire, les plages CNI Antrea et CIDR par défaut pour les espaces et les services de cluster.
  9. Provisionnez le cluster en exécutant la commande kubectl suivante.
    kubectl apply -f tkgs-cluster-1.yaml
    Résultat attendu :
    tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 created
  10. Surveillez le déploiement des nœuds de cluster à l'aide de kubectl.
    kubectl get tanzukubernetesclusters
    Le cluster n'est pas prêt, car il est en cours de provisionnement.
    NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE    READY   TKR COMPATIBLE   UPDATES AVAILABLE
    tkgs-cluster-1   3               5        v1.21.6---vmware.1-tkg.1.b3d708a   2m4s   False   True
    Après quelques minutes, l'état PRÊT doit être True.
    NAME             CONTROL PLANE   WORKER   TKR NAME                           AGE   READY   TKR COMPATIBLE   UPDATES AVAILABLE
    tkgs-cluster-1   3               5        v1.21.6---vmware.1-tkg.1.b3d708a   13m   True    True
    Pour des commandes supplémentaires, consultez Surveiller l'état du cluster Tanzu Kubernetes à l'aide de kubectl.
  11. Surveillez le déploiement des nœuds de cluster à l'aide de vSphere Client.
    Dans l'inventaire Hôtes et clusters de vSphere, vous devez voir les nœuds de machine virtuelle déployés dans l'instance cible de l' Espace de noms vSphere.
    Pour des commandes supplémentaires, consultez Surveiller l'état du cluster Tanzu Kubernetes à l'aide de vSphere Client.
  12. Exécutez des commandes kubectl supplémentaires pour vérifier le provisionnement du cluster.
    kubectl get tanzukubernetescluster,cluster-api,virtualmachinesetresourcepolicy,virtualmachineservice,virtualmachine
    Pour des commandes supplémentaires, reportez-vous à la section Utiliser des commandes opérationnelles de clusters Tanzu Kubernetes.
    Pour la procédure de dépannage, reportez-vous à la section Dépannage des clusters Tanzu Kubernetes.
  13. À l'aide du Plug-in vSphere pour kubectl, connectez-vous au cluster.
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME \
    --tanzu-kubernetes-cluster-name CLUSTER-NAME \
    --tanzu-kubernetes-cluster-namespace NAMESPACE-NAME
    Par exemple :
    kubectl vsphere login --server=192.197.2.65 --vsphere-username [email protected] \
    --tanzu-kubernetes-cluster-name tkgs-cluster-1 --tanzu-kubernetes-cluster-namespace tkgs-ns
  14. Vérifiez que la connexion au cluster Tanzu Kubernetes a réussi.
    Vous devriez voir un message semblable au suivant :
    Logged in successfully.
    
    You have access to the following contexts:
       192.197.2.65
       tkgs-cluster-1
       tkgs-ns
    192.197.2.65 est le contexte du Cluster superviseur, tkgs-ns est le contexte de l' Espace de noms vSphere et tkgs-cluster-1 est le contexte du cluster Tanzu Kubernetes.
  15. Répertoriez les contextes de cluster disponibles à l'aide de kubectl.
    kubectl config get-contexts
    Par exemple :
    CURRENT   NAME             CLUSTER        AUTHINFO                                      NAMESPACE
              192.197.2.65     192.197.2.65   wcp:192.197.2.65:[email protected]
    *         tkgs-cluster-1   192.197.2.67   wcp:192.197.2.67:[email protected]
              tkgs-ns          192.197.2.65   wcp:192.197.2.65:[email protected]   tkgs-ns
    Si nécessaire, utilisez kubect config use-context tkgs-cluster-1 pour basculer vers le cluster Tanzu Kubernetes afin d'en faire le contexte actuel.
  16. Vérifiez le provisionnement du cluster à l'aide de la commande kubectl suivante.
    kubectl get nodes
    Par exemple :
    NAME                                                       STATUS   ROLES                  AGE   VERSION
    tkgs-cluster-1-control-plane-6ln2h                         Ready    control-plane,master   30m   v1.21.6+vmware.1
    tkgs-cluster-1-control-plane-6q67n                         Ready    control-plane,master   33m   v1.21.6+vmware.1
    tkgs-cluster-1-control-plane-jw964                         Ready    control-plane,master   37m   v1.21.6+vmware.1
    tkgs-cluster-1-worker-nodepool-a1-4vvkb-65494d66d8-h5fp8   Ready    <none>                 32m   v1.21.6+vmware.1
    tkgs-cluster-1-worker-nodepool-a1-4vvkb-65494d66d8-q4g24   Ready    <none>                 33m   v1.21.6+vmware.1
    tkgs-cluster-1-worker-nodepool-a1-4vvkb-65494d66d8-vdcn4   Ready    <none>                 33m   v1.21.6+vmware.1
    tkgs-cluster-1-worker-nodepool-a2-2n22f-bd59d7b96-nh4dg    Ready    <none>                 34m   v1.21.6+vmware.1
    tkgs-cluster-1-worker-nodepool-a2-2n22f-bd59d7b96-vvfmf    Ready    <none>                 33m   v1.21.6+vmware.1
  17. Vérifiez le provisionnement du cluster à l'aide des commandes kubectl supplémentaires.
    kubectl get namespaces
    kubectl get pods -A
    kubectl cluster-info
    kubectl api-resources
  18. Définissez la stratégie de sécurité de l'espace appropriée.
    Les clusters Tanzu Kubernetes ont le contrôleur d'admission PodSecurityPolicy activé par défaut. Pour obtenir des conseils, reportez-vous à la section Utilisation des stratégies de sécurité de l'espace avec les clusters Tanzu Kubernetes.
    En fonction de la charge de travail et de l'utilisateur, vous devrez créer des liaisons pour la stratégie PodSecurityPolicy fournie par le système ou créer une stratégie PodSecurityPolicy personnalisée. Reportez-vous à la section Exemples de liaisons de rôle pour la stratégie de sécurité de l'espace.
  19. Déployez un exemple de charge de travail et vérifiez la création du cluster.
    Pour obtenir des conseils, reportez-vous à la section Déploiement de charges de travail sur des clusters Tanzu Kubernetes.
  20. Procédez à la mise en place du cluster en déployant des extensions TKG.
    Pour obtenir des conseils, reportez-vous à la section Déployer des modules TKG sur des clusters Tanzu Kubernetes.