Container Service for Kubernetes (ACK) secara ketat mematuhi ketentuan Program Sertifikasi Konformitas Kubernetes Bersertifikat. Topik ini menjelaskan pembaruan di Kubernetes 1.26, termasuk catatan pembaruan, perubahan besar, fitur baru, fitur dan API yang ditinggalkan, gerbang fitur, serta peningkatan keamanan.
Pembaruan versi
Komponen berikut diperbarui dan dioptimalkan oleh ACK untuk mendukung Kubernetes 1.26.
Komponen inti | Nomor versi | Deskripsi |
Kubernetes | 1.26.15-aliyunacs.1 |
|
etcd | v3.5.9 | Tidak ada dampak pada beban kerja |
CoreDNS | v1.9.3.10-7dfca203-aliyun | Tidak ada dampak pada beban kerja |
CRI | containerd 1.6.22.1-20240524143336 | Hanya mendukung Kubernetes 1.24.0 dan yang lebih baru. |
CSI | v1.30.1-1.acs-685ce77-aliyun | Tidak ada dampak pada beban kerja |
CNI | Terway v1.5.0 dan yang lebih baru, dan TerwayControlplane v1.5.0 dan yang lebih baru | Tidak ada dampak pada beban kerja |
Catatan pembaruan
Perubahan utama
Banyak API beta ditinggalkan di Kubernetes 1.25 dan 1.26. Sebelum memperbarui kluster Anda ke Kubernetes 1.26, pastikan pengontrol atau aplikasi yang berinteraksi dengan API beta tersebut telah diperbarui untuk menggunakan versi API yang direkomendasikan. Untuk informasi lebih lanjut tentang API yang ditinggalkan, lihat API yang Ditinggalkan.
Kubernetes 1.26 tidak lagi mendukung CRI v1alpha2 tetapi memerlukan runtime kontainer untuk mendukung CRI v1. Oleh karena itu, Kubernetes 1.26 tidak mendukung containerd 1.5 atau yang lebih lama. Pastikan bahwa containerd 1.6 atau yang lebih baru digunakan di Kubernetes 1.26. Sebelum memperbarui kluster Anda ke Kubernetes 1.26, perbarui terlebih dahulu containerd ke versi 1.6.0 atau yang lebih baru.
Pengontrol admisi PSP ditinggalkan di Kubernetes 1.21 dan dihapus dari Kubernetes 1.25. Pengontrol admisi PSP kompleks dan dapat menyebabkan masalah keamanan karena mungkin memberikan izin berlebihan. Untuk informasi lebih lanjut, lihat PodSecurityPolicy: Konteks Historis.
Untuk kluster tempat pengontrol admisi PSP dapat digunakan, atur salah satu batasan berikut sebelum memperbarui kluster:
Gunakan fitur manajemen kebijakan yang disediakan oleh ACS. ACS menyediakan lebih banyak kebijakan yang sesuai dengan skenario Kubernetes. Kebijakan ini mudah dikonfigurasi dan digunakan. Untuk informasi lebih lanjut, lihat Konfigurasikan Kebijakan Keamanan Pod.
Gunakan admisi keamanan pod bawaan yang ramah pengguna. Untuk informasi lebih lanjut, lihat Admisi Keamanan Pod. Untuk informasi lebih lanjut tentang cara bermigrasi dari PodSecurityPolicy ke pengontrol admisi PodSecurity bawaan, lihat Migrasi dari PodSecurityPolicy ke Pengontrol Admisi PodSecurity Bawaan.
Secara manual pasang dan konfigurasikan plugin admisi pihak ketiga.
Kerentanan Common Vulnerabilities and Exposures (CVE) berikut diperbaiki di 1.26.15-aliyunacs.1:
CVE-2023-45288
CVE-2024-3177
CVE-2024-24786
Fitur baru
Versi beta dari kontainer sementara digunakan di Kubernetes 1.23 dan versi stabil digunakan di Kubernetes 1.25. Jika pod yang ingin Anda periksa telah crash atau Anda tidak memiliki alat debugging untuk menjalankan
kubectl exec, Anda dapat menjalankan kontainer sementara di dalam pod untuk memeriksa status pod dan menjalankan perintah arbitrer. Untuk informasi lebih lanjut, lihat Kontainer Sementara.cgroup v2 di Kubernetes 1.25 mencapai fase Stabil. cgroup v2 adalah versi yang dioptimalkan dari cgroup v1. Untuk informasi lebih lanjut, lihat Tentang cgroup v2.
Dukungan untuk Windows di Kubernetes 1.25 terus dioptimalkan. Misalnya, CI unit tests dan conformance tests didukung dan repository baru dapat dibuat untuk kesiapan operasional Windows.
Di Kubernetes 1.25, image registry k8s.gcr.io dialihkan ke registry.k8s.io dan permintaan juga dialihkan ke registry.k8s.io. Untuk informasi lebih lanjut, lihat k8s.gcr.io Dialihkan ke registry.k8s.io.
Di Kubernetes 1.25, bidang EndPort di kebijakan jaringan mencapai fase General Availability (GA). Jika plug-in jaringan Anda mendukung bidang EndPort, Anda dapat menggunakan bidang ini untuk menentukan rentang port saat mengonfigurasi kebijakan jaringan. Jika plug-in jaringan Anda tidak mendukung bidang EndPort dan Anda membuat kebijakan jaringan dengan bidang ini, kebijakan tersebut hanya akan diterapkan untuk bidang port tunggal. Untuk informasi lebih lanjut, lihat Kebijakan Jaringan.
Di Kubernetes 1.25, isolasi kapasitas penyimpanan sementara lokal mencapai fase GA (rilis resmi). Fitur ini menyediakan dukungan untuk isolasi kapasitas penyimpanan sementara lokal antar pod, seperti volume EmptyDir. Pod dapat dibatasi keras dalam konsumsi penyimpanan sementara lokal mereka. Pod akan dihapus jika konsumsi penyimpanan sementara lokalnya melebihi batas atas. Untuk informasi lebih lanjut, lihat Isolasi Kapasitas Penyimpanan Sementara Lokal.
Di Kubernetes 1.25, volume CSI sementara diperbarui ke versi stabil. Saat volume CSI sementara digunakan, Anda tidak dapat secara langsung menentukan volume CSI yang berasal dari volume persisten (PV) dan klaim volume persisten (PVC) dalam spesifikasi pod. Untuk informasi lebih lanjut, lihat Volume CSI Inline Sementara.
Di Kubernetes 1.25, API alpha1 Key Management Service (KMS) v2 diperkenalkan untuk meningkatkan kinerja dan mengoptimalkan rotasi kunci dan observabilitas. API ini menggantikan AES-CBC dengan AES-GCM, dan menggunakan DEK untuk mengenkripsi data statis (Kubernetes Secrets). Tidak diperlukan operasi tambahan selama proses enkripsi. Data yang dienkripsi dapat didekripsi menggunakan AES-GCM dan AES-CBC. Untuk informasi lebih lanjut, lihat Gunakan Penyedia KMS untuk Enkripsi Data.
Di Kubernetes 1.25, standar Container Object Storage Interface (COSI) diperkenalkan untuk menstandarisasi penyediaan dan konsumsi penyimpanan objek. COSI berada di fase Alpha.
Di Kubernetes 1.25, jika PodHasNetwork di bidang
statuspod disetel ke True, sandbox runtime pod diinisialisasi dan dibuat, dan jaringan sandbox dikonfigurasi. Ini karena kubelet mulai menarik gambar untuk meluncurkan kontainer hanya setelah PodHasNetwork disetel ke True. Oleh karena itu, bidang ini dapat digunakan untuk menunjukkan latensi inisialisasi pod, tidak termasuk karakteristik seperti kecepatan penarikan gambar dan beban aplikasi. Anda dapat menggunakan PodHasNetwork untuk secara akurat menghasilkan indikator tingkat layanan (SLI). PodHasNetwork berada di fase Alpha. Jika Anda ingin menggunakan PodHasNetwork, aktifkan gerbang fitur PodHasNetworkCondition pada kubelet. Untuk informasi lebih lanjut, lihat Bagaimana ini berbeda dari kondisi Initialized yang ada yang dilaporkan untuk pod?Di Kubernetes 1.25, bidang minReadySeconds untuk StatefulSets mencapai fase Stabil. Bidang ini memungkinkan setiap pod menunggu periode waktu tertentu untuk memperlambat pembaruan bergulir StatefulSets. Untuk informasi lebih lanjut, lihat minReadySeconds.
Di Kubernetes 1.25, DaemonSet maxSurge mencapai fase Stabil. maxSurge menentukan jumlah pod tambahan yang dapat dibuat pada node selama pembaruan bergulir DaemonSet. Ini membantu mengurangi downtime DaemonSet semaksimal mungkin. Anda tidak dapat menggunakan maxSurge dan hostPort secara bersamaan di DaemonSets karena dua pod aktif tidak dapat berbagi port yang sama pada node. Untuk informasi lebih lanjut, lihat Lakukan Pembaruan Bergulir pada DaemonSet.
Di Kubernetes 1.25, dukungan alpha untuk menjalankan pod dengan namespace pengguna ditambahkan. Di namespace pengguna, Anda dapat memetakan pengguna root di dalam pod ke ID non-nol di luar pod. ID tersebut adalah ID pengguna root dari tampilan kontainer dan ID biasa tanpa hak istimewa dari tampilan host. Untuk menggunakan fitur ini, Anda perlu mengaktifkan gerbang fitur UserNamespacesStatelessPodsSupport dan memastikan bahwa runtime kontainer mendukung fitur ini. Untuk informasi lebih lanjut, lihat Kubernetes 1.25: dukungan alpha untuk menjalankan Pod dengan namespace pengguna.
Di Kubernetes 1.25, gerbang fitur RetroactiveDefaultStorageClass ditambahkan untuk mengubah cara alokasi Default StorageClass ke PVC. Sebelum gerbang fitur ini diaktifkan, Default StorageClass dialokasikan ke PVC hanya jika StorageClass dibuat sebelum PVC. Jika tidak, StorageClass PVC tetap dalam keadaan nil. Setelah gerbang fitur ini diaktifkan, Anda tidak perlu lagi menghapus dan membuat ulang PVC tersebut. Default StorageClass dapat dialokasikan secara otomatis ke PVC. Gerbang fitur ini akan mencapai fase Beta di Kubernetes 1.26 dan diaktifkan secara default di Kubernetes 1.26.
Di Kubernetes 1.25, JobPodFailurePolicy ditambahkan. Fitur ini memungkinkan Anda mengonfigurasi Job untuk menangani gangguan pod berdasarkan kode keluar dan status pod. Fitur ini mencapai fase Beta di Kubernetes 1.26. Anda dapat mendefinisikan bidang podFailurePolicy di Job untuk mengonfigurasi kebijakan kegagalan pod untuk menghindari percobaan ulang pod yang tidak perlu dan mengabaikan eviksi pod. Untuk informasi lebih lanjut, lihat Menggunakan Kebijakan Kegagalan Pod untuk Mengabaikan Gangguan Pod.
Di Kubernetes 1.25, masalah bahwa PodTopologySpread tidak dapat menyebar pod secara merata selama pembaruan bergulir diperbaiki. Dukungan beta untuk bidang minDomains ditambahkan.
Di Kubernetes 1.25, kube-proxy dioptimalkan untuk kluster besar. Misalnya, di kluster yang memiliki 1.000 titik akhir, aturan iptables yang tidak digunakan dipertahankan selama periode waktu tertentu. Maksimum periode retensi sama dengan siklus sinkronisasi maksimum aturan iptables. Oleh karena itu, Anda tidak perlu lagi memindai aturan iptables lama setiap kali. Di kluster kecil, aturan iptables yang tidak digunakan segera dihapus.
Di Kubernetes 1.26, API alokasi sumber daya dinamis ditambahkan. API ini dapat digunakan untuk meminta dan berbagi sumber daya antar pod atau antar kontainer dalam pod. API ini juga menyediakan parameter untuk Anda menginisialisasi sumber daya. API ini berada di fase Alpha. Untuk menggunakan API ini, Anda perlu mengaktifkan gerbang fitur DynamicResourceAllocation dan grup API resource.k8s.io/v1alpha1, serta memasang driver sumber daya untuk sumber daya yang ingin Anda kelola. Untuk informasi lebih lanjut, lihat API Alpha untuk Alokasi Sumber Daya Dinamis.
Di Kubernetes 1.26, shutdown node non-graceful mencapai fase Beta. Saat node dimatikan, pod di node tersebut akan macet dalam keadaan Terminating dan VolumeAttachments tidak dapat dihapus. Jika pod dibuat oleh StatefulSet, pod tidak dapat dibuat ulang di node lain karena nama pod duplikat tidak diizinkan. Dibandingkan dengan shutdown node graceful berdasarkan pemantauan shutdown node yang dilakukan oleh kubelet, Anda perlu secara manual menambahkan taint
out-of-serviceke node untuk memicu shutdown node non-graceful dan memigrasi pod di node ke node lain. Setelah node pulih, Anda perlu secara manual menghapus taint.Di Kubernetes 1.26, Anda dapat mendelegasikan fsGroup ke driver CSI saat memasang volume ke pod. Fitur ini menyediakan mekanisme bagi driver CSI untuk menerapkan fsGroup alih-alih kubelet untuk mengubah izin pada file dan direktori. Fitur ini transparan bagi pengguna. Jika Anda adalah pengembang driver CSI, lihat Dukungan fsGroup Driver CSI.
Di Kubernetes 1.26, gerbang penjadwalan pod ditambahkan untuk memberi tahu penjadwal kapan pod siap untuk dijadwalkan. Saat sejumlah besar pod tertunda tidak dapat dijadwalkan karena peristiwa eksternal, kinerja penjadwal terpengaruh secara negatif. Untuk menyelesaikan masalah di atas, gerbang penjadwalan pod memungkinkan Anda menyatakan bahwa pod yang baru dibuat belum siap untuk dijadwalkan. Jika
spec.schedulingGatesdikonfigurasi untuk pod, penjadwal mengabaikan pod tersebut saat menjadwalkan pod. Gerbang ini memerlukan pengontrol eksternal untuk mengonfirmasi kapan pod siap untuk dijadwalkan dan kemudian menghapus gerbang. Untuk informasi lebih lanjut, lihat Kesiapan Penjadwalan Pod.Di Kubernetes 1.26, manajer CPU mencapai fase GA. Fitur ini telah mencapai fase Beta di Kubernetes 1.10. Manajer CPU adalah bagian dari kubelet dan digunakan untuk mengalokasikan CPU eksklusif ke kontainer. Manajer CPU mendukung tiga kebijakan. Untuk informasi lebih lanjut, lihat Kontrol Kebijakan Manajemen CPU pada Node.
Di Kubernetes 1.26, dukungan alpha untuk sumber data penyimpanan lintas namespace ditambahkan. Fitur ini memungkinkan Anda menentukan sumber data yang termasuk dalam namespace berbeda untuk PVC. Untuk informasi lebih lanjut, lihat Kubernetes v1.26: Dukungan alpha untuk sumber data penyimpanan lintas namespace.
Di Kubernetes 1.26, Anda dapat menentukan kebijakan
.spec.unhealthyPodEvictionPolicy=AlwaysAllowuntuk memaksa PodDisruptionBudget selalu mengizinkan eviksi pod yang tidak sehat. Fitur ini berada di fase Alpha. Untuk menggunakan fitur ini, Anda perlu mengaktifkan gerbang fitur PDBUnhealthyPodEvictionPolicy. Untuk informasi lebih lanjut, lihat Kebijakan Eviksi Pod Tidak Sehat.Di Kubernetes 1.26,
httpGetuntuk hook siklus hidup kontainer preStop dan postStart sesuai dengan pengaturan bidangschemedanheaders. Anda dapat mengonfigurasiheader kustom dan mengaktifkan HTTPS dengan cara yang sama seperti probe. Jika HTTPS digunakan secara tidak sengaja, pesan kesalahan akan dikembalikan dan sistem beralih ke HTTP tanpa menyebabkan masalah kompatibilitas. Anda dapat menentukan--feature-gates=ConsistentHTTPGetHandlers=falsepada kubelet untuk menonaktifkan fitur ini.Di Kubernetes 1.26, API Prioritas dan Keadilan (APF) dapat meminjam kursi dari level prioritas lainnya. Dua bidang ditambahkan ke
.spec.limited. BidanglendablePercentmenentukan persentase kursi yang dapat dipinjam oleh level prioritas lain dari level saat ini. BidangborrowingLimitPercentmenentukan jumlah kursi yang dapat dipinjam dari level prioritas lain.Di Kubernetes 1.26, Anda dapat menyetel
--concurrent-horizontal-pod-autoscaler-syncsuntuk komponen kube-controller-manager untuk menentukan jumlah pekerja yang digunakan oleh pengontrol Horizontal Pod Autoscaler (HPA).Di Kubernetes 1.26, pemilih label diverifikasi untuk HPA. Saat beberapa HPA menunjuk ke koleksi pod atau Deployment yang sama, HPA tidak berlaku dan acara AmbiguousSelector dihasilkan.
Di Kubernetes 1.26, ketika beberapa StorageClasses ditentukan sebagai StorageClasses default dengan menambahkan anotasi
storageclass.kubernetes.io/is-default-class, sistem memilih StorageClass terbaru alih-alih melempar pengecualian.
Fitur yang ditinggalkan
Driver Penyimpanan yang Ditinggalkan dan Dihapus
Di Kubernetes 1.25, plug-in volume in-tree dihapus untuk integrasi penyimpanan. SIG Storage merilis Migrasi CSI untuk memigrasi plug-in volume in-tree ke plug-in Container Storage Interface (CSI) out-of-tree di versi Kubernetes sebelumnya. Di Kubernetes 1.25, Migrasi CSI inti mencapai fase GA.
Di Kubernetes 1.25, plug-in volume in-tree GlusterFS dan Portworx ditinggalkan, dan plug-in volume in-tree Flocker, Quobyte, dan StorageOS dihapus. Driver penyimpanan vSphere in-tree tidak mendukung versi vSphere lebih lama dari 7.0u2.
Di Kubernetes 1.26, driver penyimpanan in-tree GlusterFS ditinggalkan dan integrasi penyimpanan in-tree OpenStack (volume Cinder) yang sudah ditinggalkan dihapus.
Bersihkan Kepemilikan Rantai iptables
Dalam banyak kasus, Kubernetes membuat rantai iptables untuk memastikan bahwa paket dapat mencapai tujuan mereka. Rantai iptables dan nama-namanya adalah implementasi internal Kubernetes dan hanya cocok untuk penggunaan internal. Beberapa komponen bergantung pada rantai iptables tetapi rantai-rantai ini tidak dimaksudkan menjadi bagian dari komponen apa pun di Kubernetes. Untuk informasi lebih lanjut, lihat Rantai IPTables Kubernetes Bukan API.
Di versi Kubernetes setelah 1.25, kubelet menggunakan gerbang fitur IPTablesCleanup untuk secara progresif menyelesaikan migrasi. Ini membantu mencegah pembuatan rantai iptables, seperti KUBE-MARK-DROP, KUBE-MARK-MASQ, dan KUBE-POSTROUTING, di tabel NAT.
Untuk informasi lebih lanjut tentang cara membersihkan kepemilikan rantai iptables, lihat Membersihkan Kepemilikan Rantai IPTables.
Hapus Kode Manajemen Kredensial In-Tree
Di versi Kubernetes setelah 1.26, kode autentikasi identitas bersarang untuk Azure dan Google Cloud dihapus dari client-go dan kubectl. Ini dapat diganti dengan menggunakan plugin autentikasi. Untuk informasi lebih lanjut, lihat Plugin Autentikasi.
Hapus Mode User-Space dari kube-proxy
Di Kubernetes 1.26, mode userspace dihapus. Mode userspace yang sudah ditinggalkan tidak lagi didukung oleh Linux atau Windows. Pengguna Linux dapat menggunakan iptables atau IPVS, dan pengguna Windows dapat menggunakan mode kernelspace. Kesalahan terjadi jika Anda menggunakan
--mode userspace.Windows winkernel kube-proxy tidak lagi mendukung API HNS v1 Windows.
Kubectl Mendelegasikan Flag
--prune-whitelistDi Kubernetes 1.26, flag
--prune-whitelistditinggalkan dan diganti dengan--prune-allowlistuntuk mendukung Inisiatif Penamaan Inklusif. Flag yang ditinggalkan akan dihapus di versi mendatang.Hapus Gerbang Fitur DynamicKubeletConfig
Gerbang fitur DynamicKubeletConfig dihapus. Konfigurasi kubelet node dapat diperbarui secara dinamis dengan memanggil API. Gerbang fitur dihapus dari kubelet di Kubernetes 1.24 dan dihapus dari server API di Kubernetes 1.26. Ini menyederhanakan kode dan meningkatkan stabilitas. Kami sarankan Anda memodifikasi file konfigurasi kubelet dan kemudian memulai ulang kubelet. Untuk informasi lebih lanjut, lihat hapus gerbang fitur DynamicKubeletConfig dari kode.
Hapus Argumen Baris Perintah
Di Kubernetes 1.25, kubeadm UnversionedKubeletConfigMap mencapai fase GA. Secara default, kube-system atau kubelet-config digunakan untuk menggantikan kube-system atau kubelet-config-x.yy.
Di Kubernetes 1.25, kubeadm tidak lagi menambahkan label
node-role.kubernetes.io/master:NoScheduleke node kontrol plane. Label tersebut dihapus saat kubeadm upgrade apply digunakan.Di Kubernetes 1.25, anotasi Seccomp
seccomp.security.alpha.kubernetes.io/poddancontainer.seccomp.security.alpha.kubernetes.iotidak lagi didukung. Kami sarankan Anda menggunakan SeccompProfile. Untuk informasi lebih lanjut, lihat Batasi Syscalls Kontainer dengan seccomp.Di Kubernetes 1.25 dan 1.26, beberapa argumen awal kube-controller-manager ditinggalkan dan dihapus.
Argumen deleting-pods-qps, deleting-pods-burst, dan register-retry-count dihapus.
Argumen experimental-cluster-signing-duration dan pod-eviction-timeout ditinggalkan dan diganti dengan cluster-signing-duration.
Di Kubernetes 1.27, pod-eviction-timeout dan enable-taint-manager dihapus.
Di Kubernetes 1.26, beberapa argumen baris perintah terkait logging dihapus. Argumen-argumen ini ditinggalkan di versi sebelumnya.
Di Kubernetes 1.26, flag --master-service-namespace ditinggalkan. Flag ini tidak digunakan di server API.
Di Kubernetes 1.26, subperintah yang tidak digunakan berikut dalam kubectl run ditandai sebagai ditinggalkan dan akan dihapus di versi mendatang:
--cascade,--filename,--force,--grace-period,--kustomize,--recursive,--timeout, dan--wait.
API yang Ditinggalkan
Di Kubernetes 1.25 dan 1.26, beberapa API ditinggalkan. Untuk informasi lebih lanjut, lihat API yang Ditinggalkan.
CronJob
Di versi Kubernetes setelah 1.25, API batch/v1beta1 tidak dapat lagi digunakan untuk membuat CronJob. Anda dapat menggunakan API batch/v1, yang tersedia di Kubernetes 1.21 dan versi selanjutnya.
EndpointSlice
Di versi Kubernetes setelah 1.25, API discovery.k8s.io/v1beta1 tidak dapat lagi digunakan untuk membuat EndpointSlice. Anda dapat menggunakan API discovery.k8s.io/v1, yang tersedia di Kubernetes 1.21 dan versi selanjutnya.
Anda perlu memperhatikan perubahan berikut di discovery.k8s.io/v1:
Bidang NodeName dari endpoint digunakan untuk menggantikan bidang topology["kubernetes.io/hostname"] yang sudah ditinggalkan.
Bidang Zone dari endpoint digunakan untuk menggantikan bidang topology["kubernetes.io/zone"] yang sudah ditinggalkan.
Bidang Topology digantikan oleh bidang deprecatedTopology. Bidang ini tidak tersedia di API v1.
Event
Di Kubernetes 1.25, API events.k8s.io/v1beta1 tidak dapat lagi digunakan untuk membuat event. Anda dapat menggunakan API events.k8s.io/v1, yang tersedia di Kubernetes 1.19 dan versi selanjutnya.
Anda perlu memperhatikan perubahan berikut di events.k8s.io/v1:
Bidang type hanya dapat disetel ke Normal atau Warning.
Bidang involvedObject diubah namanya menjadi regarding.
Bidang action, reason, reportingController, dan reportingInstance wajib saat Anda membuat event events.k8s.io/v1.
Bidang eventTime digunakan untuk menggantikan bidang firstTimestamp yang sudah ditinggalkan. Bidang firstTimestamp diubah namanya menjadi deprecatedFirstTimestamp dan tidak diizinkan di events.k8s.io/v1 events.
Bidang series.lastObservedTime digunakan untuk menggantikan bidang lastTimestamp yang sudah ditinggalkan. Bidang lastTimestamp diubah namanya menjadi deprecatedLastTimestamp dan tidak diizinkan di events.k8s.io/v1 events.
Bidang series.count digunakan untuk menggantikan bidang count yang sudah ditinggalkan. Bidang count diubah namanya menjadi deprecatedCount dan tidak diizinkan di events.k8s.io/v1 events.
Bidang reportingController digunakan untuk menggantikan bidang source.component yang sudah ditinggalkan. Bidang source.component diubah namanya menjadi deprecatedSource.component dan tidak diizinkan di events.k8s.io/v1 events.
Bidang reportingInstance digunakan untuk menggantikan bidang source.host yang sudah ditinggalkan. Bidang source.host diubah namanya menjadi deprecatedSource.host dan tidak diizinkan di events.k8s.io/v1 events.
PodDisruptionBudget
Di versi Kubernetes setelah 1.25, API policy/v1beta1 tidak dapat lagi digunakan untuk membuat PodDisruptionBudget. Anda dapat menggunakan API policy/v1, yang tersedia di Kubernetes 1.21 dan versi selanjutnya.
Anda perlu memperhatikan perubahan berikut di policy/v1: Jika spec.selector di PodDisruptionBudget policy/v1 dibiarkan kosong ({}), semua pod di namespace dipilih. Di PodDisruptionBudget policy/v1beta1, jika spec.selector dibiarkan kosong, tidak ada pod yang dipilih. Jika Anda tidak menentukan spec.selector, tidak ada pod yang dipilih di kedua versi API.
PodSecurityPolicy
Di versi Kubernetes setelah 1.25, API policy/v1beta1 tidak dapat lagi digunakan untuk membuat PodSecurityPolicy, dan pengontrol admisi PSP dihapus. Anda perlu bermigrasi dari PodSecurityPolicy ke Admisi Keamanan Pod atau webhook admisi pihak ketiga.
Untuk informasi lebih lanjut tentang migrasi, lihat Migrasi dari PodSecurityPolicy ke Pengontrol Admisi Keamanan Pod Bawaan. Untuk informasi lebih lanjut tentang deprekasi, lihat Deprekasi PodSecurityPolicy: Masa Lalu, Sekarang, dan Masa Depan.
RuntimeClass
Di versi Kubernetes setelah 1.25, API node.k8s.io/v1beta1 tidak dapat lagi digunakan untuk membuat RuntimeClass. Anda dapat menggunakan API node.k8s.io/v1, yang tersedia di Kubernetes 1.20 dan versi selanjutnya.
HorizontalPodAutoscaler
Di versi Kubernetes setelah 1.25, API autoscaling/v2beta1 tidak dapat lagi digunakan untuk membuat horizontal pod autoscaler (HPA).
Di versi Kubernetes setelah 1.26, API autoscaling/v2beta2 tidak dapat lagi digunakan untuk membuat HPA. Anda dapat menggunakan API autoscaling/v2, yang tersedia di Kubernetes 1.23 dan versi selanjutnya.
Sumber Daya Kontrol Aliran
Di versi Kubernetes setelah 1.26, API flowcontrol.apiserver.k8s.io/v1beta1 tidak dapat lagi digunakan untuk membuat FlowSchema atau PriorityLevelConfiguration. API dapat menggunakan flowcontrol.apiserver.k8s.io/v1beta2 di Kubernetes 1.23 dan versi selanjutnya. API dapat menggunakan flowcontrol.apiserver.k8s.io/v1beta3 di Kubernetes 1.26 dan versi selanjutnya.
Gerbang Fitur
Gerbang fitur memiliki tiga fase. Di fase Alpha, gerbang fitur dinonaktifkan secara default. Di fase Beta, gerbang fitur diaktifkan secara default. Di fase GA, gerbang fitur diaktifkan secara default dan tidak dapat dinonaktifkan. Saklar yang digunakan untuk mengaktifkan dan menonaktifkan gerbang fitur akan dihapus di versi mendatang. Untuk informasi lebih lanjut, lihat Gerbang Fitur.
Di Kubernetes 1.25, SeccompDefault mencapai fase Beta. Untuk informasi lebih lanjut tentang cara menggunakan SeccompDefault, lihat Batasi Syscalls Kontainer dengan seccomp.
Di Kubernetes 1.25, Bahasa Ekspresi Validasi CustomResourceDefinition (CRD) mencapai fase Beta dan CustomResourceValidationExpressions diaktifkan secara default. Lebih efisien menggunakan Common Expression Language (CEL) untuk memvalidasi CRD daripada menggunakan webhook. Untuk informasi lebih lanjut, lihat Aturan validasi.
Di Kubernetes 1.25, gerbang fitur ServerSideFieldValidation mencapai fase Beta dan diaktifkan secara default. Server API dapat memvalidasi bidang yang tidak dikenal. Oleh karena itu, fitur validasi bidang akan dihapus dari kubectl di versi mendatang. Untuk informasi lebih lanjut, lihat Validasi bidang tidak dikenal yang didukung oleh server API.
Di Kubernetes 1.25, fitur alpha ContainerCheckpoint ditambahkan dan API Kubelet Checkpoint diaktifkan. Untuk informasi lebih lanjut, lihat API Kubelet Checkpoint.
Di Kubernetes 1.25, fitur alpha PodHasNetworkCondition ditambahkan. Fitur ini memungkinkan kubelet menambahkan kondisi PodHasNetwork ke pod. Untuk informasi lebih lanjut, lihat PodHasNetwork.
Di Kubernetes 1.25, fitur alpha UserNamespacesStatelessPodsSupport ditambahkan untuk mengaktifkan namespace pengguna untuk pod stateless.
Di Kubernetes 1.25, fitur alpha JobPodFailurePolicy ditambahkan. Fitur ini memungkinkan Job menangani gangguan pod berdasarkan kode keluar dan status pod. Fitur ini mencapai fase Beta di Kubernetes 1.26.
Di Kubernetes 1.25, fitur alpha MultiCIDRRangeAllocator ditambahkan untuk memungkinkan NodeIPAM mendukung beberapa ClusterCIDRs.
--cidr-allocator-type=MultiCIDRRangeAllocatordikonfigurasikan untuk kube-controller-manager untuk memungkinkan pengontrol mendukung beberapa ClusterCIDRs.Di Kubernetes 1.25, fitur StatefulSetMinReadySeconds mencapai fase GA. Fitur ini mendukung bidang minReadySeconds secara default dan tidak dapat dinonaktifkan.
Di Kubernetes 1.25, fitur CronJobTimeZone mencapai fase GA. Fitur ini diaktifkan secara default untuk mendukung bidang TimeZone dan tidak dapat dinonaktifkan.
Di Kubernetes 1.25, fitur DaemonSetUpdateSurge mencapai fase GA. Fitur ini diaktifkan secara default untuk mendukung bidang DaemonSet MaxSurge dan tidak dapat dinonaktifkan.
Di Kubernetes 1.25, fitur IdentifyPodOS mencapai fase GA. Fitur ini diaktifkan secara default untuk mendukung bidang spec.podOS dan tidak dapat dinonaktifkan.
Di Kubernetes 1.25, fitur CSIInlineVolume mencapai fase GA. Fitur ini diaktifkan secara default untuk mendukung volume CSI inline dan tidak dapat dinonaktifkan.
Di Kubernetes 1.25, fitur EphemeralContainers mencapai fase GA. Fitur ini diaktifkan secara default untuk mendukung kontainer sementara dan tidak dapat dinonaktifkan.
Di Kubernetes 1.25, fitur CSINodeExpandSecret ditambahkan. Fitur ini memungkinkan Anda mengirimkan data autentikasi identitas yang disimpan di Secrets ke driver CSI saat Anda menambahkan node.
Di Kubernetes 1.25, fitur CSIMigration mencapai fase GA. Fitur ini diaktifkan secara default dan tidak dapat dinonaktifkan.
Di Kubernetes 1.25, fitur CSIMigrationPortworx mencapai fase Beta.
Di Kubernetes 1.25, fitur ProbeTerminationGracePeriod masih berada di fase Beta tetapi nilai default berubah menjadi True. Untuk informasi lebih lanjut, lihat Probe-level terminationGracePeriodSeconds.
Di Kubernetes 1.26, fitur JobTrackingWithFinalizers mencapai fase GA. Fitur ini diaktifkan secara default untuk melacak kemajuan Job dengan melacak pod dari Job tersebut alih-alih menghitung pod yang tersisa. Untuk informasi lebih lanjut, lihat Pelacakan Job dengan finalizer.
Di Kubernetes 1.26, fitur alpha PDBUnhealthyPodEvictionPolicy ditambahkan untuk memungkinkan Anda mengonfigurasi kebijakan eviksi pod tidak sehat untuk PodDisruptionBudget.
Di Kubernetes 1.26, API alokasi sumber daya dinamis didukung. Anda dapat mengelola dan menggunakan sumber daya dengan parameter kustom dan siklus hidup pod independen.
Di Kubernetes 1.26, fitur alpha StatefulSetStartOrdinal ditambahkan untuk memungkinkan Anda mengonfigurasi ordinal awal StatefulSet.
Di Kubernetes 1.26, fitur ServiceInternalTrafficPolicy mencapai fase GA. Fitur ini memungkinkan Anda menggunakan bidang internalTrafficPolicy untuk mendefinisikan kebijakan lalu lintas internal untuk Layanan. Fitur ini diaktifkan secara default dan tidak dapat dinonaktifkan. Untuk informasi lebih lanjut, lihat Kebijakan Lalu Lintas Internal Layanan.
Di Kubernetes 1.26, fitur alpha ValidatingAdmissionPolicy ditambahkan. Ekspresi CEL dapat digunakan untuk mengimplementasikan pengontrol admisi yang dapat diperluas.
Di Kubernetes 1.26, fitur MixedProtocolLBService mencapai fase GA. Fitur ini memungkinkan penggunaan protokol berbeda pada Layanan LoadBalancer yang sama.
Di Kubernetes 1.26, fitur EndpointSliceTerminatingCondition mencapai fase GA. Fitur ini diaktifkan untuk mendukung bidang kondisi Terminating dan Serving di EndpointSlice dan tidak dapat dinonaktifkan.
Di Kubernetes 1.26, fitur APIServerIdentity mencapai fase Beta. Secara default, fitur ini diaktifkan di kube-system untuk membuat lease untuk setiap server API aktif.
Di Kubernetes 1.26, fitur DelegateFSGroupToCSIDriver mencapai fase GA dan tidak dapat dinonaktifkan.
Di Kubernetes 1.26, fitur NodeOutOfServiceVolumeDetach mencapai fase Beta dan diaktifkan secara default. Setelah Anda menambahkan taint
node.kubernetes.io/out-of-serviceuntuk menandai node sebagai out-of-service, pod yang tidak mentoleransi taint tersebut dipaksa dihapus. Operasi detach volume dilakukan untuk pod yang dihentikan di node tersebut.Di Kubernetes 1.26, fitur ServiceIPStaticSubrange mencapai fase GA. Fitur ini mengaktifkan kebijakan alokasi ClusterIP Layanan untuk membagi rentang ClusterIP.
Di Kubernetes 1.26, fitur CPUManager dan DevicePlugins mencapai fase GA. Fitur-fitur ini diaktifkan secara default dan tidak dapat dinonaktifkan.
Di Kubernetes 1.26, fitur alpha ComponentSLIs ditambahkan untuk mengaktifkan titik akhir
/metrics/slispada komponen Kubernetes berikut untuk mengumpulkan metrik pemeriksaan kesehatan: kubelet, kube-scheduler, kube-proxy, kube-controller-manager, dan cloud-controller-manager.Di Kubernetes 1.26, fitur WindowsHostProcessContainers mencapai fase GA. Fitur ini diaktifkan secara default untuk mendukung kontainer Windows HostProcess.
Di Kubernetes 1.26, fitur ExpandedDNSConfig mencapai fase Beta. Fitur ini memungkinkan lebih banyak jalur pencarian DNS dan daftar jalur pencarian DNS yang lebih panjang. Fitur ini memerlukan dukungan runtime kontainer.
Di Kubernetes 1.26, fitur LegacyServiceAccountTokenNoAutoGeneration mencapai fase GA. Fitur ini menonaktifkan pembuatan otomatis token ServiceAccount berdasarkan Secrets. Fitur ini diaktifkan secara default dan tidak dapat dinonaktifkan.
Di Kubernetes 1.26, fitur ProxyTerminatingEndpoints mencapai fase Beta. Fitur ini diaktifkan secara default untuk memungkinkan kube-proxy menangani endpoint yang sedang terminasi ketika ExternalTrafficPolicy=Local.
Di Kubernetes 1.26, fitur alpha LegacyServiceAccountTokenTracking ditambahkan. Secara default, fitur ini dinonaktifkan. Fitur ini menambahkan label
kubernetes.io/legacy-token-last-usedke token ServiceAccount yang dibuat berdasarkan Secrets untuk menunjukkan tanggal kedaluwarsa token tersebut.Di Kubernetes 1.26, fitur PodDisruptionConditions mencapai fase Beta dan diaktifkan secara default. Anda dapat menambahkan kondisi DisruptionTarget ke pod untuk menunjukkan bahwa pod akan dihapus karena gangguan, dan memeriksa alasan penghentian pod di bidang
reason. Untuk informasi lebih lanjut, lihat Kondisi Gangguan Pod.
Peningkatan pada Kubernetes 1.26
Peningkatan keamanan
ACK telah membatasi lebih lanjut akses ke file-file Kubernetes berikut pada node kluster.
Jalur file | Izin akses |
/etc/kubernetes/admin.conf | 600 |
/etc/kubernetes/kube.conf | 600 |
/etc/kubernetes/controller-manager.conf | 600 |
/etc/kubernetes/kubelet.conf | 600 |
/etc/kubernetes/scheduler.conf | 600 |
/etc/kubernetes/manifests/*.yaml | 600 |
/etc/kubernetes/pki/*.key | 600 |
/etc/kubernetes/pki/*.crt | 600 |
/etc/kubernetes/pki/dashboard/*.crt | 600 |
/etc/kubernetes/pki/etcd/*.pem | 600 |
/var/lib/etcd/cert/*.pem | 600 |
/var/lib/etcd/cert/*.csr | 600 |
/var/lib/kubelet/pki/*.crt | 600 |
/var/lib/kubelet/config.yaml | 600 |
/usr/lib/systemd/system/etcd.service | 600 |
/etc/systemd/system/kubelet.service | 600 |
/etc/systemd/system/kubelet.service.d/10-kubeadm.conf | 600 |