Una versión de Tanzu Kubernetes (TKr) proporciona la distribución de software de Kubernetes firmada y compatible con VMware para su uso con clústeres de Servicio TKG. El formato TKr se actualizó para que vSphere 8 admita paquetes y varios sistemas operativos.

Notas de la versión de TKr

Consulte las Notas de la versión de las distintas versiones de Tanzu Kubernetes para obtener la lista completa de TKr disponibles, las novedades de cada versión, los problemas conocidos y la compatibilidad de TKr.

Distribución y uso de TKr

VMware distribuye versiones de Tanzu Kubernetes a través de una red de entrega de contenido. Utilice una biblioteca de contenido vSphere para asociar TKr con espacios de nombres de vSphere. Para automatizar el uso de TKr, utilice una biblioteca de contenido suscrita. Para entornos con restricciones de Internet, utilice una biblioteca de contenido local.

Cada versión de Tanzu Kubernetes se distribuye como una plantilla de OVA. La controladora de TKr en Supervisor utiliza la plantilla de OVA a fin de crear las máquinas virtuales para los nodos del clúster de TKG. El tamaño de disco de la máquina virtual se establece mediante la plantilla de OVA de TKr. Los recursos de CPU y RAM se especifican mediante clases de máquinas virtuales.

La biblioteca de contenido de TKr no está en el ámbito del espacio de nombres. Todas las instancias de espacios de nombres de vSphere utilizan la misma biblioteca de contenido de TKr para TKG en Supervisor. Al editar la biblioteca de contenido de TKr para una instancia de espacio de nombres de vSphere, se actualizará para el resto de las instancias.

Cadena TKr NAME

Utilice el comando kubectl get tkr para enumerar las imágenes de TKr que están disponibles y pueden usarse en espacio de nombres de vSphere. Por ejemplo:
kubectl get tkr
NAME                                  VERSION                             READY   COMPATIBLE   CREATED
v1.16.14---vmware.1-tkg.1.ada4837     v1.16.14+vmware.1-tkg.1.ada4837     False   False        19d
v1.17.17---vmware.1-tkg.1.d44d45a     v1.17.17+vmware.1-tkg.1.d44d45a     False   False        19d
v1.18.19---vmware.1-tkg.1.17af790     v1.18.19+vmware.1-tkg.1.17af790     False   False        19d
v1.19.16---vmware.1-tkg.1.df910e2     v1.19.16+vmware.1-tkg.1.df910e2     False   False        19d
v1.20.12---vmware.1-tkg.1.b9a42f3     v1.20.12+vmware.1-tkg.1.b9a42f3     False   False        19d
v1.21.6---vmware.1-tkg.1.b3d708a      v1.21.6+vmware.1-tkg.1.b3d708a      True    True         19d
v1.22.9---vmware.1-tkg.1.cc71bc8      v1.22.9+vmware.1-tkg.1.cc71bc8      True    True         19d
v1.23.8---vmware.2-tkg.2-zshippable   v1.23.8+vmware.2-tkg.2-zshippable   True    True         19d
v1.23.8---vmware.3-tkg.1              v1.23.8+vmware.3-tkg.1              True    True         19d
La cadena TKr NAME se utiliza para aprovisionar clústeres de TKG en Supervisor. Si utiliza la API v1alpha3, proporcione la cadena completa TKr NAME en el campo tkr.reference.name. Si utiliza la API v1beta1, proporcione la cadena completa TKr NAME en el campo topology.version.
Nota: No utilice la cadena VERSION al hacer referencia a la TKr en la especificación del clúster. El formato debe coincidir exactamente con la cadena TKr NAME.

El nombre de la TKr en la biblioteca de contenido debe ser la cadena TKr NAME completa. Si utiliza una biblioteca de contenido suscrita, la cadena TKr NAME se crea automáticamente. Si utiliza una biblioteca de contenido local, asegúrese de que el nombre que asigne a la TKr coincida con la cadena TKr NAME. Consulte la biblioteca de contenido local para obtener más información.

Compatibilidad de TKr con Servicio TKG

Las TKr se publican y se actualizan de forma independiente del Servicio TKG y del Supervisor.

Para aprovisionar un clúster de TKG, la TKr debe ser compatible con el Servicio TKG. No puede utilizar una TKr que no sea compatible con el Servicio TKG. Además, debe asegurarse de ejecutar una TKr compatible para la versión de destino a la que desea actualizar.

Puede comprobar la compatibilidad de la TKr mediante el comando kubectl get tkr. La columna COMPATIBLE devuelve un valor booleano. True significa que la TKr es compatible y False significa que la TKr no es compatible.

Compatibilidad de TKR con vSphere

El formato TKr se ha actualizado para vSphere 8. Las TKr para vSphere 8 solo se pueden ejecutar en vSphere 8.x. Las TKr para vSphere 7.x son imágenes heredadas que funcionan con vSphere 7. Estas imágenes se pueden ejecutar en vSphere 8, pero solo para fines de actualización. Las imágenes de TKr heredadas se identifican mediante la etiqueta de anotación legacy-tkr.

Puede comprobar la compatibilidad de la TKr mediante los comandos kubectl get tkr -o yaml y kubectl get tkr --show-labels. Si la etiqueta de anotación legacy-tkr está presente, la TKr no admite las funciones de vSphere 8 y solo se debe utilizar para actualizar a vSphere 8 desde vSphere 7.

Por ejemplo, el siguiente comando muestra que la imagen especificada es un legacy-tkr.
kubectl get tkr v1.23.8---vmware.3-tkg.1 -o yaml
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesRelease
metadata:
  creationTimestamp: "2023-03-15T20:33:17Z"
  finalizers:
  - tanzukubernetesrelease.run.tanzu.vmware.com
  generation: 1
  labels:
    os-arch: amd64
    os-name: photon
    os-type: linux
    os-version: "3.0"
    run.tanzu.vmware.com/legacy-tkr: ""
    v1: ""
    v1.23: ""
    v1.23.8: ""
    v1.23.8---vmware: ""
    v1.23.8---vmware.3: ""
    v1.23.8---vmware.3-tkg: ""
    v1.23.8---vmware.3-tkg.1: ""
  name: v1.23.8---vmware.3-tkg.1
En el siguiente ejemplo se utiliza la marca --show-labels para comprobar la compatibilidad de la TKr. La etiqueta legacy-tkr está presente, por lo que la imagen solo se puede utilizar para crear un clúster de TKG heredado.
kubectl get tkr v1.23.8---vmware.3-tkg.1 --show-labels
NAME                       VERSION                  READY   COMPATIBLE   CREATED   LABELS
v1.23.8---vmware.3-tkg.1   v1.23.8+vmware.3-tkg.1   True    True         19d       os-arch=amd64,os-name=photon,os-type=linux,os-version=3.0,run.tanzu.vmware.com/legacy-tkr=,
El siguiente ejemplo muestra que una TKr está diseñada específicamente para vSphere 8.x porque la etiqueta legacy-tkr está ausente en la lista de etiquetas.
kubectl get tkr v1.28.8---vmware.1-fips.1-tkg.2 --show-labels
NAME                              VERSION                         READY   COMPATIBLE   CREATED   LABELS
v1.28.8---vmware.1-fips.1-tkg.2   v1.28.8+vmware.1-fips.1-tkg.2   True    True         21d       os-arch=amd64,os-name=photon,os-type=linux,os-version=5.0,tkr.tanzu.vmware.com/standard=,v1.28.8---vmware.1-fips.1-tkg.2=,v1.28.8---vmware.1-fips.1-tkg=,v1.28.8---vmware.1-fips.1=,v1.28.8---vmware.1-fips=,v1.28.8---vmware.1=,v1.28.8---vmware=,v1.28.8=,v1.28=,v1=
Al ejecutar el comando equivalente con -o yaml también se muestra que la etiqueta legacy-tkr está ausente, lo que indica que la TKr está diseñada para vSphere 8.x.
 kubectl get tkr v1.28.8---vmware.1-fips.1-tkg.2 -o yaml
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesRelease
metadata:
  creationTimestamp: "2024-05-08T20:03:57Z"
  finalizers:
  - tanzukubernetesrelease.run.tanzu.vmware.com
  generation: 2
  labels:
    os-arch: amd64
    os-name: photon
    os-type: linux
    os-version: "5.0"
    tkr.tanzu.vmware.com/standard: ""
    v1: ""
    v1.28: ""
    v1.28.8: ""
    v1.28.8---vmware: ""
    v1.28.8---vmware.1: ""
    v1.28.8---vmware.1-fips: ""
    v1.28.8---vmware.1-fips.1: ""
    v1.28.8---vmware.1-fips.1-tkg: ""
    v1.28.8---vmware.1-fips.1-tkg.2: ""
  name: v1.28.8---vmware.1-fips.1-tkg.2
...

Formato TKr Imagen de sistema operativo

El formato TKr Imagen de sistema operativo admite varias imágenes de sistema operativo para una sola TKr. Esto significa que hay una única versión de Tanzu Kubernetes para una versión específica de Kubernetes para todos los sistemas operativos compatibles, actualmente Photon OS y Ubuntu. El formato predeterminado de imagen de sistema operativo es PhotonOS.

De forma predeterminada, la edición Photon OS de la TKr designada se utiliza para los nodos de clúster de TKG. Si la TKr a la que se hace referencia admite el formato Imagen de SO y tiene una edición del sistema operativo Ubuntu disponible, utilice la anotación run.tanzu.vmware.com/resolve-os-image: os-name=ubuntu para especificar la edición del sistema operativo Ubuntu de TKr. Por ejemplo, la siguiente especificación de clúster de TKG utiliza la edición Ubuntu de la TKr designada.
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesCluster
metadata:
  name: tkgs-cluster-ubuntu
  namespace: tkgs-cluster-ns
  annotations:
    run.tanzu.vmware.com/resolve-os-image: os-name=ubuntu
spec:
   topology:
     controlPlane:
       ...
       tkr:
         reference:
           name: v1.28.8---vmware.1-fips.1-tkg.2
El formato Imagen de SO admite implementaciones de clústeres heterogéneos. Por ejemplo, el siguiente manifiesto del clúster crea un clúster de Tanzu Kubernetes con el PhotonOS predeterminado para los nodos del plano de control y Ubuntu para los nodos de trabajo. La versión de TKr se menciona en la sección del plano de control y la anotación especifica Ubuntu para el grupo de nodos de trabajo designado.
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesCluster
metadata:    
  name: tkgs-cluster-multiOS
  namespace: tkgs-cluster-ubuntu
  annotations:
    //Worker nodes annotation
    run.tanzu.vmware.com/resolve-os-image.np-1: os-name=ubuntu
spec:    
  topology:      
    controlPlane:        
      tkr:          
        reference:            
          name: v1.28.8---vmware.1-fips.1-tkg.2
      replicas: 3
      vmClass: guaranteed-medium
      storageClass: tkgs-storage-profile 
    nodePools:     
    - replicas: 3
      name: np-1
      vmClass: guaranteed-medium
      storageClass: tkgs-storage-profile

Cuando el sistema se actualiza a vSphere 8, las TKr existentes se convierten automáticamente al formato Imagen de sistema operativo TKr con referencia a una sola imagen del sistema operativo. Esto permite que las TKr heredadas sean compatibles para la actualización a una TKr no heredada.

Las TKr heredadas tienen dos ediciones: Photon y Ubuntu. Cuando la TKr heredada tiene una edición específica de Ubuntu, puede utilizar la cadena de versión completa (con "ubuntu") y omitir la etiqueta de anotación, u utilizar la cadena de versión corta (sin "ubuntu") e incluir la etiqueta de versión.

Paquetes de TKr

Las imágenes de TKr compatibles con vSphere 8 se actualizan a un marco basado en paquetes para los componentes básicos, como la interfaz de almacenamiento de contenedor (Container Storage Interface, CSI) y la interfaz de red de contenedor (Container Network Interface, CNI). Si utiliza la API v1beta, el cambio o la actualización de estos componentes se realiza mediante definiciones de recursos personalizados.

Para ver los paquetes que componen una TKr, ejecute el siguiente comando:
kubectl get tkr TKR-NAME -o yaml
Por ejemplo:
kubectl get tkr v1.28.8---vmware.1-fips.1-tkg.2 -o yaml
El comando devuelve todos los paquetes de TKr. Por ejemplo:
spec:
  bootstrapPackages:
  - name: antrea.tanzu.vmware.com.1.13.3+vmware.3-tkg.2-vmware
  - name: vsphere-pv-csi.tanzu.vmware.com.3.1.0+vmware.1-tkg.6-vmware
  - name: vsphere-cpi.tanzu.vmware.com.1.28.0+vmware.1-tkg.1-vmware
  - name: kapp-controller.tanzu.vmware.com.0.48.2+vmware.1-tkg.1-vmware
  - name: guest-cluster-auth-service.tanzu.vmware.com.1.3.3+tkg.1-vmware
  - name: metrics-server.tanzu.vmware.com.0.6.2+vmware.3-tkg.5-vmware
  - name: secretgen-controller.tanzu.vmware.com.0.15.0+vmware.1-tkg.1-vmware
  - name: pinniped.tanzu.vmware.com.0.25.0+vmware.2-tkg.1-vmware
  - name: capabilities.tanzu.vmware.com.0.32.1+vmware.1
  - name: gateway-api.tanzu.vmware.com.1.0.0+vmware.1-tkg.1-vmware
  - name: calico.tanzu.vmware.com.3.26.3+vmware.1-tkg.1-vmware

Consulte Ejemplo de v1beta1: clúster con CNI de Calico para ver un ejemplo de caso práctico.

Migrar tipos de sistema operativo de TKr

No se admiten actualizaciones de clústeres in situ entre sistemas operativos de TKr. Esto significa, por ejemplo, que no se puede actualizar un clúster de TKG mediante TKr v1.27.11 de Photon a TKr v1.28.8 de Ubuntu.

Si desea cambiar el tipo de sistema operativo de TKr que utiliza un clúster de TKG, tenga en cuenta el siguiente procedimiento. En este ejemplo, el clúster de origen utiliza TKr de Photon y el destino es TKr de Ubuntu.

Fortalecimiento de TKr

Hay disponibles guías de implementación técnica de seguridad (STIG) para los componentes del sistema, incluido el Supervisor y las TKr. Consulte Fortalecimiento de STIG de Tanzu para obtener más información.

Crear su propia TKr

A partir de TKr v1.25.7 para vSphere 8.x, puede crear imágenes de máquina TKr personalizadas para clústeres de TKG en vSphere 8. Una imagen de máquina personalizada empaqueta un sistema operativo y una versión compatibles, una versión de Kubernetes basada en una TKr publicada y cualquier personalización que realice.

Para crear imágenes de máquina personalizadas para los nodos de clúster de TKG, utilice Tanzu Kubernetes Grid Image Builder de vSphere. Consulte la documentación para obtener más información sobre la creación de imágenes personalizadas, las versiones de TKr compatibles y las personalizaciones admitidas.