In diesem Thema wird erläutert, wie Sie die Clusterinfrastruktur für Tanzu Kubernetes Grid (TKG) mit einem eigenständigen Verwaltungscluster auf vSphere sichern und wiederherstellen, indem Sie:
Hinweis
- VMware bietet keine Unterstützung für die Verwendung von Velero zum Sichern eigenständiger TKG-Verwaltungscluster.
- Wenn ein eigenständiger Verwaltungscluster nach der Bereitstellung neu konfiguriert wird, werden bei einer erneuten Erstellung wie hier beschrieben möglicherweise nicht alle zugehörigen Ressourcen wiederhergestellt.
Informationen zum Sichern und Wiederherstellen der Arbeitslasten und dynamischen Speichervolumes, die auf Tanzu Kubernetes Grid(TKG)-Arbeitslastclustern mit einem eigenständigen Verwaltungscluster gehostet werden, finden Sie unter Sichern und Wiederherstellen von Clusterarbeitslasten.
Informationen zum Sichern und Wiederherstellen von vSphere with Tanzu-Clustern, einschließlich Supervisor-Clustern und den von ihnen erstellten Arbeitslastclustern, finden Sie in der Dokumentation zu VMware vSphere 8.0 unter Sichern und Wiederherstellen von vSphere with Tanzu.
Vorsicht
Diese Funktion befindet sich im nicht unterstützten Tech Preview-Zustand. Weitere Informationen finden Sie unter TKG-Funktionsstatus.
Pinniped-Authentifizierung bei Arbeitslastclustern funktioniert nicht, nachdem deren Verwaltungscluster neu erstellt wurde.
Sie können Velero, ein Open Source Community-Standardtool, verwenden, um Infrastruktur und Arbeitslasten eigenständiger TKG-Verwaltungscluster zu sichern und wiederherzustellen.
Velero unterstützt eine Vielzahl von Speicheranbietern für das Speichern der Sicherungen. Velero unterstützt auch:
Ein Tanzu Kubernetes Grid-Abonnement bietet Unterstützung für die von VMware getestete, kompatible Velero-Verteilung, die über die Download-Seite für Tanzu Kubernetes Grid verfügbar ist.
Zum Sichern und Wiederherstellen von TKG-Clustern benötigen Sie Folgendes:
Nach Erfüllung der oben genannten Voraussetzungen können Sie auch mithilfe von Velero Arbeitslasten zwischen Clustern migrieren. Anweisungen finden Sie unter Clustermigration und Ressourcenfilterung in der Velero-Dokumentation.
VorsichtWenn Sie die mit Vorgängerversionen von TKG verteilte Velero-CLI v1.8.1 oder früher bereits installiert haben, müssen Sie ein Upgrade auf v1.9.7 durchführen. Ältere Velero-Versionen funktionieren nicht mit den in v1.9 und höher verwendeten CRDs.
Gehen Sie zum Installieren der Velero-CLI v1.9.7 wie folgt vor:
.gz
-Datei der Velero-CLI für das Betriebssystem Ihrer Workstation herunter. Der Dateiname beginnt mit velero-linux-
, velero-mac-
oder velero-windows64-
.Verwenden Sie den Befehl gunzip
oder das Extraktionstool Ihrer Wahl, um die Binärdatei zu entpacken:
gzip -d <RELEASE-TARBALL-NAME>.gz
Ändern Sie den Namen der CLI-Binärdatei für Ihre Plattform in velero
, achten Sie darauf, dass es sich um eine ausführbare Datei handelt, und fügen Sie sie zu Ihrem PATH
hinzu.
macOS- und Linux-Plattformen:
/usr/local/bin
und benennen Sie sie in velero
um.chmod +x /usr/local/bin/velero
Windows-Plattformen:
Program Files\velero
und kopieren Sie die Binärdatei in diesen Ordner.velero.exe
.velero
, wählen Sie Eigenschaften (Properties) > Sicherheit (Security) aus und stellen Sie sicher, dass Ihr Benutzerkonto über die Berechtigung Vollständige Kontrolle (Full Control) verfügt.env
zu suchen.Path
unter Systemvariablen (System variables) aus und klicken Sie auf Bearbeiten (Edit).velero
-Binärdatei ein.Um Tanzu Kubernetes Grid-Arbeitslastclusterinhalte zu sichern, benötigen Sie Speicherorte für:
Weitere Informationen finden Sie in der Velero-Dokumentation unter Sichern von Speicherorten und Volume-Snapshot-Speicherorten in der Velero-Dokumentation. Velero unterstützt eine Vielzahl von Speicheranbietern. Hierbei kann es sich um
VMware empfiehlt, jedem Cluster einen eindeutigen Speicher-Bucket zuzuweisen.
So richten Sie MinIO ein:
Führen Sie das Container-Image minio
mit MinIO-Anmeldedaten und einem Speicherort aus, z. B.:
$ docker run -d --name minio --rm -p 9000:9000 -e "MINIO_ACCESS_KEY=minio" -e "MINIO_SECRET_KEY=minio123" -e "MINIO_DEFAULT_BUCKETS=mgmt" gcr.io/velero-gcp/bitnami/minio:2021.6.17-debian-10-r7
Speichern Sie die Anmeldedaten in einer lokalen Datei und übergeben Sie sie an die Option --secret-file
von velero install
, z. B.:
[default]
aws_access_key_id=minio
aws_secret_access_key=minio123
Unter vSphere werden Sicherungen des Clusterobjektspeichers und von Volume-Snapshots an demselben Speicherort gespeichert. Dieser Speicherort muss ein S3-kompatibler externer Speicher auf Amazon Web Services (AWS) oder ein S3-Anbieter wie MinIO sein.
Informationen zum Einrichten von Speicher für Velero unter vSphere finden Sie unter Velero-Plug-In für vSphere in Vanilla Kubernetes Cluster für das v1.4.3-Plug-In.
Um Speicher für Velero unter AWS einzurichten, befolgen Sie die Verfahren im Repository für Velero-Plug-Ins für AWS:
Richten Sie nach Bedarf S3-Speicher für jedes Plug-In ein. Das Objektspeicher-Plug-In speichert Clusterobjektsicherungen und ruft sie ab, und der Volume-Snapshotter speichert Datenvolumes und ruft sie ab.
Um Speicher für Velero unter Azure einzurichten, befolgen Sie die Verfahren im Repository für Velero-Plug-Ins für Azure:
Erstellen eines Azure-Speicherkontos und eines Blob-Containers
Abrufen der Ressourcengruppe, die Ihre VMs und Festplatten enthält
Richten Sie nach Bedarf S3-Speicher für jedes Plug-In ein. Das Objektspeicher-Plug-In speichert Clusterobjektsicherungen und ruft sie ab, und der Volume-Snapshotter speichert Datenvolumes und ruft sie ab.
Um Arbeitslastclusterobjekte zu sichern, installieren Sie den Velero v1.9.7-Server im eigenständigen Verwaltungscluster und überprüfen Sie die Installationen.
Um Velero zu installieren, führen Sie velero install
mit den folgenden Optionen aus:
--provider $PROVIDER
: Beispiel: aws
--plugins projects.registry.vmware.com/tkg/velero/velero-plugin-for-aws:v1.5.5_vmware.1
--bucket $BUCKET
: Der Name Ihres S3-Buckets--backup-location-config region=$REGION
: Die AWS-Region, in der sich der Bucket befindet--snapshot-location-config region=$REGION
: Die AWS-Region, in der sich der Bucket befindet--kubeconfig
zum Installieren des Velero-Servers in einem anderen Cluster als dem aktuellen Standardcluster.(Optional) --secret-file ./VELERO-CREDS
Eine Möglichkeit, Velero den Zugriff auf einen S3-Bucket zu ermöglichen, besteht darin, in dieser Option eine lokale VELERO-CREDS
-Datei zu übergeben, die wie folgt aussieht:
[default]
aws_access_key_id=<AWS_ACCESS_KEY_ID>
aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
Weitere Optionen finden Sie unter Installieren und Starten von Velero.
Durch die Ausführung des Befehls velero install
wird ein Namespace mit der Bezeichnung velero
im Cluster erstellt sowie eine Bereitstellung mit der Bezeichnung velero
darin platziert.
Die folgenden Einstellungen sind erforderlich:
--plugins projects.registry.vmware.com/tkg/velero/velero-mgmt-cluster-plugin:v0.1.0_vmware.1
HinweisSie können mehrere Optionen durch Kommas getrennt angeben. Beispiel:
--plugins projects.registry.vmware.com/tkg/velero/velero-plugin-for-aws:v1.5.5_vmware.1,projects.registry.vmware.com/tkg/velero/velero-mgmt-cluster-plugin:v0.1.0_vmware.1
--snapshot-location-config
festStellen Sie nach Abschluss des Befehls velero install
sicher, dass Velero erfolgreich installiert wurde:
Stellen Sie sicher, dass der Velero-Pod den Status Running
aufweist:
kubectl -n velero get pod
NAME READY STATUS RESTARTS AGE
velero-78fdbcd446-v5cqr 1/1 Running 0 3h41m
Bestätigen Sie, dass sich der Sicherungsspeicherort im Status Available
befindet:
velero backup-location get
NAME PROVIDER BUCKET/PREFIX PHASE LAST VALIDATED ACCESS MODE DEFAULT
default aws mgmt Available 2022-11-11 05:55:55 +0000 UTC ReadWrite true
Führen Sie zum Sichern aller Arbeitslastclusterobjekte, die von einem eigenständigen Verwaltungscluster verwaltet werden, Folgendes aus:
velero backup create my-backup --exclude-namespaces tkg-system --include-resources cluster.cluster.x-k8s.io --wait
Hinweis
--exclude-namespaces tkg-system
schließt den Verwaltungscluster selbst aus.
--include-resources cluster.cluster.x-k8s.io
enthält die ArbeitslastclusterobjekteVMware empfiehlt, Arbeitslastcluster sofort nach strukturellen Änderungen, wie z. B. einer Vergrößerung oder Verkleinerung, zu sichern. Dadurch wird eine Nichtübereinstimmung zwischen Sicherungsobjekten und der physischen Infrastruktur vermieden, die dazu führen kann, dass der Wiederherstellungsvorgang fehlschlägt.
Wenn Clusterobjekte nach der letzten Sicherung geändert werden, entspricht der Zustand des Systems nach einer Wiederherstellung nicht dem gewünschten aktuellen Zustand. Dieses Problem wird als Abweichung bezeichnet. Weitere Informationen zur Wiederherstellung einiger allgemeiner Abweichungstypen finden Sie im Abschnitt Handhabung von Abweichungen weiter unten.
Um Abweichungen zu vermeiden, empfiehlt VMware die Verwendung von Velero, um regelmäßige Sicherungen zu planen. So sichern Sie beispielsweise alle Arbeitslastcluster täglich und bewahren jede Sicherung für 14 Tage auf:
velero create schedule daily-bak --schedule="@every 24h" --exclude-namespaces tkg-system --include-resources cluster.cluster.x-k8s.io --ttl 336h0m0s
Weitere Optionen für die Planung mit Velero finden Sie in der Velero-Dokumentation unter Planen einer Sicherung.
So stellen Sie einen eigenständigen Verwaltungscluster und die von ihm verwalteten Arbeitslastclusterobjekte wieder her:
Erstellen Sie den Verwaltungscluster aus der dazugehörigen Konfigurationsdatei mgmt-cluster-config.yaml
neu, wie unter Bereitstellen von Verwaltungsclustern über eine Konfigurationsdatei beschrieben.
HinweisAlle Konfigurationsänderungen, die nach der Bereitstellung auf den Verwaltungscluster angewendet wurden, müssen in der Konfigurationsdatei oder den Umgebungsvariablen angezeigt werden. Andernfalls werden sie nicht wiederhergestellt.
Unmittelbar nach der Erstellung des Verwaltungsclusters sollte nur ein TKR vorhanden sein:
tanzu kubernetes-release get
NAME VERSION COMPATIBLE ACTIVE UPDATES AVAILABLE
v1.25.7---vmware.1-tkg.1 v1.25.7+vmware.1-tkg.1 True True
Warten Sie einige Minuten, bis alle von den gesicherten Arbeitslastclustern verwendeten TKRs verfügbar sind:
tanzu kubernetes-release get
NAME VERSION COMPATIBLE ACTIVE UPDATES AVAILABLE
v1.23.17---vmware.2-tkg.2 v1.23.17+vmware.2-tkg.2 True True
v1.24.11---vmware.1-tkg.1 v1.24.11+vmware.1-tkg.1 True True
v1.25.7---vmware.1-tkg.1 v1.25.7+vmware.1-tkg.1 True True
Installieren Sie Velero auf dem Verwaltungscluster gemäß den Anweisungen unter Bereitstellen des Velero-Servers in Clustern (siehe oben). Stellen Sie sicher, dass die Konfigurationseinstellungen für die Anmeldedaten und den Sicherungsspeicherort dieselben Werte aufweisen wie zum Zeitpunkt der Sicherung.
Führen Sie nach der Installation von Velero velero backup get
aus, bis die Sicherungen synchronisiert sind und der Befehl die gewünschte Sicherung auflistet.
velero backup get
NAME STATUS ERRORS WARNINGS CREATED EXPIRES STORAGE LOCATION SELECTOR
my-backup Completed 0 0 2022-12-07 17:10:42 +0000 UTC 24d default <none>
Führen Sie velero restore create
aus, um die Ressourcen des Arbeitslastclusters wiederherzustellen. VMware empfiehlt die Verwendung der neuesten Sicherung:
velero restore create my-restore --from-backup my-backup --wait
Nach Abschluss der Wiederherstellung befinden sich die Cluster im Status createdStalled
:
tanzu cluster list
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN TKR
tkg-vc-antrea default createdStalled 0/3 0/3 v1.25.7+vmware.1 <none> prod v1.25.7---vmware.1-tkg.1
Patchen Sie die Clusterobjekte, um deren Eigenschaft paused
auf false
festzulegen. Dies ist erforderlich, da Clusterobjekte im Zustand paused
auf dem neuen Verwaltungscluster neu erstellt werden. Damit soll verhindert werden, dass ihre Controller versuchen, den Abgleich durchzuführen:
Um den Betrieb eines Cluster nach seiner Wiederherstellung fortzusetzen, führen Sie Folgendes aus:
kubectl -n my-namespace patch cluster CLUSTER-NAME --type merge -p '{"spec":{"paused":false}}'
Um den Betrieb aller Cluster in mehreren Namespaces fortzusetzen, führen Sie das folgende Skript aus:
#!/bin/bash
for ns in $(kubectl get ns -o custom-columns=":metadata.name" | grep -v "tkg-system");
do
clusters=$(kubectl -n $ns get cluster -o name)
if [[ -n $clusters ]];then
kubectl -n $ns patch $clusters --type merge -p '{"spec":{"paused":false}}'
fi
done
Stellen Sie sicher, dass sich alle Arbeitslastcluster im Status running
befinden, z. B.:
tanzu cluster list
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES PLAN TKR
tkg-vc-antrea default running 3/3 3/3 v1.25.7+vmware.1 <none> prod v1.25.7---vmware.1-tkg.1
Führen Sie für jeden Arbeitslastcluster tanzu cluster get CLUSTER-NAME
aus, um zu überprüfen, ob sich alle Komponenten im Zustand running
befinden, z. B.:
tanzu cluster get tkg-vc-antrea
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES TKR
tkg-vc-antrea default running 3/3 3/3 v1.25.7+vmware.1 <none> v1.25.7---vmware.1-tkg.1
Details:
NAME READY SEVERITY REASON SINCE MESSAGE
/tkg-vc-antrea True 4h14m
├─ClusterInfrastructure - VSphereCluster/tkg-vc-antrea-s6kl5 True 4h36m
├─ControlPlane - KubeadmControlPlane/tkg-vc-antrea-ch5hn True 4h14m
│ ├─Machine/tkg-vc-antrea-ch5hn-8gfvt True 4h14m
│ ├─Machine/tkg-vc-antrea-ch5hn-vdcrp True 4h23m
│ └─Machine/tkg-vc-antrea-ch5hn-x7nmm True 4h32m
└─Workers
├─MachineDeployment/tkg-vc-antrea-md-0-8b8zn True 4h23m
│ └─Machine/tkg-vc-antrea-md-0-8b8zn-798d5b8897-bnxn9 True 4h24m
├─MachineDeployment/tkg-vc-antrea-md-1-m6dvh True 4h24m
│ └─Machine/tkg-vc-antrea-md-1-m6dvh-79fb858b96-p9667 True 4h28m
└─MachineDeployment/tkg-vc-antrea-md-2-brm2m True 4h21m
└─Machine/tkg-vc-antrea-md-2-brm2m-6478cffc5f-tq5cn True 4h23m
Wenn alle Arbeitslastcluster ausgeführt werden, können Sie die Arbeitslastcluster mit der Tanzu CLI verwalten.
Abweichungsfälle können kompliziert sein, aber einige gängige Muster und Risikominderungen umfassen:
Veraltete Worker-Knoten:
Ghost-Worker-Knoten-Infrastruktur:
Risikominderung:
kubeconfig
ab und legen Sie ihn als den kubectl
-Kontext fest.Vergleichen Sie die Ausgabe der folgenden Befehle: kubectl
und tanzu
:
# Get the actual worker nodes of the workload cluster
$ kubectl --context tkg-vc-antrea-admin@tkg-vc-antrea get node
NAME STATUS ROLES AGE VERSION
tkg-vc-antrea-md-0-p9vn5-645498f59f-42qh9 Ready <none> 44m v1.25.7+vmware.1
tkg-vc-antrea-md-0-p9vn5-645498f59f-shrpt Ready <none> 114m v1.25.7+vmware.1
tkg-vc-antrea-wdsfx-2hkxp Ready control-plane 116m v1.25.7+vmware.1
# Get the worker nodes managed by the TKG
$ tanzu cluster get tkg-vc-antrea
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES TKR
tkg-vc-antrea default running 1/1 1/1 v1.25.7+vmware.1 <none> v1.25.7---vmware.1-tkg.1-zshippable
Details:
NAME READY SEVERITY REASON SINCE MESSAGE
/tkg-vc-antrea True 13m
├─ClusterInfrastructure - VSphereCluster/tkg-vc-antrea-b7fr9 True 13m
├─ControlPlane - KubeadmControlPlane/tkg-vc-antrea-wdsfx True 13m
│ └─Machine/tkg-vc-antrea-wdsfx-2hkxp True 13m
└─Workers
└─MachineDeployment/tkg-vc-antrea-md-0-p9vn5 True 13m
└─Machine/tkg-vc-antrea-md-0-p9vn5-645498f59f-shrpt True 13m
Für jeden Worker-Knoten, der in kubectl
aufgeführt ist, der über keine Workers
> Machine
-Auflistung aus tanzu cluster get
verfügt:
Skalieren Sie die Worker vertikal auf den erwarteten Wert hoch, z. B.:
tanzu cluster scale ${cluster_name} --worker-machine-count 2
kubeconfig
, um den Ghost-Knoten zu entleeren, der seine Arbeitslasten auf von TKG verwaltete Knoten verschiebt:kubectl drain ${node_name} --delete-emptydir-data --ignore-daemonsets
Entfernen Sie den Ghost-Knoten aus dem Cluster:
kubectl delete node ${node_name}
Melden Sie sich bei vSphere oder einer anderen Infrastruktur an und entfernen Sie die VM manuell.
Veraltete Knoten und Ghost-Infrastruktur auf Steuerungsebene
Risikominderung:
kubeconfig
ab und legen Sie ihn als den kubectl
-Kontext fest.Vergleichen Sie die Ausgabe der folgenden Befehle: kubectl
und tanzu
:
# Get the actual control plane nodes of the workload cluster
$ kubectl --context wc-admin@wc get node
NAME STATUS ROLES AGE VERSION
wc-2cjn4-4xbf8 Ready control-plane 107s v1.25.7+vmware.1
wc-2cjn4-4zljs Ready control-plane 26h v1.25.7+vmware.1
wc-2cjn4-59v95 Ready control-plane 26h v1.25.7+vmware.1
wc-2cjn4-ncgxb Ready control-plane 25h v1.25.7+vmware.1
wc-md-0-nl928-5df8b9bfbd-nww2w Ready <none> 26h v1.25.7+vmware.1
wc-md-1-j4m55-589cfcd9d6-jxmvc Ready <none> 26h v1.25.7+vmware.1
wc-md-2-sd4ww-7b7db5dcbb-crwdv Ready <none> 26h v1.25.7+vmware.1
# Get the control plane nodes managed by the TKG
$ tanzu cluster get wc
NAME NAMESPACE STATUS CONTROLPLANE WORKERS KUBERNETES ROLES TKR
wc default updating 4/3 3/3 v1.25.7+vmware.1 <none> v1.25.7---vmware.1-tkg.1-zshippable
Details:
NAME READY SEVERITY REASON SINCE MESSAGE
/wc True 24m
├─ClusterInfrastructure - VSphereCluster/wc-9nq7v True 26m
├─ControlPlane - KubeadmControlPlane/wc-2cjn4 True 24m
│ ├─Machine/wc-2cjn4-4xbf8 True 24m
│ ├─Machine/wc-2cjn4-4zljs True 26m
│ └─Machine/wc-2cjn4-59v95 True 26m
└─Workers
├─MachineDeployment/wc-md-0-nl928 True 26m
│ └─Machine/wc-md-0-nl928-5df8b9bfbd-nww2w True 26m
├─MachineDeployment/wc-md-1-j4m55 True 26m
│ └─Machine/wc-md-1-j4m55-589cfcd9d6-jxmvc True 26m
└─MachineDeployment/wc-md-2-sd4ww True 26m
└─Machine/wc-md-2-sd4ww-7b7db5dcbb-crwdv True 26m
Für jeden control-plane
-Knoten, der von kubectl
aufgeführt ist und nicht über eine ControlPlane
> Machine
-Auflistung aus tanzu cluster get
verfügt:
Löschen Sie den Knoten:
kubectl delete node ${node_name}