All Products
Search
Document Center

Container Service for Kubernetes:Catatan rilis ACK Lingjun untuk Kubernetes 1.22

Last Updated:Mar 27, 2026

Container Service for Kubernetes (ACK) mematuhi ketentuan Certified Kubernetes Conformance Program secara ketat. Topik ini menjelaskan perubahan yang diterapkan oleh ACK Lingjun untuk mendukung Kubernetes 1.22.

Versi komponen

Semua komponen dalam kluster ACK Lingjun telah diperbarui guna mendukung Kubernetes 1.22.

KomponenVersiCatatan
Kubernetes1.22.15-aliyun.1Lihat Perubahan yang mengganggu dan Fitur baru di bawah ini
etcd3.5.1
CoreDNSv1.9.3.6-32932850-aliyunPembaruan non-disruptif. Menambahkan pemantauan EndpointSlice dan resolusi DNS IPv6
CRIcontainerd 1.5.13
CSIv1.26.3-fc2ba2a-aliyun
CNITerway v1.5.7
NVIDIA Container Runtime3.13.0
Ingress controllerv1.8.0-aliyun.1Dapat mengganggu workload secara sementara dan menyebabkan masalah kompatibilitas. Evaluasi dampaknya sebelum melakukan upgrade

Perubahan yang mengganggu

Penting

Perubahan berikut memerlukan tindakan sebelum melakukan upgrade ke Kubernetes 1.22. Melewatkan langkah-langkah ini dapat menyebabkan kegagalan workload setelah upgrade.

API beta yang tidak lagi didukung

Kubernetes 1.22 menghapus serangkaian API beta demi versi stabil (v1) yang bersangkutan. Resource yang sudah ada yang dibuat melalui API beta tetap dipertahankan dan masih dapat diakses melalui API stabil—namun controller, operator, dan alat yang memanggil versi API beta yang dihapus akan berhenti berfungsi setelah upgrade.

Sebelum melakukan upgrade, perbarui manifes dan klien API ke versi API stabil yang tercantum dalam tabel di bawah ini, lalu redeploy controller dan aplikasi yang memanggil API beta yang dihapus tersebut.

API beta berikut tidak lagi didukung di Kubernetes 1.22:

ResourceAPI yang tidak lagi didukungAPI stabil (gunakan sebagai gantinya)
MutatingWebhookConfiguration, ValidatingWebhookConfigurationadmissionregistration.k8s.io/v1beta1admissionregistration.k8s.io/v1
CustomResourceDefinition (CRD)apiextensions.k8s.io/v1beta1apiextensions.k8s.io/v1
APIServiceapiregistration.k8s.io/v1beta1apiregistration.k8s.io/v1
TokenReviewauthentication.k8s.io/v1beta1authentication.k8s.io/v1
SubjectAccessReviewauthorization.k8s.io/v1beta1authorization.k8s.io/v1
CertificateSigningRequest (CSR)certificates.k8s.io/v1beta1certificates.k8s.io/v1
Leasecoordination.k8s.io/v1beta1coordination.k8s.io/v1
Ingress, IngressClassnetworking.k8s.io/v1beta1, extensions/v1beta1networking.k8s.io/v1
ClusterRole, ClusterRoleBinding, Role, RoleBindingrbac.authorization.k8s.io/v1beta1rbac.authorization.k8s.io/v1
CSIDriver, CSINode, StorageClass, VolumeAttachmentstorage.k8s.io/v1beta1storage.k8s.io/v1
PriorityClassscheduling.k8s.io/v1beta1scheduling.k8s.io/v1

Penghapusan dockershim

dockershim, yang telah ditinggalkan sejak Kubernetes 1.20, dihapus sepenuhnya di Kubernetes 1.22. Kluster yang masih menggunakan Docker sebagai runtime kontainer harus melakukan migrasi ke containerd sebelum upgrade.

Langkah migrasi:

  1. Hitung jumlah node baru yang dibutuhkan berdasarkan workload Docker saat ini.

  2. Tambahkan node baru yang menjalankan containerd ke kluster selama jam sepi. Untuk mengubah runtime kontainer pada kelompok node, lihat Mengubah runtime kontainer dari Docker ke containerd.

  3. Drain node Docker satu per satu. Setelah setiap drain, verifikasi bahwa semua pod telah berhasil dimigrasikan sebelum melakukan drain pada node berikutnya.

  4. Hapus node Docker yang telah didrain setelah tidak ada lagi pod yang tersisa di dalamnya.

Perubahan perilaku NodePort (Kubernetes 1.22.10 dan versi lebih baru)

kube-proxy tidak lagi mendengarkan pada port layanan NodePort. Jika range port layanan NodePort (dikonfigurasi melalui ServiceNodePortRange pada server API) tumpang tindih dengan range port ephemeral yang ditentukan oleh parameter kernel net.ipv4.ip_local_port_range, koneksi TCP dapat gagal secara intermiten, menyebabkan kegagalan pemeriksaan kesehatan dan gangguan layanan.

Sebelum melakukan upgrade ke 1.22.10 atau versi lebih baru, pastikan range port layanan NodePort Anda tidak bentrok dengan net.ipv4.ip_local_port_range. Untuk panduan konfigurasi, lihat Bagaimana cara mengonfigurasi range port node yang tepat? atau PR komunitas Kubernetes.

Kadaluarsa token akun layanan

Di Kubernetes 1.22 dan versi lebih baru, token akun layanan memiliki periode validitas satu tahun. kubelet secara berkala memperpanjang token sebelum masa berlakunya habis.

  • client-go >= 11.0.0 atau >= 0.15.0: Token dimuat ulang secara otomatis dari disk.

  • client-go < 11.0.0 atau < 0.15.0: Token tidak diperpanjang secara otomatis. Setelah token kadaluarsa, akses ke server API dari dalam kluster akan gagal. Lakukan upgrade client-go ke versi 11.0.0 atau lebih baru (atau 0.15.0 atau lebih baru) untuk menghindari hal ini.

Untuk detail mengenai dampak dan solusinya, lihat [Perubahan Produk] Solusi untuk kadaluarsa token akun layanan di Kubernetes 1.22 dan versi lebih baru.

Hal lain yang perlu diperhatikan sebelum upgrade

  • Backup data node bidang kontrol: Semua kontainer pada node bidang kontrol akan dibuat ulang selama proses upgrade versi. Backup data kontainer apa pun sebelum memulai upgrade.

  • CVE-2022-3172: Kerentanan ini dapat memengaruhi kluster Anda. Tinjau detailnya dan terapkan perbaikan yang dijelaskan dalam CVE-2022-3172.

  • PodSecurityPolicy (PSP): PSP telah ditinggalkan sejak Kubernetes 1.21 dan akan dihapus di Kubernetes 1.25. PSP masih berfungsi di versi 1.22. Mulailah merencanakan migrasi ke admission controller PodSecurity. Untuk detailnya, lihat Pod security admission dan Depresiasi PodSecurityPolicy: masa lalu, kini, dan masa depan.

Fitur baru

Feature gate yang diaktifkan secara default

Feature gate berikut diaktifkan secara default di Kubernetes 1.22 (atau sejak versi yang disebutkan).

Diaktifkan sejak Kubernetes 1.21:

Feature gateDeskripsi
ImmutableEphemeralVolumesTandai ConfigMap dan Secret sebagai immutable, sehingga secara signifikan mengurangi beban server API
IPv6DualStackAktifkan jaringan dual-stack IPv4/IPv6. Memerlukan Blok CIDR yang sesuai dan plug-in CNI yang mendukung dual-stack
GracefulNodeShutdownkubelet mendeteksi event shutdown node dan mengeluarkan pod dalam periode tenggang shutdown. Hanya untuk node Linux
EfficientWatchResumptionLanjutkan cache watch server API secara efisien setelah restart. Berguna untuk kluster berskala besar

Diaktifkan sejak Kubernetes 1.22:

Feature gateDeskripsi
CSIStorageCapacitykube-scheduler menempatkan pod pada node yang memiliki kapasitas penyimpanan mencukupi untuk volume yang dibutuhkan
DaemonSetUpdateSurgeGunakan .spec.strategy.rollingUpdate.maxSurge untuk mengizinkan pod tambahan selama pembaruan rolling DaemonSet
IndexedJobAtur .spec.completionMode=Indexed pada Pekerjaan untuk memberikan indeks unik kepada setiap pod melalui anotasi batch.kubernetes.io/job-completion-index dan variabel lingkungan JOB_COMPLETION_INDEX
MemoryManagerAktifkan manajemen memori yang sadar akses memori non-seragam (NUMA) untuk aplikasi dengan kebutuhan memori terjamin. Hanya untuk node Linux. ACK tidak mengonfigurasi reservasi memori untuk fitur ini
PodAffinityNamespaceSelectorTerapkan pemilih label afinitas pod lintas namespace, bukan hanya dalam namespace yang sama
PodDeletionCostPod dengan pemanfaatan resource lebih rendah memiliki biaya penghapusan lebih kecil selama skala turun
PreferNominatedNodekube-scheduler memprioritaskan node yang dinominasikan; hanya mengevaluasi node lain jika node yang dinominasikan tidak tersedia
ProbeTerminationGracePeriodAtur terminationGracePeriodSeconds tingkat probe atau tingkat pod untuk memperpendek waktu restart pod setelah pemeriksaan kelangsungan hidup gagal
NetworkPolicyEndPortTentukan range port dalam aturan NetworkPolicy
LogarithmicScaleDownGunakan pemilihan pod acak selama skala-masuk untuk mengurangi dampak batasan penyebaran topologi pod
SuspendJobMenangguhkan dan melanjutkan Pekerjaan untuk mengelola siklus hidup secara lebih fleksibel
ServiceInternalTrafficPolicyRutekan trafik internal Layanan ke endpoint lokal-node atau semua endpoint siap di kluster
ServiceLoadBalancerClassSesuaikan implementasi load balancer menggunakan .spec.loadBalancerClass
ServiceLBNodePortControlNonaktifkan alokasi NodePort untuk Layanan LoadBalancer dengan mengatur .spec.allocateLoadBalancerNodePorts=false, sehingga trafik langsung diarahkan ke pod
SizeMemoryBackedVolumesAtur ukuran volume berbasis memori emptyDir menggunakan emptyDir.sizeLimit. Hanya untuk node Linux
Server-side ApplyLacak perubahan konfigurasi resource tingkat field, termasuk sumber, stempel waktu, dan operasi
CSRDurationAtur masa berlaku sertifikat menjadi nilai yang lebih kecil antara .spec.expirationSeconds dalam CSR dan --cluster-signing-duration dalam kube-controller-manager. Nilai default ACK untuk --cluster-signing-duration adalah 10 tahun
BoundServiceAccountTokenVolumeGA di Kubernetes 1.22. Masa berlaku default token akun layanan adalah satu tahun untuk token yang tidak dipasang sebagai projected volume

Integrasi CSI dengan kontainer Windows (distabilkan di 1.22):

Integrasi Container Storage Interface (CSI) dengan kontainer Windows kini sudah stabil. Gunakan CSI Proxy untuk menjalankan operasi penyimpanan pada node Windows yang tidak mendukung kontainer hak istimewa (seperti Windows Server 2019 dan Windows Server versi 2004). Plug-in CSI yang Anda gunakan harus mendukung fitur ini. Untuk detailnya, lihat CSI Proxy.

Fitur baru

FiturACK statusDeskripsi
Pemantauan kesehatan volumeDiaktifkan secara defaultMendeteksi status kesehatan volume persisten (PV) yang disediakan oleh plug-in CSI untuk mencegah pembacaan dan penulisan ke volume yang tidak sehat. Memerlukan dukungan plug-in CSI. Lihat Pemantauan kesehatan volume
Memory QoS (cgroups v2)Diaktifkan secara defaultMenerapkan pembatasan kecepatan memori di bawah konflik sumber daya menggunakan antarmuka cgroups v2 yang dioptimalkan. Hanya untuk node Linux. Memerlukan dukungan kernel OS. Lihat Fitur Memcg QoS antarmuka cgroup v1
Kontainer Windows HostProcessDiaktifkan secara defaultBuat kontainer Windows hak istimewa menggunakan kontainer HostProcess. Memerlukan dukungan kernel OS. Lihat Buat Pod Windows HostProcess
Memori swapDinonaktifkan di ACKJalankan workload menggunakan memori swap untuk meningkatkan stabilitas node di bawah konflik memori. Hanya untuk node Linux. Lihat Manajemen memori swap
Profil seccomp defaultDinonaktifkan di ACKTerapkan profil seccomp RuntimeDefault secara default. Workload dengan pembatasan syscall yang lebih sedikit dapat gagal saat fitur ini diaktifkan. Hanya untuk node Linux

Pembaruan fitur

  • PodSecurityPolicy (PSP): PSP telah ditinggalkan sejak Kubernetes 1.21 dan akan dihapus di Kubernetes 1.25. ACK menyediakan kebijakan keamanan pod sebagai alternatif. Lihat Pod security admission.

  • Topology Aware Hints: Field topologyKeys telah ditinggalkan sejak Kubernetes 1.21. Gunakan fitur Topology Aware Hints sebagai gantinya untuk mengaktifkan routing layanan yang sadar topologi. Topologi layanan dinonaktifkan secara default di kluster ACK 1.22. Lihat Topology Aware Hints.

Peningkatan ACK Lingjun

Observabilitas

  • Metrik tambahan untuk akses server API Kubernetes dan pola permintaan meningkatkan observabilitas server API.

  • Metrik utama untuk komponen bidang kontrol kini dapat dikumpulkan dari kluster ACK Lingjun.

Stabilitas

  • Proteksi resource penyimpanan mengurangi beban etcd selama cold start.

  • Pembatasan kecepatan trafik server API berdasarkan sumber, jenis, dan entri rute permintaan mengurangi beban etcd selama cold start.

Peningkatan performa

  • kubelet: Selama upgrade kubelet in-place, sistem mencegah restart pod sebaik mungkin. Lihat issue Kubernetes terkait.

  • kube-proxy: kube-proxy kini kompatibel dengan Alibaba Cloud Linux 2 (kernel 4.19.91-23 dan versi lebih baru). Saat mode IP Virtual Server (IPVS) diaktifkan, conn_reuse_mode tidak lagi diatur ke 0. Lihat issue Kubernetes terkait.

Masalah yang telah diperbaiki

Referensi