A API declarativa do Tanzu Kubernetes Grid Service expõe vários parâmetros para a configuração de clusters Tanzu Kubernetes. Consulte a lista e a descrição de todos os parâmetros e diretrizes de uso para provisionar e personalizar seus clusters.

YAML anotado para provisionar um Tanzu Kubernetes cluster

O YAML anotado lista todos os parâmetros disponíveis para provisionar um cluster Tanzu Kubernetes com comentários resumidos para cada campo.
Observação: O YAML anotado não é validado para provisionar um cluster. Consulte os exemplos para tal orientação: Exemplos para provisionamento de clusters Tanzu Kubernetes usando a API Tanzu Kubernetes Grid Service v1alpha1.
apiVersion: run.tanzu.vmware.com/v1alpha1
kind: TanzuKubernetesCluster
metadata:
  name: <tanzu kubernetes cluster name>
  namespace: <vsphere namespace where the cluster will be provisioned>
spec:
  distribution:
    version: <tanzu kubernetes release version string: full, point, short>      
  topology:                               
    controlPlane:
      count: <integer either 1 or 3>
      class: <vm class bound to the target vsphere namespace>
      storageClass: <vsphere storage policy bound to the target vsphere namespace>
      volumes: #optional setting for high-churn control plane component (such as etcd)
        - name: <user-defined string>
          mountPath: </dir/path>
          capacity:
            storage: <size in GiB> 
    workers:                              
      count: <integer from 0 to 150>
      class: <vm class bound to the target vsphere namespace>
      storageClass: <vsphere storage policy bound to the target vsphere namespace>
      volumes: #optional setting for high-churn worker node component (such as containerd)
        - name: <user-defined string>
          mountPath: </dir/path>
          capacity:
            storage: <size in GiB>              
  settings: #all spec.settings are optional
    storage: #optional storage settings
      classes: [<array of kubernetes storage classes for dynamic pvc provisioning>]
      defaultClass: <default kubernetes storage class>
    network: #optional network settings
      cni: #override default cni set in the tkgservicesonfiguration spec
        name: <antrea or calico>
      pods: #custom pod network
        cidrBlocks: [<array of pod cidr blocks>]
      services: #custom service network
        cidrBlocks: [<array of service cidr blocks>]
      serviceDomain: <custom service domain>
      proxy: #proxy server for outbound connections
        httpProxy: http://<IP:PORT> 
        httpsProxy: http://<IP:PORT>
        noProxy: [<array of CIDRs to not proxy>]
      trust: #trust fields for custom public certs for tls
        additionalTrustedCAs:
          - name: <first-cert-name>
            data: <base64-encoded string of PEM encoded public cert 1>
          - name: <second-cert-name>
            data: <base64-encoded string of PEM encoded public cert 2>

Parâmetros para o provisionamento de Tanzu Kubernetes clusters

A tabela lista e descreve todos os parâmetros e valores aceitáveis para o provisionamento de um cluster do Tanzu Kubernetes. Para conhecer exemplos, consulte Exemplos de configuração da API do Tanzu Kubernetes Grid Service v1alpha1.

Tabela 1. Parâmetros para o provisionamento de Tanzu Kubernetes clusters
Nome Valor Descrição
apiVersion run.tanzu.vmware.com/v1alpha1 Especifica a versão da API Tanzu Kubernetes Grid Service.
kind TanzuKubernetesCluster Especifica o tipo de recurso do Kubernetes a ser criado. O único valor permitido é TanzuKubernetesCluster (diferencia maiúsculas de minúsculas).
metadata Seção para metadados do cluster Inclui metadados de cluster, como name e namespace. Esses são os metadados padrão do Kubernetes, então você pode usar generateName em vez de name, adicionar rótulos e anotações e assim por diante.
name Uma cadeia de caracteres definida pelo usuário que aceita caracteres alfanuméricos e traços, por exemplo: my-tkg-cluster-1 Especifica o nome do cluster a ser criado. Restrições de nomenclatura do cluster atual:
  • O comprimento do nome deve ser de 41 caracteres ou menos.
  • O nome deve começar com uma letra.
  • O nome pode conter letras, números e hifens.
  • O nome deve terminar com uma letra ou um número.
namespace Uma cadeia de caracteres definida pelo usuário que aceita caracteres alfanuméricos e traços, por exemplo: my-sns-1 Identifica o nome do Namespace de Supervisor no qual o cluster será implantado. Esta é uma referência a um Namespace de Supervisor que existe no Cluster de Supervisor.
spec Seção para especificações técnicas do cluster Inclui a especificação, expressa de forma declarativa, para o estado final do cluster, incluindo o nó toplogy e o software Kubernetes distribution.
distribution Seção para especificar a versão de lançamento do Tanzu Kubernetes Indica a distribuição para o cluster: o software de cluster Tanzu Kubernetes instalado no plano de controle e os nós de trabalho, incluindo o próprio Kubernetes.
version Cadeia de caracteres alfanumérica com traços representando a versão do Kubernetes, por exemplo: v1.20.2+vmware.1-tkg.1 ou v1.20.2 ou v1.20 Especifica a versão do software da distribuição do Kubernetes a ser instalada nos nós do cluster usando a notação de versão semântica. Pode especificar a versão totalmente qualificada ou usar atalhos de versão, como "version: v1.20.2", que é resolvido para a imagem mais recente correspondente a essa versão do patch, ou "version: v1.20", que é resolvido para a mais recente versão do patch correspondente. A versão resolvida é exibida como "fullVersion" na descrição do cluster após sua criação.
topology Seção para topologias de nó de cluster Inclui campos que descrevem o número, a finalidade e a organização dos nós do cluster e os recursos alocados para cada um. Os nós de cluster são agrupados em pools com base na finalidade pretendida: control-plane ou worker. Cada pool é homogêneo, tendo a mesma alocação de recursos e usando o mesmo armazenamento.
controlPlane Seção para configurações do plano de controle Especifica a topologia do plano de controle do cluster, incluindo o número de nós (count), o tipo de VM (class) e os recursos de armazenamento alocados para cada nó (storageClass).
count Um número inteiro que é 1 ou 3 Especifica o número de nós do plano de controle. O plano de controle deve ter um número ímpar de nós.
class Um elemento definido pelo sistema na forma de uma cadeia de caracteres de um conjunto enumerado, por exemplo: guaranteed-small ou best-effort-large Especifica o nome da VirtualMachineClass que descreve as configurações de hardware virtual a serem usadas em cada nó no pool. Isso controla o hardware disponível para o nó (CPU e memória), bem como as solicitações e os limites desses recursos. Consulte o Classes de máquina virtual para Tanzu Kubernetes clusters.
storageClass node-storage (por exemplo) Identifica a classe de armazenamento a ser usada para armazenamento dos discos que armazenam os sistemas de arquivos raiz dos nós do plano de controle. Execute kubectl describe ns no namespace para exibir as classes de armazenamento disponíveis. As classes de armazenamento disponíveis para o namespace dependem do armazenamento definido pelo administrador do vSphere. As classes de armazenamento associadas ao Namespace de Supervisor são replicadas no cluster. Em outras palavras, a classe de armazenamento deve estar disponível no Namespace do Supervisor para ser um valor válido para esse campo. Consulte o Configurando e gerenciando namespaces do vSphere.
volumes
Configuração de armazenamento opcional
  • volumes:
    • nome: cadeia de caracteres
    • mountPath: / dir / path
    • capacidade
      • armazenamento: tamanho GiB
Pode especificar parâmetros de disco e armazenamento separados para etcd em nós do plano de controle. Veja o exemplo Cluster com discos e parâmetros de armazenamento separados.
workers Seção para configurações de nó de trabalhador Especifica a topologia dos nós de trabalho do cluster, incluindo o número de nós (count), o tipo de VM (class) e os recursos de armazenamento alocados para cada nó (storageClass).
count Um número inteiro entre 0 e 150, por exemplo: 1 ou 2 ou 7 Especifica o número de nós de trabalho no cluster. Um cluster com zero nós de trabalhador pode ser criado, permitindo um cluster com apenas nós de plano de controle. Não há um máximo rígido para o número de nós de trabalho, mas um limite razoável é 150.
class Um elemento definido pelo sistema na forma de uma cadeia de caracteres de um conjunto enumerado, por exemplo: guaranteed-small ou best-effort-large Especifica o nome da VirtualMachineClass que descreve as configurações de hardware virtual a serem usadas em cada nó no pool. Isso controla o hardware disponível para o nó (CPU e memória), bem como as solicitações e os limites desses recursos. Consulte o Classes de máquina virtual para Tanzu Kubernetes clusters.
storageClass node-storage (por exemplo) Identifica a classe de armazenamento a ser usada para armazenamento dos discos que armazenam os sistemas de arquivos raiz dos nós de trabalho. Execute kubectl describe ns no namespace para listar as classes de armazenamento disponíveis. As classes de armazenamento disponíveis para o namespace dependem do armazenamento definido pelo administrador do vSphere. As classes de armazenamento associadas ao Namespace de Supervisor são replicadas no cluster. Em outras palavras, a classe de armazenamento deve estar disponível no namespace do supervisor para ser válida. Consulte o Configurando e gerenciando namespaces do vSphere.
volumes
Configuração de armazenamento opcional
  • volumes:
    • nome: cadeia de caracteres
    • mountPath: / dir / path
    • capacidade
      • armazenamento: tamanho GiB
Pode especificar parâmetros separados de disco e armazenamento para imagens de contêiner em nós de trabalho. Veja o exemplo Cluster com discos e parâmetros de armazenamento separados.
settings Seção para configurações específicas do cluster; todos os spec.settings são opcionais Identifica informações de configuração de tempo de execução opcionais para o cluster, incluindo detalhes de network nó e storage persistente para pods.
storage Seção para especificar o armazenamento Identifica entradas de armazenamento de volume persistente (PV) para cargas de trabalho de contêiner.
classes Matriz de uma ou mais cadeias de caracteres definidas pelo usuário, por exemplo: ["gold", "silver"] Especifica classes de armazenamento de volume persistente nomeado (PV) para cargas de trabalho de contêiner. As classes de armazenamento associadas ao Namespace de Supervisor são replicadas no cluster. Em outras palavras, a classe de armazenamento deve estar disponível no Namespace do Supervisor para ser um valor válido. Veja o exemplo Cluster com classes de armazenamento e uma classe padrão para volumes persistentes.
defaultClass silver (por exemplo) Especifica uma classe de armazenamento nomeada a ser anotada como padrão no cluster. Se você não especificar, não haverá padrão. Você não precisa especificar um ou mais classes para especificar um defaultClass. Algumas cargas de trabalho podem exigir uma classe padrão, como Helm. Veja o exemplo Cluster com classes de armazenamento e uma classe padrão para volumes persistentes.
network Marcador de seção para configurações de rede Especifica as configurações relacionadas à rede para o cluster.
cni Marcador de seção para especificar o CNI Identifica o plug-in da Interface de Rede do Contêiner (CNI) para o cluster. O padrão é Antrea, que não precisa ser especificado para novos clusters.
name Cadeia de caracteres antrea ou calico Especifica o CNI a ser usado. Antrea e Calico são compatíveis. A configuração do sistema define o Antrea como o CNI padrão. O CNI padrão pode ser alterado. Se estiver usando o padrão, esse campo não precisará ser especificado.
services Marcador de seção para especificar sub-redes de serviços do Kubernetes Identifica as configurações de rede para os serviços do Kubernetes. O padrão é 10.96.0.0/12.
cidrBlocks Matriz ["198.51.100.0/12"] (por exemplo) Especifica um intervalo de endereços IP a ser usado para serviços Kubernetes. O padrão é 10.96.0.0/12. Não deve se sobrepor às configurações escolhidas para o Cluster de Supervisor. Embora esse campo seja uma matriz, permitindo vários intervalos, atualmente apenas um único intervalo de IP é permitido. Veja os exemplos de rede em Exemplos para provisionamento de clusters Tanzu Kubernetes usando a API Tanzu Kubernetes Grid Service v1alpha1.
pods Marcador de seção para especificar sub-redes de pods do Kubernetes Especifica as configurações de rede para pods. O padrão é 192.168.0.0/16. O tamanho mínimo do bloco é / 24.
cidrBlocks Matriz ["192.0.2.0/16"] (por exemplo) Especifica um intervalo de endereços IP a ser usado para pods Kubernetes. O padrão é 192.168.0.0/16. Não deve se sobrepor às configurações escolhidas para o Cluster de Supervisor. O tamanho da sub-rede de pods deve ser igual ou maior que / 24. Embora esse campo seja uma matriz, permitindo vários intervalos, atualmente apenas um único intervalo de IP é permitido. Veja os exemplos de rede em Exemplos para provisionamento de clusters Tanzu Kubernetes usando a API Tanzu Kubernetes Grid Service v1alpha1.
serviceDomain "cluster.local" Especifica o domínio do serviço para o cluster. O padrão é cluster.local.
proxy Seção que especifica a configuração de proxy HTTP (s) para o cluster. Se implementados, todos os campos serão obrigatórios. Fornece campos para configurações de proxy especificadas; será preenchido automaticamente se um proxy global estiver configurado e o proxy de cluster individual não estiver configurado. Veja o exemplo Cluster com um servidor proxy.
httpProxy http://<user>:<pwd>@<ip>:<port> Especifica uma URL de proxy a ser usada para criar conexões HTTP fora do cluster.
httpsProxy http://<user>:<pwd>@<ip>:<port> Especifica uma URL de proxy a ser usada para criar conexões HTTPS fora do cluster.
noProxy

Matriz de blocos CIDR para não proxy, por exemplo: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20].

Obtenha os valores necessários provenientes da Rede de Carga de Trabalho no Cluster do Supervisor: Pod CIDRs, Ingress CIDRs e Egress CIDRs.

Consulte a imagem abaixo para saber quais valores incluir no campo de matriz noProxy.

Você não deve usar como proxy as sub-redes usadas pela Rede de Carga de Trabalho no Cluster de Supervisor para Pods, Entrada e Saída.

Você não precisa incluir o CIDR de Serviços do Cluster de Supervisor no campo noProxy. Os clusters do Tanzu Kubernetes não interagem com esses serviços.

Os endpoints localhost e 127.0.0.1 não têm proxy automaticamente. Você não precisa adicioná-los ao campo noProxy.

Os CIDRs de Pod e de Serviço para clusters Tanzu Kubernetes não são automaticamente colocados em proxy. Você não precisa adicioná-los ao campo noProxy.

Veja o exemplo Cluster com um servidor proxy.

trust Marcador de seção para trust parâmetros. Não aceita dados.
additionalTrustedCAs Aceita uma matriz de certificados com name e data para cada um. Não aceita dados.
name Cadeia de caracteres O nome do certificado TLS.
data Cadeia de caracteres A cadeia de caracteres codificada em base64 de um certificado público codificado por PEM.

Obtenha os valores de noProxy necessários da Workload Network no Supervisor Cluster, conforme mostrado na imagem.