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
- Descargue e instale las Herramientas de la CLI de Kubernetes para vSphere.
- Autentíquese con clúster supervisor mediante complemento de vSphere para kubectl.
kubectl vsphere login --server=IP-ADDRESS --vsphere-username USERNAME
- 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.
- Compruebe que el destino espacio de nombres de vSphere sea el contexto actual.
kubectl config get-contexts
Si el
espacio de nombres de vSphere de destino no es el contexto actual, cambie a él.
kubectl config use-context tkgs-ns
- 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.
- Obtiene las clases de almacenamiento de volumen persistente disponibles.
kubectl describe storageclasses
- 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.
- Cree el archivo YAML para aprovisionar un clúster de Tanzu Kubernetes.
- Revise la especificación de la API v1alpha2.
- Comience con uno de los archivos YAML de ejemplo para aprovisionar un clúster; ya sea predeterminado o personalizado según sus requisitos.
- Guarde el archivo YAML como
tkgs-cluster-1.yaml
o un formato similar.
- 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
- 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.
- 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
- 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
- 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.
- Ejecute comandos
kubectl
adicionales para verificar el aprovisionamiento de los clústeres.
kubectl get tanzukubernetescluster,cluster-api,virtualmachinesetresourcepolicy,virtualmachineservice,virtualmachine
- 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
- 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.
- Enumere los contextos de clúster disponibles mediante
kubectl
.
kubectl config get-contexts
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.
- Compruebe el aprovisionamiento de clústeres mediante los siguientes comandos de kubectl.
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
- 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
- Defina la directiva de seguridad de pods adecuada.
- Implemente una carga de trabajo de ejemplo y compruebe la creación del clúster.
- Implemente extensiones de TKG para hacer que el clúster se implemente de forma operativa.