Après avoir provisionné un cluster TKG, il est recommandé de déployer une charge de travail de test et de vérifier le fonctionnement du cluster.

Déployez une application de test pour vérifier que votre cluster TKG est en cours d'exécution.

Conditions préalables

  • Provisionnez un cluster TKG.
  • Connectez-vous au cluster TKG.

Procédure

  1. Provisionnez un cluster TKG.
  2. Connectez-vous à Superviseur à l'aide de kubectl.
    kubectl vsphere login --server=<IP or FQDN> --vsphere-username <USERNAME>
  3. Faites basculer le contexte de configuration vers l'Espace de noms vSphere où le cluster TKGS est provisionné.
    kubectl config use-context VSPHERE-NAMESPACE
  4. Connectez-vous au cluster TKG cible.
    kubectl vsphere login --server=<IP or FQDN> --vsphere-username <USERNAME> \
    --tanzu-kubernetes-cluster-name CLUSTER-NAME \
    --tanzu-kubernetes-cluster-namespace NAMESPACE-NAME
  5. Créez le fichier ping-pod.yaml avec le contenu suivant.
    apiVersion: v1
    kind: Pod
    metadata:
      name: ping-pod
      namespace: default
    spec:
      containers:
      - image: busybox:1.34
        name: busybox
        command: ["ping", "-c"]
        args: ["1", "8.8.8.8"]
      imagePullSecrets:
      - name: regcred
      restartPolicy: Never
    
  6. Créez les informations d'identification du registre regcred.
    L'image de conteneur utilisée pour ce scénario (busybox) est extraite du registre Docker Hub public, ce qui peut limiter les extractions d'images. Vous aurez alors besoin d'un compte Docker Hub et d'un secret d'extraction d'image (« regcred ») référencé dans la spécification d'espace. Pour créer ce secret, reportez-vous à la section Créer un secret d'identification de registre privé.
  7. Configurez la sécurité de l'espace, selon les besoins.
    Si vous utilisez Tanzu Kubernetes version v1.24 ou antérieure, passez à l'étape suivante et créez l'espace.
    Si vous utilisez Tanzu Kubernetes version v1.25, les avertissements PSA sont activés. Vous pouvez passer à l'étape suivante et créer l'espace. Cependant, notez que vous recevrez un avertissement sur les violations de sécurité de l'espace, que vous pouvez ignorer.
    Warning: would violate PodSecurity "restricted:latest": allowPrivilegeEscalation != false 
    (container "busybox" must set securityContext.allowPrivilegeEscalation=false), 
    unrestricted capabilities (container "busybox" must set securityContext.capabilities.drop=["ALL"]), 
    runAsNonRoot != true (pod or container "busybox" must set securityContext.runAsNonRoot=true), 
    seccompProfile (pod or container "busybox" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost")
    Si vous utilisez Tanzu Kubernetes version v1.26 ou ultérieure, les restrictions PSA sont appliquées. Si vous tentez de créer l'espace comme indiqué à l'étape suivante, l'opération échoue avec l'erreur suivante.
    Error from server (Forbidden): error when creating "ping-pod.yaml": pods "ping-pod" is forbidden: 
    violates PodSecurity "restricted:latest": allowPrivilegeEscalation != false 
    (container "busybox" must set securityContext.allowPrivilegeEscalation=false), 
    unrestricted capabilities (container "busybox" must set securityContext.capabilities.drop=["ALL"]), 
    runAsNonRoot != true (pod or container "busybox" must set securityContext.runAsNonRoot=true), 
    seccompProfile (pod or container "busybox" must set securityContext.seccompProfile.type to "RuntimeDefault" or "Localhost")
    Pour résoudre ce problème, exécutez la commande suivante sur l'espace de noms default dans lequel l'espace est créé. Sachez qu'en procédant ainsi, vous supprimez les restrictions PSA sur l'espace de noms.
    kubectl label --overwrite ns default pod-security.kubernetes.io/enforce=privileged
    Vous pouvez également appliquer securityContext directement à l'espace, par exemple :
    ...
    spec:
      containers:
      - image: busybox:1.34
        name: busybox
        command: ["ping", "-c"]
        args: ["1", "8.8.8.8"]
        securityContext:
          allowPrivilegeEscalation: false
          capabilities:
            drop: ["ALL"]
          runAsNonRoot: true
          runAsUser: 1000
          seccompProfile:
            type: "RuntimeDefault"
    ...
  8. Appliquez le fichier YAML.
    kubectl apply -f ping-pod.yaml
    Résultat attendu :
    pod/ping-pod created
  9. Vérifiez que l'espace est terminé.
    kubectl get pods -n default
    NAME       READY   STATUS      RESTARTS   AGE
    ping-pod   0/1     Completed   0          13s
    
  10. Vérifiez que l'espace a envoyé une commande ping au serveur DNS.
    kubectl logs ping-pod -f
    Résultat attendu :
    PING 8.8.8.8 (8.8.8.8): 56 data bytes
    64 bytes from 8.8.8.8: seq=0 ttl=106 time=33.352 ms
    
    --- 8.8.8.8 ping statistics ---
    1 packets transmitted, 1 packets received, 0% packet loss
    round-trip min/avg/max = 33.352/33.352/33.352 ms
    
  11. Supprimez l'espace.
    kubectl delete -f ping-pod.yaml
  12. Vérifiez que l'espace est supprimé.
    kubectl get pods