Um Arbeitslasten, die in TKG-Clustern ausgeführt werden, auf Supervisor zu sichern und wiederherzustellen, erstellen Sie einen Datenspeicher und installieren Sie Velero mit Restic im Kubernetes-Cluster.
Überblick
TKG-Cluster werden auf VM-Knoten ausgeführt. Zum Sichern und Wiederherstellen von TKG-Clusterarbeitslasten installieren Sie Velero und Restic im Cluster.
Voraussetzungen
Achten Sie darauf, dass Ihre Umgebung die folgenden Voraussetzungen für die Installation von Velero und Restic zum Sichern und Wiederherstellen von Arbeitslasten auf
Tanzu Kubernetes-Clustern erfüllt.
- Eine Linux-VM mit ausreichend Speicherplatz zum Speichern mehrerer Arbeitslastsicherungen. Sie installieren MinIO auf dieser VM.
- Eine Linux-VM, in der die Kubernetes-CLI-Tools für vSphere installiert sind, einschließlich des vSphere-Plug-In für kubectl und kubectl. Sie installieren die Velero-CLI auf dieser Client-VM. Wenn Sie über keine solche VM verfügen, können Sie die Velero CLI lokal installieren, müssen die Installationsschritte jedoch entsprechend anpassen.
- Die Kubernetes-Umgebung verfügt über Internetzugriff und kann von der Client-VM erreicht werden.
Installieren und Konfigurieren des MinIO-Objektspeichers
Velero benötigt einen S3-kompatiblen Objektspeicher als Ziel für Kubernetes-Arbeitslastsicherungen. Velero unterstützt mehrere solcher
Objektspeicher-Anbieter. Der Einfachheit halber wird in dieser Anleitung
MinIO verwendet. Dabei handelt es sich um einen S3-kompatiblen Speicherdienst, der lokal auf der Objektspeicher-VM ausgeführt wird.
- Installieren Sie MinIO.
wget https://dl.min.io/server/minio/release/linux-amd64/minio
- Erteilen Sie MinIO-Ausführungsberechtigungen.
chmod +x minio
- Erstellen Sie ein Verzeichnis auf dem Dateisystem für MinIO.
mkdir /DATA-MINIO
- Starten Sie den MinIO-Server.
./minio server /DATA-MINIO
- Nach dem Start des MinIO-Servers erhalten Sie wichtige Datenspeicherinstanzdetails, darunter die Endpoint-URL, den AccessKey und den SecretKey. Zeichnen Sie die Endpoint-URL, den AccessKey und den SecretKey in der Tabelle auf.
Datenspeicher-Metadaten Wert Endpoint-URL AccessKey SecretKey - Navigieren Sie zum MinIO-Datenspeicher, indem Sie einen Browser öffnen und darin die Endpoint-URL des MinIO-Servers aufrufen.
- Melden Sie sich beim MinIO-Server an und geben Sie den AccessKey und SecretKey an.
- Um MinIO als Dienst zu aktivieren, konfigurieren Sie MinIO für den automatischen Start, indem Sie das
minio.service
-Skript herunterladen.curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
- Bearbeiten Sie das
minio.service
-Skript und fügen Sie den folgenden Wert fürExecStart
hinzu.ExecStart=/usr/local/bin/minio server /DATA-MINIO path
- Speichern Sie das überarbeitete Skript.
- Konfigurieren Sie den MinIO-Dienst, indem Sie die folgenden Befehle ausführen.
cp minio.service /etc/systemd/system cp minio /usr/local/bin/ systemctl daemon-reload systemctl start minio systemctl status minio systemctl enable minio
- Erstellen Sie einen MinIO-Bucket für die Sicherung und Wiederherstellung, indem Sie den MinIO-Browser starten und sich bei Ihrem Objektspeicher anmelden.
- Klicken Sie auf das Symbol für „Bucket erstellen“.
- Geben Sie den Bucket-Namen ein, z. B.:
my-cluster-backups
. - Überprüfen Sie, ob der Bucket erstellt wurde.
- Standardmäßig ist ein neuer MinIO-Bucket schreibgeschützt. Für die Sicherung und Wiederherstellung mit eigenständigem Velero muss der MinIO-Bucket über Lese- und Schreibberechtigung verfügen. Um die Lese- und Schreibberechtigung für den Bucket zu aktivieren, wählen Sie den Bucket aus und klicken Sie auf den Link mit der Ellipse (...).
- Klicken Sie auf Richtlinie bearbeiten.
- Ändern Sie die Richtlinie in Lesen und Schreiben.
- Klicken Sie auf Hinzufügen.
- Klicken Sie auf das X, um das Dialogfeld zu schließen.
Installieren der Velero-CLI
Installieren Sie die Velero-CLI auf dem VM-Client oder auf Ihrem lokalen Computer.
Die für diese Dokumentation verwendete Version ist
Velero 1.9.7 für Tanzu Kubernetes Grid 2.2.0.
- Laden Sie Velero von der Tanzu Kubernetes Grid-Produkt-Download-Seite im VMware Customer Connect-Portal herunter.
Hinweis: Sie müssen die von VMware signierte Velero-Binärdatei verwenden, um Unterstützung von VMware zu erhalten.
- Öffnen Sie eine Befehlszeile und wechseln Sie zum Velero-CLI-Download.
- Entpacken Sie die Download-Datei. Beispiel:
gunzip velero-linux-vX.X.X_vmware.1.gz
- Überprüfen Sie, ob die Velero-Binärdatei vorhanden ist.
ls -l
- Erteilen Sie der Velero-CLI Ausführungsberechtigungen.
chmod +x velero-linux-vX.X.X_vmware.1
- Machen Sie die Velero-CLI global verfügbar, indem Sie sie in den Systempfad verschieben:
cp velero-linux-vX.X.X_vmware.1 /usr/local/bin/velero
- Überprüfen Sie die Installation.
velero version
Installieren von Velero und Restic auf dem Tanzu Kubernetes-Cluster
Der Velero CLI-Kontext folgt automatisch dem kubectl-Kontext. Legen Sie den kubectl-Kontext fest, bevor Sie Velero-CLI-Befehle zum Installieren von Velero und Restic auf dem Zielcluster ausführen.
- Rufen Sie den Namen des MinIO-Buckets ab. Beispiel:
my-cluster-backups
. - Rufen Sie den AccessKey und den SecretKey für den MinIO-Bucket ab.
- Legen Sie den Kontext für den Kubernetes-Zielcluster so fest, dass die Velero-CLI weiß, an welchem Cluster gearbeitet werden soll.
kubectl config use-context tkgs-cluster-name
- Erstellen Sie eine Geheimschlüsseldatei mit dem Namen
credentials-minio
. Aktualisieren Sie die Datei mit den von Ihnen erfassten MinIO-Serveranmeldedaten. Beispiel:aws_access_key_id = 0XXNO8JCCGV41QZBV0RQ aws_secret_access_key = clZ1bf8Ljkvkmq7fHucrKCkxV39BRbcycGeXQDfx
Hinweis: Wenn Sie eine Fehlermeldung vom Typ „Fehler beim Abrufen eines Sicherungsspeichers“ mit der Beschreibung „NoCredentialProviders: keine gültigen Anbieter in Kette“ erhalten, platzieren Sie die Zeile[default]
am Anfang der Anmeldedatendatei. Beispiel:[default] aws_access_key_id = 0XXNO8JCCGV41QZBV0RQ aws_secret_access_key = clZ1bf8Ljkvkmq7fHucrKCkxV39BRbcycGeXQDfx
- Speichern Sie die Datei und stellen Sie sicher, dass die Datei vorhanden ist.
ls
- Führen Sie den folgenden Befehl aus, um Velero und Restic auf dem Kubernetes-Zielcluster zu installieren. Ersetzen Sie beide URLs durch die URL Ihrer MinIO-Instanz.
velero install \ --provider aws \ --plugins velero/velero-plugin-for-aws:v1.0.0 \ --bucket tkgs-velero \ --secret-file ./credentials-minio \ --use-volume-snapshots=false \ --use-restic \ --backup-location-config \ region=minio,s3ForcePathStyle="true",s3Url=http://10.199.17.63:9000,publicUrl=http://10.199.17.63:9000
- Überprüfen Sie die Installation von Velero und Restic.
kubectl logs deployment/velero -n velero
- Überprüfen Sie den
velero
-Namespace.kubectl get ns
- Überprüfen Sie die
velero
- undrestic
-Pods.kubectl get all -n velero
Fehlerbehebung bei Restic-DaemonSet (falls erforderlich)
Um das Restic-DaemonSet mit drei Pods auf einem Kubernetes-Cluster auszuführen, müssen Sie möglicherweise die Restic-DaemonSet-Spezifikation aktualisieren und den hostPath ändern. Weitere Informationen zu diesem Problem finden Sie unter
Restic-Integration in der Velero-Dokumentation.
- Überprüfen Sie das Restic-DaemonSet mit drei Pods.
kubectl get pod -n velero
Wenn sich die Pods im Status „CrashLoopBackOff“ befinden, bearbeiten Sie sie wie folgt.
- Führen Sie den Befehl
edit
aus.kubectl edit daemonset restic -n velero
- Ändern Sie den hostPath von
/var/lib/kubelet/pods
zu/var/vcap/data/kubelet/pods
.- hostPath: path: /var/vcap/data/kubelet/pods
- Speichern Sie die Datei.
- Überprüfen Sie das Restic-DaemonSet mit drei Pods.
kubectl get pod -n velero
NAME READY STATUS RESTARTS AGE restic-5jln8 1/1 Running 0 73s restic-bpvtq 1/1 Running 0 73s restic-vg8j7 1/1 Running 0 73s velero-72c84322d9-le7bd 1/1 Running 0 10m
Anpassen der Velero-Speichergrenzwerte (bei Bedarf)
Wenn Ihre Velero-Sicherung für viele Stunden den Status
status=InProgress
zurückgibt, sollten Sie die Grenzwerte und die Speichereinstellungen für Anforderungen erhöhen.
- Führen Sie den folgenden Befehl aus.
kubectl edit deployment/velero -n velero
- Ändern Sie die Grenzwerte und die Speichereinstellungen für Anforderungen von der Standardeinstellung von
256Mi
bzw.128Mi
zu512Mi
bzw.256Mi
.ports: - containerPort: 8085 name: metrics protocol: TCP resources: limits: cpu: "1" memory: 512Mi requests: cpu: 500m memory: 256Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File