Hinweis:
- Dieses Tutorial erfordert Zugriff auf Oracle Cloud. Informationen zum Anmelden für einen kostenlosen Account finden Sie unter Erste Schritte mit Oracle Cloud Infrastructure Free Tier.
- Es verwendet Beispielwerte für Oracle Cloud Infrastructure-Zugangsdaten, -Mandanten und -Compartments. Wenn Sie Ihre Übung abgeschlossen haben, ersetzen Sie diese Werte durch die Werte, die für Ihre Cloud-Umgebung spezifisch sind.
Migrieren Sie Ihr Azure Kubernetes-Servicecluster oder Amazon EKS-Cluster mit Velero zu Container Engine for Kubernetes
Einführung
Velero ist ein Open-Source-Tool für sicheres Backup und Restore, Disaster Recovery und Migration von Kubernetes-Clusterressourcen und persistenten Volumes. Da Oracle Cloud Infrastructure (OCI) Object Storage S3-Compatible ist, können wir das AWS-Plug-in von Velero verwenden. In diesem Tutorial verwenden wir Azure Kubernetes Service (AKS), aber die Schritte sollten auch nahtlos in Amazon Elastic Kubernetes Service (Amazon EKS) funktionieren.
Das folgende Diagramm zeigt eine Übersicht über die Funktionsweise des Prozesses.
Für dieses Tutorial haben wir einen NGINX-Pod vorbereitet, an den ein persistenter Volume Claim und eine benutzerdefinierte index.html
-Datei angehängt sind, sowie ein Dummy Secret.
> kubectl get pods --n nginx
NAME READY STATUS RESTARTS AGE
task-pv-pod 1/1 Running 0 47h
> kubectl exec -it task-pv-pod --n nginx -- curl localhost
AKS to OKE Migration with PVC attached
>kubectl get secrets --namespace nginx
NAME TYPE DATA AGE
okemigration Opaque 1 2s
Ziele
- Erstellen Sie Kunden-Secret-Keys, die mit dem Object Storage-Bucket-Endpunkt S3 verwendet werden sollen.
- Richten Sie Velero in AKS und Oracle Cloud Infrastructure Container Engine for Kubernetes (OKE) ein.
- Führen Sie ein Backup und eine Wiederherstellung aus, um einen Kubernetes-Namespace in OKE zu migrieren.
Voraussetzungen
- Mittleres Wissen über Kubernetes.
- Ein Object Storage-Bucket, der als Backuppunkt verwendet wird.
- Benutzerberechtigungen im Object Storage-Bucket lesen/schreiben.
- Velero-Binärdateien auf dem Computer, mit dem Sie eine Verbindung zu Ihrem Kubernetes-Cluster herstellen, oder in den Cloud-Shells von Microsoft Azure und OCI.
Aufgabe 1: velero-credentials
-Datei mit dem Kunden-Secret-Key erstellen
-
Wenn Sie noch keinen Kunden-Secret-Key haben, können Sie diese Schritte ausführen.
-
Erstellen Sie auf dem Rechner, mit dem Sie auf die AKS-/EKS- und OKE-Cluster (oder die Cloud-Shells) zugreifen, die Datei
velero-credentials
mit dem folgenden Inhalt:[default] aws_access_key_id=<<Access Key ID>> aws_secret_access_key=<<Generated Key>>
Aufgabe 2: Velero herunterladen und installieren
-
Installieren Sie Velero auf dem Rechner, mit dem Sie auf die Cluster zugreifen, nach diesen Schritten. Wenn Sie Cloud Shell verwenden, laden Sie ihn hier herunter.
-
Fahren Sie mit der Installation von Velero in AKS- und OKE-Clustern mit dem folgenden Befehl fort.
Hinweis: Wenn Sie die Binärdateien heruntergeladen haben, führen Sie velero mit ./ am Anfang aus:
velero install \ --provider aws \ --bucket <<Bucket name>> \ --prefix <<Tenancy name>> \ --use-volume-snapshots=false \ --plugins velero/velero-plugin-for-aws:v1.6.0 \ --secret-file <<Location of the file created with the customer secret key>> \ --backup-location-config region=<<Region>>,s3ForcePathStyle="true",s3Url=https://<<tenancy name>>.compat.objectstorage.<<region>>.oraclecloud.com \ --use-node-agent
-
Prüfen Sie, ob Velero in AKS und OKE installiert wurde, indem Sie den folgenden Befehl ausführen.
> kubectl get deployment -n velero NAME READY UP-TO-DATE AVAILABLE AGE velero 1/1 1 1 47h
Aufgabe 3: Cluster sichern
-
Führen Sie im AKS-Cluster den folgenden Befehl aus. In diesem Tutorial nutzen wir die Azure CLI mit den darin heruntergeladenen Velero-Binärdateien.
velero-v1.11.1-rc.1-linux-amd64> ./velero backup create nginxoke --include-namespaces nginx --default-volumes-to-fs-backup Backup request "nginxoke" submitted successfully. Run `velero backup describe nginxoke` or `velero backup logs nginxoke` for more details.
-
Prüfen Sie, ob das Cluster gesichert ist.
velero-v1.11.1-rc.1-linux-amd64> ./velero backup describe nginxoke Name: nginxoke Namespace: velero Labels: velero.io/storage-location=default Annotations: velero.io/source-cluster-k8s-gitversion=v1.24.10 velero.io/source-cluster-k8s-major-version=1 velero.io/source-cluster-k8s-minor-version=24 Phase: Completed Namespaces: Included: nginx Excluded: <none> ................. You can also check the Object Storage Bucket: 
Aufgabe 4: Wiederherstellen oder In OKE migrieren
-
Da AKS, EKS und OKE unterschiedliche
storageClassNames
für die Persistent Volume Claims verwenden, müssen wir eine configMap erstellen, mit der die QuellestorageClassNames
in einen OCI-kompatiblen Klassennamen übersetzt wird. Dazu erstellen wir die DateiconfigMap.yaml
mit dem folgenden Inhalt. Passen Sie sie an die QuellestorageClassName
an.Wichtig: Sie müssen Schritt 1 abschließen. Andernfalls bleiben Ihre Pods im Status "Ausstehend".
apiVersion: v1 kind: ConfigMap metadata: # any name can be used; Velero uses the labels (below) # to identify it rather than the name name: change-storage-class-config # must be in the velero namespace namespace: velero # the below labels should be used verbatim in your # ConfigMap. labels: # this value-less label identifies the ConfigMap as # config for a plugin (i.e. the built-in change storage # class restore item action plugin) velero.io/plugin-config: "" # this label identifies the name and kind of plugin # that this ConfigMap is for. velero.io/change-storage-class: RestoreItemAction data: # add 1+ key-value pairs here, where the key is the old # storage class name and the value is the new storage # class name. <old-storage-class>: oci-bv
-
Wenden Sie configMap mit dem folgenden Befehl auf das OKE-Cluster an.
kubectl apply -f configMap.yaml
-
Prüfen Sie, ob das OKE-Cluster über den Objektspeicher auf die Backups zugreifen kann.
$ velero get backup NAME STATUS ERRORS WARNINGS CREATED EXPIRES STORAGE LOCATION SELECTOR nginxoke Completed 0 0 2023-07-22 14:40:33 +0300 EEST 29d default <none>
-
Erstellen Sie die Wiederherstellung mit dem folgenden Befehl.
$ velero restore create --from-backup nginxoke Restore request "nginxoke-20230722145553" submitted successfully. Run `velero restore describe nginxoke-20230722145553` or `velero restore logs nginxoke-20230722145553` for more details.
-
Prüfen Sie den Restore-Status.
$ velero restore describe nginxoke-20230722145553 Name: nginxoke-20230722145553 Namespace: velero Labels: <none> Annotations: <none> Phase: Completed Total items to be restored: 7 Items restored: 7 Started: 2023-07-22 14:55:54 +0300 EEST Completed: 2023-07-22 14:56:45 +0300 EEST ..........
-
Prüfen Sie, ob das Cluster erfolgreich migriert wurde.
$ kubectl get pod -n nginx NAME READY STATUS RESTARTS AGE task-pv-pod 1/1 Running 0 2m15s $ kubectl get secrets -n nginx NAME TYPE DATA AGE okemigration Opaque 1 2m21s $ kubectl get pvc -n nginx NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE task-pv-claim Bound csi-d03267f7-32cf-4068-8809-d29aa649dcba 50Gi RWO oci-bv 2m31s $ kubectl exec task-pv-pod -n nginx -- curl http://localhost AKS to OKE Migration with PVC attached
Verwandte Links
Bestätigungen
- Guido Alejandro Ferreyra (Principal Cloud Architect)
Weitere Lernressourcen
Sehen Sie sich andere Übungen zu docs.oracle.com/learn an, oder greifen Sie auf weitere kostenlose Lerninhalte im Oracle Learning YouTube-Kanal zu. Besuchen Sie außerdem die Website education.oracle.com/learning-explorer, um Oracle Learning Explorer zu werden.
Produktdokumentation finden Sie im Oracle Help Center.
Migrate your Azure Kubernetes Service Cluster or Amazon EKS Cluster to Container Engine for Kubernetes using Velero
F84712-01
August 2023
Copyright © 2023, Oracle and/or its affiliates.