Questo argomento spiega come creare una risorsa ClusterClass
personalizzata per un cluster di gestione autonomo Tanzu Kubernetes Grid (TKG), come utilizzarlo per creare cluster del carico di lavoro basati sulla classe e come utilizzare cluster basati sulla ClusterClass personalizzata.
Per basare un cluster su una ClusterClass personalizzata , impostare il valore di spec.topology.class
sul nome della ClusterClass personalizzata.
Queste procedure non si applicano a TKG con un supervisore vSphere with Tanzu.
AttenzioneLa ClusterClass personalizzata è una funzionalità di Kubernetes sperimentale, in base alla documentazione relativa all'API del cluster upstream. Poiché la gamma di personalizzazioni disponibili con la ClusterClass personalizzata è molto vasta, VMware non può testare o convalidare tutte le personalizzazioni possibili. I clienti sono responsabili del test, della convalida e della risoluzione dei problemi dei propri cluster con ClusterClass personalizzata. I clienti possono aprire ticket di supporto relativi ai cluster con ClusterClass personalizzata. Tuttavia, l'assistenza VMware è limitata solo al massimo sforzo possibile e non può garantire la risoluzione di tutti i problemi aperti per i cluster con ClusterClass personalizzata. I clienti devono essere consapevoli di questi rischi prima di distribuire cluster con ClusterClass personalizzata negli ambienti di produzione. Per creare cluster del carico di lavoro utilizzando la risorsa
ClusterClass
predefinita, eseguire le procedure indicate in Passaggi per la distribuzione del cluster.
Per creare una ClusterClass personalizzata, sono necessari ytt
, imgpkg
, la CLI di Tanzu e kubectl
installati in locale. Per informazioni su come scaricare e installare ytt
e imgpkg
, vedere Installazione degli strumenti Carvel.
Per creare una ClusterClass personalizzata, VMware consiglia di iniziare con il manifesto ClusterClass predefinito esistente o con i modelli YTT descritti in Creazione di un manifesto ClusterClass di base. Quando viene pubblicata una nuova versione dell'oggetto ClusterClass predefinito, ad esempio con una nuova versione di TKG, è possibile applicare l'overlay alla nuova versione per implementare le stesse personalizzazioni. Le procedure in questo argomento descrivono questo metodo di creazione di un oggetto ClusterClass personalizzato.
Per scrivere un oggetto ClusterClass completamente nuovo senza utilizzare un modello esistente, eseguire la procedura descritta in Scrittura di una ClusterClass nella documentazione di Cluster API.
È possibile creare un manifesto ClusterClass di base basato sul manifesto ClusterClass predefinito o sui modelli YTT che Tanzu Kubernetes Grid fornisce. Tutti i cluster personalizzati creati devono essere basati su questo manifesto ClusterClass di base. Il processo comprende 3 passaggi:
Sono disponibili tre metodi con cui è possibile creare un manifesto ClusterClass di base per i cluster.
ImportanteI metodi 2 e 3 sono destinati agli utenti avanzati che devono soddisfare i seguenti casi d'uso:
- Si desidera generare definizioni ClusterClass personalizzate per il sistema CI, senza distribuire un cluster di gestione autonomo.
- Si desidera che i cluster del carico di lavoro utilizzino un'infrastruttura diversa da quella dei cluster di gestione.
In Tanzu Kubernetes Grid 2.3.0 e versioni successive, dopo aver distribuito un cluster di gestione, è possibile trovare il manifesto ClusterClass predefinito nella cartella ~/.config/tanzu/tkg/clusterclassconfigs
.
Per visualizzare il manifesto per le piattaforme di destinazione in cui è stato distribuito un cluster di gestione, eseguire il comando seguente:
tree ~/.config/tanzu/tkg/clusterclassconfigs/
Ad esempio, se è stato distribuito un cluster di gestione in vSphere, verrà visualizzato il file YAML seguente.
.config/tanzu/tkg/clusterclassconfigs/
└── tkg-vsphere-default-v1.1.1.yaml
1 directory, 1 file
Il manifesto generato contiene informazioni sulla piattaforma di destinazione estratte dalla distribuzione del cluster di gestione. È possibile utilizzare direttamente questo come manifesto di base per la creazione personalizzata di ClusterClass. Per i passaggi successivi, vedere Personalizzazione del manifesto ClusterClass di base.
Dopo aver installato la CLI di Tanzu versione 0.90.1 o successiva, ma prima di distribuire un cluster di gestione, è possibile trovare i modelli YTT per la ClusterClass predefinita nella cartella ~/.config/tanzu/tkg/providers/infrastructure-<provider name>/<provider version>/cconly
. È possibile utilizzare questi modelli per creare un manifesto di base per la creazione di una ClusterClass personalizzata.
Per trovare i modelli, eseguire il comando appropriato per la piattaforma di destinazione.
tree ~/.config/tanzu/tkg/providers/infrastructure-vsphere/v1.7.0/cconly
Verranno visualizzati i seguenti file YAML.
.config/tanzu/tkg/providers/infrastructure-vsphere/v1.7.0/cconly
├── base.yaml
├── overlay-kube-apiserver-admission.yaml
└── overlay.yaml
1 directory, 3 files
tree ~/.config/tanzu/tkg/providers/infrastructure-aws/v2.1.3/cconly
Verranno visualizzati i seguenti file YAML.
.config/tanzu/tkg/providers/infrastructure-aws/v2.1.3/cconly
├── base.yaml
├── overlay-kube-apiserver-admission.yaml
└── overlay.yaml
tree ~/.config/tanzu/tkg/providers/infrastructure-azure/v1.9.2/cconly/
Verranno visualizzati i seguenti file YAML.
.config/tanzu/tkg/providers/infrastructure-azure/v1.9.2/cconly/
├── base.yaml
├── overlay-kube-apiserver-admission.yaml
└── overlay.yaml
Creare un file data-value YTT denominato user_input.yaml
con il seguente contenuto.
#@data/values
#@overlay/match-child-defaults missing_ok=True
---
Aggiungere i valori di configurazione appropriati per la piattaforma di destinazione in user_input.yaml
.
È possibile utilizzare i valori di configurazione utilizzati durante la distribuzione di un cluster di gestione. Ad esempio, un file user_input.yaml
per vSphere sarà simile al seguente:
#@data/values
#@overlay/match-child-defaults missing_ok=True
---
ENABLE_MHC: true
ENABLE_MHC_CONTROL_PLANE: true
ENABLE_MHC_WORKER_NODE: true
MHC_UNKNOWN_STATUS_TIMEOUT: 5m
MHC_FALSE_STATUS_TIMEOUT: 12m
MHC_MAX_UNHEALTHY_CONTROL_PLANE: 100%
MHC_MAX_UNHEALTHY_WORKER_NODE: 100%
NODE_STARTUP_TIMEOUT: 20m
VSPHERE_TLS_THUMBPRINT: 0A:B4:8F:2E:E4:34:82:90:D5:6A:F8:77:8C:8C:51:24:D2:49:3B:E8
VSPHERE_DATACENTER: /dc0
VSPHERE_DATASTORE: /dc0/datastore/sharedVmfs-0
VSPHERE_FOLDER: /dc0/vm
VSPHERE_NETWORK: /dc0/network/VM Network
VSPHERE_RESOURCE_POOL: /dc0/host/cluster0/Resources
VSPHERE_SERVER: xxx.xxx.xxx.xxx
VSPHERE_USERNAME: [email protected]
VSPHERE_CONTROL_PLANE_DISK_GIB: "20"
VSPHERE_CONTROL_PLANE_MEM_MIB: "8192"
VSPHERE_CONTROL_PLANE_NUM_CPUS: "4" VSPHERE_WORKER_DISK_GIB: "20"
VSPHERE_WORKER_MEM_MIB: "8192"
VSPHERE_WORKER_NUM_CPUS: "4"
VSPHERE_CLUSTER_CLASS_VERSION: "v1.1.1" # change it to the version in TKG BOM
NAMESPACE: "tkg-system" # DO NOT change it
Utilizzare ytt
per generare il manifesto ClusterClass di base per la piattaforma di destinazione.
ytt -f ~/.config/tanzu/tkg/providers/infrastructure-vsphere/v1.7.0/cconly -f ~/.config/tanzu/tkg/providers/config_default.yaml -f user_input.yaml
ytt -f ~/.config/tanzu/tkg/providers/infrastructure-aws/v2.1.3/cconly -f ~/.config/tanzu/tkg/providers/config_default.yaml -f user_input.yaml
ytt -f ~/.config/tanzu/tkg/providers/infrastructure-azure/v1.9.2/cconly -f ~/.config/tanzu/tkg/providers/config_default.yaml -f user_input.yaml
Dopo aver generato un manifesto di base per l'infrastruttura, per i passaggi successivi vedere Personalizzazione del manifesto ClusterClass di base.
I modelli YTT per la ClusterClass predefinita sono disponibili per il download anche dal repository di immagini TKG. È possibile utilizzare questi modelli per creare un manifesto di base per la creazione di una ClusterClass personalizzata.
Estrarre i modelli YTT dall'immagine providerTemplate
nel registro TKG ufficiale.
Per TKG v2.4.0, il tag dell'immagine providerTemplate
è v0.31.0
. È possibile trovare la versione del tag nel file BOM TKG cercando providerTemplateImage
.
imgpkg pull -i projects.registry.vmware.com/tkg/tanzu_core/provider/provider-templates:v0.31.0 -o providers
Viene visualizzato un output simile al seguente:
Pulling image 'projects.registry.vmware.com/tkg/tanzu_core/provider/provider-templates@sha256:b210d26c610800f5da4b3aa55bfbc8ffae9275fa2c4073a2b1332e2045a6e1da'
Extracting layer 'sha256:3ba336232c0e616b2b6c8f263593497c5a059a645f4c6137ea0eb658f4a8538a' (1/1)
Succeeded
I file del modello YAML vengono scaricati in una cartella providers
.
Creare un file data-value YTT denominato user_input.yaml
con il seguente contenuto.
#@data/values
#@overlay/match-child-defaults missing_ok=True
---
Aggiungere i valori di configurazione appropriati per la piattaforma di destinazione in user_input.yaml
.
È possibile utilizzare i valori di configurazione utilizzati durante la distribuzione di un cluster di gestione. Ad esempio, un file user_input.yaml
per vSphere sarà simile al seguente:
#@data/values
#@overlay/match-child-defaults missing_ok=True
---
ENABLE_MHC: true
ENABLE_MHC_CONTROL_PLANE: true
ENABLE_MHC_WORKER_NODE: true
MHC_UNKNOWN_STATUS_TIMEOUT: 5m
MHC_FALSE_STATUS_TIMEOUT: 12m
MHC_MAX_UNHEALTHY_CONTROL_PLANE: 100%
MHC_MAX_UNHEALTHY_WORKER_NODE: 100%
NODE_STARTUP_TIMEOUT: 20m
VSPHERE_TLS_THUMBPRINT: 0A:B4:8F:2E:E4:34:82:90:D5:6A:F8:77:8C:8C:51:24:D2:49:3B:E8
VSPHERE_DATACENTER: /dc0
VSPHERE_DATASTORE: /dc0/datastore/sharedVmfs-0
VSPHERE_FOLDER: /dc0/vm
VSPHERE_NETWORK: /dc0/network/VM Network
VSPHERE_RESOURCE_POOL: /dc0/host/cluster0/Resources
VSPHERE_SERVER: xxx.xxx.xxx.xxx
VSPHERE_USERNAME: [email protected]
VSPHERE_CONTROL_PLANE_DISK_GIB: "20"
VSPHERE_CONTROL_PLANE_MEM_MIB: "8192"
VSPHERE_CONTROL_PLANE_NUM_CPUS: "4" VSPHERE_WORKER_DISK_GIB: "20"
VSPHERE_WORKER_MEM_MIB: "8192"
VSPHERE_WORKER_NUM_CPUS: "4"
VSPHERE_CLUSTER_CLASS_VERSION: "v1.1.1" # change it to the version in TKG BOM
NAMESPACE: "tkg-system" # DO NOT change it
Utilizzare ytt
per generare il manifesto ClusterClass di base per la piattaforma di destinazione.
ytt -f providers/infrastructure-vsphere/v1.7.0/cconly -f providers/config_default.yaml -f user_input.yaml
ytt -f providers/infrastructure-aws/v2.1.3/cconly -f providers/config_default.yaml -f user_input.yaml
ytt -f ~/.config/tanzu/tkg/providers/infrastructure-azure/v1.9.2/cconly -f ~/.config/tanzu/tkg/providers/config_default.yaml -f user_input.yaml
Dopo aver generato un manifesto di base per l'infrastruttura, per i passaggi successivi vedere Personalizzazione del manifesto ClusterClass di base.
Per personalizzare il manifesto ClusterClass, creare file di overlay ytt
insieme al manifesto. L'esempio seguente illustra come modificare un parametro del kernel Linux nella definizione di ClusterClass.
Creare una cartella custom
con la struttura seguente:
tree custom
custom
|-- overlays
|-- filter.yaml
|-- kernels.yaml
Modificare custom/overlays/kernels.yaml
.
Ad esempio, aggiungere nfConntrackMax
come variabile e definire una patch per tale variabile che aggiunga al suo valore il parametro net.netfilter.nf_conntrack_max
per i nodi del piano di controllo.
Questo overlay aggiunge un comando al campo preKubeadmCommands
per scrivere la configurazione in sysctl.conf
. Per rendere effettiva l'impostazione, aggiungere il comando sysctl -p
per applicare questa modifica. Le definizioni di ClusterClass predefinite non sono modificabili, quindi questo overlay modifica anche il nome della ClusterClass personalizzata e tutti i relativi modelli aggiungendo -extended
.
cat custom/overlays/kernels.yaml
#@ load("@ytt:overlay", "overlay")
#@overlay/match by=overlay.subset({"kind":"ClusterClass"})
---
apiVersion: cluster.x-k8s.io/v1beta1
kind: ClusterClass
metadata:
name: tkg-vsphere-default-v1.1.1-extended
spec:
variables:
- name: nfConntrackMax
required: false
schema:
openAPIV3Schema:
type: string
patches:
- name: nfConntrackMax
enabledIf: '{{ not (empty .nfConntrackMax) }}'
definitions:
- selector:
apiVersion: controlplane.cluster.x-k8s.io/v1beta1
kind: KubeadmControlPlaneTemplate
matchResources:
controlPlane: true
jsonPatches:
- op: add
path: /spec/template/spec/preKubeadmCommands/-
valueFrom:
template: echo "net.netfilter.nf_conntrack_max={{ .nfConntrackMax }}" >> /etc/sysctl.conf
- op: add
path: /spec/template/spec/preKubeadmCommands/-
value: sysctl -p
Rimuovere le risorse che non si desidera modificare.
In questo esempio, tutti i modelli sono pensati per essere condivisi tra la ClusterClass personalizzata e quella predefinita in modo che vengano tutti rimossi. È inoltre possibile creare un modello personalizzato basato sul modello predefinito nello stesso modo, nel qual caso assicurarsi che kind
non venga escluso.
cat custom/overlays/filter.yaml
#@ load("@ytt:overlay", "overlay")
#@overlay/match by=overlay.not_op(overlay.subset({"kind": "ClusterClass"})),expects="0+"
---
#@overlay/remove
Utilizzare il manifesto ClusterClass predefinito per generare la ClusterClass di base.
ytt -f tkg-vsphere-default-v1.1.1.yaml -f custom/overlays/filter.yaml > default_cc.yaml
Generare la ClusterClass personalizzata.
ytt -f tkg-vsphere-default-v1.1.1.yaml -f custom/ > custom_cc.yaml
(Facoltativo) Verificare la differenza tra la ClusterClass predefinita e quella personalizzata per confermare che le modifiche siano state applicate.
diff default_cc.yaml custom_cc.yaml
Viene visualizzato un output simile al seguente:
4c4
< name: tkg-vsphere-default-v1.1.1
---
> name: tkg-vsphere-default-v1.1.1-extended
638a639,643
> - name: nfConntrackMax
> required: false
> schema:
> openAPIV3Schema:
> type: string
2607a2613,2628
> - name: nfConntrackMax
> enabledIf: '{{ not (empty .nfConntrackMax) }}'
> definitions:
> - selector:
> apiVersion: controlplane.cluster.x-k8s.io/v1beta1
> kind: KubeadmControlPlaneTemplate
> matchResources:
> controlPlane: true
> jsonPatches:
> - op: add
> path: /spec/template/spec/preKubeadmCommands/-
> valueFrom:
> template: echo "net.netfilter.nf_conntrack_max={{ .nfConntrackMax }}" >> /etc/sysctl.conf
> - op: add
> path: /spec/template/spec/preKubeadmCommands/-
> value: sysctl -p
In questo esempio, si può notare che -extended
è stato aggiunto al nome del cluster.
Per consentire al cluster di gestione di utilizzare la ClusterClass personalizzata, installarla applicando il nuovo manifesto.
Applicare il manifesto ClusterClass.
kubectl apply -f custom_cc.yaml
L'output dovrebbe essere il seguente.
clusterclass.cluster.x-k8s.io/tkg-vsphere-default-v1.1.1-extended created
Controllare se la ClusterClass personalizzata è stata propagata nello spazio dei nomi predefinito, ad esempio:
kubectl get clusterclass
L'output dovrebbe essere il seguente.
NAME AGE
tkg-vsphere-default-v1.1.1 2d23h
tkg-vsphere-default-v1.1.1-extended 11s
Dopo aver creato la ClusterClass personalizzata, è possibile utilizzarla per creare un nuovo cluster del carico di lavoro che includa la personalizzazione.
Eseguire tanzu cluster create
con l'opzione --dry-run
per generare un manifesto del cluster da un file di configurazione del cluster standard.
tanzu cluster create --file workload-1.yaml --dry-run > default_cluster.yaml
Creare un overlay ytt
o modificare direttamente il manifesto del cluster.
L'opzione consigliata consiste nel creare un overlay ytt
, ad esempio cluster_overlay.yaml
, per eseguire le operazioni seguenti:
topology.class
con il nome della ClusterClass predefinitavariables
, con un valore predefinitoCome per la modifica delle specifiche degli oggetti ClusterClass, l'utilizzo di un overlay come indicato di seguito consente di applicare automaticamente le modifiche ai nuovi oggetti ogni volta che viene rilasciata una nuova versione del cluster upstream.
#@ load("@ytt:overlay", "overlay")
#@overlay/match by=overlay.subset({"kind":"Cluster"})
---
apiVersion: cluster.x-k8s.io/v1beta1
kind: Cluster
spec:
topology:
class: tkg-vsphere-default-v1.1.1-extended
variables:
- name: nfConntrackMax
value: "1048576
Generare il manifesto custom_cluster.yaml
:
ytt -f default_cluster.yaml -f cluster_overlay.yaml > custom_cluster.yaml
(Facoltativo) Come per la ClusterClass precedente, è possibile eseguire diff
per confrontare il manifesto della classe del cluster personalizzata con un cluster predefinito basato sulla classe, ad esempio:
diff custom_cluster.yaml default_cluster.yaml
Viene visualizzato un output simile al seguente:
< class: tkg-vsphere-default-v1.1.1
---
> class: tkg-vsphere-default-v1.1.1-extended
142a143,144
> - name: nfConntrackMax
> value: "1048576"
Creare un cluster del carico di lavoro personalizzato in base al manifesto personalizzato generato in precedenza, come indicato di seguito.
Creare il cluster.
tanzu cluster create -f custom_cluster.yaml
Controllare le proprietà degli oggetti creati.
Ad esempio, con la modifica del kernel precedente, recuperare l'oggetto KubeadmControlPlane
e verificare che la configurazione del kernel sia impostata:
kubectl get kcp workload-1-jgwd9 -o yaml
Viene visualizzato un output simile al seguente:
apiVersion: controlplane.cluster.x-k8s.io/v1beta1
kind: KubeadmControlPlane
...
preKubeadmCommands:
- hostname "{{ ds.meta_data.hostname }}"
- echo "::1 ipv6-localhost ipv6-loopback" >/etc/hosts
- echo "127.0.0.1 localhost" >>/etc/hosts
- echo "127.0.0.1 {{ ds.meta_data.hostname }}" >>/etc/hosts
- echo "{{ ds.meta_data.hostname }}" >/etc/hostname
- echo "net.netfilter.nf_conntrack_max=1048576" >> /etc/sysctl.conf
- sysctl -p
...
Accedere a un nodo del piano di controllo e verificare che il valore di sysctl.conf
sia stato modificato:
capv@workload-1-jgwd9:~$ sudo cat /etc/sysctl.conf
...
net.ipv6.neigh.default.gc_thresh3=16384
fs.file-max=9223372036854775807
net.netfilter.nf_conntrack_max=1048576
Se sono stati creati cluster personalizzati con una versione precedente, è possibile aggiornarli alla versione di TKG più recente.
Prima di aggiornare i cluster, è necessario eseguire i passaggi preparatori.
Prima di aggiornare il cluster di gestione, creare cluster di test con la versione del manifesto personalizzato creato per la versione precedente.
Ad esempio, creare un cluster personalizzato denominato test-upgrade
.
Recuperare le informazioni sulle versioni di ClusterClass disponibili con il cluster di gestione TKG 2.2.
kubectl get clusterclass
Se sono stati creati cluster personalizzati con TKG v2.2.0, la versione di ClusterClass deve essere 1.0.0. Ad esempio:
NAME AGE
tkg-vsphere-default-extended-v1.0.0 21m
tkg-vsphere-default-v1.0.0 10d
Recuperare le informazioni sulle versioni di ClusterClass in esecuzione nel cluster test-upgrade
.
kubectl get cluster test-upgrade -o jsonpath='{.spec.topology.class}'
L'output deve essere tkg-vsphere-default-extended-v1.0.0
.
Seguire le istruzioni disponibili in Aggiornamento dei cluster di gestione autonomi per aggiornare il cluster di gestione a TKG 2.4.
Recuperare le informazioni sulla versione di ClusterClass disponibile dopo l'aggiornamento del cluster di gestione alla versione v.2.4.
kubectl get cluster mgmt-cluster-name -n tkg-system -o jsonpath='{.spec.topology.class}'
L'output deve essere tkg-vsphere-default-v1.1.1
se il cluster di gestione è in esecuzione in vSphere.
tkg-vsphere-default-v1.1.1-extended
e includere le stesse variabili personalizzate della versione precedente tkg-vsphere-default-extended-v1.0.0
.custom_cc.yaml
.Installare la nuova ClusterClass personalizzata nel cluster di gestione.
kubectl apply -f custom_cc.yaml
Recuperare le informazioni sulle versioni di ClusterClass ora disponibili con il cluster di gestione.
kubectl get clusterclass
Devono essere visualizzate sia le versioni precedenti sia le versioni più recenti.
NAME AGE
tkg-vsphere-default-extended-v1.0.0 61m
tkg-vsphere-default-v1.0.0 10d
tkg-vsphere-default-v1.1.1 25m
tkg-vsphere-default-v1.1.1-extended 15s
Dopo aver eseguito i passaggi preparatori, è possibile testare l'aggiornamento nel cluster di prova prima di aggiornare i cluster di produzione.
Ricreare la base del cluster test-upgrade
dalla versione precedente della ClusterClass personalizzata a quella nuova.
kubectl patch cluster test-upgrade --type merge -p '{"spec": {"topology": {"class": "tkg-vsphere-default-v1.1.1-extended"}}}'
L'output deve essere cluster.cluster.x-k8s.io/test-upgrade patched
.
Recuperare le informazioni sulla versione di ClusterClass ora in esecuzione nel cluster test-upgrade
.
kubectl get cluster test-upgrade -o jsonpath='{.spec.topology.class}'
L'output deve essere tkg-vsphere-default-v1.1.1-extended
. In precedenza era tkg-vsphere-default-extended-v1.0.0
.
Attendere alcuni minuti ed eseguire kubectl get cluster
finché non viene visualizzato che UpdatesAvailable
è stato aggiornato a true
.
kubectl get cluster test-upgrade -o yaml
Quando è pronto, nell'output deve essere visualizzato un messaggio simile al seguente:
...
status:
conditions:
...
- lastTransitionTime: "2023-06-19T09:59:21Z"
message: '[v1.25.9+vmware.1-tkg.1-20230609 v1.26.4+vmware.1-tkg.1-20230609]'
status: "True"
type: UpdatesAvailable
controlPlaneReady: true
infrastructureReady: true
observedGeneration: 5
phase: Provisioned
Aggiornare il cluster test-upgrade
.
tanzu cluster upgrade test-upgrade
Controllare le proprietà degli oggetti creati.
Ad esempio, con la modifica del kernel descritta nell'esempio precedente, recuperare l'oggetto KubeadmControlPlane
e verificare che la configurazione del kernel sia impostata:
kubectl get kcp test-upgrade-nsc6d -o yaml
Viene visualizzato un output simile al seguente:
apiVersion: controlplane.cluster.x-k8s.io/v1beta1
kind: KubeadmControlPlane
...
preKubeadmCommands:
- hostname "{{ ds.meta_data.hostname }}"
- echo "::1 ipv6-localhost ipv6-loopback" >/etc/hosts
- echo "127.0.0.1 localhost" >>/etc/hosts
- echo "127.0.0.1 {{ ds.meta_data.hostname }}" >>/etc/hosts
- echo "{{ ds.meta_data.hostname }}" >/etc/hostname
- sed -i 's|".*/pause|"projects-stg.registry.vmware.com/tkg/pause|' /etc/containerd/config.toml
- systemctl restart containerd
- echo "net.netfilter.nf_conntrack_max=1048576" >> /etc/sysctl.conf
- sysctl -p
Se l'aggiornamento di prova è stato eseguito correttamente, ripetere i passaggi da Esecuzione dell'aggiornamento nei cluster di produzione.
NotaSe si verificano errori durante l'aggiornamento, è possibile eseguire il rollback ricreando la base del cluster dalla nuova versione della ClusterClass personalizzata alla versione precedente.
Se sono stati creati cluster con la ClusterClass predefinita e si desidera aggiornarli per utilizzare una ClusterClass personalizzata, utilizzare kubectl
per modificare l'oggetto cluster:
spec.topology.class
con il nome del manifesto ClassClass personalizzato.spec.topology.variables
per aggiungere le variabili personalizzate.Se si desidera ripristinare una nuova versione della ClusterClass predefinita:
spec.topology.class
alla nuova versione della ClusterClass predefinita.spec.topology.variables
per rimuovere le variabili personalizzate. Potrebbe essere necessario aggiungere nuove variabili definite nella nuova versione della ClusterClass predefinita.