Um Tanzu Kubernetes release fornece a distribuição de software Kubernetes assinada e com suporte por VMware para uso com clusters TKG 2 em Supervisor. O formato TKR é atualizado para o TKG 2 para oferecer suporte a pacotes e vários sistemas operacionais.

Notas de versão do TKR

Consulte as Tanzu KubernetesNotas de Versão da versão para obter a lista completa de TKRs disponíveis, o que há de novo em cada versão, problemas conhecidos e compatibilidade de TKR com Supervisor e TKG 2. Consulte também vSphere with Tanzu Atualização, suporte e versões do Kubernetes.

Distribuição e Consumo de TKR

VMware distribui Tanzu Kubernetes releases por meio de uma rede de entrega de conteúdo. Você usa uma biblioteca de conteúdo vSphere para associar TKRs a vSphere Namespaces. Para automatizar o consumo de TKRs, use uma biblioteca de conteúdo assinada. Para ambientes com restrição de Internet, use uma biblioteca de conteúdo local.

Cada Tanzu Kubernetes release é distribuído como um modelo OVA. O Controlador TKR em Supervisor usa o modelo OVA para construir as VMs para nós de cluster TKG. O tamanho do disco da VM é definido pelo modelo TKR OVA. Você especifica os recursos de CPU e RAM usando classes de VM.

A biblioteca de conteúdo do TKR não tem escopo de namespace. Todos os vSphere Namespaces usam a mesma biblioteca de conteúdo TKR para TKG com Supervisor. A edição da biblioteca de conteúdo do TKR para um vSphere Namespace a atualizará para todos os outros.

Cadeia de Nomes de TKR

Use o comando kubectl get tkr para listar as imagens TKR que estão disponíveis para uso no vSphere Namespace. Por exemplo:
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
Use a cadeia de caracteres TKR NAME para provisionar clusters TKG em Supervisor. Se estiver usando a API v1alpha3, forneça a string TKR NAME completa no campo tkr.reference.name. Se estiver usando a API v1beta1, forneça a string TKR NAME completa no campo topology.version.
Observação: Não use a cadeia de caracteres VERSION ao fazer referência ao TKR na especificação do cluster. O formato deve corresponder exatamente à cadeia de caracteres TKR NAME.

O nome do TKR na biblioteca de conteúdo precisa ser a cadeia de caracteres completa do TKR NAME. Se você estiver usando uma biblioteca de conteúdo assinada, a cadeia de caracteres Nome do TKR será criada para você. Se você estiver usando uma biblioteca de conteúdo local, certifique-se de que o nome dado ao TKR corresponda à cadeia de caracteres TKR NAME. Consulte biblioteca de conteúdo local para obter detalhes.

Compatibilidade TKR com Supervisor

Os TKRs são liberados e atualizados independentemente de Supervisor.

Para provisionar um cluster TKG, o TKR deve ser compatível com o componente Controlador TKG que é executado em Supervisor. Você não pode usar um TKR que não seja compatível com a instância Supervisor que está executando. Além disso, você deve certificar-se de que está executando um TKR compatível para a versão do Supervisor que você deseja fazer upgrade.

Você pode verificar a compatibilidade do TKR com Supervisor usando o comando kubectl get tkr. A coluna COMPATIBLE retorna um booliano. True significa que o TKR é compatível com Supervisor, False significa que o TKR não é compatível com Supervisor.

Compatibilidade do TKR com o TKG 2

O TKG 2 é a versão mais recente do Tanzu Kubernetes Grid com novas funcionalidades, incluindo APIs de provisionamento. O TKG 2 foi introduzido com o vSphere 8. Consulte Provisionando clusters do TKG 2 em Supervisor para obter mais informações.

O formato TKR é diferente para clusters TKG 2 e para clusters TKG 1. Para provisionar um cluster do TKG 2, você deve usar um TKR não herdado. Se o TKR for um TKR herdado, ele só poderá ser usado para provisionar um cluster do TKG 1. As imagens TKR que não são compatíveis com o TKG 2 incluem o rótulo de anotação legacy-tkr.

Você pode provisionar um cluster do TKG 1 em um Supervisor compatível, mas não pode aproveitar os recursos do TKG 2, a menos que use um TKR não herdado. Por exemplo, embora o comando kubectl get tkr possa indicar que o TKR é compatível com Supervisor, se for um TKR herdado, ele só poderá ser usado para provisionar um cluster TKG 1.

Você pode verificar a compatibilidade do TKR com o TKG 2 usando os comandos kubectl get tkr -o yaml e kubectl get tkr --show-labels. Se o rótulo de anotação legacy-tkr estiver presente, o TKR não poderá ser usado para provisionar um cluster do TKG 2.

Por exemplo, o comando a seguir mostra que a imagem especificada é um legacy-tkr. Isso significa que ele não pode ser usado para provisionar um cluster TKG 2. Esse TKR só pode ser usado para provisionar um cluster TKG 1 herdado.
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
O exemplo a seguir usa o sinalizador --show-labels para verificar se o TKR é compatível para provisionar clusters do TKG 2. O rótulo legacy-tkr está presente para que a imagem só possa ser usada para criar um cluster TKG 1.
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=,
O exemplo a seguir mostra um TKR que é compatível com a criação de cluster do TKG 2 porque o rótulo legacy-tkr está ausente da lista de rótulos.
kubectl get tkr v1.23.8---vmware.2-tkg.2-zshippable --show-labels
NAME                                  VERSION                             READY   COMPATIBLE   CREATED   LABELS
v1.23.8---vmware.2-tkg.2-zshippable   v1.23.8+vmware.2-tkg.2-zshippable   True    True         19d       os-arch=amd64,os-name=ubuntu,os-type=linux,os-version=20.04,v1.23.8---vmware.2-tkg.2-zshippable=,
A execução do comando equivalente usando -o yaml também mostra que o rótulo legacy-tkr está ausente, indicando que o TKR pode ser usado para provisionar um cluster TKG 2.
kubectl get tkr v1.23.8---vmware.2-tkg.2-zshippable -o yaml
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesRelease
metadata:
  creationTimestamp: "2023-03-15T20:31:45Z"
  finalizers:
  - tanzukubernetesrelease.run.tanzu.vmware.com
  generation: 2
  labels:
    os-arch: amd64
    os-name: ubuntu
    os-type: linux
    os-version: "20.04"
    v1: ""
    v1.23: ""
    v1.23.8: ""
    v1.23.8---vmware: ""
    v1.23.8---vmware.2: ""
    v1.23.8---vmware.2-tkg: ""
    v1.23.8---vmware.2-tkg.2: ""
    v1.23.8---vmware.2-tkg.2-zshippable: ""
  name: v1.23.8---vmware.2-tkg.2-zshippable
Importante: O sufixo -zshippable não é um método confiável para determinar se o TKR é compatível com o TKG 2. Esse sufixo foi removido da cadeia de caracteres TKR NAME a partir da versão vSphere 8 U1. Você deve verificar o TKR quanto à presença do rótulo legacy-tkr para determinar se o TKR pode ser usado com o vSphere 8 para provisionar um cluster do TKG 2. Se você já tiver provisionado um cluster TKG 2 usando um TKR com o sufixo -zshippable, precisará alterar a URL da biblioteca de conteúdo para um local temporário durante a transição do uso desse sufixo. Consulte as Tanzu KubernetesNotas de Versão da versão para obter detalhes.

TKR OSImage Format

O formato TKR OSImage oferece suporte a várias imagens do sistema operacional para um único TKR. Isso significa que há um único Tanzu Kubernetes release para uma versão específica do Kubernetes para todos os sistemas operacionais compatíveis, que atualmente são o PhotonOS e o Ubuntu. O OSImage padrão é PhotonOS.

Para usar a edição Ubuntu do TKR, inclua uma anotação na especificação do cluster. Por exemplo, a seguinte especificação de cluster TKG usa a edição Ubuntu do TKR nomeado.
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesCluster
metadata:
  name: tkg2-cluster-ubuntu
  namespace: tkg2-cluster-ns
  annotations:
    run.tanzu.vmware.com/resolve-os-image: os-name=ubuntu
spec:
   topology:
     controlPlane:
       ...
       tkr:
         reference:
           name: v1.23.8---vmware.2-tkg.2-zshippable
O formato OSImage oferece suporte a implantações de cluster heterogêneo. Por exemplo, o manifesto do cluster a seguir cria um cluster Tanzu Kubernetes com o PhotonOS padrão para o plano de controle e o Ubuntu para os nós do trabalhador. A versão do TKR é referência no plano de controle e a anotação especifica o Ubuntu para o pool de nós do trabalhador nomeado.
apiVersion: run.tanzu.vmware.com/v1alpha3
kind: TanzuKubernetesCluster
metadata:    
  name: tkg2-cluster-multiOS
  namespace: tkg2-cluster-ubuntu
  annotations:
    //Worker's annotation
    run.tanzu.vmware.com/resolve-os-image.np-1: os-name=ubuntu
spec:    
  topology:      
    controlPlane:        
      tkr:          
        reference:            
          name: v1.23.8---vmware.2-tkg.2-zshippable
      replicas: 3
      vmClass: guaranteed-medium
      storageClass: tkg2-storage-profile 
    nodePools:     
    - replicas: 3
      name: np-1
      vmClass: guaranteed-medium
      storageClass: tkg2-storage-profile
Quando o vSphere with Tanzu é atualizado para o TKG 2 em vSphere 8 Supervisor, os TKRs existentes são convertidos automaticamente no formato TKR OSImage com referência a um único OSImage. Isso permite que os TKRs herdados sejam compatíveis com o TKG 2. Se você estiver usando a edição Ubuntu do TKR e especificar apenas a string de versão curta ( v1.21.6+vmware.1-tkg.1) em vez da string de versão completa ( ubuntu-2004-v1.21.6---vmware.1-tkg.1), deverá incluir a anotação do SO na especificação do cluster. Isso será verdadeiro se você estiver usando a API v1alpha3 ou a API vlapha2. Por exemplo:
apiVersion: run.tanzu.vmware.com/v1alpha2
kind: TanzuKubernetesCluster
metadata:    
  name: tkg-cluster-ubuntu
  namespace: tkg-cluster-ubuntu
  annotations: 
    run.tanzu.vmware.com/resolve-os-image: os-name=ubuntu
spec:    
  topology:      
    controlPlane:        
      replicas: 3
      vmClass: guaranteed-medium
      storageClass: tkg-storage-policy
      tkr:          
        reference:            
          name: v1.21.6+vmware.1-tkg.1
    nodePools:     
    - name: worker-nodepool
      replicas: 3
      vmClass: guaranteed-medium
      storageClass: tkg2-storage-policy
      tkr:          
        reference:            
          name: v1.21.6+vmware.1-tkg.1
  settings:
    storage:
      defaultClass: tkg-storage-policy

Pacotes TKR

As imagens TKR compatíveis com o vSphere 8 são atualizadas para uma estrutura baseada em pacote para componentes do TKG 2, como a interface de armazenamento de contêiner (CSI) e a interface de rede de contêiner (CNI). Se você estiver usando a API v1beta, a alteração ou atualização desses componentes será feita usando definições de recursos personalizadas.

Para visualizar os pacotes que compõem um TKR, execute o seguinte comando:
kubectl get tkr TKR-NAME -o yaml
Por exemplo:
kubectl get tkr v1.23.8---vmware.2-tkg.2-zshippable -o yaml
O comando retorna todos os pacotes no TKR. Por exemplo:
spec:
bootstrapPackages:
- name: antrea.tanzu.vmware.com.1.5.3+tkg.2-zshippable
- name: vsphere-pv-csi.tanzu.vmware.com.2.6.0+vmware.1-tkg.1-zshippable
- name: vsphere-cpi.tanzu.vmware.com.1.23.1+vmware.1-tkg.2-zshippable
- name: kapp-controller.tanzu.vmware.com.0.38.4+vmware.1-tkg.2-zshippable
- name: guest-cluster-auth-service.tanzu.vmware.com.1.0.0+tkg.2-zshippable
- name: metrics-server.tanzu.vmware.com.0.6.1+vmware.1-tkg.2-zshippable
- name: secretgen-controller.tanzu.vmware.com.0.9.1+vmware.1-tkg.2-zshippable
- name: pinniped.tanzu.vmware.com.0.12.1+vmware.2-tkg.2-zshippable
- name: capabilities.tanzu.vmware.com.0.26.0-dev-68-g09198af6+vmware.1
- name: calico.tanzu.vmware.com.3.22.1+vmware.1-tkg.2-zshippable

Consulte Exemplo de v1beta1: cluster com CNI do Calico para obter um exemplo de caso de uso.

Migrando tipos de SO do TKR

Não há suporte para atualizações de cluster no local entre sistemas operacionais TKR. Isso significa, por exemplo, que você não pode fazer upgrade de um cluster TKG usando o TKR versão 1.21 Photon para o TKR versão 1.22 Ubuntu.

Se você quiser alterar o tipo de SO TKR que um cluster TKG está usando, considere o procedimento a seguir. Neste exemplo, o cluster de origem está usando o TKR Photon e o destino é o TKR Ubuntu.

Crie seu próprio TKR

A partir de uma versão específica do TKR, você pode criar imagens de máquina TKR personalizadas para clusters TKG 2 em execução no vSphere 8 Supervisor. Uma imagem de máquina personalizada empacota um sistema operacional e uma versão com suporte, uma versão do Kubernetes com base em um TKR lançado e quaisquer personalizações que você fizer.

Para criar imagens de máquina personalizadas para nós de cluster do TKG 2, use o VMware Image Builder.