Jika sebuah Pod mengalami status abnormal saat memasang atau menggunakan persistent volume (PV), Anda dapat mengidentifikasi dan menyelesaikan masalah tersebut dengan memeriksa status serta event Pod dan PersistentVolumeClaim (PVC)-nya, serta status komponen Container Storage Interface (CSI). Topik ini menjelaskan cara melakukan troubleshooting masalah penyimpanan dan menyediakan informasi mengenai masalah penyimpanan umum.

1. Periksa apakah abnormalitas Pod disebabkan oleh masalah penyimpanan
Periksa event Pod atau PVC untuk memastikan bahwa masalah penyimpanan mencegah Pod berjalan.
-
Lihat event dari Pod yang abnormal.
kubectl describe pod <pod-name>-
Jika sebuah event menunjukkan adanya masalah penyimpanan, lanjutkan dengan langkah troubleshooting dalam topik ini. Misalnya, event
FailedSchedulingpada contoh output berikut memilikiMessageyang menunjukkan kegagalan penjadwalan karena ketidaksesuaian antara volume dan node.Events: Type Reason Age From Message ---- ------ ---- ---- ------- Warning FailedScheduling 4m37s default-scheduler 0/1 nodes are available: 1 node(s) had volume node affinity conflict. preemption: 0/1 nodes are available: 1 Preemption is not helpful for scheduling., -
Jika sebuah event, seperti event
SuccessfulAttachVolumepada contoh output, menunjukkan bahwa volume berhasil disambungkan tetapi Pod tidak berjalan (misalnya, berada dalam statusCrashLoopBackOff), maka masalah tersebut tidak terkait penyimpanan. Periksa event untuk masalah lain, atau submit a ticket untuk bantuan.Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 97s default-scheduler Successfully assigned default/disk-test-0 to cn-shanghai.192.168.5.2 Normal SuccessfulAttachVolume 97s attachdetach-controller AttachVolume.Attach succeeded for volume "d-uf6b8s2l5ypf48*****"
-
-
Jika Anda tidak melihat event terkait penyimpanan untuk Pod tersebut, lihat semua event.
kubectl get events-
Jika sebuah event menunjukkan adanya masalah penyimpanan, lanjutkan dengan langkah troubleshooting dalam topik ini. Misalnya, event
FailedBindingpada contoh output menunjukkan bahwa PVC gagal di-bind ke PV.LAST SEEN TYPE REASON OBJECT MESSAGE 2m56s Normal FailedBinding persistentvolumeclaim/data-my-release-mariadb-0 no persistent volumes available for this claim and no storage class is set 41s Normal ExternalProvisioning persistentvolumeclaim/pvc-nas-dynamic-create-subpath8 waiting for a volume to be created, either by external provisioner "nasplugin.csi.alibabacloud.com" or manually created by system administrator 3m31s Normal Provisioning persistentvolumeclaim/pvc-nas-dynamic-create-subpath8 External provisioner is provisioning volume for claim "default/pvc-nas-dynamic-create-subpath8" -
Jika tidak ada event terkait penyimpanan, periksa event untuk masalah lain, atau submit a ticket untuk bantuan.
-
2. Periksa apakah komponen penyimpanan berfungsi normal
Jika kluster Anda saat ini menggunakan komponen FlexVolume, kami menyarankan agar Anda segera migrasi ke komponen CSI karena FlexVolume telah ditinggalkan. Untuk informasi selengkapnya, lihat Migrate from FlexVolume to CSI.
-
Periksa apakah komponen penyimpanan CSI berfungsi dengan benar.
kubectl get pod -n kube-system |grep csiOutput contoh berikut dikembalikan. Jika sebuah Pod tidak berada dalam status `Running`, jalankan
kubectl describe pods <pod-name> -n kube-systemuntuk melihat event Pod dan alasan container berhenti.CatatanKomponen penyimpanan CSI mencakup csi-plugin dan csi-provisioner. Secara default, versi managed dari csi-provisioner diinstal. Komponen managed dipelihara oleh Alibaba Cloud. Anda tidak dapat melihat Pod untuk komponen tersebut di kluster Anda.
NAME READY STATUS RESTARTS AGE csi-plugin-bpz28 4/4 Running 0 3d csi-plugin-h2tdg 4/4 Running 0 3d csi-plugin-qpnm4 4/4 Running 0 3d csi-plugin-wczgm 4/4 Running 0 3d -
Periksa apakah komponen penyimpanan CSI menggunakan versi terbaru.
kubectl get ds csi-plugin -n kube-system -o yaml |grep imageAnda dapat menemukan versi gambar di bidang
imagepada informasi yang dikembalikan. Berikut adalah contoh output:image: registry-cn-shanghai-vpc.ack.aliyuncs.com/acs/csi-plugin:v1.33.1-67e8986-aliyunJika komponen penyimpanan bukan versi terbaru, upgrade the CSI components. Untuk informasi selengkapnya mengenai versi terbaru komponen penyimpanan, lihat csi-plugin.
CatatanAnda juga dapat membuka halaman Add-ons di konsol, temukan komponen csi-plugin dan csi-provisioner, lalu periksa versi dan lakukan upgrade.
-
Periksa file YAML PV, PVC, dan StorageClass untuk memastikan konfigurasi driver (
driveratau bidangprovisioner) diatur untuk menggunakan komponen penyimpanan CSI dan konsisten dengan komponen penyimpanan yang digunakan oleh kluster Anda.
3. Periksa apakah status PVC adalah Bound
-
Lihat status PVC.
kubectl get pvc -
Jika PVC tidak berada dalam status `Bound`, lakukan troubleshooting dan selesaikan masalah sebagai berikut.
Penyebab
-
Static: Selector PVC dan PV tidak memenuhi kondisi binding. Misalnya, konfigurasi selector di PVC tidak sesuai dengan konfigurasi di PV, nama StorageClass tidak konsisten, atau status PV adalah `Released`.
-
Dynamic: Terjadi masalah pada komponen csi-provisioner.
Solusi
-
Static: Periksa apakah file YAML terkait ditulis dengan benar. Untuk informasi selengkapnya, lihat topik berikut:
CatatanJika status PV adalah `Released`, PV tersebut tidak dapat digunakan kembali. Anda dapat memperoleh informasi resource penyimpanan dari PV tersebut lalu membuat ulang PV-nya.
-
Dynamic: Jalankan
kubectl describe pvc <pvc-name> -n <namespace>untuk melihat event PVC.-
Tangani masalah berdasarkan pesan event. Untuk informasi selengkapnya, lihat topik berikut:
-
Jika tidak ada pesan event yang relevan, ajukan Tiket untuk mendapatkan bantuan.
-
-
Jika Anda menggunakan persistent volume cloud disk, mungkin terjadi masalah saat ECS OpenAPI membuat cloud disk. Untuk informasi selengkapnya, lihat ECS Error Center untuk melakukan troubleshooting. Jika masalah berlanjut, submit a ticket untuk bantuan.
-
4. Periksa apakah status Pod adalah Running
-
Lihat status Pod.
kubectl get pod -
Jika PVC berada dalam status `Bound` tetapi Pod tidak berada dalam status `Running`, lakukan troubleshooting dan selesaikan masalah berdasarkan tipe persistent volume sebagai berikut.
Cloud disk persistent volumes
PentingSaat menggunakan persistent volume cloud disk, pastikan tipe instans ECS dari node tempat Pod dijadwalkan mendukung penyambungan tipe cloud disk yang ditentukan, dan bahwa Pod serta cloud disk berada dalam wilayah dan zona yang sama. Untuk informasi mengenai pemetaan antara tipe disk dan tipe instans ECS, lihat Instance families.
Penyebab
-
Tidak tersedia node yang memenuhi syarat untuk penjadwalan.
-
Terjadi masalah saat menyambungkan cloud disk.
-
Tipe instans ECS dan tipe cloud disk tidak cocok.
Solusi
-
Untuk pemulihan cepat, Anda dapat menjadwalkan Pod ke node lain. Untuk informasi selengkapnya, lihat Schedule applications to specified nodes.
-
Jalankan
kubectl describe pods <pod-name>untuk melihat event Pod.-
Tangani masalah berdasarkan pesan event. Untuk informasi selengkapnya, lihat Cloud disk persistent volume FAQ.
-
Jika tidak ada pesan event yang relevan, mengajukan tiket untuk mendapatkan bantuan.
-
-
Jika masalah disebabkan oleh ketidakcocokan antara tipe instans ECS dan tipe cloud disk, Anda dapat memilih tipe disk yang sesuai. Untuk informasi selengkapnya, lihat Instance families.
-
Untuk informasi selengkapnya mengenai penanganan masalah ECS OpenAPI lainnya, lihat ErrorCode.
NAS persistent volumes
Penting-
Node dan sistem file NAS harus berada dalam VPC yang sama. Jika tidak berada dalam VPC yang sama, Anda dapat menggunakan Cloud Enterprise Network (CEN) untuk menghubungkannya.
-
NAS mendukung pemasangan lintas zona.
-
Jalur mount untuk sistem file NAS Ekstrem harus dimulai dengan
/share.
Penyebab
-
Saat menggunakan
fsGroupsuntuk memasang sistem file NAS, banyak file dapat memperlambat operasi `chmod`. -
Port 2049 diblokir di security group, sehingga mencegah sistem file NAS dipasang.
-
Sistem file NAS dan node tidak berada dalam VPC yang sama.
Solusi
-
Periksa apakah
fsGroupsdiatur. Jika iya, Anda dapat menghapusnya, restart Pod, lalu pasang kembali volume tersebut. -
Konfirmasi apakah port 2049 diblokir di node tempat Pod dijadwalkan. Jika port tersebut diblokir, Anda dapat membuka port 2049 lalu memasang kembali volume tersebut. Untuk informasi selengkapnya, lihat Add a security group rule.
-
Konfirmasi bahwa sistem file NAS dan node berada dalam VPC yang sama. Jika tidak, gunakan CEN untuk menghubungkannya.
-
Untuk masalah lainnya, jalankan
kubectl describe pods <pod-name>untuk melihat event Pod.-
Tangani masalah berdasarkan pesan event. Untuk informasi selengkapnya, lihat NAS persistent volume FAQ.
-
Jika tidak ada pesan event yang relevan, submit a ticket untuk bantuan.
-
OSS persistent volumes
Penting-
Saat sebuah node memasang bucket OSS, PV harus berisi Informasi AccessKey. Anda dapat menyediakan informasi ini menggunakan Secret.
-
Saat menggunakan OSS lintas wilayah, ubah URL bucket ke titik akhir publik. Untuk akses dalam wilayah yang sama, kami menyarankan agar Anda menggunakan titik akhir internal.
Penyebab
-
Menggunakan
fsGroupsuntuk memasang bucket OSS yang berisi banyak file memperlambat operasi chmod. -
Titik akhir internal digunakan untuk akses lintas wilayah, sehingga mencegah koneksi ke titik akhir bucket.
Solusi
-
Periksa apakah
fsGroupsdiatur. Jika iya, Anda dapat menghapusnya, restart Pod, lalu pasang kembali volume tersebut. -
Periksa apakah Anda mengakses bucket lintas wilayah menggunakan titik akhir internal. Jika iya, gunakan titik akhir publik sebagai gantinya.
-
Untuk masalah lainnya, jalankan
kubectl describe pods <pod-name>untuk melihat event Pod.-
Tangani masalah berdasarkan pesan event. Untuk informasi selengkapnya, lihat ossfs 1.0 persistent volume FAQ atau ossfs 2.0 persistent volume FAQ.
-
Jika tidak ada pesan kirim tiket untuk mendapatkan bantuan.
-
-
FAQ
Saat saya membuat atau memasang persistent volume, PVC menampilkan pesan no volume plugin matched
Gejala
Saat Anda membuat atau memasang persistent volume, event PVC menampilkan pesan: Unable to attach or mount volumes: unmounted volumes=[xxx], unattached volumes=[xxx]: failed to get Plugin from volumeSpec for volume "xxx" err=no volume plugin matched.
Penyebab
Komponen penyimpanan yang ditentukan dalam templat YAML tidak ditemukan di kluster.
Solusi
Periksa apakah komponen penyimpanan ada di kluster.
-
Jika komponen penyimpanan belum diinstal, Anda dapat menginstalnya di kluster. Untuk informasi selengkapnya, lihat Manage components.
-
Jika komponen penyimpanan sudah diinstal, pastikan komponen tersebut sesuai dengan templat YAML untuk PV dan PVC serta memenuhi kondisi berikut:
-
Komponen penyimpanan CSI dideploy menggunakan dokumen terkait CSI. Untuk informasi selengkapnya, lihat CSI.
-
Komponen penyimpanan FlexVolume dideploy menggunakan dokumen terkait FlexVolume. Untuk informasi selengkapnya, lihat FlexVolume.
PentingKarena FlexVolume telah ditinggalkan, kami menyarankan agar Anda segera migrasi ke komponen CSI. Untuk informasi selengkapnya, lihat Migrate from FlexVolume to CSI.
-
Event Pod menampilkan pesan 0/x nodes are available: x pod has unbound immediate PersistentVolumeClaims
Gejala
Pod gagal berjalan, dan event Pod menampilkan pesan berikut:
0/x nodes are available: x pod has unbound immediate PersistentVolumeClaims. preemption: 0/x nodes are available: x Preemption is not helpful for scheduling
Penyebab
StorageClass kustom yang direferensikan oleh Pod belum dibuat sehingga tidak dapat ditemukan.
Solusi
Periksa apakah StorageClass yang direferensikan oleh Pod ada. Jika tidak ada, Anda dapat membuat ulang StorageClass tersebut.
PV berada dalam status Released dan tidak dapat di-bind dengan membuat ulang PVC
Gejala
Setelah PVC dihapus secara tidak sengaja, PV masuk ke status Released dan tidak dapat di-bind dengan membuat ulang PVC.
Penyebab
Jika reclaimPolicy dari PV adalah Retain, PV akan masuk ke status Released saat PVC yang di-bind-nya dihapus secara tidak sengaja.
Solusi
Anda dapat menghapus bidang pv.spec.claimRef dari PV lalu meng-bind-nya kembali menggunakan metode volume statis. PV kemudian akan masuk ke status Bound.
PV berada dalam status Lost dan tidak dapat di-bind dengan membuat ulang PVC
Gejala
Setelah PVC dan PV dibuat, PV masuk ke status Lost dan tidak dapat di-bind ke PVC.
Penyebab
Nama PVC yang direferensikan oleh bidang claimRef di PV tidak ada. Hal ini menyebabkan PV masuk ke status Lost.
Solusi
Anda dapat menghapus bidang pv.spec.claimRef dari PV lalu meng-bind-nya kembali menggunakan metode volume statis. PV kemudian akan masuk ke status Bound.
Apakah perubahan StorageClass memengaruhi penyimpanan yang sudah ada?
Tidak, tidak memengaruhi. Jika file YAML untuk PVC dan PV tidak diubah, perubahan pada StorageClass tidak memengaruhi penyimpanan yang sudah ada. Misalnya, jika Anda mengubah bidang allowVolumeExpansion dari StorageClass, perubahan tersebut hanya berlaku setelah Anda mengubah capacity dari PVC. Jika file YAML PVC tidak diubah, perubahan ini tidak memengaruhi konfigurasi yang sudah ada.