Announcement
Ingress NGINX is sunset. This is the final version supporting Ingress NGINX. We'll remove ingress-nginx in future versions.
For more information, please see the Kubernetes blog .
Kubernetes Dashboard is archived. This is the final version supporting Kubernetes Dashboard. We'll remove Kubernetes Dashboard in future versions. For more information, please see the announcement .
Urgent Upgrade Notes
(No, really, you MUST read this before you upgrade)
Changes by Kind
API Change
Feature
Crio: add option pull_progress_timeout (crio: add option pull_progress_timeout #12555 , @pedro-peter )
Fixed kube_vip_version variable for managing kube-vip version instead of kube_vip_image_tag (kube-vip: Fix template, drop all capabilities and use kube_vip_version #12835 , @ThisIsQasim )
RockyLinux 10 support (experimental) (RockyLinux 10 support (experimental) #12355 , @tico88612 )
Support kubernetes v1.34.1 ([kubernetes] Support kubernetes 1.34 #12549 , @i-yasuda )
The default Openstack security groups now allow ICMPv6 for general IPv6 functionality. (terraform openstack: allow ICMPv6 by default #12805 , @rptaylor )
Update kube-vip to v1.0.3 (Update kube-vip to v1.0.3 #12815 , @LawiK974 )
Upgrade Gateway API to 1.4.0 (Feat: Gateway API auto bump #12714 , @tico88612 )
Upgrade containerd/nerdctl default version to 2.2.1 (Upgrade containerd and nerdctl from 2.1.6 to 2.2.1 #12825 , @guoard )
contrib/collection.sh will create and install the source as collection. (Feature/12227 script to install the tag checked out as collection version. #12660 , @bbaassssiiee )
Documentation
Bug or Regression
Action-required
Adding a control plane node in first place is now explicitly unsupported, the new control plane should be placed at the end of your kube_control_plane group (control-plane: fix first_kube_control_plane delegation with kube_override_hostname #12636 , @clwluvw )
Add a wait after control plane joining to prevent a kubeadm preflight error when upgrading the control plane configuration at the same time. (wait for control plane node to become ready after joining #12794 , @VannTen )
Deployments using Calico in vxlan mode without eBPF but with localhost load balancers will now work. (Set Calico CNI API server endpoint when using localhost load balancers #12598 , @rickerc )
Fix Calico apiserver RBAC permissions for Kubernetes 1.33+ (Update Calico apiserver RBAC for Kubernetes 1.33+ #12654 , @rickerc )
Fix Cilium loadBalancer.mode rendering in Kubespray values template. (Fix Cilium loadBalancer.mode rendering in Kubespray template #12701 , @intojhanurag )
Fix RBAC for calico using the etcd datastore (Add rbac for calico kube-controllers to access services #12828 , @LawiK974 )
Fix automatic certs renew with systemd timer (k8s-certs-renew: fix broken script #12876 , @VannTen )
Fix broken upgrade path/control plane node rotation for cluster using calico in etcd datastore mode with separate etcd.
etcd_cert_dir_mode is deleted (always use 0700) (Fix bad permissions for calico certificates #12908 , @VannTen )
Fix kubeadm init retry after first failure on cluster creation (Fix kubeadm init retry #12785 , @VannTen )
Fix(calico): Add missed rbac verb watch for hostendpoints (fix(calico): Add missed rbac verb watch for hostendpoints #12641 , @jmeza-xyz )
Fixed an issue in the config.json.j2 template where the CRI-O registry authentication configuration could render invalid JSON when multiple crio_registry_auth entries were defined, resulting in duplicate top-level auths keys in the generated config. (cri-o: fix duplicate top-level "auths" keys in registry config template #12845 , @accuROAMC )
Removing external etcd member (not stacked with control plane) should now work without erroring out because the node is not in the kubernetes cluster (Remove etcd member by peerURLs #12682 , @VannTen )
Update CSI components image version (Update CSI components image version #12627 , @xin053 )
[feat] Setting timezone under SELinux. ([feat] Setting timezone under SELinux. #12436 , @bbaassssiiee )
apiserver_loadbalancer_domain_name default to loadbalancer_apiserver.address if defined (Use loadbalancer IP as default apiserver endpoint if no LB hostname is used #12872 , @VannTen )
Other (Cleanup or Flake)
Components
kubernetes 1.34.3
etcd 3.5.26
docker 28.3
containerd 2.2.1
cri-o 1.34.4
cni-plugins 1.8.0
calico 3.30.6
cilium 1.18.6
flannel 0.27.3
kube-ovn 1.12.21
kube-router 2.1.1
multus 4.2.2
kube-vip 1.0.3
cert-manager 1.15.3
coredns 1.12.1
ingress-nginx 1.13.3
argocd 2.14.5
helm 3.18.4
metallb 0.13.9
registry 2.8.1
aws-ebs-csi-plugin 0.5.0
azure-csi-plugin 1.10.0
cinder-csi-plugin 1.30.0
gcp-pd-csi-plugin 1.9.2
local-path-provisioner 0.0.32
local-volume-provisioner 2.5.0
node-feature-discovery 0.16.4
Announcement
Ingress NGINX is sunset. This is the final version supporting Ingress NGINX. We'll remove ingress-nginx in future versions.
For more information, please see the Kubernetes blog.
Kubernetes Dashboard is archived. This is the final version supporting Kubernetes Dashboard. We'll remove Kubernetes Dashboard in future versions. For more information, please see the announcement.
Urgent Upgrade Notes
(No, really, you MUST read this before you upgrade)
containerd_discard_unpacked_layersis now applied only for containerd < 2.1 to avoid warnings with the Transfer Service used in newer versions. (Disablediscard_unpacked_layersfor containerd >= 2.1 #12821, @guoard)k8sServiceHostandk8sServicePortare now derived fromkube_apiserver_global_endpointinstead of being auto-detected, so users must ensure this endpoint is correctly set and reachable from all nodes. (fix(cilium): add dynamic api server endpoint configuration #12624, @r3m8)Changes by Kind
API Change
runtime_engineandruntime_rootkeys from containerd configuration. (Remove deprecated keys from containerd config #12820, @guoard)Feature
kube_vip_versionvariable for managing kube-vip version instead ofkube_vip_image_tag(kube-vip: Fix template, drop all capabilities and use kube_vip_version #12835, @ThisIsQasim)contrib/collection.shwill create and install the source as collection. (Feature/12227 script to install the tag checked out as collection version. #12660, @bbaassssiiee)Documentation
metallb-system. (add metallb_namespace default value and docs update #12860, @kittywaresz)Bug or Regression
Adding a control plane node in first place is now explicitly unsupported, the new control plane should be placed at the end of your
kube_control_planegroup (control-plane: fix first_kube_control_plane delegation with kube_override_hostname #12636, @clwluvw)etcd_cert_dir_modeis deleted (always use0700) (Fix bad permissions for calico certificates #12908, @VannTen)crio_registry_authentries were defined, resulting in duplicate top-levelauthskeys in the generated config. (cri-o: fix duplicate top-level "auths" keys in registry config template #12845, @accuROAMC)apiserver_loadbalancer_domain_namedefault toloadbalancer_apiserver.addressif defined (Use loadbalancer IP as default apiserver endpoint if no LB hostname is used #12872, @VannTen)Other (Cleanup or Flake)
Components