Dokumen ini memberikan panduan pemecahan masalah untuk masalah penyimpanan.
Volume gagal dilampirkan
Output gkectl diagnose cluster terlihat seperti contoh berikut:
Checking cluster object...PASS
Checking machine objects...PASS
Checking control plane pods...PASS
Checking gke-connect pods...PASS
Checking kube-system pods...PASS
Checking gke-system pods...PASS
Checking storage...FAIL
PersistentVolume pvc-776459c3-d350-11e9-9db8-e297f465bc84: virtual disk "[datastore_nfs] kubevols/kubernetes-dynamic-pvc-776459c3-d350-11e9-9db8-e297f465bc84.vmdk" IS attached to machine "gsl-test-user-9b46dbf9b-9wdj7" but IS NOT listed in the Node.Status
1 storage errors
Dalam contoh ini, satu atau beberapa Pod mengalami stuck dalam status ContainerCreating, dan menampilkan peringatan seperti output contoh berikut:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedAttachVolume 6s (x6 over 31s) attachdetach-controller AttachVolume.Attach failed for volume "pvc-776459c3-d350-11e9-9db8-e297f465bc84" : Failed to add disk 'scsi0:6'.
Jika disk virtual dilampirkan ke mesin virtual yang salah, Anda dapat melepaskannya secara manual dengan menggunakan langkah-langkah berikut:
Pindahkan node. Secara opsional, Anda dapat menyertakan
--ignore-daemonsetsdan--delete-local-dataflag dalam perintah kubectl drain. .Edit konfigurasi hardware VM di vCenter untuk menghapus volume.
Volume hilang
Masalah ini dapat terjadi jika disk virtual dihapus secara permanen. Situasi ini dapat terjadi jika operator menghapus disk virtual secara manual atau menghapus VM yang dilampirkan ke disk.
Jika Anda melihat error "tidak ditemukan" yang terkait dengan file VMDK, kemungkinan disk virtual telah dihapus secara permanen.
Output gkectl diagnose cluster terlihat seperti output berikut:
Checking cluster object...PASS
Checking machine objects...PASS
Checking control plane pods...PASS
Checking gke-connect pods...PASS
Checking kube-system pods...PASS
Checking gke-system pods...PASS
Checking storage...FAIL
PersistentVolume pvc-52161704-d350-11e9-9db8-e297f465bc84: virtual disk "[datastore_nfs] kubevols/kubernetes-dynamic-pvc-52161704-d350-11e9-9db8-e297f465bc84.vmdk" IS NOT found
1 storage errors
Satu atau beberapa Pod mengalami stuck dalam status ContainerCreating, seperti yang ditunjukkan dalam output contoh berikut:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning FailedAttachVolume 71s (x28 over 42m) attachdetach-controller AttachVolume.Attach failed for volume "pvc-52161704-d350-11e9-9db8-e297f465bc84" : File []/vmfs/volumes/43416d29-03095e58/kubevols/
kubernetes-dynamic-pvc-52161704-d350-11e9-9db8-e297f465bc84.vmdk was not found
Untuk mencegah masalah ini terjadi, kelola mesin virtual Anda seperti yang dijelaskan dalam Mengubah ukuran cluster pengguna dan Mengupgrade cluster.
Untuk mengatasi masalah ini, Anda dapat membersihkan resource Kubernetes terkait secara manual:
Hapus PVC yang mereferensikan PV dengan menjalankan
kubectl delete pvc [PVC_NAME].Hapus Pod yang mereferensikan PVC dengan menjalankan
kubectl delete pod [POD_NAME].Ulangi langkah 2 karena masalah Kubernetes #74374.
Volume CSI vSphere gagal dilepas
Masalah ini terjadi jika hak istimewa CNS > Searchable belum diberikan kepada
pengguna vSphere.
Jika Anda menemukan Pod yang mengalami stuck dalam fase ContainerCreating dengan peringatan FailedAttachVolume, hal ini mungkin disebabkan oleh pelepasan yang gagal pada node lain.
Untuk memeriksa error pelepasan CSI, jalankan perintah berikut:
kubectl get volumeattachments -o=custom-columns=NAME:metadata.name,DETACH_ERROR:status.detachError.message
Outputnya mirip dengan contoh berikut:
NAME DETACH_ERROR
csi-0e80d9be14dc09a49e1997cc17fc69dd8ce58254bd48d0d8e26a554d930a91e5 rpc error: code = Internal desc = QueryVolume failed for volumeID: "57549b5d-0ad3-48a9-aeca-42e64a773469". ServerFaultCode: NoPermission
csi-164d56e3286e954befdf0f5a82d59031dbfd50709c927a0e6ccf21d1fa60192d <none>
csi-8d9c3d0439f413fa9e176c63f5cc92bd67a33a1b76919d42c20347d52c57435c <none>
csi-e40d65005bc64c45735e91d7f7e54b2481a2bd41f5df7cc219a2c03608e8e7a8 <none>
Untuk mengatasi masalah ini, tambahkan hak istimewa CNS > Searchable ke akun pengguna vCenter Anda
.
Operasi pelepasan akan otomatis dicoba lagi hingga berhasil.
Driver CSI vSphere tidak didukung di host ESXi
Masalah ini terjadi saat host ESXi di cluster vSphere menjalankan versi yang lebih rendah dari ESXi 6.7U3.
Output gkectl check-config mencakup peringatan berikut:
The vSphere CSI driver is not supported on current ESXi host versions.
CSI requires ESXi 6.7U3 or above. See logs for ESXi version details.
Untuk mengatasi masalah ini, upgrade host ESXi Anda ke versi 6.7U3 atau yang lebih baru.
Pembuatan volume CSI gagal dengan error NotSupported
Masalah ini terjadi saat host ESXi di cluster vSphere menjalankan versi yang lebih rendah dari ESXi 6.7U3.
Output kubectl describe pvc mencakup error berikut:
Failed to provision volume with StorageClass <standard-rwo>: rpc error:
code = Internal desc = Failed to create volume. Error: CnsFault error:
CNS: Failed to create disk.:Fault cause: vmodl.fault.NotSupported
Untuk mengatasi masalah ini, upgrade host ESXi Anda ke versi 6.7U3 atau yang lebih baru.
Volume CSI vSphere gagal dilampirkan
Output kubectl describe pod terlihat seperti berikut:
Events:
Type Reason From Message
---- ------ ... ---- -------
Warning FailedAttachVolume ... attachdetach-controller Multi-Attach error for volume
"pvc-xxxxx"
Volume is already exclusively attached to one
node and can't be attached to another
Untuk mengatasi masalah ini, selesaikan beberapa langkah berikut:
Perhatikan nama PersistentVolumeClaim (PVC) di output sebelumnya, dan temukan VolumeAttachments yang terkait dengan PVC:
kubectl get volumeattachments | grep pvc-xxxxxOutput contoh berikut menunjukkan nama VolumeAttachments:
csi-yyyyy csi.vsphere.vmware.com pvc-xxxxx node-zzzzz ...Jelaskan VolumeAttachments:
kubectl describe volumeattachments csi-yyyyy | grep "Deletion Timestamp"Catat stempel waktu penghapusan, seperti dalam output contoh berikut:
Deletion Timestamp: 2021-03-10T22:14:58ZTunggu hingga waktu yang ditentukan oleh stempel waktu penghapusan, lalu hapus VolumeAttachment secara paksa. Untuk melakukannya, edit objek VolumeAttachment dan hapus finalizer.
kubectl edit volumeattachment csi-yyyyyHapus finalizer:
[...] Finalizers: external-attacher/csi-vsphere-vmware-com
VolumeSnapshot CSI vSphere belum siap karena versi
Masalah ini terjadi saat versi vCenter Server atau host ESXi lebih rendah dari 7.0 Update 3.
Output kubectl describe volumesnapshot mencakup error seperti contoh berikut:
rpc error: code = Unimplemented desc = VC version does not support snapshot operations.
Untuk mengatasi masalah ini, upgrade vCenter Server dan host ESXi ke versi 7.0 Update 3 atau yang lebih baru.
VolumeSnapshot CSI vSphere belum siap, snapshot maksimum per volume
Masalah ini terjadi saat jumlah snapshot per volume mencapai nilai maksimum untuk driver Penyimpanan Kontainer vSphere. Nilai default-nya adalah tiga.
Output kubectl describe volumesnapshot mencakup error seperti contoh berikut:
rpc error: code = FailedPrecondition desc = the number of snapshots on the source volume 5394aac1-bc0a-44e2-a519-1a46b187af7b reaches the configured maximum (3)
Untuk mengatasi masalah ini, gunakan langkah-langkah berikut untuk memperbarui jumlah maksimum snapshot per volume:
Dapatkan nama Secret yang menyediakan konfigurasi vSphere ke pengontrol CSI vSphere:
kubectl --kubeconfig <var class="edit">ADMIN_CLUSTER_KUBECONFIG</var> get deployment vsphere-csi-controller \ --namespace <var class="edit">USER_CLUSTER_NAME</var> \ --output json \ | jq -r '.spec.template.spec.volumes[] \ | select(.name=="vsphere-secret") .secret.secretName'Ganti kode berikut:
- ADMIN_KUBECONFIG: jalur file kubeconfig cluster admin Anda
- USER_CLUSTER_NAME: nama cluster pengguna Anda
Dapatkan nilai
data.configdari Secret, dekode base64, dan simpan dalam file bernamaconfig.txt:kubectl --kubeconfig <var class="edit">ADMIN_CLUSTER_KUBECONFIG</var> get secret <var class="edit">SECRET_NAME</var> \ --namespace <var class="edit">USER_CLUSTER_NAME </var> \ --output json | jq -r '.data["config"]' | base64 -d > config.txtGanti SECRET_NAME dengan nama Secret dari langkah sebelumnya.
Buka
config.txtuntuk diedit:Edit atau tambahkan kolom
global-max-snapshots-per-block-volumedi bagian[Snapshot], seperti contoh berikut:[Global] cluster-id = "my-user-cluster" insecure-flag = "0" user = "my-account.local" password = "fxqSD@SZTUIsG" [VirtualCenter "my-vCenter"] port = "443" datacenters = "my-datacenter1" [Snapshot] global-max-snapshots-per-block-volume = 4Hapus dan buat ulang Secret:
kubectl --kubeconfig <var class="edit">ADMIN_CLUSTER_KUBECONFIG</var> delete secret <var class="edit">SECRET_NAME</var> \ --namespace <var class="edit">USER_CLUSTER_NAME</var> kubectl --kubeconfig <var class="edit">ADMIN_CLUSTER_KUBECONFIG</var> create secret generic <var class="edit">SECRET_NAME</var> \ --namespace <var class="edit">USER_CLUSTER_NAME</var> \ --from-file=configMulai ulang Deployment
vsphere-csi-controller:kubectl --kubeconfig <var class="edit">ADMIN_CLUSTER_KUBECONFIG</var> rollout restart deployment vsphere-csi-controller \ --namespace <var class="edit">USER_CLUSTER_NAME</var>
Langkah berikutnya
Jika Anda memerlukan bantuan tambahan, hubungi Layanan Pelanggan Cloud.
Anda juga dapat melihat Mendapatkan dukungan untuk mengetahui informasi selengkapnya tentang resource dukungan, termasuk hal berikut:
- Persyaratan untuk membuka kasus dukungan.
- Alat untuk membantu Anda memecahkan masalah, seperti log dan metrik.
- Komponen,versi, danfitur Google Distributed Cloud untuk VMware (khusus software) yang didukung.