Atasi kegagalan pemeriksaan pra-penerbangan yang menghalangi upgrade, migrasi, atau peningkatan komponen kluster ACK.
Jenis pemeriksaan
ACK menjalankan tiga jenis pemeriksaan pra-penerbangan:
| Jenis pemeriksaan | Kapan dijalankan | Berlaku untuk |
|---|---|---|
| Pemeriksaan upgrade kluster | Sebelum upgrade kluster | Semua jenis kluster |
| Pemeriksaan migrasi kluster | Sebelum migrasi kluster | Migrasi dari ACK Serverless Edisi Dasar ke ACK Serverless Pro |
| Pemeriksaan komponen | Sebelum peningkatan komponen | Komponen individual |
Pemeriksaan upgrade kluster
Sebelum melakukan upgrade kluster, ACK memeriksa penggunaan API yang tidak digunakan lagi, batasan versi komponen, serta perubahan waktu proses. Upgrade hanya dilanjutkan setelah semua pemeriksaan berhasil dilalui.
Pemeriksaan mencakup dua kategori:
-
Resource kluster: Resource cloud seperti instance Server Load Balancer (SLB) dan jaringan Virtual Private Cloud (VPC).
-
Komponen kluster: Konfigurasi komponen, pengaturan aplikasi, dan penggunaan API yang tidak digunakan lagi.
Item pemeriksaan bervariasi tergantung pada jenis, versi, dan waktu proses kluster. Halaman pemeriksaan di Konsol ACK merupakan sumber resmi.
Resource kluster
| Item pemeriksaan | Apa yang divalidasi |
|---|---|
| APIServer SLB | Instance SLB ada |
| Status instance SLB adalah Normal | |
| Konfigurasi pendengar SLB (port dan protokol) valid | |
| Konfigurasi grup server backend SLB valid | |
| Konfigurasi kontrol akses SLB benar (lolos jika tidak dikonfigurasi) | |
| VPC | Instance VPC ada |
| Status instance VPC adalah Normal | |
| vSwitch | vSwitch ada |
| Status vSwitch adalah Normal | |
| vSwitch memiliki setidaknya dua alamat IP yang tersedia |
Komponen kluster
| Item pemeriksaan | Apa yang divalidasi |
|---|---|
| Kube Proxy Master | Komponen ada |
| Kube Proxy Worker | Komponen ada |
| APIService | Tidak ada APIService yang tidak tersedia |
| Component versions | Versi Terway, CoreDNS, cloud-controller-manager (CCM), Nginx Ingress Controller, dan Metric Server memenuhi persyaratan upgrade |
| Deprecated APIs | Kluster tidak menggunakan API yang tidak digunakan lagi |
Konfigurasi kluster
| Item pemeriksaan | Apa yang divalidasi |
|---|---|
| iptables | Konfigurasi iptables valid |
| Operating system | OS mendukung upgrade |
| yum | Manajer paket yum berfungsi dengan benar |
| kubelet | Konfigurasi kubelet sesuai harapan |
| Container runtime | Status waktu proses Docker atau containerd adalah Normal |
| Manifest | File manifest sesuai harapan |
Pemeriksaan migrasi kluster
ACK memeriksa kluster sebelum melakukan migrasi dari Edisi Dasar Serverless ke Serverless Pro. Migrasi hanya dilanjutkan setelah semua pemeriksaan berhasil dilalui.
Pemeriksaan mencakup dua kategori:
-
Resource kluster: Instance SLB dan jaringan VPC yang digunakan oleh kluster.
-
Komponen kluster: Konfigurasi komponen, termasuk keberadaan APIService yang tidak tersedia.
Item pemeriksaan bervariasi tergantung pada jenis, versi, dan waktu proses kluster. Halaman pemeriksaan di Konsol ACK merupakan sumber resmi.
Sumber daya Kluster
| Item pemeriksaan | Apa yang divalidasi |
|---|---|
| APIServer SLB | Instance SLB ada |
| Status instance SLB adalah Normal | |
| Konfigurasi pendengar SLB (port dan protokol) valid | |
| Konfigurasi grup server backend SLB valid | |
| Konfigurasi kontrol akses SLB benar (lolos jika tidak dikonfigurasi) | |
| VPC | Instansi terhubung-VPC ada |
| Status instance terhubung-VPC adalah Normal | |
| vSwitch | vSwitch ada |
| Status vSwitch adalah Normal | |
| vSwitch memiliki setidaknya dua alamat IP yang tersedia |
Komponen kluster
| Item pemeriksaan | Apa yang divalidasi |
|---|---|
| Kube Proxy Master | Komponen ada |
| Kube Proxy Worker | Komponen ada |
| APIService | Tidak ada APIService yang tidak tersedia |
Pemeriksaan komponen
ACK memeriksa setiap komponen sebelum melakukan peningkatan. Peningkatan hanya dilanjutkan setelah semua pemeriksaan berhasil dilalui.
Item pemeriksaan bervariasi tergantung pada jenis, versi, dan waktu proses komponen. Halaman pemeriksaan di Konsol ACK merupakan sumber resmi.
| Komponen | Item pemeriksaan | Apa yang divalidasi |
|---|---|---|
| cloud-controller-manager | Addon_CCM | Peningkatan komponen tidak menyebabkan perubahan pada SLB |
| Component_Block_Version | Versi CCM dapat ditingkatkan | |
| csi-plugin | DaemonSet_Annotation | Anotasi DaemonSet sesuai harapan |
| Csi_Driver_Attributes | Properti Container Storage Interface (CSI) Driver memenuhi persyaratan | |
| csi-provisioner | Stateful_Set_Exist | Resource merupakan StatefulSet |
| Deployment_Annotation | Anotasi Penyebaran sesuai harapan | |
| Storage_Class_Attributes | Properti StorageClass memenuhi persyaratan | |
| nginx-ingress-controller | Deployment_Healthy | Penyebaran Nginx Ingress dalam kondisi sehat |
| Deployment_Not_Under_HPA | Tidak ada Horizontal Pod Autoscaler (HPA) yang dikonfigurasi untuk Penyebaran tersebut | |
| Deployment_Not_Modified | Penyebaran belum dimodifikasi | |
| Nginx_Ingress_Pod_Error_Log | Nginx tidak memiliki log error | |
| LoadBalancer_Service_Healthy | Layanan Nginx dalam kondisi sehat | |
| Nginx_Ingress_Configuration | Ingress tidak memiliki konfigurasi yang tidak kompatibel | |
| aliyun-acr-credential-helper | RamRole_Exist | Komponen diberikan peran RAM AliyunCSManagedAcrRole |
| ack-cost-exporter | RamRole_Exist | Komponen diberikan peran RAM AliyunCSManagedCostRole |
Perbaiki pemeriksaan yang gagal
Kegagalan pemeriksaan umum dan solusinya:
| Pemeriksaan Gagal | Solusi |
|---|---|
| Versi komponen terlalu rendah | Tingkatkan komponen tersebut. Lihat Kelola komponen. |
| APIService tidak tersedia | Lihat langkah-langkah di bawah ini. |
| Kluster berisi API yang tidak digunakan lagi | Lihat API yang tidak digunakan lagi. |
Untuk mengatasi APIService yang tidak tersedia:
-
Temukan APIService yang tidak tersedia.
kubectl -n kube-system get apiservices | grep -i false -
Konfirmasi apakah APIService tersebut masih diperlukan.
PentingMenghapus APIService secara tidak sengaja dapat menyebabkan gangguan pada kluster. Verifikasi tujuannya sebelum melanjutkan.
-
Jika APIService tersebut tidak diperlukan lagi, hapuslah.
kubectl -n kube-system delete apiservices ${your-abnormal-apiservice-name}
API yang tidak digunakan lagi
Untuk kluster yang menjalankan Kubernetes 1.20 atau lebih baru, pemeriksaan pra-upgrade memindai log audit dari hari sebelumnya untuk mendeteksi penggunaan API yang tidak digunakan lagi.
Cara kerja deteksi API yang tidak digunakan lagi
Saat melakukan upgrade dari Kubernetes 1.20 ke 1.22, sistem memindai log audit kluster 1.20 untuk mencari API yang tidak digunakan lagi:
-
Jika ditemukan API yang tidak digunakan lagi, hasilnya hanya berupa notifikasi — tidak menghalangi upgrade.
-
Jika Anda terus menggunakan API yang tidak digunakan lagi setelah upgrade ke 1.22, risiko keamanan mungkin timbul.
Notifikasi API yang tidak digunakan lagi tidak menghalangi upgrade. Setelah upgrade, resource API yang tidak digunakan lagi akan diganti dengan yang baru. Jangan membuat resource dengan API yang tidak digunakan lagi setelah itu.
Kategori API yang tidak digunakan lagi
API yang tidak digunakan lagi diklasifikasikan berdasarkan sumber permintaan (User Agent).
| Kategori | Deskripsi | Contoh | Tindakan yang diperlukan |
|---|---|---|---|
| core | Komponen inti Kubernetes. ACK secara otomatis meningkatkan komponen ini selama upgrade kluster. | apiserver, scheduler, kube-controller-manager | Tidak ada — tidak ditampilkan di halaman pemeriksaan |
| ack | Komponen yang dikelola ACK. ACK menampilkannya dan memandu Anda untuk meningkatkannya. | metrics-server, nginx-ingress-controller, coredns | Upgrade melalui Operations > Add-ons di Konsol ACK |
| opensource | Komponen komunitas open source. ACK menampilkan daftar sebagian. Komponen yang tidak dikenali muncul di bawah kategori unknown. | rancher, elasticsearch-operator | Upgrade sesuai kebutuhan |
| unknown | Komponen dengan sumber yang tidak dikenali. | kubectl, agent, Go-http-client, okhttp | Upgrade sesuai kebutuhan |
Upgrade komponen ACK untuk menghilangkan peringatan API yang tidak digunakan lagi
Buka Operations > Add-ons di Konsol ACK untuk meningkatkan komponen. Peringatan API yang tidak digunakan lagi untuk komponen tersebut akan hilang satu hari setelah upgrade.ACK console
Jika hasil pemeriksaan mencakup coredns, CoreDNS mungkin menggunakan API yang tidak digunakan lagi di Kubernetes 1.24 atau lebih baru. Lihat Mengapa CoreDNS menggunakan API yang tidak digunakan lagi?.