Mengaktifkan dan Menggunakan Layanan Velero pada vSphere 8 dengan 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.
Daftar isi
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.
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
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.
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.
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.
kubectl -n svc-velero-vsphere-domain-c1006 edit deployments velero-vsphere-operator
Bagian berikut harus diedit, mengganti “master” dengan “control-plane”.
nodeSelector:
node-role.kubernetes.io/master: ""
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:
nodeSelector:
node-role.kubernetes.io/control-plane: ""
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.
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.
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.
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.
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).
pengawas-velero-vsphere-plugin-config.yamlapiVersion: v1 kind: ConfigMap metadata: name: velero-vsphere-plugin-config data: cluster_flavor: SUPERVISOR
Setelah berkas ini dibuat, kita dapat menerapkannya pada namespace velero.
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-vsphere
biner 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-vsphere
CLI 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:
kredensial s3[default] aws_access_key_id = miniovmw aws_secret_access_key = minio123
Anda akhirnya siap menggunakan velero-vsphere
perintah untuk menyebarkan velero.
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.
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.
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.
kubectl -n velero edit deployments backup-driver
Bagian berikut harus diedit, mengganti “master” dengan “control-plane”.
nodeSelector:
node-role.kubernetes.io/master: ""
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:
nodeSelector:
node-role.kubernetes.io/control-plane: ""
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.
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.
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/velero
biner dari .tgz
berkas dan buat agar dapat dieksekusi.
Validasi bahwa CLI berfungsi dan dapat berkomunikasi dengan komponen Velero yang diterapkan:
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.
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.
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.
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.
kubectl -n velero get upload
NAME AGE
upload-4f2738bf-450d-425c-a148-2196615fae30 2m25s
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.
velero-token.yamlapiVersion: v1 kind: Secret type: kubernetes.io/service-account-token metadata: name: velero-token annotations: kubernetes.io/service-account.name: "velero"
kubectl -n velero apply -f velero-token.yaml
Anda dapat memeriksa apakah rahasia ini dibuat dengan benar.
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-datamgr
layanan. Anda dapat masuk di konsol VM atau SSH sebagai pengguna root dengan kata sandi default changeme (Anda akan dipaksa untuk mengubah kata sandi ini).
systemctl restart velero-datamgr
Anda dapat memvalidasi bahwa layanan berjalan/berjalan dengan benar (pada dasarnya berjalan cepat dan hanya memulai kontainer velero-datamgr)
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
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 delete
perintah 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.
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>
kubectl -n velero get upload
NAME AGE
upload-689c6442-74a1-4b60-bb66-014c7b95c005 2m12s
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.
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.
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.
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.
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 restore
perintah tersebut bersama dengan nama cadangan yang diambil sebelumnya (nginx) untuk memulai pemulihan.
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.
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.
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