Jelaskan bugnya
Penyebaran trisula-csi mengalami crashlooping karena
I1207 08:20:13.609384 1 connection.go:186] GRPC error: rpc error: code = FailedPrecondition desc = Trident initialization failed; error attempting to clean up snapshot snapshot-SOMEUUID from backend ontapnas.... : error reading volume size: flexvol trident_pvc_SOMEOTHERUUID not found
Untuk beberapa alasan trident-csi mengikuti sisa referensi ke snapshot di backend PVC yang tidak mendukung snapshot.
Snapshot itu sendiri tidak ada lagi untuk PVC itu (mungkin telah salah dibuat di kubernetes di masa lalu [>1 bulan yang lalu]). Saya bahkan telah menghapus PVC asli. Tetapi masalah sebenarnya adalah menghapus objek "volumesnapshot" untuk snapshot itu, sepertinya tidak menghapus semua referensi lain untuk itu.
Backendnya adalah "ontap-nas-economy" ( https://netapp-trident.readthedocs.io/en/latest/kubernetes/operations/tasks/backends/ontap/drivers.html , yang q-tree).
Sepertinya CSI mencoba mencari snapshot untuk PV (qtree) yang disediakan di backend 'ekonomi', tapi sebenarnya memeriksa volume pvc di backend ontap-nas biasa. Yang ditetapkan sebagai default kami juga. Saya menduga masalah ini terjadi karena kelas penyimpanan default adalah kelas ekonomi, ketika snapshot dibuat. Itu berubah nanti untuk mengatur default ke ontap-nas yang mendukung backend, tetapi referensi mungkin rusak/tidak dibersihkan dengan benar pada saat itu (?).
Referensi lain tersebut antara lain:
Menghapus referensi sebelumnya akan memperbaiki masalah.
keadaan awal:
Beberapa waktu lalu, sumber daya volumesnapshot dibuat untuk backend yang tidak mendukungnya. Menghapus volumesnapshot itu tampaknya tidak menghapus referensinya pada objek trisula crd lainnya.
Apa yang memicu bug:
Restart beberapa node, restart kubelet pada salah satu node yang memiliki volumeattachment untuk snapshot/pvc.
Lingkungan
Buka shift 4.6.*
Untuk Mereproduksi
Perilaku yang diharapkan
Tidak ada crashlooping pada referensi TridentTransaction yang rusak.
Cetak peringatan dan lanjutkan ATAU bersihkan referensi yang rusak ATAU tambahkan tanda untuk mengaktifkan/menonaktifkan perilaku ini.
Solusinya adalah menghapus transaksi trisula secara manual dan memulai ulang pod trisula. ini masih bug yang perlu dibenahi.
Langkah-langkah untuk solusinya di bawah ini
Periksa entri dalam CRD transaksi trident.
# oc dapatkan tridenttransaction -n trident
# oc dapatkan tridenttransaction -n trident -o json
[ corona@stablrebco2 ~]$ oc dapatkan ttx -n trisula
NAMA USIA
pvc-63836175-1515-4326-b73f-cae3e0963be7-snapshot-0462e2ea-f167-4846-86a3-10cc6599b4a8 8d
3) Hapus entri yang ada di CRD transaksi trident.
Sebelum menghapus entri CRD tridenttransaction, Anda mungkin perlu mengedit entri sumber daya CRD dan menghapus finalizers(trident.netapp.io)
Untuk mengedit CRD, gunakan editor vi: (Ingat untuk menyimpan perubahan)
Hapus baris di bawah finalizer yang berisi entri "trident.netapp.io".
4) Untuk menghapus CRD transaksi trident.
Konfirmasi transaksi trident telah dihapus.
5) Setelah ini pod Trident akan muncul dan dalam status Running. Jika tidak, hapus pod trisula utama, (pod dengan nama pod terpanjang).
Ini akan memunculkan pod trisula baru yang akan mencoba menginisialisasi lagi dan harus berhasil diinisialisasi karena tidak ada transaksi basi yang harus ditangani selama inisialisasi.
apakah akan ada rilis patch untuk memperbaiki bug?
Hai @promothp ,
Bug ini bersama semua bug lainnya dievaluasi berdasarkan tingkat keparahan dan diprioritaskan untuk diperbaiki. Jika memungkinkan, perbaikan bug untuk masalah ini akan disertakan dalam rilis Trident v21.01 pada akhir Januari.
Tambahkan suara saya untuk memiliki tambalan lebih cepat dari nanti!
Perbaikan ini termasuk dalam rilis Trident v21.01 dengan commit 0ce1aaf .