Alibaba Cloud Container Compute Service (ACS) mengikuti Certified Kubernetes Conformance Program. Topik ini mencakup perubahan dalam Kubernetes 1.30—termasuk fitur baru dan yang dipromosikan, fitur serta API yang ditinggalkan, dan versi komponen.
Versi komponen
Komponen berikut diperbarui untuk Kubernetes 1.30 pada kluster ACS.
| Komponen | Versi |
|---|---|
| Kubernetes | 1.30.1-aliyunacs.1 |
| etcd | v3.5.9 |
| containerd | 1.6.28 |
| CoreDNS | v1.9.3.10-7dfca203-aliyun |
| CSI | v1.30.1-98960d8-aliyun |
| CNI (Flannel) | v0.15.1.22-20a397e6-aliyun |
| Terway dan TerwayControlplane | 1.9.0 dan versi lebih baru |
Mulai Kubernetes 1.30, kluster ACS baru yang menggunakan Terway sebagai plugin jaringan dan mengaktifkan dukungan kebijakan jaringan menerapkan kebijakan jaringan menggunakan Extended Berkeley Packet Filter (eBPF). Pemutakhiran kluster dan komponen yang sudah ada tidak mengubah perilaku saat ini. Untuk detailnya, lihat Gunakan kebijakan jaringan di kluster ACS.
Fitur
Fitur dari Kubernetes 1.29
Fitur berikut diperkenalkan di Kubernetes 1.29 dan disertakan dalam kluster ACS Kubernetes 1.30.
Aksi sleep hook PreStop
Aksi sleep kini tersedia untuk hook PreStop, memungkinkan kontainer berhenti sementara selama durasi tertentu sebelum terminasi. Untuk detailnya, lihat KEP-3960: Memperkenalkan Aksi Sleep untuk Hook PreStop.
Kontainer sidecar (Beta, diaktifkan secara default)
Gerbang fitur SidecarContainers telah mencapai Beta dan diaktifkan secara default. Tetapkan restartPolicy: Always pada kontainer init agar dijalankan sebagai kontainer sidecar. Kontainer sidecar dimulai, dihentikan, dan direstart secara independen tanpa memengaruhi kontainer aplikasi utama atau kontainer init lainnya. Untuk detailnya, lihat Kontainer sidecar.
CIDR Layanan ganda (Alpha, dinonaktifkan secara default)
CIDR Layanan kini dapat secara dinamis menentukan rentang alamat IP untuk Layanan ClusterIP. Gerbang fitur ini berada pada tahap Alpha dan dinonaktifkan secara default. Untuk detailnya, lihat KEP-1880: CIDR Layanan Ganda.
API PVC menggunakan VolumeResourceRequirements
API persistent volume claim (PVC) kini menggunakan struktur VolumeResourceRequirements independen yang hanya berisi requests dan limits. Hal ini mencegah perubahan pada struktur resources API kontainer (seperti penambahan bidang claims) secara tidak sengaja memengaruhi API PVC. Untuk detailnya, lihat Persyaratan sumber daya volume.
PodReadyToStartContainers (Beta, diaktifkan secara default)
Gerbang fitur PodReadyToStartContainers telah mencapai Beta dan diaktifkan secara default. Kondisi ini menunjukkan bahwa sandbox pod telah dibuat dan jaringan telah dikonfigurasi, memberikan informasi status pod yang akurat kepada kubelet. Untuk detailnya, lihat Kondisi pod.
matchLabelKeys dan mismatchLabelKeys untuk afinitas pod
Afinitas pod dan anti-afinitas pod kini mendukung matchLabelKeys dan mismatchLabelKeys. Bidang-bidang ini mengatasi masalah penjadwalan di mana penjadwal tidak dapat membedakan antara pod lama dan baru selama pembaruan rolling Deployment. Saat Anda mengonfigurasi matchLabelKeys untuk afinitas pod, Deployment menambahkan label pod-template-hash ke Set Replika, sehingga penjadwal dapat mengelompokkan pod dengan nilai hash yang sama. Untuk detailnya, lihat KEP-3633.
Pemeriksaan tipe ValidatingAdmissionPolicy diperluas ke CRD
Selain resource API inti Kubernetes, pemeriksaan tipe ValidatingAdmissionPolicy kini mencakup CustomResourceDefinitions (CRD) dan ekstensi API, membantu memastikan keandalan kebijakan dan konfigurasi kluster yang valid. Untuk detailnya, lihat Pemeriksaan tipe.
UserNamespacesPodSecurityStandards (Alpha, dinonaktifkan secara default)
Gerbang fitur UserNamespacesPodSecurityStandards menambahkan dukungan untuk Pod Security Standards di namespace pengguna, memungkinkan kontainer dijalankan dengan identitas pengguna non-root atau yang ditentukan dalam konteks keamanan pod. Gerbang fitur ini berada pada tahap Alpha dan secara default diatur ke false. Untuk detailnya, lihat KEP-127: Perbarui PSS berdasarkan gerbang fitur.
DisableNodeKubeProxyVersion (Alpha, dinonaktifkan secara default)
Gerbang fitur DisableNodeKubeProxyVersion menghentikan penggunaan bidang status.nodeInfo.kubeProxyVersion pada objek node. Karena kubelet mungkin tidak dapat mengidentifikasi versi kube-proxy secara andal, nilai bidang tersebut bisa tidak akurat. Gerbang fitur ini berada pada tahap Alpha dan secara default diatur ke false.
JobBackoffLimitPerIndex (Beta, diaktifkan secara default)
Gerbang fitur JobBackoffLimitPerIndex telah mencapai Beta dan diaktifkan secara default. Fitur ini memungkinkan Anda menetapkan jumlah maksimum upaya ulang per indeks dalam Indexed Job. Untuk detailnya, lihat Indexed Job untuk Pemrosesan Paralel dengan Penugasan Kerja Statis.
Fitur dari Kubernetes 1.30
ImageMaximumGCAge (Beta)
ImageMaximumGCAge mengonfigurasi TTL maksimum gambar kontainer yang tidak digunakan sebelum Pengumpulan sampah menghapusnya. Nilai default-nya adalah "0s", yang menonaktifkan pembersihan berbasis TTL. Gerbang fitur ini naik dari Alpha (Kubernetes 1.29) ke Beta di Kubernetes 1.30.
Metrik image_pull_duration_seconds (Alpha)
Metrik baru image_pull_duration_seconds ditambahkan ke kubelet untuk melacak durasi pengambilan gambar. Untuk daftar lengkap metrik Alpha, lihat Daftar Metrik Alpha Kubernetes.
LegacyServiceAccountTokenCleanUp (GA, diaktifkan secara default)
Gerbang fitur LegacyServiceAccountTokenCleanUp telah mencapai GA dan diaktifkan secara default. Proses pembersihan bekerja sebagai berikut:
-
Jika Secret yang dihasilkan otomatis dan terkait dengan ServiceAccount tidak digunakan dalam periode waktu tertentu (satu tahun secara default) dan tidak dimount ke pod apa pun, kube-controller-manager memberinya label
kubernetes.io/legacy-token-invalid-since(diatur ke tanggal saat ini). -
Jika Secret tersebut tetap tidak digunakan dalam periode waktu tertentu (satu tahun secara default) setelah diberi label, kube-controller-manager menghapusnya secara otomatis.
Untuk memulihkan Secret yang telah diberi label namun belum dihapus, hapus label kubernetes.io/legacy-token-invalid-since. Untuk detailnya, lihat Pembersihan token ServiceAccount legacy yang dihasilkan otomatis dan Pembersih token ServiceAccount legacy.
Perubahan perilaku NodePort saat --nodeport-addresses tidak diatur
Jika --nodeport-addresses tidak dikonfigurasi untuk kube-proxy (default), pembaruan Layanan NodePort kini hanya memengaruhi alamat IP node utama, bukan semua alamat IP node. Untuk detailnya, lihat #122724.
Jika beban kerja Anda bergantung pada pembaruan Layanan NodePort yang memengaruhi semua alamat IP node, konfigurasikan --nodeport-addresses secara eksplisit sebelum melakukan upgrade ke Kubernetes 1.30.
URL Issuer OIDC dan URL Issuer ServiceAccount harus berbeda
URL Issuer OIDC dan URL Issuer ServiceAccount server API tidak boleh menggunakan nilai yang sama. Menggunakan parameter yang sama untuk keduanya menyebabkan konflik konfigurasi dan masalah keamanan. Untuk detailnya, lihat #123561.
Jika kluster Anda mengonfigurasi URL Issuer OIDC dan URL Issuer ServiceAccount server API dengan parameter yang sama, perbarui konfigurasi tersebut sebelum melakukan upgrade ke Kubernetes 1.30.
LoadBalancerIPMode (Beta)
Gerbang fitur LoadBalancerIPMode telah mencapai Beta. Fitur ini menambahkan bidang .status.loadBalancer.ingress.ipMode ke Layanan LoadBalancer, yang menentukan cara permintaan yang dikirim ke alamat IP load balancer diteruskan. Bidang ini hanya tersedia ketika .status.loadBalancer.ingress.ip diatur. Untuk detailnya, lihat Menentukan IPMode status load balancer dan Mode IP Load Balancer untuk Layanan.
Metrik sumber daya kontainer HPA (GA)
Penskalaan Horizontal Pod Autoscaler (HPA) berdasarkan metrik sumber daya per kontainer telah mencapai GA di Kubernetes 1.30. Fitur ini memungkinkan Anda menetapkan ambang batas penskalaan independen untuk setiap kontainer dalam pod, bukan menskala berdasarkan penggunaan sumber daya agregat pod. Untuk detailnya, lihat Metrik sumber daya kontainer.
AdmissionWebhookMatchConditions (GA, diaktifkan secara default)
Gerbang fitur AdmissionWebhookMatchConditions telah mencapai GA, diaktifkan secara default, dan tidak dapat dinonaktifkan. Fitur ini memungkinkan Anda menentukan kondisi pencocokan pada webhook admission untuk kontrol yang lebih granular mengenai kapan webhook dipicu. Untuk detailnya, lihat Kontrol admission dinamis.
JobSuccessPolicy (Alpha)
Gerbang fitur JobSuccessPolicy ditambahkan pada tahap Alpha. Fitur ini memungkinkan Anda menyatakan suatu Job selesai berdasarkan subset pod yang berhasil—baik dengan menentukan indeks pod tertentu (misalnya indeks X, Y, dan Z) atau jumlah minimum indeks yang berhasil. Untuk detailnya, lihat Kebijakan keberhasilan/kelengkapan Job.
RelaxedEnvironmentVariableValidation (Alpha, dinonaktifkan secara default)
Gerbang fitur RelaxedEnvironmentVariableValidation ditambahkan pada tahap Alpha. Saat diaktifkan, nama variabel lingkungan dapat mencakup sebagian besar karakter ASCII yang dapat dicetak (kode titik 32 hingga 126), kecuali tanda sama dengan (=). Gerbang fitur ini dinonaktifkan secara default. Untuk detailnya, lihat #123385.
CustomResourceFieldSelectors (Alpha, dinonaktifkan secara default)
Gerbang fitur CustomResourceFieldSelectors ditambahkan pada tahap Alpha. Fitur ini memungkinkan Anda mengonfigurasi selectableFields pada CRD sehingga selector bidang dapat memfilter permintaan List, Watch, dan DeleteCollection. Gerbang fitur ini dinonaktifkan secara default. Untuk detailnya, lihat Selector bidang Custom Resource.
CRDValidationRatcheting (Beta, diaktifkan secara default)
Gerbang fitur CRDValidationRatcheting telah mencapai Beta dan diaktifkan secara default. Saat aturan validasi CRD diperbarui, server API tidak lagi memblokir pembaruan resource yang sudah ada yang gagal memenuhi validasi baru—selama bidang yang gagal tidak diubah dalam pembaruan tersebut. Hal ini mencegah aturan skema baru merusak resource yang sudah ada selama migrasi CRD yang divalidasi melalui skema OpenAPI v3. Untuk detailnya, lihat Pengetatan validasi CRD.
Downward API mendukung IP host dual-stack IPv4/IPv6
Downward API kini mengekspos status.hostIPs untuk mendukung dual-stack IPv4/IPv6. IP pertama dalam daftar status.hostIPs selalu sesuai dengan status.hostIP. Untuk detailnya, lihat Downward API.
NodeLogQuery (Beta, dinonaktifkan secara default)
Gerbang fitur NodeLogQuery telah mencapai Beta namun tetap dinonaktifkan secara default. Saat diaktifkan, fitur ini memungkinkan Anda mengkueri log layanan node melalui endpoint /logs. Untuk detailnya, lihat Kueri log.
Fitur yang ditinggalkan
Kubernetes 1.29
Zona waktu CronJob: gunakan .spec.timeZone, bukan CRON_TZ atau TZ
CronJob tidak lagi mendukung pengaturan zona waktu CRON_TZ atau TZ dalam .spec.schedule. Gunakan .spec.timeZone sebagai gantinya, yang telah tersedia sejak Kubernetes 1.25.
Jika CronJob Anda menggunakan CRON_TZ atau TZ dalam .spec.schedule, migrasikan ke .spec.timeZone sebelum melakukan upgrade. Untuk detailnya, lihat Batasan CronJob.
API ClusterCIDR v1alpha1 dihapus
API networking/v1alpha1 ClusterCIDR (Alpha) dihapus di Kubernetes 1.29. Sebagai referensi, lihat ClusterCIDR v1alpha1.
Kubernetes 1.30
kubectl apply --prune-whitelist dihapus
Flag --prune-whitelist untuk kubectl apply dihapus di Kubernetes 1.30. Gunakan --prune-allowlist sebagai gantinya, yang telah tersedia sejak --prune-whitelist ditinggalkan. Untuk detailnya, lihat --prune.
Jika skrip atau pipeline Anda menggunakan --prune-whitelist, perbarui menjadi --prune-allowlist sebelum melakukan upgrade.
Plugin admission SecurityContextDeny dihapus
Plugin admission SecurityContextDeny, yang ditinggalkan di Kubernetes 1.27, dihapus di Kubernetes 1.30. Gunakan plugin admission PodSecurity sebagai gantinya, yang telah stabil dan diaktifkan secara default sejak Kubernetes 1.25. Untuk detailnya, lihat PodSecurity.
Jika kluster Anda mengaktifkan SecurityContextDeny, beralihlah ke plugin admission PodSecurity sebelum melakukan upgrade.
API yang ditinggalkan
Versi API flowcontrol.apiserver.k8s.io/v1beta2 untuk FlowSchema dan PriorityLevelConfiguration ditinggalkan di Kubernetes 1.29.
Migrasikan ke salah satu versi API yang didukung berikut:
-
flowcontrol.apiserver.k8s.io/v1(tersedia sejak Kubernetes 1.29, direkomendasikan) -
flowcontrol.apiserver.k8s.io/v1beta3(tersedia sejak Kubernetes 1.26)
Perhatikan perubahan nama bidang berikut sebelum migrasi:
| Versi API | Bidang Lama | Bidang baru | Default | Catatan |
|---|---|---|---|---|
flowcontrol.apiserver.k8s.io/v1 |
spec.limited.assuredConcurrencyShares |
spec.limited.nominalConcurrencyShares |
30 | Nilai eksplisit 0 tidak dikonversi menjadi 30 |
flowcontrol.apiserver.k8s.io/v1beta3 |
spec.limited.assuredConcurrencyShares |
spec.limited.nominalConcurrencyShares |
— | — |
Jika Anda menggunakan resource flowcontrol.apiserver.k8s.io/v1beta2, migrasikan ke v1 atau v1beta3 sebelum versi API ini dihapus.
Gerbang fitur
Gerbang fitur mengontrol fitur eksperimental dan fitur yang telah matang di Kubernetes. Setiap gerbang memiliki salah satu tahapan berikut:
| Tahapan | Default | Catatan |
|---|---|---|
| Alpha | Dinonaktifkan | Eksperimental; dapat berubah |
| Beta | Diaktifkan | Sebagian besar stabil; dapat berubah sebelum GA |
| GA | Diaktifkan, tidak dapat dinonaktifkan | Gerbang fitur tidak lagi diperlukan |
Untuk daftar lengkap gerbang fitur, tahapannya, dan versi, lihat Gerbang Fitur.