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.
  1. Installieren Sie MinIO.
    wget https://dl.min.io/server/minio/release/linux-amd64/minio
  2. Erteilen Sie MinIO-Ausführungsberechtigungen.
    chmod +x minio
  3. Erstellen Sie ein Verzeichnis auf dem Dateisystem für MinIO.
    mkdir /DATA-MINIO
  4. Starten Sie den MinIO-Server.
    ./minio server /DATA-MINIO
  5. 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
  6. Navigieren Sie zum MinIO-Datenspeicher, indem Sie einen Browser öffnen und darin die Endpoint-URL des MinIO-Servers aufrufen.
  7. Melden Sie sich beim MinIO-Server an und geben Sie den AccessKey und SecretKey an.
  8. 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
  9. Bearbeiten Sie das minio.service-Skript und fügen Sie den folgenden Wert für ExecStart hinzu.
    ExecStart=/usr/local/bin/minio server /DATA-MINIO path
  10. Speichern Sie das überarbeitete Skript.
  11. 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
  12. Erstellen Sie einen MinIO-Bucket für die Sicherung und Wiederherstellung, indem Sie den MinIO-Browser starten und sich bei Ihrem Objektspeicher anmelden.
  13. Klicken Sie auf das Symbol für „Bucket erstellen“.
  14. Geben Sie den Bucket-Namen ein, z. B.: my-cluster-backups.
  15. Überprüfen Sie, ob der Bucket erstellt wurde.
  16. 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 (...).
  17. Klicken Sie auf Richtlinie bearbeiten.
  18. Ändern Sie die Richtlinie in Lesen und Schreiben.
  19. Klicken Sie auf Hinzufügen.
  20. 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.
  1. 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.
  2. Öffnen Sie eine Befehlszeile und wechseln Sie zum Velero-CLI-Download.
  3. Entpacken Sie die Download-Datei. Beispiel:
    gunzip velero-linux-vX.X.X_vmware.1.gz
  4. Überprüfen Sie, ob die Velero-Binärdatei vorhanden ist.
    ls -l
  5. Erteilen Sie der Velero-CLI Ausführungsberechtigungen.
    chmod +x velero-linux-vX.X.X_vmware.1 
  6. 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 
  7. Ü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.
  1. Rufen Sie den Namen des MinIO-Buckets ab. Beispiel: my-cluster-backups.
  2. Rufen Sie den AccessKey und den SecretKey für den MinIO-Bucket ab.
  3. 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
  4. 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
  5. Speichern Sie die Datei und stellen Sie sicher, dass die Datei vorhanden ist.
    ls
  6. 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
  7. Überprüfen Sie die Installation von Velero und Restic.
    kubectl logs deployment/velero -n velero
  8. Überprüfen Sie den velero-Namespace.
    kubectl get ns
  9. Überprüfen Sie die velero- und restic-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.
  1. Ü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.

  2. Führen Sie den Befehl edit aus.
    kubectl edit daemonset restic -n velero
  3. Ändern Sie den hostPath von /var/lib/kubelet/pods zu /var/vcap/data/kubelet/pods.
    - hostPath:
        path: /var/vcap/data/kubelet/pods
  4. Speichern Sie die Datei.
  5. Ü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.
  1. Führen Sie den folgenden Befehl aus.
    kubectl edit deployment/velero -n velero
  2. Ändern Sie die Grenzwerte und die Speichereinstellungen für Anforderungen von der Standardeinstellung von 256Mi bzw. 128Mi zu 512Mi 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