Container Service for Kubernetes (ACK) mematuhi Certified Kubernetes Conformance Program. Topik ini mencantumkan perubahan yang diterapkan oleh ACK untuk mendukung Kubernetes 1.20, termasuk enam tindakan yang harus dilakukan sebelum upgrade, lima fitur yang ditinggalkan, serta beberapa fitur baru dan peningkatan khusus ACK.
Versi komponen
| Komponen inti | Versi | Catatan |
|---|---|---|
| Kubernetes | 1.20.11 | Lihat tindakan yang diperlukan di bawah sebelum melakukan upgrade. |
| Docker Runtime | 19.03.5 | Ditinggalkan pada rilis ini; kluster yang sudah ada tetap berfungsi. |
| Containerd Runtime | 1.4.4 | Tidak ada |
| etcd | 3.4.3 | Tidak ada |
| CSI (Container Storage Interface) | 1.26 | Tidak ada |
| CoreDNS | 1.7.0 | Nama metrik diperbarui; Plugin upstream dihapus. |
| NVIDIA Container Runtime | 3.4.1 | Tidak ada |
Tindakan yang diperlukan sebelum upgrade
Tinjau setiap item berikut sebelum meng-upgrade kluster ACK ke Kubernetes 1.20. Beberapa item memerlukan perubahan pada beban kerja atau konfigurasi kluster Anda sebelum upgrade.
Periksa sertifikat admission webhook untuk SANs
Sertifikat server yang ditandatangani sendiri untuk admission webhook harus mencakup subject alternative names (SANs) yang diperlukan. Verifikasi bahwa sertifikat admission webhook Anda mencakup SANs yang diperlukan sebelum upgrade. Untuk contoh konfigurasi sertifikat yang sesuai, lihat contoh Helm chart.
Migrasi dari selfLink
Apa yang berubah: Bidang selfLink ditinggalkan di Kubernetes 1.20 dan mengembalikan nilai kosong.
Siapa yang terdampak: Aplikasi yang membaca bidang selfLink dari tanggapan API, serta kluster yang menggunakan nfs-client-provisioner open-source.
Yang harus dilakukan:
-
Perbarui aplikasi apa pun yang membaca
selfLinkdari tanggapan API. -
Jika Anda menggunakan
nfs-client-provisioner, perbarui ke versi yang tidak bergantung padaselfLink.
Untuk detailnya, lihat Stop setting SelfLink in kube-apiserver.
Perbarui alicloud-nas-controller sebelum upgrade (hanya untuk kluster FlexVolume)
Siapa yang terdampak: Kluster yang menggunakan FlexVolume dan memiliki alicloud-nas-controller yang dideploy.
Yang harus dilakukan: Perbarui image alicloud-nas-controller ke versi 1.14.8.17-7b898e5-aliyun atau lebih baru sebelum upgrade ke Kubernetes 1.20.
FlexVolume telah ditinggalkan. Untuk migrasi ke Container Storage Interface (CSI), lihat Upgrade from FlexVolume to CSI.
Perbarui nama metrik CoreDNS
CoreDNS 1.7.0 mengganti nama metrik yang sudah ada. Jika sistem pemantauan Anda mengumpulkan metrik CoreDNS, perbarui nama metrik tersebut sebelum upgrade. Untuk daftar lengkap perubahan, lihat Metric changes.
Plugin upstream tidak lagi didukung. Jika upstream ditentukan dalam Corefile Anda, plugin tersebut akan dihapus secara otomatis saat CoreDNS di-upgrade.
Perbaiki timeout exec probe
Apa yang berubah: Kubernetes 1.20 memperbaiki bug lama di mana kubelet mengabaikan pengaturan timeoutSeconds untuk exec probe. Sebelum perbaikan ini, exec probe berjalan tanpa batas waktu alih-alih timeout. Setelah perbaikan, timeout default adalah 1 detik.
Siapa yang terdampak: Pod apa pun dengan exec probe yang membutuhkan waktu lebih dari 1 detik dan tidak memiliki timeoutSeconds yang diatur secara eksplisit. Probe tersebut kini akan gagal setelah 1 detik.
Yang harus dilakukan: Sebelum upgrade, audit definisi pod Anda untuk exec probe yang tidak memiliki timeoutSeconds yang diatur secara eksplisit. Atur timeoutSeconds ke nilai yang sesuai.
Perbarui versi API Ingress
Versi API extensions/v1beta1 dan networking.k8s.io/v1beta1 untuk Ingress dan IngressClasses akan ditinggalkan pada versi Kubernetes setelah 1.22. Migrasi ke networking.k8s.io/v1 sebelum upgrade ke 1.22.
Kluster ACK menyertakan NGINX Ingress controller secara default. Saat ini controller tersebut mendukung networking.k8s.io/v1beta1. Rencanakan migrasi Anda ke networking.k8s.io/v1 sebelum upgrade ke Kubernetes 1.22.
Fitur yang ditinggalkan
| Item yang ditinggalkan | Pengganti | Dihapus pada |
|---|---|---|
| Docker Runtime | Containerd Runtime | Rilis Kubernetes mendatang |
node-role.kubernetes.io/master label |
node-role.kubernetes.io/control-plane |
Versi Kubernetes setelah 1.20 |
extensions/v1beta1 / networking.k8s.io/v1beta1 untuk Ingress |
networking.k8s.io/v1 |
Versi Kubernetes setelah 1.22 |
selfLink field |
N/A (dihapus dari API) | Versi Kubernetes setelah 1.20 |
| FlexVolume | CSI (Container Storage Interface) | Rilis mendatang |
Tentang penghentian Docker Runtime: Di Kubernetes 1.20, Docker ditandai sebagai deprecated — bukan dihapus. Kluster yang sudah ada tetap berfungsi tanpa perubahan apa pun. Image kontainer yang dibuat dengan Docker tidak terpengaruh; perubahan ini hanya berlaku untuk runtime kontainer, bukan format image. Sebagai pengguna ACK pada layanan terkelola, Anda tidak perlu segera mengambil tindakan. Anda perlu memigrasi node pekerja ke runtime kontainer yang didukung sebelum dukungan Docker berakhir pada rilis mendatang. Untuk detailnya, lihat Dockershim Deprecation FAQ.
Tentang label node master: Kluster khusus ACK kini menambahkan label node-role.kubernetes.io/control-plane ke node master secara default. Label node-role.kubernetes.io/master ditinggalkan pada versi Kubernetes setelah 1.20.
Fitur baru
API Priority and Fairness
API Priority and Fairness (APF) tersedia dalam pratinjau publik dan diaktifkan secara default. APF memungkinkan Anda membatasi dan memprioritaskan permintaan API ke kube-apiserver. Lihat API Priority and Fairness untuk detailnya.
EndpointSlice diaktifkan secara default
EndpointSlice kini diaktifkan secara default oleh kube-proxy di Kubernetes 1.19 dan versi setelahnya. EndpointSlice meningkatkan skalabilitas untuk kluster besar. Lihat EndpointSlices untuk detailnya.
ConfigMap dan Secret immutable (pratinjau publik)
Tandai ConfigMap atau Secret sebagai immutable untuk mencegah modifikasi tidak disengaja. Sumber daya immutable juga mengurangi beban pada kube-apiserver. Lihat Immutable ConfigMaps untuk detailnya.
Peningkatan Kontainer Windows
-
EndpointSlice diaktifkan secara default untuk Kontainer Windows.
-
Device plug-in kini didukung. Lihat Device plug-ins untuk detailnya.
Peningkatan khusus ACK
Peningkatan lapisan kontrol
-
Observabilitas: Metrik kini dikumpulkan untuk operasi permintaan maupun operasi watch, memberikan visibilitas yang lebih baik terhadap perilaku komponen lapisan kontrol.
-
Stabilitas: kube-apiserver kini melindungi etcd dari permintaan berlebihan selama startup kluster, meningkatkan ketahanan dalam skenario cold-start.
-
Kinerja: Pemrosesan permintaan list dipercepat oleh indeks baru, mengurangi penggunaan CPU kube-apiserver di bawah beban baca yang tinggi.
Kompatibilitas kube-proxy dengan Alibaba Cloud Linux 2
Di Kubernetes 1.20.11, kube-proxy kompatibel dengan Alibaba Cloud Linux 2 yang menggunakan kernel versi 4.19.91-23 atau lebih baru. Saat mode IPVS diaktifkan, conn_reuse_mode tidak diatur ke 0. Untuk latar belakangnya, lihat IPVS.
Penjadwalan node virtual (berlaku setelah upgrade ke Kubernetes 1.22 atau versi setelahnya)
Setelah upgrade ke Kubernetes 1.22 atau versi setelahnya, penjadwalan node virtual diaktifkan secara default. Pod yang dijadwalkan ke node virtual tunduk pada:
-
Taints pada node virtual
-
Afinitas node
-
Aturan afinitas/anti-afinitas pod
-
Batasan penyebaran topologi
Untuk mempertahankan perilaku penjadwalan sebelum upgrade, hapus centang pada Enable Virtual Node-based Pod Scheduling di pengaturan kube-scheduler. Untuk langkah-langkah konfigurasinya, lihat Custom parameters of kube-scheduler.