L'API dichiarativa di Servizio Tanzu Kubernetes Grid espone diversi parametri per la configurazione dei cluster di Tanzu Kubernetes. Fare riferimento all'elenco e alla descrizione di tutti i parametri e alle linee guida per l'utilizzo per eseguire il provisioning e personalizzare i cluster.

Codice YAML annotato per il provisioning di un cluster di Tanzu Kubernetes

Il codice YAML annotato elenca tutti i parametri disponibili per il provisioning di un cluster di Tanzu Kubernetes con commenti riepilogativi per ciascun campo.
Nota: Il codice YAML annotato non viene convalidato per il provisioning di un cluster. Per istruzioni di questo tipo, fare riferimento agli esempi: Esempi di provisioning dei cluster Tanzu Kubernetes mediante l'API v1alpha1 del Servizio Tanzu Kubernetes Grid.
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>

Parametri per il provisioning dei cluster di Tanzu Kubernetes

Nella tabella sono elencati e descritti tutti i parametri e i valori accettabili per il provisioning di un cluster di Tanzu Kubernetes. Per alcuni esempi, vedere Esempi di configurazione dell'API v1alpha1 del Servizio Tanzu Kubernetes Grid.

Tabella 1. Parametri per il provisioning dei cluster di Tanzu Kubernetes
Nome Valore Descrizione
apiVersion run.tanzu.vmware.com/v1alpha1 Specifica la versione dell'API di Tanzu Kubernetes Grid Service.
kind TanzuKubernetesCluster Specifica il tipo di risorsa Kubernetes da creare. L'unico valore consentito è TanzuKubernetesCluster (viene applicata la distinzione tra maiuscole e minuscole).
metadata Sezione per i metadati del cluster Include i metadati del cluster, ad esempio name e namespace. Si tratta di metadati di Kubernetes standard, quindi è possibile utilizzare generateName anziché name, aggiungere etichette e annotazioni e così via.
name Stringa definita dall'utente che accetta caratteri alfanumerici e trattini, ad esempio: my-tkg-cluster-1 Specifica il nome del cluster da creare. Vincoli di denominazione del cluster correnti:
  • La lunghezza del nome può includere al massimo 41 caratteri.
  • Il nome deve iniziare con una lettera.
  • Il nome può contenere lettere, numeri e trattini.
  • Il nome deve terminare con una lettera o un numero.
namespace Stringa definita dall'utente che accetta caratteri alfanumerici e trattini, ad esempio: my-sns-1 Identifica il nome dello spazio dei nomi supervisore in cui il cluster verrà distribuito. Si tratta di un riferimento a uno spazio dei nomi supervisore esistente nel cluster supervisore.
spec Sezione per le specifiche tecniche del cluster Include la specifica, espressa in modalità dichiarativa, per lo stato finale del cluster, incluso toplogy del nodo e distribution del software Kubernetes.
distribution Sezione per la specifica della versione di Tanzu Kubernetes Indica la distribuzione per il cluster: il software del cluster di Tanzu Kubernetes installato nel piano di controllo e i nodi worker, incluso Kubernetes stesso.
version Stringa alfanumerica con trattini che rappresenta la versione di Kubernetes, ad esempio: v1.20.2+vmware.1-tkg.1, v1.20.2 o v1.20 Specifica la versione del software della distribuzione di Kubernetes da installare nei nodi del cluster utilizzando la notazione della versione semantica. È possibile specificare la versione completa o utilizzare le abbreviazioni della versione, ad esempio "versione: v1.20.2", che è stata risolta nell'immagine più recente corrispondente alla versione patch, o "versione: v1.20", che è stata risolta nella versione patch corrispondente più recente. Una volta creata, la versione risolta viene visualizzata come "fullVersion" nella descrizione del cluster.
topology Sezione per le topologie dei nodi del cluster Include campi che descrivono il numero, lo scopo e l'organizzazione dei nodi del cluster, nonché le risorse allocate a ciascun nodo. I nodi del cluster sono raggruppati in pool in base allo scopo previsto: control-plane o worker. Ogni pool è omogeneo, utilizza la stessa allocazione di risorse e lo stesso storage.
controlPlane Sezione per le impostazioni del piano di controllo Specifica la topologia del piano di controllo del cluster, incluso il numero di nodi (count), il tipo di macchina virtuale (class) e le risorse di storage allocate per ogni nodo (storageClass).
count Un numero intero, 1 o 3 Specifica il numero di nodi del piano di controllo. Il piano di controllo deve avere un numero di nodi dispari.
class Elemento definito dal sistema sotto forma di una stringa di un set enumerato, ad esempio: guaranteed-small o best-effort-large Specifica il nome della VirtualMachineClass che descrive le impostazioni dell'hardware virtuale da utilizzare per ciascun nodo del pool. Controlla l'hardware disponibile per il nodo (CPU e memoria), nonché le richieste e i limiti di tali risorse. Vedere Classi di macchine virtuali per i cluster di Tanzu Kubernetes.
storageClass node-storage (ad esempio) Identifica la classe di storage da utilizzare per lo storage dei dischi in cui sono archiviati i file system root dei nodi del piano di controllo. Eseguire kubectl describe ns nello spazio dei nomi per visualizzare le classi di storage disponibili. Le classi di storage disponibili per lo spazio dei nomi dipendono dallo storage impostato dall'amministratore di vSphere. Le classi di storage associate allo spazio dei nomi supervisore vengono replicate nel cluster. In altre parole, per essere un valore valido per questo campo, la classe di storage deve essere disponibile nello spazio dei nomi supervisore. Vedere Configurazione e gestione degli spazi dei nomi vSphere.
volumes
Impostazione di storage facoltativa
  • volumi:
    • nome: string
    • mountPath: /dir/path
    • capacità
      • storage: dimensioni GiB
Può specificare parametri di storage e disco separati per etcd nei nodi del piano di controllo. Vedere l'esempio Cluster con dischi separati e parametri di storage.
workers Sezione per le impostazioni dei nodi worker Specifica la topologia dei nodi worker del cluster, incluso il numero di nodi (count), il tipo di macchina virtuale (class) e le risorse di storage allocate per ciascun nodo (storageClass).
count Un numero intero compreso tra 0 e 150, ad esempio 1, 2 o 7 Specifica il numero di nodi worker nel cluster. È possibile creare un cluster con zero nodi worker per consentire un cluster con i soli nodi del piano di controllo. Non esiste un limite massimo definito per il numero di nodi worker, ma è consigliabile includerne al massimo 150.
class Elemento definito dal sistema sotto forma di una stringa di un set enumerato, ad esempio: guaranteed-small o best-effort-large Specifica il nome della VirtualMachineClass che descrive le impostazioni dell'hardware virtuale da utilizzare per ciascun nodo del pool. Controlla l'hardware disponibile per il nodo (CPU e memoria), nonché le richieste e i limiti di tali risorse. Vedere Classi di macchine virtuali per i cluster di Tanzu Kubernetes.
storageClass node-storage (ad esempio) Identifica la classe di storage da utilizzare per lo storage dei dischi in cui sono archiviati i file system root dei nodi worker. Eseguire kubectl describe ns nello spazio dei nomi per elencare le classi di storage disponibili. Le classi di storage disponibili per lo spazio dei nomi dipendono dallo storage impostato dall'amministratore di vSphere. Le classi di storage associate allo spazio dei nomi supervisore vengono replicate nel cluster. In altre parole, per essere valida, la classe di storage deve essere disponibile nello spazio dei nomi supervisore. Vedere Configurazione e gestione degli spazi dei nomi vSphere.
volumes
Impostazione di storage facoltativa
  • volumi:
    • nome: string
    • mountPath: /dir/path
    • capacità
      • storage: dimensioni GiB
Può specificare parametri di storage e disco separati per le immagini del container nei nodi worker. Vedere l'esempio Cluster con dischi separati e parametri di storage.
settings Sezione per le impostazioni specifiche del cluster. Tutte le impostazioni spec.settings sono facoltative. Identifica le informazioni di configurazione di runtime facoltative per il cluster, inclusi i dettagli di network del nodo e lo storage persistente per i pod.
storage Sezione per la specifica dello storage Identifica le voci di storage del volume persistente (PV) per i carichi di lavoro di container.
classes Array di una o più stringhe definite dall'utente, ad esempio: ["gold", "silver"] Specifica le classi di storage con volume persistente (PV) denominate per i carichi di lavoro di container. Le classi di storage associate allo spazio dei nomi supervisore vengono replicate nel cluster. In altre parole, per essere un valore valido, la classe di storage deve essere disponibile nello spazio dei nomi supervisore. Vedere l'esempio Cluster con classi di storage e classe predefinita per volumi persistenti.
defaultClass silver (ad esempio) Specifica una classe di storage denominata da annotare come predefinita nel cluster. Se non viene specificata, non è disponibile alcun valore predefinito. Non è necessario specificare uno o più valori di classes per specificare defaultClass. Alcuni carichi di lavoro possono richiedere una classe predefinita, ad esempio Helm. Vedere l'esempio Cluster con classi di storage e classe predefinita per volumi persistenti.
network Indicatore di sezione per le impostazioni di rete Specifica le impostazioni relative alla rete per il cluster.
cni Indicatore di sezione per la specifica dell'interfaccia CNI Identifica il plug-in CNI (Container Networking Interface) per il cluster. L'impostazione predefinita è Antrea, che non deve essere specificata per i nuovi cluster.
name Stringa antrea o calico Specifica l'interfaccia CNI da utilizzare. Sono supportati Antrea e Calico. La configurazione di sistema imposta Antrea come interfaccia CNI predefinita. È possibile modificare l'interfaccia CNI predefinita. Se si utilizza il valore predefinito, non è necessario specificare questo campo.
services Indicatore di sezione per la specifica delle subnet dei servizi Kubernetes Identifica le impostazioni di rete per i servizi Kubernetes. Il valore predefinito è 10.96.0.0/12.
cidrBlocks Array ["198.51.100.0/12"] (ad esempio) Specifica un intervallo di indirizzi IP da utilizzare per i servizi Kubernetes. Il valore predefinito è 10.96.0.0/12. Non deve sovrapporsi alle impostazioni scelte per il cluster supervisore. Anche se questo campo è un array, e consente quindi più intervalli, al momento è consentito un solo intervallo di IP. Vedere gli esempi di rete disponibili in Esempi di provisioning dei cluster Tanzu Kubernetes mediante l'API v1alpha1 del Servizio Tanzu Kubernetes Grid.
pods Indicatore di sezione per la specifica delle subnet dei pod Kubernetes Specifica le impostazioni di rete per i pod. Il valore predefinito è 192.168.0.0/16. Le dimensioni minime del blocco sono /24.
cidrBlocks Array ["192.0.2.0/16"] (ad esempio) Specifica un intervallo di indirizzi IP da utilizzare per i pod Kubernetes. Il valore predefinito è 192.168.0.0/16. Non deve sovrapporsi alle impostazioni scelte per il cluster supervisore. Le dimensioni della subnet dei pod devono essere maggiori o uguali a /24. Anche se questo campo è un array, e consente quindi più intervalli, al momento è consentito un solo intervallo di IP. Vedere gli esempi di rete disponibili in Esempi di provisioning dei cluster Tanzu Kubernetes mediante l'API v1alpha1 del Servizio Tanzu Kubernetes Grid.
serviceDomain "cluster.local" Specifica il dominio del servizio per il cluster. Il valore predefinito è cluster.local.
proxy Sezione che specifica la configurazione del proxy HTTP(s) per il cluster. Se viene implementata, tutti i campi sono obbligatori. Include i campi per le impostazioni del proxy specificate. Verranno compilati automaticamente se è configurato un proxy globale e non viene configurato un proxy cluster individuale. Vedere l'esempio Cluster con server proxy.
httpProxy http://<user>:<pwd>@<ip>:<port> Specifica un URL proxy da utilizzare per la creazione di connessioni HTTP esterne al cluster.
httpsProxy http://<user>:<pwd>@<ip>:<port> Specifica un URL proxy da utilizzare per la creazione di connessioni HTTPS esterne al cluster.
noProxy

Array di blocchi CIDR da non usare come proxy, ad esempio: [10.246.0.0/16,192.168.144.0/20,192.168.128.0/20].

I valori richiesti provengono dalla rete del carico di lavoro nel cluster supervisore: Pod CIDRs, Ingress CIDRs e Egress CIDRs.

Fare riferimento all'immagine seguente per i valori da includere nel campo di array noProxy.

Non è necessario usare il proxy per le subnet utilizzate dalla rete del carico di lavoro nel cluster supervisore per i pod, l'ingresso e l'uscita.

Non è necessario includere il CIDR dei servizi del cluster supervisore nel campo noProxy. I cluster di Tanzu Kubernetes non interagiscono con tali servizi.

Agli endpoint localhost e 127.0.0.1 non viene applicato il proxy per impostazione predefinita. Non è necessario aggiungerli al campo noProxy.

Ai CIDR di pod e servizio per i cluster di Tanzu Kubernetes non viene applicato il proxy per impostazione predefinita. Non è necessario aggiungerli al campo noProxy.

Vedere l'esempio Cluster con server proxy.

trust Marcatore di sezione per i parametri trust. Non accetta alcun dato.
additionalTrustedCAs Accetta un array di certificati con name e data per ciascuno. Non accetta alcun dato.
name Stringa Nome del certificato TLS.
data Stringa Stringa codificata in base64 di un certificato pubblico con codifica PEM.

Recuperare i valori noProxy richiesti da Rete carico di lavoro nel Cluster supervisore, come mostrato nell'immagine.