Alibaba Cloud Container Service for Kubernetes adalah distribusi Kubernetes yang telah tersertifikasi. Topik ini menjelaskan perubahan utama dalam rilis ACK Kubernetes 1.35, mencakup pertimbangan upgrade, breaking changes, pembaruan fitur, deprekasi dan penghapusan API, serta feature gates.
Versi komponen
Tabel berikut mencantumkan versi komponen inti yang didukung di kluster ACK.
Core component | Version |
Kubernetes | 1.35.1-aliyun.1, 1.35.2-aliyun.1 |
etcd | v3.5.21 |
containerd | 2.1.6 |
CoreDNS | v1.12.1.2 |
CSI | |
CNI | Flannel v0.28.0.6 |
Terway dan TerwayControlplane versi v1.15.0 atau lebih baru |
Breaking changes
Mulai versi 1.35, Kubernetes tidak lagi mendukung cgroup v1. Dukungan untuk cgroup v2 telah dipromosikan ke status Stable sejak versi 1.25. Sistem operasi node harus ditingkatkan untuk mendukung cgroup v2, atau kubelet tidak akan dapat dimulai.
Untuk informasi mengenai dukungan versi cgroup pada citra OS ACK, lihat Operating systems. Untuk mempelajari cara mengubah atau meningkatkan sistem operasi, lihat Change operating systems.
Pembaruan fitur
Opsi
PreferSameNodeuntuk bidangtrafficDistributionService telah dipromosikan ke General Availability (GA). Opsi ini memprioritaskan pengarahan traffic ke endpoint pada node yang sama, dan hanya beralih ke node lain jika tidak ada endpoint lokal yang tersedia.Feature gate untuk fitur ini,
PreferSameTrafficDistribution, telah diaktifkan secara default sejak versi 1.34 dan mendukung kedua opsiPreferSameNodedanPreferSameZone. Opsi awalPreferClosetelah diganti namanya menjadiPreferSameZone.PodObservedGenerationTrackingtelah dipromosikan ke GA. SaatspecPod diperbarui, nilai.metadata.generationakan bertambah. Kubelet kini mencatat versispecyang telah diproses dalam bidang.status.observedGenerationPod. Hal ini memungkinkan controller dan Operator untuk secara akurat menentukan apakah perubahan pada Pod, seperti in-place scaling, telah diterapkan di node, sehingga mencegah masalah akibat keterlambatan pembaruan status.Opsi kebijakan node topology manager
max-allowable-numa-nodes(max-allowable-numa-nodes) telah dipromosikan ke GA. Topology manager kini dapat menghitung afinitas dengan benar pada server yang memiliki lebih dari 8 node NUMA.Downward API kini mendukung injeksi label topologi node, seperti
topology.kubernetes.io/zonedantopology.kubernetes.io/region, ke dalam Pod.StorageVersionMigrator, yang dipromosikan ke Beta dan dinonaktifkan secara default, memindahkan kemampuan migrasi versi penyimpanan dari tool eksternal ke dalam inti Kubernetes. Untuk informasi lebih lanjut, lihat Move Storage Version Migrator in-tree.MutableCSINodeAllocatableCountkini diaktifkan secara default. Fitur ini memungkinkan driver CSI untuk memperbarui jumlah volume yang dapat dialokasikan pada suatu node secara berkala. Hal ini membantu mengatasi masalah di mana Pod dapat dijadwalkan ke node dengan kapasitas volume yang tidak mencukupi dan terjebak dalam statusContainerCreating.Opportunistic batching memungkinkan scheduler menyimpan hasil penjadwalan antara (intermediate) dalam cache, sehingga secara signifikan meningkatkan throughput penjadwalan untuk Pod yang serupa.
MaxUnavailableStatefulSetdipromosikan ke Beta dan diaktifkan secara default. Fitur ini memungkinkan Anda menetapkan bidangmaxUnavailabledalam strategi rolling update StatefulSet untuk menentukan jumlah maksimum Pod yang tidak tersedia selama pembaruan.Pod Certificates dipromosikan ke Beta dan dinonaktifkan secara default. Fitur ini mendukung pembuatan sertifikat untuk Pod guna melakukan autentikasi mutual TLS dengan kube-apiserver. Fitur ini juga mendukung rotasi sertifikat otomatis, menyediakan metode autentikasi yang lebih aman dibandingkan token ServiceAccount tradisional. Untuk detailnya, lihat KEP-4317: Pod Certificates.
Kubectl kini mendukung format KYAML. KYAML adalah subset YAML yang dirancang khusus untuk Kubernetes guna mengatasi ambiguitas dan isu keamanan tertentu dalam penguraian YAML standar. Anda dapat menonaktifkan fitur ini dengan mengatur variabel lingkungan
KUBECTL_KYAML=false. Untuk informasi lebih lanjut, lihat Introducing KYAML.Bidang
behaviorHorizontalPodAutoscaler (HPA) kini mendukung ambang batas toleransi yang dapat dikonfigurasi. Sebelumnya, keputusan penskalaan mengandalkan toleransi global tetap sebesar 10%, yang kini dapat dikonfigurasi.User namespaces dipromosikan ke Beta. Fitur ini memungkinkan Pod berjalan dalam user namespace yang terisolasi dari host. Proses kontainer dapat berjalan sebagai root (UID 0) dalam namespace-nya, tetapi dipetakan ke ID pengguna non-root yang tidak memiliki hak istimewa di host. Hal ini mengurangi risiko keamanan akibat privilege escalation dari container escape.
ImageVolumekini diaktifkan secara default, memungkinkan Anda menggunakan volume bertipeimagedalam Pod. Jenis volume ini memasang isi gambar kontainer sebagai volume read-only. Fitur ini memerlukan containerd v2.1 atau lebih baru.KubeletEnsureSecretPulledImagesdipromosikan ke Beta dan diaktifkan secara default. Fitur ini meningkatkan keamanan di kluster multi-tenant dengan menerapkan pemeriksaan kredensial untuk Pod yang menggunakanimagePullPolicy: IfNotPresent. Fitur ini mencegah skenario di mana satu Pod dengan kredensial menarik gambar privat, sehingga memungkinkan Pod lain di node yang sama tanpa kredensial mengakses gambar sensitif tersebut dari cache lokal.ContainerRestartRules, yang dipromosikan ke Beta dan diaktifkan secara default, memungkinkan konfigurasi kebijakan restart tingkat kontainer yang lebih granular. Fitur ini memungkinkan Anda mengganti kebijakan restart tingkat Pod dengan menentukanrestartPolicydanrestartPolicyRulesuntuk masing-masing kontainer. Untuk detailnya, lihat Individual container restart policy and rules.Driver CSI kini dapat mengatur bidang
spec.serviceAccountTokenInSecretspada objekCSIDrivermenjaditrueuntuk memasang token ServiceAccount melalui Secret, bukan menempatkannya langsung dalamvolume context. Hal ini membantu mencegah kredensial terekspos secara tidak sengaja dalam log dan pesan error. Untuk informasi lebih lanjut, lihat CSI driver opt-in for service account tokens via secrets field.Bidang baru
terminatingReplicastelah ditambahkan ke Deployments. Bidang ini mencatat jumlah Pod yang memiliki timestamp penghapusan tetapi belum sepenuhnya dihapus dari sistem.Mengatasi CVE-2024-61732 dan CVE-2024-68121 pada versi 1.35.2-aliyun.1.
Penghentian Dukungan
Mulai versi 1.35, mode
ipvs modekube-proxy telah dideprekasi dan direncanakan untuk dihapus pada rilis mendatang. Rekomendasi resmi adalah beralih ke nftables mode, yang telah stabil sejak v1.33. Karenanftables moderelatif baru, kluster ACK yang dibuat dengan versi 1.35 masih menggunakanipvs modesebagai default. Namun, Anda kini dapat memilihnftablessebagai Service Forwarding Mode saat membuat kluster baru.Kami merekomendasikan penggunaan Terway Datapath V2, yang beroperasi secara independen dari kube-proxy.
Versi 1.35 merupakan rilis terakhir yang mendukung containerd 1.x. Sebelum melakukan upgrade ke Kubernetes 1.36 atau versi setelahnya, Anda harus meningkatkan containerd ke versi 2.x. Kluster ACK telah menggunakan containerd 2.x sebagai default sejak versi 1.33. Untuk detailnya, lihat Introduction to containerd 2.1.
Referensi
Untuk changelog lengkap Kubernetes 1.35, lihat CHANGELOG-1.35 dan Kubernetes v1.35: Timbernetes (The World Tree Release).