Container Service for Kubernetes (ACK) menjalankan pemeriksaan pre-flight otomatis sebelum upgrade kluster, migrasi kluster, dan upgrade komponen. Operasi hanya dilanjutkan setelah kluster atau komponen lulus semua pemeriksaan. Topik ini menjelaskan apa yang divalidasi oleh setiap pemeriksaan dan cara mengatasi kegagalannya.
Jenis pemeriksaan
ACK menjalankan tiga jenis pemeriksaan pre-flight:
| Jenis pemeriksaan | Kapan dijalankan | Berlaku untuk |
|---|---|---|
| Pemeriksaan upgrade kluster | Sebelum upgrade kluster | Semua jenis kluster |
| Pemeriksaan migrasi kluster | Sebelum migrasi kluster | ACK Serverless Edisi Dasar ke ACK Serverless Pro |
| Pemeriksaan komponen | Sebelum upgrade komponen | Komponen individual |
Pemeriksaan upgrade kluster
Sebelum upgrade kluster dimulai, ACK menjalankan pemeriksaan pra-upgrade untuk mendeteksi masalah yang disebabkan oleh API yang tidak digunakan lagi, batasan versi komponen, dan perubahan waktu proses. Upgrade hanya dilanjutkan setelah kluster lulus semua pemeriksaan.
Pemeriksaan mencakup dua kategori:
Sumber daya kluster: Resource cloud yang digunakan oleh kluster ACK Serverless, 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 kluster, versi, dan waktu proses. Tabel berikut hanya bersifat referensi. 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 ada kontrol akses yang dikonfigurasi) | |
| VPC | Instans terhubung-VPC ada |
| Status instans 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 |
| Component versions | Versi Terway, CoreDNS, cloud-controller-manager (CCM), Nginx Ingress Controller, dan Metric Server semuanya 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
Pemeriksaan pra-migrasi dijalankan sebelum migrasi kluster ACK Serverless Edisi Dasar ke ACK Serverless Pro. Migrasi hanya dilanjutkan setelah kluster lulus semua pemeriksaan.
Pemeriksaan mencakup dua kategori:
Sumber daya kluster: Instance SLB dan jaringan VPC yang digunakan oleh kluster ACK Serverless.
Komponen kluster: Konfigurasi komponen, termasuk apakah ada APIService yang tidak tersedia.
Item pemeriksaan bervariasi tergantung pada jenis kluster, versi, dan waktu proses. Tabel berikut hanya bersifat referensi. 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 ada kontrol akses yang dikonfigurasi) | |
| VPC | Instans terhubung-VPC ada |
| Status instans 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
Pemeriksaan pra-upgrade dijalankan sebelum komponen individual di-upgrade. Upgrade hanya dilanjutkan setelah komponen lulus semua pemeriksaan.
Item pemeriksaan bervariasi tergantung pada jenis komponen, versi, dan waktu proses. Tabel berikut hanya bersifat referensi. Halaman pemeriksaan di Konsol ACK merupakan sumber resmi.
| Komponen | Item pemeriksaan | Apa yang divalidasi |
|---|---|---|
| cloud-controller-manager | Addon_CCM | Upgrade komponen tidak menyebabkan perubahan SLB |
| Component_Block_Version | Versi CCM dapat di-upgrade | |
| 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 adalah 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 | Penyebaran tidak dikonfigurasi dengan Horizontal Pod Autoscaler (HPA) | |
| 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
Tabel berikut mencantumkan kegagalan pemeriksaan umum dan cara mengatasinya.
| Pemeriksaan Gagal | Resolusi |
|---|---|
| Versi komponen terlalu rendah | Upgrade 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 falseKonfirmasi apakah APIService tersebut masih diperlukan.
PentingMenghapus APIService secara tidak sengaja dapat menyebabkan exception pada kluster. Verifikasi tujuan APIService sebelum melanjutkan.
Jika APIService tersebut tidak lagi diperlukan, 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. Hasil pemeriksaan mencantumkan API yang tidak digunakan lagi yang digunakan oleh kluster Anda.
Cara kerja deteksi API yang tidak digunakan lagi
Saat Anda melakukan upgrade dari Kubernetes 1.20 ke 1.22, sistem memindai log audit kluster 1.20 untuk menemukan API yang tidak digunakan lagi:
Jika ditemukan API yang tidak digunakan lagi, hasil pemeriksaan 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 kluster di-upgrade, resource API yang tidak digunakan lagi diganti dengan yang baru. Jangan membuat resource menggunakan API yang tidak digunakan lagi setelah upgrade.
Kategori API yang tidak digunakan lagi
API yang tidak digunakan lagi diklasifikasikan berdasarkan sumber permintaannya (User Agent). Gunakan kategori ini untuk mengidentifikasi sumbernya dan mengambil tindakan yang sesuai.
| Kategori | Deskripsi | Contoh | Tindakan yang diperlukan |
|---|---|---|---|
| core | Komponen inti Kubernetes. ACK secara otomatis meng-upgrade 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 meng-upgrade-nya. | 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 menghapus peringatan API yang tidak digunakan lagi
Buka Operations > Add-ons di Konsol ACK untuk meng-upgrade komponen ACK. Peringatan API yang tidak digunakan lagi untuk komponen tersebut akan dihapus satu hari setelah upgrade selesai.ACK console
Jika hasil pemeriksaan mencakup coredns, perhatikan bahwa komponen CoreDNS mungkin menggunakan API yang tidak digunakan lagi pada kluster Kubernetes versi 1.24 atau lebih baru. Lihat Mengapa CoreDNS menggunakan API yang tidak digunakan lagi? untuk detailnya.