Alibaba Cloud Container Service for Kubernetes (ACK) adalah platform bersertifikasi yang sesuai dengan standar Kubernetes. Catatan rilis ini menjelaskan perubahan yang diperkenalkan dalam rilis Kubernetes 1.22 di ACK.
Peningkatan
ACK menyediakan peningkatan dan optimalisasi komponen untuk Kubernetes 1.22.
|
Komponen utama |
Versi |
Catatan peningkatan |
|
Kubernetes |
1.22.15-aliyun.1 |
|
|
etcd |
3.5.1 |
Tidak ada |
|
CoreDNS |
v1.9.3.6-32932850-aliyun |
Peningkatan ini tidak memengaruhi workload Anda. Fitur baru berikut disertakan:
|
|
CRI |
|
Tidak ada |
|
containerd 1.4.8 |
Tidak ada |
|
|
CSI |
v1.26 |
Tidak ada |
|
CNI |
Flannel 0.15.1.4-e02c8f12-aliyun |
Peningkatan ini tidak memengaruhi workload Anda. Fitur baru berikut disertakan:
|
|
Terway |
Tidak ada |
|
|
NVIDIA Container Runtime |
3.7.0 |
Tidak ada |
|
ingress controller |
1.1.0-aliyun.1 |
Peningkatan komponen ini dapat menyebabkan gangguan layanan singkat dan masalah kompatibilitas konfigurasi. Verifikasi secara menyeluruh konfigurasi Anda selama peningkatan komponen sebelum melanjutkan peningkatan kluster. |
Perubahan utama di Kubernetes 1.22
Perubahan dan penghapusan resource
-
[DIHAPUS] Versi API
admissionregistration.k8s.io/v1beta1untuk MutatingWebhookConfiguration dan ValidatingWebhookConfiguration tidak lagi disajikan. Penggunaan API v1beta1 untuk membuat konfigurasi webhook admission atau mutating akan gagal dan mengganggu layanan webhook. Migrasikan keadmissionregistration.k8s.io/v1. -
[DIHAPUS] Versi API
apiextensions.k8s.io/v1beta1untuk CustomResourceDefinition (CRD) tidak lagi disajikan. Penggunaan API v1beta1 untuk membuat CRD akan gagal, yang memengaruhi controller yang bergantung pada rekonsiliasi resource kustom ini. Migrasikan keapiextensions.k8s.io/v1. -
[DIHAPUS] Versi API
apiregistration.k8s.io/v1beta1untuk APIService tidak lagi disajikan. Penggunaan API v1beta1 untuk mengelola layanan API ekstensi Kubernetes akan menyebabkan gangguan layanan. Migrasikan keapiregistration.k8s.io/v1. -
[DIHAPUS] Versi API
authentication.k8s.io/v1beta1untuk TokenReview tidak lagi disajikan. Penggunaan API v1beta1 untuk otentikasi token akan gagal dan dapat menyebabkan aplikasi Anda berhenti berfungsi. Migrasikan keauthentication.k8s.io/v1. -
[DIHAPUS] Versi API
authorization.k8s.io/v1beta1untuk SubjectAccessReview tidak lagi disajikan. Penggunaan API v1beta1 untuk pemeriksaan otorisasi akan gagal dan dapat menyebabkan aplikasi Anda berhenti berfungsi. Migrasikan keauthorization.k8s.io/v1. -
[DIHAPUS] Versi API
certificates.k8s.io/v1beta1untuk CertificateSigningRequest tidak lagi disajikan. Penggunaan API v1beta1 untuk meminta sertifikat akan gagal. Migrasikan kecertificates.k8s.io/v1. -
[DIHAPUS] Versi API
coordination.k8s.io/v1beta1untuk Lease tidak lagi disajikan. Penggunaan API v1beta1 untuk pemilihan leader akan gagal, yang dapat memengaruhi ketersediaan tinggi aplikasi Anda. Migrasikan kecoordination.k8s.io/v1. -
[DIHAPUS] Versi API
networking.k8s.io/v1beta1danextensions/v1beta1untuk Ingress dan IngressClass tidak lagi disajikan. Penggunaan versi API lama ini untuk mengelola resource Ingress akan gagal dan dapat mengganggu traffic aplikasi. Migrasikan kenetworking.k8s.io/v1. -
[DIHAPUS] Versi API
rbac.authorization.k8s.io/v1beta1untuk ClusterRole, ClusterRoleBinding, Role, dan RoleBinding tidak lagi disajikan. Penggunaan API v1beta1 untuk mengelola resource RBAC akan gagal dan dapat menyebabkan masalah izin pada aplikasi Anda. Migrasikan kerbac.authorization.k8s.io/v1. -
[DIHAPUS] Versi API
storage.k8s.io/v1beta1untuk CSIDriver, CSINode, StorageClass, dan VolumeAttachment tidak lagi disajikan. Penggunaan API v1beta1 untuk mengelola resource CSI akan mengganggu layanan penyimpanan dan dapat mencegah CSI berfungsi dengan benar di kluster Anda. Migrasikan kestorage.k8s.io/v1. -
[DIHAPUS] Versi API
scheduling.k8s.io/v1beta1untuk PriorityClass tidak lagi disajikan. Penggunaan API v1beta1 untuk mengelola kelas prioritas pod akan gagal. Migrasikan kescheduling.k8s.io/v1. -
[DIHENTIKAN] Dockershim telah ditinggalkan dan dijadwalkan untuk dihapus di Kubernetes 1.24. Untuk informasi lebih lanjut, lihat EP-2221 dan cri-containerd.
Sebelum meningkatkan ke Kubernetes 1.24, ikuti langkah-langkah berikut untuk menyesuaikan runtime node Anda:
-
Rencanakan kapasitas (tipe instans dan jumlah) untuk node yang menggunakan runtime non-Docker berdasarkan jumlah pod.
-
Tambahkan node baru selama jam sepi.
-
Kosongkan node yang menggunakan runtime Docker satu per satu. Setelah mengosongkan setiap node, verifikasi bahwa pod aplikasi Anda telah berhasil pulih sebelum mengosongkan node berikutnya.
-
Setelah semua node berbasis Docker dikosongkan dan tidak menjalankan workload apa pun, Anda dapat menghapusnya.
-
-
[DIHENTIKAN] Pada Kubernetes 1.22.10 dan versi selanjutnya, kube-proxy tidak lagi mendengarkan port layanan NodePort. Jika range NodePort (parameter ServiceNodePortRange dari API server) tumpang tindih dengan range port lokal kernel (
net.ipv4.ip_local_port_range), hal ini dapat menyebabkan kegagalan koneksi TCP intermiten, yang mengakibatkan pemeriksaan kesehatan gagal dan gangguan layanan. Oleh karena itu, sebelum meningkatkan kluster ke versi 1.22.10 atau yang lebih baru, pastikan bahwa range NodePort kluster tidak tumpang tindih dengannet.ipv4.ip_local_port_rangepada node mana pun. Untuk informasi tentang cara mengonfigurasi range NodePort, lihat Bagaimana cara mengonfigurasi range NodePort? atau PR komunitas Kubernetes.
Penyempurnaan fitur
-
Fitur ImmutableEphemeralVolumes diaktifkan secara default. Dengan menandai ConfigMap dan Secret sebagai immutable, Anda dapat secara signifikan mengurangi beban pada API server. Untuk informasi lebih lanjut, lihat dokumentasi resmi Kubernetes untuk Secret dan ConfigMap.
-
Fitur dual-stack IPv4/IPv6 (IPv6DualStack) diaktifkan secara default. Untuk menggunakan fitur ini, Anda harus mengonfigurasi blok CIDR IPv4 dan IPv6 yang valid saat membuat kluster dan menginstal plugin CNI yang mendukung jaringan dual-stack. Untuk informasi lebih lanjut, lihat IPv4/IPv6 dual-stack.
-
Fitur GracefulNodeShutdown diaktifkan secara default. Fitur ini, yang hanya tersedia untuk node Linux, memberi tahu kubelet tentang shutdown node yang akan datang, sehingga memungkinkannya menghentikan pod secara elegan dalam periode shutdown tertentu. Untuk informasi lebih lanjut, lihat Nodes.
-
Fitur EfficientWatchResumption diaktifkan secara default. Fitur ini memungkinkan cache berbasis watch dipulihkan lebih efisien setelah restart API server, yang meningkatkan kinerja di kluster berskala besar. Untuk informasi lebih lanjut, lihat KEP-1904.
-
Fitur CSIStorageCapacity diaktifkan secara default. Fitur ini memungkinkan kube-scheduler mempertimbangkan kapasitas penyimpanan node saat menjadwalkan pod yang memerlukan ukuran volume tertentu, sehingga menghasilkan keputusan penjadwalan yang lebih cepat. Untuk informasi lebih lanjut, lihat Storage Capacity.
-
Fitur DaemonSetUpdateSurge diaktifkan secara default. Selama pembaruan rolling untuk DaemonSet, Anda sekarang dapat menentukan
.spec.strategy.rollingUpdate.maxSurgeuntuk menentukan jumlah maksimum pod yang dapat dibuat melebihi jumlah yang diinginkan. Untuk informasi lebih lanjut, lihat Perform a Rolling Update on a DaemonSet. -
Fitur IndexedJob diaktifkan secara default. Dengan mengatur .spec.completionMode ke Indexed dalam Job, setiap pod menerima anotasi indeks penyelesaian (batch.kubernetes.io/job-completion-index) dan variabel lingkungan (JOB_COMPLETION_INDEX). Untuk informasi lebih lanjut, lihat Kubernetes.
-
Fitur MemoryManager diaktifkan secara default. Fitur ini hanya tersedia untuk node Linux dan menyediakan manajemen memori yang sadar NUMA, yang dapat secara signifikan meningkatkan kinerja aplikasi dengan persyaratan kualitas memori tertentu. ACK tidak mengonfigurasi reservasi memori apa pun terkait fitur ini. Untuk informasi lebih lanjut, lihat Runtime memory maps dan Control CPU Management Policies on the Node.
-
Fitur PodAffinityNamespaceSelector diaktifkan secara default. Kebijakan afinitas pod tidak lagi terbatas pada pemilihan label dalam namespace yang sama, memungkinkan strategi penjadwalan lintas-namespace yang lebih fleksibel. Untuk informasi lebih lanjut, lihat KEP-2249.
-
Fitur PodDeletionCost diaktifkan secara default. Fitur ini memungkinkan Anda memengaruhi urutan penghentian pod selama skala turun dengan menetapkan biaya penghapusan berdasarkan pemanfaatan pod, dengan pod yang memiliki pemanfaatan lebih rendah memiliki biaya lebih rendah. Untuk informasi lebih lanjut, lihat ReplicaSet.
-
Fitur PreferNominatedNode diaktifkan secara default. kube-scheduler akan memprioritaskan penjadwalan pod ke node yang dinominasikan. Scheduler hanya akan mengevaluasi node lain di kluster jika semua node yang dinominasikan tidak cocok. Untuk informasi lebih lanjut, lihat KEP-1923.
-
Fitur ProbeTerminationGracePeriod diaktifkan secara default. Fitur ini, yang hanya berlaku untuk pemeriksaan kelangsungan hidup, memungkinkan Anda mengonfigurasi terminationGracePeriodSeconds tingkat probe untuk mengurangi waktu tunggu sebelum pod yang gagal dimulai ulang. Untuk informasi lebih lanjut, lihat Configure Liveness, Readiness and Startup Probes.
-
Fitur NetworkPolicyEndPort diaktifkan secara default. Fitur ini memungkinkan Anda menentukan rentang port dalam NetworkPolicy. Untuk informasi lebih lanjut, lihat Network Policies.
-
Fitur LogarithmicScaleDown diaktifkan secara default. Fitur ini mengacak penghentian pod selama skala turun, yang membantu mengurangi masalah terkait batasan penyebaran topologi. Untuk informasi lebih lanjut, lihat Pod topology spread constraints should be taken into account on scale down dan KEP-2185.
-
Fitur SuspendJob diaktifkan secara default. Fitur ini memberi Anda lebih banyak kendali atas siklus hidup Job dengan memungkinkan Anda menangguhkan dan melanjutkannya. Untuk informasi lebih lanjut, lihat Introducing suspended Jobs.
-
Fitur ServiceInternalTrafficPolicy diaktifkan secara default. Fitur ini memungkinkan Anda mengarahkan traffic internal Layanan ke endpoint siap di node saat ini (Local) atau ke semua endpoint siap di seluruh kluster (Cluster). Untuk informasi lebih lanjut, lihat Service.
-
Fitur ServiceLoadBalancerClass diaktifkan secara default, memungkinkan Anda menggunakan implementasi load balancer kustom. Untuk informasi lebih lanjut, lihat Specifying the class of load balancer implementation.
-
Fitur ServiceLBNodePortControl diaktifkan secara default. Untuk skenario di mana traffic diarahkan langsung ke pod, Anda dapat menonaktifkan alokasi NodePort untuk layanan tipe LoadBalancer dengan mengatur .spec.allocateLoadBalancerNodePorts ke false. Untuk informasi lebih lanjut, lihat Disabling load balancer NodePort allocation.
-
Fitur SizeMemoryBackedVolumes diaktifkan secara default. Fitur ini, yang hanya tersedia untuk node Linux, memungkinkan Anda secara eksplisit menentukan ukuran volume emptyDir berbasis memori dengan emptyDir.sizeLimit, yang meningkatkan transparansi penjadwalan pod. Untuk informasi lebih lanjut, lihat: KEP-1967.
-
Fitur Server-side Apply diaktifkan secara default. Fitur ini memungkinkan Anda melacak sumber, waktu, dan operasi untuk perubahan pada bidang resource. Untuk informasi lebih lanjut, lihat Server-Side Apply.
-
Dukungan CSI untuk Kontainer Windows kini stabil. Pada sistem operasi yang tidak mendukung kontainer dengan hak istimewa, seperti Windows Server 2019 dan Windows Server Core versi 2004, Kontainer Windows dapat mengelola penyimpanan pada host menggunakan proxy CSI. Fitur ini memerlukan plugin CSI yang kompatibel. Untuk informasi lebih lanjut, lihat csi-proxy.
-
Fitur CSRDuration diaktifkan secara default. Saat Anda mengirimkan CertificateSigningRequest (CSR) yang menentukan .spec.expirationSeconds, periode validitas sertifikat yang diterbitkan adalah nilai terkecil antara durasi yang diminta dan parameter
--cluster-signing-durationpada controller manager. Nilai default parameter ini di ACK adalah 10 tahun. Untuk informasi lebih lanjut, lihat Signers. -
Gerbang fitur BoundServiceAccountTokenVolume kini Tersedia Umum (GA). Akun layanan yang dipasang ke dalam pod menggunakan volume non-projected kini memiliki periode validitas default satu tahun. Untuk informasi lebih lanjut, lihat dokumentasi fitur.
Fitur baru
-
Rilis ini memperkenalkan fitur pemantauan kesehatan volume persisten (PV). Fitur ini membantu workload mendeteksi kesehatan PV-nya, mencegah data dibaca dari atau ditulis ke volume yang rusak. Fitur pemantauan kesehatan volume CSI diaktifkan secara default di ACK. Fitur ini memerlukan dukungan dari plugin CSI yang mendasarinya. Untuk informasi lebih lanjut, lihat Volume Health Monitoring.
-
Rilis ini memperkenalkan fitur Quality of Service (QoS) untuk resource memori, berdasarkan cgroups v2. Saat resource dibatasi, seperti selama lonjakan permintaan resource yang tiba-tiba, resource CPU dapat dibatasi kecepatannya untuk memastikan ketersediaan. Namun, resource memori tidak dapat dibatasi kecepatannya dengan cara yang sama. Komunitas kernel Linux mengoptimalkan cgroups v2 untuk mendukung pembatasan kecepatan memori. Fitur QoS memori diaktifkan secara default di ACK. Fitur ini hanya tersedia pada node Linux dengan kernel yang didukung. Untuk informasi lebih lanjut, lihat fitur memcg QoS antarmuka cgroup v1 dan 2570-memory-qos.
-
Rilis ini memperkenalkan kemampuan untuk menjalankan kontainer dengan hak istimewa di Windows menggunakan kontainer HostProcess. Fitur Kontainer HostProcess Windows diaktifkan secara default di ACK. Fitur ini memerlukan dukungan dari sistem operasi node. Untuk informasi lebih lanjut, lihat What's new for Windows containers on Windows Server 2022 dan Create a Windows HostProcess Pod.
-
Rilis ini memperkenalkan fitur yang memungkinkan workload menggunakan memori swap node. Fitur ini hanya tersedia pada node Linux dan berguna dalam skenario di mana aplikasi dapat mencapai kinerja lebih baik dengan menggunakan memori swap, atau di mana administrator ingin menggunakan swap untuk meningkatkan stabilitas node di bawah tekanan memori. Fitur ini dinonaktifkan secara default di ACK. Untuk informasi lebih lanjut, lihat Swap Memory Management dan KEP-2400.
-
Rilis ini memperkenalkan fitur untuk mengonfigurasi profil seccomp default untuk semua workload. Fitur ini hanya tersedia pada node Linux. Saat diaktifkan, fitur ini menerapkan profil seccomp RuntimeDefault secara default. Karena beberapa workload mungkin memerlukan pembatasan panggilan sistem yang lebih sedikit, mengaktifkan fitur ini secara default dapat menyebabkan kegagalan. Fitur ini dinonaktifkan secara default di ACK. Untuk informasi lebih lanjut, lihat Enable the use of RuntimeDefault as the default seccomp profile for all workloads.
Penggantian fitur
-
PodSecurityPolicy (PSP) telah ditinggalkan dan dijadwalkan untuk dihapus sepenuhnya di Kubernetes 1.25. Controller admission keamanan pod diaktifkan secara default di ACK. Anda dapat secara bertahap mengganti resource PSP yang ada di Kubernetes 1.22. Untuk informasi lebih lanjut, lihat Pod Security Admission dan posting blog PodSecurityPolicy Deprecation: Past, Present, and Future.
-
Fitur ServiceTopology, yang dikonfigurasi menggunakan bidang topologyKeys dalam Layanan, telah ditinggalkan. Fitur ini digantikan oleh fitur topology aware hints. Fitur ServiceTopology dinonaktifkan secara default di ACK. Jika Anda telah mengaktifkannya, Anda dapat mengaktifkan topology aware hints di Kubernetes 1.22 dan secara bertahap bermigrasi ke fitur baru tersebut. Untuk informasi lebih lanjut, lihat Topology Aware Hints.
Penyempurnaan ACK untuk Kubernetes 1.22
Observabilitas
-
Metrik tambahan untuk permintaan akses API server guna meningkatkan observabilitas API server.
-
Untuk kluster ACK Pro, ACK Serverless Pro, dan ACK Edge Pro, ACK kini mengekspos metrik utama untuk komponen lapisan kontrol guna meningkatkan observabilitas lapisan kontrol.
Stabilitas
Untuk semua jenis kluster:
-
Proteksi lapisan penyimpanan untuk mengurangi dampak pada etcd selama cold start.
-
Dukungan untuk pembatasan kecepatan traffic API server berdasarkan kombinasi sumber permintaan, tipe, atau entri rute untuk mengurangi dampak pada API server selama cold start.
Optimalisasi kinerja
-
kubelet: Selama peningkatan di tempat, kubelet meminimalkan pengulangan (restart) Kontainer. Untuk informasi selengkapnya, lihat Perhitungan kubelet tentang apakah sebuah Kontainer telah berubah dapat menyebabkan pemadaman di seluruh Kluster.
-
KubeProxy: Kompatibel dengan Alibaba Cloud Linux 2 (kernel-4.19.91-23) dan versi selanjutnya. Saat mode IPVS diaktifkan, jangan atur conn_reuse_mode ke 0. Untuk informasi lebih lanjut, lihat [ipvs] set conn_reuse_mode=1 on Linux kernel versions >=v5.9.
-
Kluster ACK Serverless: Untuk mengurangi dampak bisnis, pod ECI tidak dievakuasi secara proaktif saat node virtual tidak siap.
-
Kluster ACK Pro dan ACK Edge Pro: Scheduler ditingkatkan untuk mendukung fitur lanjutan seperti gang scheduling, kesadaran topologi CPU, dan kesadaran topologi GPU. Untuk informasi lebih lanjut, lihat Ikhtisar kluster ACK Pro.
Perbaikan bug
kube-controller-manager: Memperbaiki kebocoran EndpointSlice yang terjadi dalam skenario tertentu. Untuk informasi lebih lanjut, lihat Fixing how EndpointSlice Mirroring handles Service selector transitions.