Container Service for Kubernetes (ACK) secara ketat mematuhi ketentuan Program Sertifikasi Konformitas Kubernetes. Topik ini menjelaskan pembaruan dalam Kubernetes 1.28, termasuk catatan pembaruan, perubahan besar, fitur baru, fitur dan API yang ditinggalkan, serta gerbang fitur.
Pembaruan versi
Komponen utama berikut diperbarui dan dioptimalkan oleh Alibaba Cloud Container Compute Service (ACS) untuk mendukung Kubernetes 1.28.
Komponen utama | Versi |
Kubernetes | v1.28.3-aliyunacs.2 |
etcd | v3.5.9 |
CoreDNS | v1.9.3.10-7dfca203-aliyun |
CRI | containerd 1.6.22.1-20240524143336 |
CSI | v1.30.1-1.acs-685ce77-aliyun |
CNI | Terway 1.5.0 dan yang lebih baru, serta TerwayControlplane 1.5.0 dan yang lebih baru |
Catatan pembaruan
Komponen | Deskripsi |
Plug-in volume CephFS dan Ceph RBD | Jika klaster Anda menggunakan plug-in volume CephFS dan Ceph RBD, Anda perlu memeriksa apakah plug-in tersebut menggunakan driver off-tree alih-alih driver plug-in yang disediakan oleh Kubernetes. Anda juga perlu memeriksa kompatibilitas, stabilitas, dan kinerja driver off-tree. |
Istilah
Sebelum membaca topik ini, kami menyarankan Anda mempelajari istilah berikut:
Perubahan besar
Logika penjadwalan scheduler dioptimalkan di Kubernetes 1.28 untuk mengurangi percobaan ulang yang tidak valid dan meningkatkan kinerja.
Jika klaster Anda menggunakan plug-in scheduler kustom, kami menyarankan Anda mengoptimalkan dan memperbarui plug-in tersebut untuk meningkatkan kinerja. Untuk informasi lebih lanjut, lihat Perubahan dalam Kerangka Penjadwalan.
Komunitas Kubernetes menyediakan solusi migrasi CSI untuk menggantikan driver plug-in penyimpanan in-tree dengan driver off-tree yang menggunakan API CSI standar. Fitur migrasi CSI mencapai tahap GA di Kubernetes 1.25. API
storage.k8s.io/v1beta1dan Elastic Block Service (EBS) plug-in dihapus di Kubernetes 1.27. Kode plug-in volume CephFS dihapus dankubernetes.io/rbdditinggalkan di Kubernetes 1.28. Sebagai gantinya, gunakan CephFS CSI driver. Selain itu, Anda tidak dapat lagi memigrasi volume Ceph RBD ke plug-in yang menggunakan driver CSI off-tree di Kubernetes 1.28.Kerentanan CVE berikut diperbaiki di 1.28.9-aliyun.1:
CVE-2023-45288
CVE-2024-3177
CVE-2024-24786
Fungsi dan fitur
Kubernetes 1.28
Fitur shutdown node non-graceful telah mencapai GA. Ketika sebuah node dimatikan karena pengecualian seperti kekurangan daya, StatefulSet perlu membuat pod dengan nama yang sama di node lain untuk menghindari gangguan bisnis.
Gerbang fitur NodeOutOfServiceVolumeDetach telah mencapai GA. Setelah fitur ini diaktifkan, ketika sebuah node dimatikan karena pengecualian, operasi detach volume segera dilakukan untuk pod yang dihentikan pada node tersebut. Ini memungkinkan pod pada node yang tidak berfungsi pulih dengan cepat di node lain.
Fitur penugasan StorageClass default retroaktif telah mencapai GA. Sebelum fitur ini diperkenalkan, jika Anda membuat PVC tanpa bidang
storageClassNamesaat tidak ada StorageClass default, PVC tetap dalam status Pending. Setelah fitur ini diperkenalkan, ketika StorageClass default dibuat, PVC tanpa bidangstorageClassNamesecara otomatis menggunakan StorageClass default.Dua fitur diperkenalkan untuk menghindari kegagalan Job:
Dibandingkan dengan gerbang fitur
deletionTimestampyang membuat pod pengganti segera setelah pod dihapus, gerbang fitur JobPodReplacementPolicy (dalam tahap Alpha) membuat pod pengganti hanya setelah pod diberi fase Failed (status.phase: Failed). Kebijakan ini mencegah dua pod menggunakan indeks dan sumber daya node yang sama pada waktu bersamaan.Gerbang fitur JobBackoffLimitPerIndex (dalam tahap Alpha) memungkinkan Anda menyetel
.spec.backoffLimitPerIndexuntuk membatasi jumlah maksimum percobaan ulang untuk kegagalan pod per indeks. Sebelum fitur ini diperkenalkan, jika jumlah kegagalan pod berturut-turut dari suatu indeks mencapai.spec.backoffLimit, Job terindeks yang sesuai gagal.
Jika bidang
completiondari Job terindeks diatur ke nilai lebih besar dari 100.000, bidangparallelismdari Job diatur ke nilai lebih besar dari 10.000, dan sejumlah besar pod gagal, pelacakan fase terminal pod mungkin gagal. Untuk mencegah masalah ini, peringatan ditampilkan jika Anda mengatur bidang-bidang sebelumnya ke nilai yang terlalu besar saat membuat Job.Bidang
reasondanfieldPathditambahkan ke aturan validasi CustomResourceDefinition (CRD) untuk mengembalikan alasan dan jalur bidang ketika validasi CRD gagal. Untuk informasi lebih lanjut, lihat Bahasa Ekspresi Validasi CRD.Ekspresi Common Expression Language (CEL) dapat digunakan dalam permintaan pencocokan webhook. Hingga 64 kondisi pencocokan didukung. Untuk informasi lebih lanjut, lihat Pencocokan Permintaan: matchConditions.
Gerbang fitur SidecarContainers diperkenalkan untuk memungkinkan Anda menentukan waktu peluncuran kontainer sidecar. Misalnya, Anda dapat meluncurkan kontainer pengumpulan log sebelum kontainer lain untuk meningkatkan keandalan pengumpulan log. Untuk informasi lebih lanjut, lihat Kubernetes v1.28: Memperkenalkan Kontainer Sidecar Asli. Fitur ini telah mencapai Alpha di Kubernetes 1.28 dan dinonaktifkan secara default.
Bidang
.status.resizeStatusdari PVC diganti dengan bidang peta.status.allocatedResourceStatusuntuk menyimpan status sumber daya yang sedang diubah ukurannya untuk PVC. Untuk informasi lebih lanjut, lihat PersistentVolumeClaimStatus.Indeks pod (nomor urutan) ditambahkan sebagai label ke pod yang dibuat oleh Job terindeks dan StatefulSets.
Gerbang fitur ValidatingAdmissionPolicy (dalam tahap Beta) menyediakan alternatif deklaratif untuk metode validasi admission webhooks untuk memvalidasi permintaan sumber daya. Gerbang fitur ini juga memungkinkan Anda menggunakan ekspresi CEL untuk menulis aturan validasi kompleks. Server API akan memvalidasi permintaan sumber daya terhadap ekspresi CEL.
Bendera
--concurrent-cron-job-syncsditambahkan ke Kubernetes controller manager untuk menyetel konkurensi kontroler CronJob dan bendera--concurrent-job-syncsditambahkan untuk menyetel konkurensi kontroler Job. Untuk informasi lebih lanjut, lihat --concurrent-cron-job-syncs dan --concurrent-job-syncs.Server API dioptimalkan:
Penggunaan memori untuk mendapatkan daftar (GetList) dari cache dikurangi. Untuk informasi lebih lanjut, lihat Data Uji GetList.
Masalah bahwa titik akhir Kubernetes Service tidak dihapus ketika hanya ada satu server API replikasi diperbaiki. Ini memastikan bahwa titik akhir Kubernetes Services dihapus selama shutdown yang aman.
Controller OpenAPI v2 dibuat lambat untuk mengumpulkan informasi dari CRD dan spesifikasi OpenAPI v2 dikurangi. Ketika tidak ada klien yang mengirim permintaan ke OpenAPI v2, penggunaan CPU dan memori server API dikurangi. Selain itu, efisiensi instalasi sejumlah besar CRD ditingkatkan. Namun, ini memperlambat pemrosesan permintaan pertama kali. Kami menyarankan Anda memperbarui klien Anda ke versi yang mendukung OpenAPI v3.
Gerbang fitur Bacaan Konsisten dari Cache diperkenalkan untuk memungkinkan Anda menggunakan watch cache untuk menjamin pembacaan konsisten untuk permintaan LIST.
Berbagai metrik dapat dikumpulkan dengan memanggil API metrik.
Fitur yang ditinggalkan
Kubernetes 1.28
Kode plug-in in-tree CephFS dihapus.
Kami menyarankan Anda menggunakan CephFS CSI driver.
Dukungan untuk memigrasi volume Ceph RBD ke plug-in yang menggunakan driver CSI off-tree ditinggalkan dan akan dihapus di versi mendatang.
Kami menyarankan Anda menyelesaikan migrasi sebelum penghapusan kode plug-in in-tree.
Plug-in volume RBD (kubernetes.io/rbd) ditinggalkan dan akan dihapus di versi mendatang.
Kami menyarankan Anda menggunakan CephFS CSI driver.
KMSv1 ditinggalkan. Jika Anda ingin terus menggunakan KMSv1, atur
--feature-gates=KMSv1=true. Untuk informasi lebih lanjut, lihat Tandai KMS v1beta1 sebagai ditinggalkan tanpa perbaikan lebih lanjut.Kami menyarankan Anda menggunakan KMSv2.
Bendera
--volume-host-cidr-denylistdan--volume-host-allow-local-loopbackdalam perintah Kubernetes controller manager ditinggalkan.Bendera
--azure-container-registry-configdalam perintah kubelet ditinggalkan.Kami menyarankan Anda menggunakan bendera
image-credential-provider-configdan--image-credential-provider-bin-dir.Anda tidak dapat lagi membuat pool node Windows.
API yang ditinggalkan
API CSIStorageCapacity memungkinkan Anda meminta kapasitas penyimpanan tersedia saat ini untuk memastikan bahwa pod Anda dijadwalkan ke node dengan sumber daya penyimpanan yang cukup. Versi API storage.k8s.io/v1beta1 ditinggalkan di Kubernetes 1.24 dan dihapus di Kubernetes 1.27.
Kami menyarankan Anda menggunakan versi storage.k8s.io/v1. Versi ini tersedia di Kubernetes 1.24 dan versi berikutnya. Untuk informasi lebih lanjut, lihat KEP Batasan Kapasitas Penyimpanan untuk Penjadwalan Pod.
Gerbang fitur
Bagian ini hanya mencantumkan perubahan besar. Untuk informasi lebih lanjut, lihat Gerbang Fitur.
Kubernetes 1.28
Ketika gerbang fitur
NodeOutOfServiceVolumeDetachmenambahkan taintnode.kubernetes.io/out-of-serviceuntuk menandai node sebagai tidak berfungsi, pod yang tidak cocok dengan toleransi pada node dipaksa keluar dan volume segera dilepas. Gerbang fitur ini telah mencapai GA di Kubernetes 1.28 dan selalu diaktifkan secara default.Gerbang fitur
AdmissionWebhookMatchConditiondiaktifkan secara default untuk memungkinkan Anda menggunakan ekspresi CEL sebagai kondisi pencocokan webhook.Gerbang fitur
UnknownVersionInteroperabilityProxytelah mencapai Alpha. Gerbang fitur ini dapat mengirim permintaan ke server API yang benar ketika beberapa versi server API ada. Untuk informasi lebih lanjut, lihat Proksi Versi Campuran.Gerbang fitur
IPTablesOwnershipCleanuptelah mencapai GA. Gerbang fitur ini menyebabkan kubelet tidak lagi membuat aturan iptables KUBE-MARK-DROP dan KUBE-MARK-MASQ.Gerbang fitur
ConsistentListFromCachetelah mencapai Alpha. Gerbang fitur ini memungkinkan server API menggunakan watch cache untuk menjamin pembacaan konsisten untuk permintaan LIST.Gerbang fitur
ProbeTerminationGracePeriodtelah mencapai GA dan diaktifkan secara default. Gerbang fitur ini memungkinkan Anda menggunakan probe-level terminationGracePeriodSeconds.Gerbang fitur berikut dalam tahap GA dihapus:
DelegateFSGroupToCSIDriver,DevicePlugins,KubeletCredentialProviders,MixedProtocolLBService,ServiceInternalTrafficPolicy,ServiceIPStaticSubrange, danEndpointSliceTerminatingCondition.
Referensi
Untuk informasi lebih lanjut tentang catatan rilis untuk Kubernetes 1.27 dan Kubernetes 1.28, lihat CHANGELOG-1.27 dan CHANGELOG-1.28.