Después de aprovisionar un clúster de TKG, se recomienda implementar una carga de trabajo de prueba y validar la funcionalidad del clúster.

Implemente una aplicación de prueba para verificar que el clúster de TKG esté activo y en ejecución.

Requisitos previos

  • Aprovisione un clúster de TKG.
  • Conéctese al clúster de TKG.

Procedimiento

  1. Aprovisione un clúster de TKG.
  2. Inicie sesión en Supervisor mediante kubectl.
    kubectl vsphere login --server=<IP or FQDN> --vsphere-username <USERNAME>
  3. Cambie el contexto de configuración a la instancia de espacio de nombres de vSphere en la que se aprovisiona el clúster de TKGS.
    kubectl config use-context VSPHERE-NAMESPACE
  4. Inicie sesión en el clúster de TKG de destino.
    kubectl vsphere login --server=<IP or FQDN> --vsphere-username <USERNAME> \
    --tanzu-kubernetes-cluster-name CLUSTER-NAME \
    --tanzu-kubernetes-cluster-namespace NAMESPACE-NAME
  5. Cree el archivo ping-pod.yaml con el siguiente contenido.
    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. Cree la credencial del registro de regcred.
    La imagen de contenedor utilizada para este escenario (BusyBox) se extrae del registro público de Docker Hub, lo que puede restringir las extracciones de imágenes. Si eso sucede, necesitará una cuenta de Docker Hub y un secreto de extracción de imágenes ("regcred") a los que se haga referencia en la especificación del pod. Para crear este secreto, consulte Crear secreto de credencial de registro privado.
  7. Configure la seguridad del pod según sea necesario.
    Si utiliza Tanzu Kubernetes 1.24 o una versión anterior, continúe con el siguiente paso y cree el pod.
    Si utiliza la versión Tanzu Kubernetes 1.25, las advertencias de PSA estarán habilitadas. Puede continuar con el siguiente paso y crear el pod. Sin embargo, tenga en cuenta que recibirá una advertencia sobre infracciones de seguridad del pod, que puede ignorar.
    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 utiliza Tanzu Kubernetes 1.26 o una versión posterior, se aplicarán las restricciones de PSA. Si intenta crear el pod como se muestra en el próximo paso, se producirá el siguiente error.
    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")
    Para solucionar este problema, ejecute el siguiente comando en el espacio de nombres default donde se crea el pod. Tenga en cuenta que, al realizar esta acción, se eliminan las restricciones de PSA en el espacio de nombres.
    kubectl label --overwrite ns default pod-security.kubernetes.io/enforce=privileged
    Si lo prefiere, puede aplicar securityContext directamente al pod, por ejemplo:
    ...
    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. Aplique el archivo YAML.
    kubectl apply -f ping-pod.yaml
    Resultado esperado:
    pod/ping-pod created
  9. Compruebe que el pod se haya completado correctamente.
    kubectl get pods -n default
    NAME       READY   STATUS      RESTARTS   AGE
    ping-pod   0/1     Completed   0          13s
    
  10. Verifique que el pod haya hecho ping al servidor DNS.
    kubectl logs ping-pod -f
    Resultado esperado:
    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. Elimine el pod.
    kubectl delete -f ping-pod.yaml
  12. Compruebe que el pod se haya eliminado.
    kubectl get pods