Para aprovisionar clústeres de Tanzu Kubernetes, se debe invocar a la API declarativa de servicio Tanzu Kubernetes Grid mediante kubectl y una especificación de clúster definida en YAML. Después de aprovisionar un clúster, puede usarlo e implementar cargas de trabajo en él mediante kubectl.

Este flujo de trabajo es compatible con la API v1alpha2 de servicio Tanzu Kubernetes Grid. Si utiliza la API v1alpha1, consulte ese flujo de trabajo.

Requisitos previos

Compruebe la finalización de los siguientes requisitos previos antes de iniciar el procedimiento de flujo de trabajo:

Procedimiento

  1. Descargue e instale las Herramientas de la CLI de Kubernetes para vSphere.
  2. Autentíquese con clúster supervisor mediante complemento de vSphere para kubectl.
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
  3. Compruebe que el inicio de sesión en clúster supervisor se haya realizado correctamente.
    Debe aparecer un error similar al siguiente:
    Logged in successfully.
    
    You have access to the following contexts:
       192.197.2.65
       tkgs-ns
    Donde 192.197.2.65 es el contexto de clúster supervisor y tkgs-ns es el contexto para el espacio de nombres de vSphere donde planea aprovisionar el clúster de Tanzu Kubernetes.
  4. Compruebe que el destino espacio de nombres de vSphere sea el contexto actual.
    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
    Si el espacio de nombres de vSphere de destino no es el contexto actual, cambie a él.
    kubectl config use-context tkgs-ns
  5. Enumere los enlaces de clase de máquina virtual que están disponibles en el espacio de nombres de vSphere de destino.
    kubectl get virtualmachineclassbindings
    Solo puede utilizar las clases de máquina virtual que están enlazadas al espacio de nombres de destino. Si no ve ninguna clase de máquina virtual, compruebe que espacio de nombres de vSphere tenga las clases de máquina virtual predeterminadas agregadas.
  6. Obtiene las clases de almacenamiento de volumen persistente disponibles.
    kubectl describe storageclasses
  7. Lista de versiones de Tanzu Kubernetes disponibles:
    Puede utilizar cualquiera de los siguientes comandos para realizar esta operación:
    kubectl get tkr
    kubectl get tanzukubernetesreleases
    Solo puede utilizar esas versiones que devuelve este comando. Si no ve ninguna versión o las versiones que desea, compruebe que haya sincronizado los archivos OVA deseados con la biblioteca de contenido.
  8. Cree el archivo YAML para aprovisionar un clúster de Tanzu Kubernetes.
    1. Revise la especificación de la API v1alpha2.
    2. Comience con uno de los archivos YAML de ejemplo para aprovisionar un clúster; ya sea predeterminado o personalizado según sus requisitos.
    3. Guarde el archivo YAML como tkgs-cluster-1.yaml o un formato similar.
    4. Rellene el archivo YAML en función de sus requisitos y utilice la información que obtuvo de los resultados de los comandos anteriores incluidos:
      • El nombre del clúster, como tkgs-cluster-1
      • El espacio de nombres de vSphere de destino, como tkgs-ns
      • Clases de máquina virtual enlazadas, como guaranteed-medium y guaranteed-small
      • Clases de almacenamiento para nodos de clúster y cargas de trabajo, como vwt-storage-policy
      • El número de nodos de trabajo y plano de control (réplicas)
      • La versión de Tanzu Kubernetes especificada por la cadena NAME de TKR, como v1.21.6---vmware.1-tkg.1.b3d708a
    5. Personalice el archivo YAML según sea necesario. Por ejemplo:
      • Agregar volúmenes separados para componentes de renovación alta, como etcd y containerd
      • Especificar una clase de almacenamiento persistente predeterminada para los nodos del clúster
      • Personalizar las redes del clúster, incluidos los CIDR de CNI, pod y servicio
    El resultado de este paso es un YAML válido para aprovisionar el clúster de TKGS. Por ejemplo:
    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
    Nota: En el ejemplo anterior, se utilizan las redes de clúster predeterminadas, es decir, los rangos de CNI de Antrea y CIDR predeterminados para los servicios y los pods del clúster.
  9. Ejecute el siguiente comando kubectl para aprovisionar el clúster.
    kubectl apply -f tkgs-cluster-1.yaml
    Resultado esperado:
    tanzukubernetescluster.run.tanzu.vmware.com/tkgs-cluster-1 created
  10. Supervise la implementación de nodos del clúster mediante kubectl.
    kubectl get tanzukubernetesclusters
    Inicialmente, el clúster no está listo porque se está aprovisionando.
    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
    Después de unos minutos, el estado READY debe ser 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
  11. Supervise la implementación de nodos del clúster mediante vSphere Client.
    En el inventario de hosts y clústeres de vSphere, debería ver los nodos de máquina virtual que se están implementando en el espacio de nombres de vSphere de destino.
  12. Ejecute comandos kubectl adicionales para verificar el aprovisionamiento de los clústeres.
    kubectl get tanzukubernetescluster,cluster-api,virtualmachinesetresourcepolicy,virtualmachineservice,virtualmachine
    Para obtener instrucciones adicionales, consulte Usar comandos operativos del clúster de Tanzu Kubernetes.
    Para soluciones de problemas, consulte Solución de problemas de clústeres de Tanzu Kubernetes.
  13. Con complemento de vSphere para kubectl, inicie sesión en el clúster.
    kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME \
    --tanzu-kubernetes-cluster-name CLUSTER-NAME \
    --tanzu-kubernetes-cluster-namespace NAMESPACE-NAME
    Por ejemplo:
    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. Compruebe que el inicio de sesión en el clúster de Tanzu Kubernetes sea correcto.
    Debe aparecer un error similar al siguiente..
    Logged in successfully.
    
    You have access to the following contexts:
       192.197.2.65
       tkgs-cluster-1
       tkgs-ns
    Donde 192.197.2.65 es el contexto de clúster supervisor, tkgs-ns es el contexto de espacio de nombres de vSphere y tkgs-cluster-1 es el contexto del clúster de Tanzu Kubernetes.
  15. Enumere los contextos de clúster disponibles mediante kubectl.
    kubectl config get-contexts
    Por ejemplo:
    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 es necesario, utilice kubect config use-context tkgs-cluster-1 para cambiar al clúster de Tanzu Kubernetes para que sea el contexto actual.
  16. Compruebe el aprovisionamiento de clústeres mediante los siguientes comandos de kubectl.
    kubectl get nodes
    Por ejemplo:
    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. Compruebe el aprovisionamiento de clústeres mediante los comandos de kubectl adicionales.
    kubectl get namespaces
    kubectl get pods -A
    kubectl cluster-info
    kubectl api-resources
  18. Defina la directiva de seguridad de pods adecuada.
    Los clústeres de Tanzu Kubernetes tienen el controlador de admisión de PodSecurityPolicy habilitado de forma predeterminada. Para obtener instrucciones, consulte Usar las directivas de seguridad de pods con clústeres de Tanzu Kubernetes.
    Según la carga de trabajo y el usuario, deberá crear enlaces para un objeto PodSecurityPolicy suministrado por el sistema o crear un objeto PodSecurityPolicy personalizado. Consulte Ejemplo de enlaces de funciones para la directiva de seguridad de pods.
  19. Implemente una carga de trabajo de ejemplo y compruebe la creación del clúster.
  20. Implemente extensiones de TKG para hacer que el clúster se implemente de forma operativa.
    Para obtener instrucciones, consulte Implementar paquetes TKG en clústeres de Tanzu Kubernetes.