Senin, 11 November 2024

VELERO-on vsphere

 

Mengaktifkan dan Menggunakan Layanan Velero pada vSphere 8 dengan Tanzu Supervisor Cluster

https://little-stuff.com/2023/04/19/enabling-and-using-the-velero-service-on-a-vsphere-8-with-tanzu-supervisor-cluster/

Saya pernah menulis tentang penggunaan Velero untuk mencadangkan beban kerja Kubernetes di masa lalu, tetapi tidak pernah membahas tentang vSphere dengan Tanzu dan tidak pernah menggunakan Operator Velero (atau layanan sebagaimana disebut dalam vSphere dengan Tanzu). Velero dapat diaktifkan sebagai layanan di level Supervisor dan menyediakan fungsionalitas pencadangan dan pemulihan untuk beban kerja yang berjalan di kluster supervisor dan di kluster Kubernetes Tanzu mana pun.

Instal Pengelola Data Velero

Hal pertama yang perlu Anda lakukan adalah mengunduh berkas OVA Velero Data Manager. Anda bisa mendapatkan versi terbaru dari  https://vmwaresaas.jfrog.io/ui/repos/tree/General/Velero-YAML/Velero/DataManager/1.2.0/datamgr-ob-20797900-photon-3-release-1.2.ova .

Catatan:  Anda harus menjalankan server DHCP untuk menyediakan alamat IP dan informasi server DNS karena alamat IP statis tidak dapat dikonfigurasi pada VM Data Manager.

Menyebarkan Data Manager OVA sangatlah mudah dan Anda hanya perlu menyediakan parameter berikut (ini khusus untuk lingkungan saya):

  • Nama VM: velero-datamanager-01a
  • Penyimpanan: vol1
  • Jaringan: Manajemen

Saat penerapan selesai, jangan langsung menyalakan VM karena Anda perlu membuat beberapa perubahan pada pengaturan lanjutan.

Klik kanan VM velero-datamanager-01a, klik  Edit Pengaturan .

Atur drive CD/DVD 1 ke  Perangkat Klien .  Catatan:  Ini membantu saya sejak awal karena saya tidak menyadari bahwa parameter yang ditetapkan berikutnya tidak disimpan dengan nilai default, Perangkat Host.

Klik  tab Parameter Lanjutan  . 

Tetapkan parameter berikut (sekali lagi, ini khusus untuk lingkungan saya):

  • guestinfo.cnsdp.vcPengguna:  administrator@vsphere.local
  • guestinfo.cnsdp.vcAlamat: vcsa-01a.corp.vmw
  • guestinfo.cnsdp.vcPasswd: VMware1!
  • guestinfo.cnsdp.wcpControlPlaneIP: 192.168.110.101

Catatan:  Agak sulit untuk mengetahuinya setelah baris disorot, tetapi kotak di sebelah kanan setiap item pada dasarnya adalah tombol terima dan tolak perubahan. Anda sebaiknya memastikan untuk mengeklik setiap kotak paling kiri (saya menambahkan batas merah pada kotak-kotak ini di tangkapan layar agar lebih jelas).

Klik  tombol OK  untuk menyelesaikan pengeditan parameter lanjutan VM.  JANGAN  nyalakan VM dulu.

Instal/Aktifkan Layanan/Operator Velero

Selama ini, Velero telah menyediakan operator yang memudahkan penyebaran dan konfigurasi Velero. Operator ini dapat diinstal ke cluster supervisor melalui layanan.

Dari  https://github.com/vsphere-tmm/Supervisor-Services/blob/main/README.md , unduh  Velero vSphere Operator v1.3.0

Di Klien vSphere, navigasikan ke  Manajemen Beban Kerja ,  Layanan  , lalu klik  tombol Tambah  di panel Tambahkan Layanan Baru.

Klik  tombol Unggah  pada jendela Layanan Pendaftaran.

Pilih file v elero-supervisorservice-1.3.0.yaml yang telah diunduh sebelumnya dan klik  tombol Buka  .

Klik  tombol Berikutnya  .

Gulir ke bagian bawah halaman EULA dan pilih kotak centang  Saya setuju dengan persyaratan dan layanan  . Klik  tombol Selesai  .

Anda akan melihat tugas Layanan Pengawas Registrasi.

Pada halaman Layanan, Anda sekarang akan melihat layanan Operator Velero vSphere. Klik  menu tarik-turun Tindakan  pada layanan tersebut, lalu pilih  Instal pada Supervisor .

Pilih Supervisor yang sesuai dan klik  tombol OK  .

Anda akan melihat namespace baru yang dibuat dengan nama yang mirip dengan svc-velero-vsphere-domain-c1006.

Beberapa pod telah dibuat di namespace baru tetapi Anda tidak akan melihatnya di tampilan Inventory di bawah namespace baru. Hal ini karena pod tersebut hanya berjalan di node control plane dan tampilan ini hanya menampilkan pod vSphere (VM) yang berjalan di node pekerja. Anda dapat menavigasi ke Workload Management , svc-velero-vsphere-domain-c1006 , Compute , Pod vSphere dan Anda akan melihatnya di sana:

Seharusnya ini sudah dimulai sekarang. Di sinilah saya mengalami masalah pertama.

Dengan menggunakan  kubectl, Anda dapat melihat bahwa beberapa pod telah dibuat di namespace ini…tetapi pod tersebut tidak dapat dimulai.

Menyalin
kubectl -n svc-velero-vsphere-domain-c1006 get po
NAME                                               READY   STATUS    RESTARTS   AGE
velero-vsphere-operator-6455dc6c88-qw2cq           0/1     Pending   0          66s
velero-vsphere-operator-webhook-67dc47f657-8462h   0/1     Pending   0          66s
velero-vsphere-operator-webhook-67dc47f657-hqbsq   0/1     Pending   0          66s
velero-vsphere-operator-webhook-67dc47f657-sbkzg   0/1     Pending   0          66s

Melihat lebih dekat pada pod velero-vsphere-operator-6455dc6c88-qw2cq, Anda dapat melihat bahwa ada masalah

Menyalin
kubectl -n svc-velero-vsphere-domain-c1006 describe po velero-vsphere-operator-6455dc6c88-qw2cq
...
Events:
  Type     Reason            Age                   From               Message
  ----     ------            ----                  ----               -------
  Warning  FailedScheduling  2m4s (x2 over 7m33s)  default-scheduler  0/7 nodes are available: 3 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }, 4 node(s) didn't match Pod's node affinity/selector. preemption: 0/7 nodes are available: 7 Preemption is not helpful for scheduling.

Ini tampak seperti masalah taint/toleransi antara pod (semua pod dalam namespace ini sebenarnya) dan node bidang kontrol. Anda dapat memeriksa deployment yang bertanggung jawab atas pod ini untuk melihat toleransi yang dikonfigurasi.

Menyalin
kubectl -n svc-velero-vsphere-domain-c1006 get deployments velero-vsphere-operator -o jsonpath="{.spec.template.spec.tolerations}" |jq
[
  {
    "effect": "NoSchedule",
    "key": "node-role.kubernetes.io/master",
    "operator": "Exists"
  },
  {
    "effect": "NoSchedule",
    "key": "kubeadmNode",
    "operator": "Equal",
    "value": "master"
  }
]

Keluaran ini perlu dibandingkan dengan noda yang diterapkan pada simpul bidang kontrol.

Menyalin
kubectl get nodes -o json | jq '.items[].spec.taints'
[
  {
    "effect": "NoSchedule",
    "key": "node-role.kubernetes.io/control-plane"
  }
]
[
  {
    "effect": "NoSchedule",
    "key": "node-role.kubernetes.io/control-plane"
  }
]
[
  {
    "effect": "NoSchedule",
    "key": "node-role.kubernetes.io/control-plane"
  }
]

Anda dapat melihat bahwa toleransi yang dikonfigurasi untuk pod dalam penyebaran dan taint yang dikonfigurasi pada node bidang kontrol tidak cocok. Node bidang kontrol di vSphere 8.0 sekarang menggunakan istilah "bidang kontrol" dan bukan istilah "master" yang lama. Dengan mengingat hal ini, Anda perlu memperbarui penyebaran velero-vsphere-operator dan velero-vsphere-operator-webhook.

Menyalin
kubectl -n svc-velero-vsphere-domain-c1006 edit deployments velero-vsphere-operator

Bagian berikut harus diedit, mengganti “master” dengan “control-plane”.

Menyalin
nodeSelector:
  node-role.kubernetes.io/master: ""
Menyalin
tolerations:
- effect: NoSchedule
  key: node-role.kubernetes.io/master
  operator: Exists
- effect: NoSchedule
  key: kubeadmNode
  operator: Equal
  value: master

Setelah diedit, bagian yang dicatat akan terlihat seperti berikut:

Menyalin
nodeSelector:
  node-role.kubernetes.io/control-plane: ""
Menyalin
tolerations:
- effect: NoSchedule
  key: node-role.kubernetes.io/control-plane
  operator: Exists
- effect: NoSchedule
  key: kubeadmNode
  operator: Equal
  value: control-plane

Segera setelah membuat perubahan ini, Anda akan melihat pod velero-vsphere-operator kedua sedang dibuat.

Menyalin
kubectl -n svc-velero-vsphere-domain-c1006 get po
NAME                                               READY   STATUS              RESTARTS   AGE
velero-vsphere-operator-6455dc6c88-qw2cq           0/1     Pending             0          30m
velero-vsphere-operator-7f5bf5d8f6-8lkb9           0/1     ContainerCreating   0          10s
velero-vsphere-operator-webhook-67dc47f657-8462h   0/1     Pending             0          30m
velero-vsphere-operator-webhook-67dc47f657-hqbsq   0/1     Pending             0          30m
velero-vsphere-operator-webhook-67dc47f657-sbkzg   0/1     Pending             0          30m

Dan tak lama kemudian, pod baru akan aktif dan berjalan, sedangkan pod asli akan terhapus.

Menyalin
kubectl -n svc-velero-vsphere-domain-c1006 get po
NAME                                               READY   STATUS    RESTARTS   AGE
velero-vsphere-operator-7f5bf5d8f6-8lkb9           1/1     Running   0          60s
velero-vsphere-operator-webhook-67dc47f657-8462h   0/1     Pending   0          31m
velero-vsphere-operator-webhook-67dc47f657-hqbsq   0/1     Pending   0          31m
velero-vsphere-operator-webhook-67dc47f657-sbkzg   0/1     Pending   0          31m

Ulangi langkah perbaikan sebelumnya untuk penerapan velero-vsphere-operator-webhook.

Buat Namespace velero

Selanjutnya Anda perlu membuat namespace baru yang akan digunakan untuk objek Velero Kubernetes.

  • Di Klien vSphere, navigasikan ke  Manajemen Beban Kerja ,  Ruang Nama  , lalu klik  tautan Ruang Nama Baru  .
  • Pilih Supervisor svc1 dan tetapkan nama namespace ke velero.
  • Klik   tombol Buat

Seperti yang dilakukan untuk namespace pengujian, Anda perlu mengatur izin dan menetapkan penyimpanan.

  • Saat berada di namespace velero (Anda seharusnya berada di sini setelah membuat namespace velero), klik  tab Izin  , lalu klik  tombol Tambah  .
    • Sumber Identitas: vsphere.local
    • Pencarian Pengguna/Grup: administrator
    • Peran: Pemilik
    • Klik  tombol OK  .
  • Klik  tombol Tambah  lagi.
    • Sumber Identitas: corp.vmw
    • Pencarian Pengguna/Grup: vmwadmins (grup)
    • Peran: Pemilik
    • Klik  tombol OK  .
  • Klik  tab Penyimpanan  , lalu klik tombol Edit.
    • Pilih kebijakan K8s
    • Klik  tombol OK  .

Instal Plugin Velero

Dari cli-vm, pastikan Anda masuk ke supervisor cluster.

Menyalin
kubectl vsphere login --server wcp.corp.vmw -u vmwadmin@corp.vmw
 
 
Logged in successfully.
 
You have access to the following contexts:
   test
   velero
   wcp.corp.vmw
 
If the context you wish to use is not in this list, you may need to try
logging in again later, or contact your cluster administrator.
 
To change context, use `kubectl config use-context <workload name>`

Perhatikan bahwa Anda sekarang juga memiliki konteks velero (kami tidak menggunakannya).

Tetapkan konteks Anda ke kluster pengawas itu sendiri.

Menyalin
kubectl config use-context wcp.corp.vmw
Switched to context "wcp.corp.vmw".

Anda perlu membuat definisi ConfigMap yang akan memberi tahu plugin Velero bahwa kita sedang bekerja dengan kluster Supervisor sekaligus menyediakan nama untuk rahasia konfigurasi vSphere (velero-vsphere-config-secret) dan memberi tahu namespace tempat kita bekerja (velero).

Menyalin
pengawas-velero-vsphere-plugin-config.yaml
apiVersion: v1 kind: ConfigMap metadata: name: velero-vsphere-plugin-config data: cluster_flavor: SUPERVISOR

Setelah berkas ini dibuat, kita dapat menerapkannya pada namespace velero.

Menyalin
kubectl apply -n velero -f supervisor-velero-vsphere-plugin-config.yaml

Anda perlu mengunduh velero-vsphere CLI, yang dapat diperoleh dari https://github.com/vmware-tanzu/velero-plugin-for-vsphere/releases/download/v1.4.2/velero-vsphere-1.3.0-linux-amd64.tar.gz  (versi Linux). Ekstrak velero-vspherebiner dan salin ke sistem dengan akses ke kluster supervisor (dan buat agar dapat dieksekusi).

Velero memerlukan bucket S3 untuk menyimpan data cadangan. Saya mengonfigurasi Minio melalui alat TrueNAS. Layanan S3 di sini dikonfigurasi untuk menggunakan sertifikat yang ditandatangani oleh CA internal saya, tetapi velero-vsphereCLI tidak memiliki ketentuan untuk menyediakan informasi sertifikat selama konfigurasi. Dengan mengingat hal ini, Anda perlu mengonfigurasi lokasi S3 Anda untuk menggunakan sertifikat yang ditandatangani oleh CA publik atau tidak sama sekali.

Dalam penerapan MinIO saya, saya telah membuat bucket bernama velero untuk digunakan dengan pencadangan Velero.

Untuk menyediakan kredensial untuk bucket S3 ke perintah velero-vsphere, Anda perlu membuat file kredensial.

Buat file bernama s3-credentials dengan konten yang mirip dengan berikut ini:

Menyalin
kredensial s3
[default] aws_access_key_id = miniovmw aws_secret_access_key = minio123

Anda akhirnya siap menggunakan velero-vsphereperintah untuk menyebarkan velero.

Menyalin
velero-vsphere install  --namespace velero --version v1.9.2 --image velero/velero:v1.9.2 --provider aws --plugins velero/velero-plugin-for-aws:v1.6.1,vsphereveleroplugin/velero-plugin-for-vsphere:v1.4.2 --bucket velero --secret-file /home/ubuntu/Velero/s3-credentials --snapshot-location-config region=minio --backup-location-config region=minio,s3ForcePathStyle="true",s3Url=http://192.168.110.60:9000

Send the request to the operator about installing Velero in namespace velero

Catatan: Anda mungkin memiliki ruang gerak dengan versi berbagai komponen yang tercantum dalam perintah ini, namun pastikan untuk memeriksa Plugin Velero untuk vSphere di vSphere Dengan Matriks Kompatibilitas Klaster Supervisor Tanzu .

Operator Velero yang sebelumnya dikonfigurasikan dalam kluster pengawas menangani pembuatan objek Velero yang diperlukan dalam namespace velero.

Ada dua deployment yang dibuat di namespace velero: velero dan backup-driver. Saya mengalami masalah kedua ketika saya melihat bahwa pod untuk deployment backup-driver macet dalam status tertunda. Jika ditelusuri lebih lanjut, ternyata masalahnya sama dengan yang saya lihat sebelumnya pada pod layanan Velero.

Menyalin
kubectl -n velero describe po backup-driver-567b85b996-prq8j
Events:
  Type     Reason            Age   From               Message
  ----     ------            ----  ----               -------
  Warning  FailedScheduling  114s  default-scheduler  0/7 nodes are available: 3 node(s) had untolerated taint {node-role.kubernetes.io/control-plane: }, 4 node(s) didn't match Pod's node affinity/selector. preemption: 0/7 nodes are available: 7 Preemption is not helpful for scheduling.

Dan pengecekan toleransi pada penerapan menunjukkan bahwa masalahnya sama dengan tidak bekerja dengan noda “bidang kontrol” pada simpul bidang kontrol.

Menyalin
kubectl -n velero get deployments backup-driver -o jsonpath="{.spec.template.spec.tolerations}" |jq
[
  {
    "effect": "NoSchedule",
    "key": "node-role.kubernetes.io/master",
    "operator": "Exists"
  },
  {
    "effect": "NoSchedule",
    "key": "kubeadmNode",
    "operator": "Equal",
    "value": "master"
  }
]

Anda perlu mengedit penerapan driver cadangan untuk memperbaiki perbedaan ini. 

Menyalin
kubectl -n velero edit deployments backup-driver

Bagian berikut harus diedit, mengganti “master” dengan “control-plane”.

Menyalin
      nodeSelector:
        node-role.kubernetes.io/master: ""
Menyalin
      tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/master
        operator: Exists
      - effect: NoSchedule
        key: kubeadmNode
        operator: Equal
        value: master

Setelah diedit, bagian yang dicatat akan terlihat seperti berikut:

Menyalin
      nodeSelector:
        node-role.kubernetes.io/control-plane: ""
Menyalin
      tolerations:
      - effect: NoSchedule
        key: node-role.kubernetes.io/control-plane
        operator: Exists
      - effect: NoSchedule
        key: kubeadmNode
        operator: Equal
        value: control-plane

Segera setelah membuat perubahan ini, Anda akan melihat pod driver cadangan kedua sedang dibuat.

Menyalin
kubectl -n velero get po
NAME                             READY   STATUS              RESTARTS   AGE
backup-driver-567b85b996-prq8j   0/1     Pending             0          6m13s
backup-driver-d487c5fbb-6pjr4    0/1     ContainerCreating   0          13s
velero-fcf47c755-mhphp           1/1     Running             0          7m55s

Dan tak lama kemudian, pod baru akan aktif dan berjalan, sedangkan pod asli akan terhapus.

Menyalin
kubectl -n velero get po
NAME                            READY   STATUS    RESTARTS   AGE
backup-driver-d487c5fbb-6pjr4   1/1     Running   0          14s
velero-fcf47c755-mhphp          1/1     Running   0          7m56s

CATATAN: Jika Anda mengikuti petunjuk di sini saat mengonfigurasi ini sendiri, Anda sebaiknya langsung ke bagian Buat Rahasia velero-token . Saya menemukan bug dalam cara operator Velero membuat akun layanan velero. Sebaiknya Anda membaca seluruh posting blog lalu kembali ke bagian ini dengan pemahaman tentang mengapa Anda tidak ingin langsung melanjutkan langkah ini.

Pada titik ini, VM velero-dtamanager-01a sudah dapat dihidupkan.

Karena Anda tidak dapat mengonfigurasi VM Data Manager dengan alamat IP statis, periksa halaman Detail Mesin Virtual untuk VM tersebut guna melihat alamat IP yang diterimanya melalui DHCP.

Cadangkan Beban Kerja Berstatus di Cluster Supervisor

CATATAN: Seperti yang disebutkan di akhir bagian sebelumnya, jika Anda mengikuti, pastikan untuk mengikuti langkah-langkah di bagian selanjutnya, Buat Rahasia velero-token , sebelum mencoba melakukan pencadangan. Anda akan segera mengetahui alasannya.

Anda perlu mengunduh velero CLI agar dapat membuat cadangan beban kerja Kubernetes. Anda dapat memperoleh berkas tgz velero CLI dari  https://github.com/vmware-tanzu/velero/releases/download/v1.9.2/velero-v1.9.2-linux-amd64.tar.gz  (ini bukan versi terbaru tetapi harus sesuai dengan yang telah diinstal oleh velero-vsphere).

Ekstrak  velero-v1.9.2-linux-amd64/velerobiner dari .tgzberkas dan buat agar dapat dieksekusi.

Validasi bahwa CLI berfungsi dan dapat berkomunikasi dengan komponen Velero yang diterapkan:

Menyalin
velero version
Client:
        Version: v1.9.2
        Git commit: 82a100981cc66d119cf9b1d121f45c5c9dcf99e1
Server:
        Version: v1.9.2

Anda dapat menggunakan perintah velero backup create untuk mencadangkan beban kerja. Dalam posting saya sebelumnya, Menginstal Harbor Image Registry ke vSphere 8 dengan Tanzu Supervisor Cluster , saya telah membuat penerapan nginx yang sangat sederhana di namespace pengujian dari supervisor cluster. Penerapan ini memiliki volume persisten (didukung oleh vSphere Cloud Native Storage) dan alamat IP dengan beban seimbang (didukung oleh NSX). Saya akan menggunakan penerapan ini untuk menguji skenario pencadangan/pemulihan dengan Velero.

Menyalin
velero backup create nginx --include-resources services,deployments,persistentvolumeclaims --include-namespaces test
Backup request "nginx" submitted successfully.
Run `velero backup describe nginx` or `velero backup logs nginx` for more details.

Saya memfilter sumber daya karena ada beberapa CRD (dibuat sebagai bagian dari namespace pengawas) yang tidak dapat dicadangkan dengan Velero.

Anda dapat melihat bahwa Velero memulai snapshot volume persisten yang terkait dengan penerapan nginx.

Anda juga dapat memeriksa keberadaan snapshot (CRD yang dibuat oleh Velero) melalui kubectl.

Menyalin
kubectl get snapshot -n test
NAME                                        AGE
snap-9ea06814-4df4-48ff-9aad-ed0997e6290c   26s

Anda dapat mendeskripsikan pencadangan untuk melihat detail lebih lanjut tentang apa yang dilakukan.

Menyalin
velero backup describe nginx
Name:         nginx
Namespace:    velero
Labels:       velero.io/storage-location=default
Annotations:  velero.io/source-cluster-k8s-gitversion=v1.24.9+vmware.wcp.1
              velero.io/source-cluster-k8s-major-version=1
              velero.io/source-cluster-k8s-minor-version=24

Phase:  Completed

Errors:    0
Warnings:  0

Namespaces:
  Included:  test
  Excluded:  <none>

Resources:
  Included:        services, deployments, persistentvolumeclaims
  Excluded:        <none>
  Cluster-scoped:  auto

Label selector:  <none>

Storage Location:  default

Velero-Native Snapshot PVs:  auto

TTL:  720h0m0s

Hooks:  <none>

Backup Format Version:  1.1.0

Started:    2023-03-21 14:10:27 -0700 PDT
Completed:  2023-03-21 14:11:03 -0700 PDT

Expiration:  2023-04-20 14:10:27 -0700 PDT

Total items to be backed up:  3
Items backed up:              3

Velero-Native Snapshots: <none included>

Anda dapat melihat isi bucket velero di MInIO dan melihat bahwa sekarang ada folder cadangan di sana.

Jika menelusuri lebih jauh ke bawah, Anda dapat melihat beberapa detail tentang apa yang disimpan Velero ke bucket S3.

Ada CRD yang dibuat oleh Velero yang disebut upload, yang menjelaskan proses pemindahan snapshot volume ke bucket S3.

Menyalin
kubectl -n velero get upload
NAME                                          AGE
upload-4f2738bf-450d-425c-a148-2196615fae30   2m25s
Menyalin
kubectl -n velero get upload upload-4f2738bf-450d-425c-a148-2196615fae30 -o jsonpath="{.status}" | jq
{
  "nextRetryTimestamp": "2023-03-21T21:11:03Z",
  "phase": "New",
  "progress": {}
}

Di sinilah saya melihat masalah. Pengunggahan tidak pernah melewati fase "baru". Masalahnya ada pada pengelola data dan skrip yang membuat wadah pengelola data velero tidak dapat menemukan rahasia bernama "velero-token" di namespace velero.

Buat Rahasia token velero

Ternyata rahasia token akun layanan tidak dibuat secara otomatis di Kubernetes 1.24 dan yang lebih baru, oleh karena itu muncul masalah rahasia velero-token yang hilang. Anda dapat membuat rahasia ini secara manual untuk mengatasi masalah ini hingga versi layanan Velero yang lebih baru untuk vSphere dengan Tanzu dirilis yang mengatasi masalah ini.

Anda perlu membuat berkas definisi untuk rahasia yang pada dasarnya hanya memberitahunya untuk membuat token untuk akun layanan velero.

Menyalin
velero-token.yaml
apiVersion: v1 kind: Secret type: kubernetes.io/service-account-token metadata: name: velero-token annotations: kubernetes.io/service-account.name: "velero"
Menyalin
kubectl -n velero apply -f velero-token.yaml

Anda dapat memeriksa apakah rahasia ini dibuat dengan benar.

Menyalin
kubectl -n velero describe secret velero-token
Name:         velero-token
Namespace:    velero
Labels:       <none>
Annotations:  kubernetes.io/service-account.name: velero
              kubernetes.io/service-account.uid: a868e1c1-f13b-40af-aecc-ca16e493388b

Type:  kubernetes.io/service-account-token

Data
====
token:      eyJhbGciOiJSUzI1NiIsImtpZCI6Ii05RDc2OFdwLXM2QVlfM2hIdnQ5b2NoYVlSZE4tZ2RIVnlSV0pVS0FDd2sifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJ2ZWxlcm8iLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlY3JldC5uYW1lIjoidmVsZXJvLXRva2VuIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6InZlbGVybyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImE4NjhlMWMxLWYxM2ItNDBhZi1hZWNjLWNhMTZlNDkzMzg4YiIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDp2ZWxlcm86dmVsZXJvIn0.IrHDLxNM_DIyx1By0nzRPBBJqv6HHgxdCpJqFKH3e9kv3pO9CUf2hlvpCXpRVlo8u33i24Z209N0P0nb1tiNgquxBbsJkJ3d4r31_6w38HHtLYEPjJc9Ct1DyR6i2gRWwT-RXfGPzffhIxTnrwdyCNhPhQQeZUp5ufwjJFuoa69M_IYKWm4LB6_HjN8TjkzHXldHsjow8ztYDV9I_izgxAgt-SLpiuo79Pk3PLNjXtp8P-DRyfIsoJ7yC5ZhPmjWwJpbWoHE5YnoCjZjJv0f81na-V1HMYeSLgDN0CscxPe0EepW_WyDd2vkepEDTGwSJWJ4IqMzPvxMWwik0aHnRA
ca.crt:     1099 bytes
namespace:  6 bytes

Jika Anda telah memulai VM Data Manager, Anda mungkin perlu masuk dan memulai ulang velero-datamgrlayanan. Anda dapat masuk di konsol VM atau SSH sebagai pengguna root dengan kata sandi default changeme (Anda akan dipaksa untuk mengubah kata sandi ini).

Menyalin
systemctl restart velero-datamgr

Anda dapat memvalidasi bahwa layanan berjalan/berjalan dengan benar (pada dasarnya berjalan cepat dan hanya memulai kontainer velero-datamgr)

Menyalin
systemctl status velero-datamgr
● velero-datamgr.service - Start Velero vsphere plugin data manager
   Loaded: loaded (/lib/systemd/system/velero-datamgr.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Mon 2023-04-10 15:46:32 UTC; 20min ago
     Docs: https://github.com/vmware-tanzu/velero-plugin-for-vsphere
  Process: 495 ExecStart=/usr/bin/velero-vsphere-plugin-datamgr.sh (code=exited, status=0/SUCCESS)
 Main PID: 495 (code=exited, status=0/SUCCESS)

Apr 10 15:46:25 photon-cnsdp velero-vsphere-plugin-datamgr.sh[495]: 41bd06e354e8: Verifying Checksum
Apr 10 15:46:25 photon-cnsdp velero-vsphere-plugin-datamgr.sh[495]: 41bd06e354e8: Download complete
Apr 10 15:46:26 photon-cnsdp velero-vsphere-plugin-datamgr.sh[495]: 916eae7333e9: Pull complete
Apr 10 15:46:30 photon-cnsdp velero-vsphere-plugin-datamgr.sh[495]: 024b20d3e68e: Pull complete
Apr 10 15:46:30 photon-cnsdp velero-vsphere-plugin-datamgr.sh[495]: 726c665132fb: Pull complete
Apr 10 15:46:30 photon-cnsdp velero-vsphere-plugin-datamgr.sh[495]: 41bd06e354e8: Pull complete
Apr 10 15:46:32 photon-cnsdp velero-vsphere-plugin-datamgr.sh[495]: Digest: sha256:da87ca573af13e90410b8dac933b052a95dab779d471e915eb8829107006a24c
Apr 10 15:46:32 photon-cnsdp velero-vsphere-plugin-datamgr.sh[495]: Status: Downloaded newer image for vsphereveleroplugin/data-manager-for-plugin:v1.4.1
Apr 10 15:46:32 photon-cnsdp velero-vsphere-plugin-datamgr.sh[495]: Total reclaimed space: 0B
Apr 10 15:46:32 photon-cnsdp velero-vsphere-plugin-datamgr.sh[495]: fde6ec1adb2ac4a27b1c4394aa43f2a8abcd04f68792dffbcddbaa72d037304f
Menyalin
docker ps
CONTAINER ID        IMAGE                                                COMMAND                  CREATED             STATUS              PORTS               NAMES
fde6ec1adb2a        vsphereveleroplugin/data-manager-for-plugin:v1.4.1   "/datamgr server --u…"   21 minutes ago      Up 21 minutes                           velero-datamgr

Jika Anda belum memulai VM pengelola data, sekaranglah saatnya untuk melakukannya. Anda kemudian dapat melanjutkan ke Cadangkan Beban Kerja Berstatus di bagian Supervisor Cluster dan mengambil cadangan tanpa kesalahan.

Cadangkan Beban Kerja Berstatus di Cluster Supervisor – Putaran Kedua

Cadangan sebelumnya dapat dihapus dengan velero backup deleteperintah tersebut dan Anda dapat menggunakan perintah yang sama persis seperti yang kita gunakan sebelumnya untuk membuat yang baru. Anda mungkin menemukan bahwa masih ada snapshot pada volume persisten dan kemudian dapat dihapus dengan mengikuti tiga langkah pertama dalam posting blgo Cormac Hogan, Tugas “Menghapus objek penyimpanan virtual” melaporkan “Parameter yang ditentukan tidak benar” . Dengan cadangan baru yang dibuat, Anda dapat memeriksanya untuk memastikan bahwa masalah yang sama tidak ada.

Menyalin
velero backup describe nginx
Backup request "nginx" submitted successfully.
Run `velero backup describe nginx` or `velero backup logs nginx` for more details.
ubuntu@cli-vm:~/Velero$ velero backup describe nginx
Name:         nginx
Namespace:    velero
Labels:       velero.io/storage-location=default
Annotations:  velero.io/source-cluster-k8s-gitversion=v1.24.9+vmware.wcp.1
              velero.io/source-cluster-k8s-major-version=1
              velero.io/source-cluster-k8s-minor-version=24

Phase:  Completed

Errors:    0
Warnings:  0

Namespaces:
  Included:  test
  Excluded:  <none>

Resources:
  Included:        services, deployments, persistentvolumeclaims
  Excluded:        <none>
  Cluster-scoped:  auto

Label selector:  <none>

Storage Location:  default

Velero-Native Snapshot PVs:  auto

TTL:  720h0m0s

Hooks:  <none>

Backup Format Version:  1.1.0

Started:    2023-04-10 09:12:47 -0700 PDT
Completed:  2023-04-10 09:13:23 -0700 PDT

Expiration:  2023-05-10 09:12:47 -0700 PDT

Total items to be backed up:  3
Items backed up:              3

Velero-Native Snapshots: <none included>
Menyalin
kubectl -n velero get upload
NAME                                          AGE
upload-689c6442-74a1-4b60-bb66-014c7b95c005   2m12s
Menyalin
kubectl -n velero get upload upload-689c6442-74a1-4b60-bb66-014c7b95c005 -o jsonpath="{.status}" | jq
{
  "completionTimestamp": "2023-04-10T16:13:41Z",
  "message": "Upload completed",
  "nextRetryTimestamp": "2023-04-10T16:13:28Z",
  "phase": "Completed",
  "processingNode": "192.168.100.100-00:50:56:b8:72:ca",
  "progress": {},
  "startTimestamp": "2023-04-10T16:13:28Z"
}

Anda dapat melihat dari output bahwa fase pengunggahan telah Selesai.

Dan Anda akan melihat lebih banyak operasi snapshot pada disk virtual yang mendukung penerapan nginx di namespace pengujian daripada yang terlihat sebelumnya. Hal terpenting adalah snapshot yang diambil dihapus.

Anda juga akan melihat folder tambahan di bawah bucket velero di MinIO untuk data cadangan berstatus:

Jika Anda menelusuri cukup jauh ke dalam folder ini, Anda akhirnya akan sampai ke cadangan pv itu sendiri.

Perhatikan bahwa ukurannya adalah 50MB. Anda dapat memeriksanya dengan ukuran ngxinx-logs pvc.

Menyalin
kubectl -n test describe pvc nginx-logs
Name:          nginx-logs
Namespace:     test
StorageClass:  k8s-policy
Status:        Bound
Volume:        pvc-8fd7cdf7-b1e3-4127-856f-ef60476ad5dc
Labels:        app=nginx
Annotations:   pv.kubernetes.io/bind-completed: yes
               pv.kubernetes.io/bound-by-controller: yes
               volume.beta.kubernetes.io/storage-provisioner: csi.vsphere.vmware.com
               volume.kubernetes.io/storage-provisioner: csi.vsphere.vmware.com
               volumehealth.storage.kubernetes.io/health: accessible
               volumehealth.storage.kubernetes.io/health-timestamp: Tue Mar 21 13:41:25 UTC 2023
Finalizers:    [kubernetes.io/pvc-protection]
Capacity:      50Mi
Access Modes:  RWO
VolumeMode:    Filesystem
Used By:       nginx-deployment-555bf4ff65-h8zvm
Events:        <none>

Hapus Beban Kerja Berstatus Cadangan dan Pulihkan dengan Velero

Hapus penerapan nginx sehingga Anda dapat menguji pemulihan.

Menyalin
kubectl delete -f with-pv.yaml
persistentvolumeclaim "nginx-logs" deleted
deployment.apps "nginx-deployment" deleted
service "my-nginx" deleted

Anda akan melihat disk virtual cadangan terhapus di vCenter.

Anda dapat memeriksa untuk memastikan tidak ada pod, klaim volume persisten, atau layanan yang tersisa di namespace pengujian.

Menyalin
kubectl -n test get po,pvc,svc
No resources found in test namespace.

Sebelum memulai pemulihan, Anda dapat menggunakan velero perintah untuk memeriksa apakah cadangan tersedia.

Menyalin
velero backup get
NAME    STATUS      ERRORS   WARNINGS   CREATED                         EXPIRES   STORAGE LOCATION   SELECTOR
nginx   Completed   0        0          2023-04-10 09:12:47 -0700 PDT   29d       default            <none>

Gunakan velero restoreperintah tersebut bersama dengan nama cadangan yang diambil sebelumnya (nginx) untuk memulai pemulihan.

Menyalin
velero restore create --from-backup nginx
Restore request "nginx-20230410101021" submitted successfully.
Run `velero restore describe nginx-20230410101021` or `velero restore logs nginx-20230410101021` for more details.

Anda dapat menyelidiki status operasi pemulihan.

Menyalin
velero restore describe nginx-20230410101021
Name:         nginx-20230410101021
Namespace:    velero
Labels:       <none>
Annotations:  <none>

Phase:                       Completed
Total items to be restored:  3
Items restored:              3

Started:    2023-04-10 10:10:21 -0700 PDT
Completed:  2023-04-10 10:10:32 -0700 PDT

Warnings:
  Velero:     <none>
  Cluster:  stat /tmp/861032209/resources/persistentvolumes/cluster/pvc-8fd7cdf7-b1e3-4127-856f-ef60476ad5dc.json: no such file or directory
  Namespaces: <none>

Backup:  nginx

Namespaces:
  Included:  all namespaces found in the backup
  Excluded:  <none>

Resources:
  Included:        *
  Excluded:        nodes, events, events.events.k8s.io, backups.velero.io, restores.velero.io, resticrepositories.velero.io
  Cluster-scoped:  auto

Namespace mappings:  <none>

Label selector:  <none>

Restore PVs:  auto

Existing Resource Policy:   <none>

Preserve Service NodePorts:  auto

Jika berfungsi seperti yang diharapkan, Anda akan melihat disk virtual baru dibuat dan dilampirkan ke pod nginx vSphere baru

Kembali ke baris perintah, Anda dapat memeriksa keberadaan pod, klaim volume persisten, dan layanan di namespace pengujian.

Menyalin
kubectl -n test get po,pvc,svc
NAME                                    READY   STATUS    RESTARTS   AGE
pod/nginx-deployment-555bf4ff65-4nkwm   2/2     Running   0          2m59s

NAME                               STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/nginx-logs   Bound    pvc-518ed7be-0cfb-41f1-9a72-f07435a5ec66   50Mi       RWO            k8s-policy     3m9s

NAME               TYPE           CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE
service/my-nginx   LoadBalancer   10.96.1.157   10.40.14.69   80:31580/TCP   2m59s

Dan Anda dapat memvalidasi bahwa layanan my-nginx (di 10.40.14.69) menyajikan halaman web nginx default.

Saya akan mengulas Velero di postingan mendatang untuk melihat cara kerjanya dalam mencadangkan beban kerja di kluster Tanzu Kubernetes yang diterapkan melalui vSphere 8 dengan Tanzu.

Tidak ada komentar:

Posting Komentar