Komponen Container Storage Interface (CSI) mencakup csi-plugin dan csi-provisioner, yang memungkinkan Anda membuat, menyambungkan, dan melepas volume secara dinamis.
Pengenalan komponen
Saat membuat kluster, komponen CSI berikut diinstal secara default:
Komponen | Deskripsi | Jenis Penerapan |
csi-plugin | Memasang, melepas pemasangan, dan memformat volume. | DaemonSet |
csi-provisioner | Membuat dan menskalakan volume secara dinamis serta membuat Snapshot. Secara default, komponen ini mendukung pembuatan volume Elastic Block Storage, NAS, dan OSS. | Deployment |
Catatan Saat membuat kluster baru, versi terkelola dari csi-provisioner diinstal secara default. Alibaba Cloud bertanggung jawab atas operasi dan pemeliharaan (O&M) komponen terkelola, sehingga Pod terkait tidak dapat dilihat di kluster Anda.
Peningkatan csi-plugin dan csi-provisioner
Anda dapat melihat versi komponen csi-plugin dan csi-provisioner serta meningkatkannya melalui Konsol.
Penting Jika Anda menggunakan komponen csi-compatible-controller untuk migrasi FlexVolume ke CSI dan migrasi tersebut belum selesai, peningkatan otomatis komponen csi-plugin dan csi-provisioner tidak dapat dilakukan. Anda harus menyelesaikan migrasi terlebih dahulu sebelum meningkatkan komponen. Alternatifnya, Anda dapat meningkatkan komponen CSI secara manual selama proses migrasi. Untuk informasi lebih lanjut, lihat Peningkatan komponen.
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang ingin Anda kelola lalu klik namanya. Di panel navigasi kiri, klik Add-ons.
Klik tab Storage. Di bagian csi-plugin dan csi-provisioner, periksa apakah tersedia peningkatan lalu tingkatkan komponennya.
FAQ
Masalah komponen
Komponen CSI gagal dimulai, pengambilan citra gagal, dan terjadi kesalahan exec /usr/bin/plugin.csi.alibabacloud.com: exec format error
Gejala
Kontainer csi-plugin dalam Pod komponen csi-plugin melaporkan kesalahan exec /usr/bin/plugin.csi.alibabacloud.com: exec format error.
Penyebab
Secara default, csi-plugin mendukung arsitektur amd64 dan arm64. Jika Pod berjalan pada node dengan arsitektur amd64 atau arm64, kesalahan ini dapat terjadi karena pengambilan citra tidak lengkap. Pengambilan citra yang tidak lengkap berarti metadata citra ada, tetapi citra tidak berhasil ditarik, sehingga biner menjadi tidak valid. Pengambilan citra dapat gagal jika node dimatikan secara paksa selama proses berlangsung. Anda dapat memeriksa log ActionTrail untuk Instance ECS guna menentukan apakah perintah shutdown telah dieksekusi.
Solusi
Perluas kluster dengan menambahkan node baru, lalu drain node saat ini.
Jika Anda tidak ingin menambahkan node baru, lakukan langkah-langkah berikut:
Drain aplikasi dari node saat ini lalu hapus node tersebut dari kluster.
Masuk ke node tersebut dan hapus semua kontainer, jika ada.
Hapus semua file di direktori /var/lib/containerd.
Tambahkan kembali node tersebut ke kluster.
Masalah kehabisan memori (OOM) yang disebabkan oleh komponen penyimpanan
Kontainer sidecar dalam Pod komponen csi-provisioner menyimpan cache informasi seperti Pod, Volume persisten (PV), dan PersistentVolumeClaims (PVC). Hal ini dapat menyebabkan kesalahan kehabisan memori (OOM) seiring bertambahnya ukuran kluster.
Jika Anda menggunakan versi terkelola dari komponen csi-provisioner, buat Tiket untuk mendapatkan bantuan.
Jika Anda menggunakan versi self-managed dari komponen csi-provisioner dan terjadi kesalahan OOM, Anda harus menyesuaikan batas memori berdasarkan ukuran kluster Anda. Lakukan langkah-langkah berikut:
Masuk ke Konsol ACK. Di panel navigasi kiri, klik Clusters.
Di halaman Clusters, temukan kluster yang ingin Anda kelola lalu klik namanya. Di panel navigasi kiri, klik Add-ons.
Di halaman Component Management, temukan komponen csi-provisioner, klik ikon
, lalu pilih View YAML.
Modifikasi File YAML komponen untuk menyesuaikan batas memori berdasarkan ukuran kluster Anda.
Lalu lintas jaringan tinggi teramati pada Pod csi-plugin
Gejala
Pemantauan Pod menunjukkan lalu lintas jaringan tinggi untuk Pod csi-plugin.
Penyebab
Komponen csi-plugin bertanggung jawab untuk memasang volume NAS pada node, yang menghasilkan lalu lintas jaringan. Saat sebuah Pod pada node menggunakan volume NAS, lalu lintas permintaan NAS dari Pod tersebut melewati namespace csi-plugin. Lalu lintas ini kemudian dicatat oleh pemantauan kluster, yang melaporkan lalu lintas jaringan tinggi untuk Pod csi-plugin.
Solusi
Tidak diperlukan tindakan apa pun. Lalu lintas ini hanya dicatat oleh komponen pemantauan. Lalu lintas tersebut tidak diduplikasi dan tidak mengonsumsi lebar pita jaringan tambahan.
Log komponen csi-provisioner menampilkan kesalahan failed to renew lease xxx timed out waiting for the condition
Gejala
Saat menjalankan perintah kubectl logs csi-provisioner-xxxx -n kube-system untuk melihat log CSI, Anda mungkin menemukan kesalahan failed to renew lease xxx timed out waiting for the condition.
Penyebab
Komponen csi-provisioner adalah komponen Ketersediaan tinggi (HA) yang menjalankan beberapa replika. Pod menggunakan objek Lease Kubernetes untuk pemilihan leader. Selama proses ini, sebuah Pod harus mengakses server API untuk mendapatkan lease tertentu. Pod yang mendapatkan lease tersebut menjadi leader dan menyediakan layanan ke kluster. Kesalahan ini terjadi ketika Pod csi-provisioner gagal mengakses server API.
Solusi
Periksa apakah jaringan kluster dan server API berfungsi normal. Jika masalah berlanjut, buat Tiket untuk mendapatkan bantuan.
Kegagalan peningkatan komponen
Pemeriksaan awal komponen csi-plugin gagal
Jika kluster Anda tidak menggunakan volume disk, NAS, atau OSS, atau jika kluster merupakan Lingkungan pengujian, Anda dapat memperbarui citra secara manual untuk meningkatkan komponen csi-plugin.
Berikut adalah contoh perintah. Ganti <image url> dengan URL citra untuk versi baru. Untuk informasi lebih lanjut, lihat csi-plugin.
kubectl set image -n kube-system daemonset/csi-plugin csi-plugin=<image url>
Jika kluster Anda menggunakan volume disk, NAS, atau OSS dan berisi data bisnis penting, submit a ticket untuk meminta bantuan dalam peningkatan manual.
Pemeriksaan awal komponen csi-plugin berhasil, tetapi peningkatan gagal
Komponen csi-plugin adalah DaemonSet. Peningkatan gagal jika kluster berisi node yang berada dalam status NotReady atau status lain selain Berjalan. Anda harus memperbaiki node yang bermasalah secara manual lalu mencoba peningkatan lagi.
Jika Anda tidak dapat menentukan penyebabnya, submit a ticket untuk meminta bantuan dalam peningkatan manual.
Konsol menampilkan komponen csi-plugin tetapi tidak menampilkan komponen csi-provisioner
Versi lama csi-provisioner (1.14 dan sebelumnya) diterapkan sebagai StatefulSet. Jika StatefulSet csi-provisioner ada di kluster Anda, jalankan perintah kubectl delete sts csi-provisioner untuk menghapusnya. Kemudian, instal ulang komponen csi-provisioner.
Jika terjadi kesalahan, submit a ticket untuk meminta bantuan dalam peningkatan manual.
Pemeriksaan awal komponen csi-provisioner gagal
Jika kluster Anda tidak menggunakan volume penyimpanan dinamis jenis disk, NAS, atau OSS yang dibuat menggunakan StorageClass, atau jika kluster merupakan Lingkungan pengujian, Anda dapat memperbarui citra secara manual untuk meningkatkan komponen csi-provisioner.
Berikut adalah contoh perintah. Ganti <image url> dengan URL citra untuk versi baru. Untuk informasi lebih lanjut, lihat csi-provisioner.
kubectl set image -n kube-system deployment/csi-provisioner csi-provisioner=<image url>
Jika kluster Anda menggunakan volume penyimpanan dinamis jenis disk, NAS, atau OSS yang dibuat menggunakan StorageClass dan kluster berisi data bisnis penting, submit a ticket untuk meminta bantuan dalam peningkatan manual.
Pemeriksaan awal komponen csi-provisioner berhasil, tetapi peningkatan gagal
Submit a ticket untuk meminta bantuan dalam peningkatan manual.
Peningkatan komponen csi-provisioner gagal karena jumlah node kluster tidak memenuhi persyaratan
Gejala
Gejala 1: Pemeriksaan awal komponen csi-provisioner gagal dengan pesan kesalahan yang menunjukkan bahwa jumlah node kluster tidak memenuhi persyaratan.
Gejala 2: Pemeriksaan awal dan peningkatan komponen csi-provisioner berhasil, tetapi Pod komponen tersebut masuk ke status CrashLoopBackOff. Log menampilkan pesan kesalahan serupa berikut 403 Forbidden.
time="2023-08-05T13:54:00+08:00" level=info msg="Use node id : <?xml version=\"1.0\" encoding=\"iso-8859-1\"?>\n<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"\n \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">\n<html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\">\n <head>\n <title>403 - Forbidden</title>\n </head>\n <body>\n <h1>403 - Forbidden</h1>\n </body>\n</html>\n"
Penyebab
Penyebab Gejala 1: Untuk memastikan Ketersediaan tinggi, csi-provisioner menjalankan Pod primer dan sekunder yang harus diterapkan pada node berbeda. Peningkatan komponen gagal jika kluster hanya memiliki satu node.
Penyebab Gejala 2: Penguatan Keamanan diaktifkan pada node tempat Pod csi-provisioner berjalan. Mode ini memblokir akses ke server metadata pada node, yang menyebabkan kesalahan tersebut.
Solusi
Solusi untuk Gejala 1: Perbarui komponen csi-provisioner. Untuk informasi lebih lanjut, lihat Mengelola komponen csi-plugin dan csi-provisioner.
Solusi untuk Gejala 2: Nonaktifkan Penguatan Keamanan pada node. CSI memerlukan akses ke metadata node.
Peningkatan komponen csi-provisioner gagal karena perubahan properti StorageClass
Gejala
Pemeriksaan awal komponen csi-provisioner gagal dengan pesan kesalahan yang menunjukkan bahwa properti StorageClass tidak sesuai harapan.
Penyebab
Properti StorageClass default telah diubah. Hal ini dapat terjadi jika Anda menghapus lalu membuat ulang StorageClass dengan nama yang sama. Properti StorageClass bersifat immutable. Jika Anda mengubahnya, peningkatan komponen akan gagal.
Solusi
Anda harus menghapus StorageClass default di kluster, seperti alicloud-disk-essd, alicloud-disk-available, alicloud-disk-efficiency, alicloud-disk-ssd, dan alicloud-disk-topology. Penghapusan ini tidak memengaruhi aplikasi yang sudah ada. Setelah Anda menghapus StorageClass tersebut, coba instal ulang komponen csi-provisioner. Setelah instalasi selesai, sistem akan membuat ulang StorageClass tersebut secara otomatis. Tidak diperlukan tindakan lebih lanjut.
Penting Jika Anda memerlukan StorageClass kustom, buat yang baru dengan nama berbeda. Jangan ubah StorageClass default.
Referensi
Untuk informasi lebih lanjut tentang CSI, lihat alibaba-cloud-csi-driver.
Untuk informasi lebih lanjut tentang cara menginstal dan menguninstall komponen, lihat Komponen.