NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #1040 most downloaded on PyPI
Kubernetes Asynchronous Python Client
Last release 4 months ago
04 Jun 2026
Release timing varies
gaps range from 8 days to 5 months
Nearly every release is documented
notes for 57 of 59 stable releases
3 versions withdrawn
withdrawn after publishing
8 years old
74 releases · first in 2018
Changed deprecated sets.String with sets.Set[string] in apiserver admission subsystem. This is a breaking change for consumers of the NewLifecycle fun…
DRAResourceClaimGranularStatusAuthorization feature gate is enabled (beta in v1.36). Schedulers and controllers must be granted update/patch on resourceclaims/binding. DRA drivers must be granted associated-node:update or arbitrary-node:update (or patch equivalents) on resourceclaims/driver, restricted by their specific resourceNames. (#134947, @aojea) [SIG API Machinery, Apps, Auth, Instrumentation, Node, Scheduling and Testing]v1.22. If kubeadm users wish to continue using the feature, they need a custom image for the KCM that is not based on distroless, pass the KCM flag --flex-volume-plugin-dir, and mount the directory /usr/libexec/kubernetes/kubelet-plugins/volume/exec in the KCM static pod using kubeadm's extraVolumes mechanism before upgrading to v1.36. Previously, kubeadm automatically did the mounting if the user passed the flag. (#136423, @neolit123) [SIG Cluster Lifecycle]etcd_bookmark_counts to etcd_bookmark_total. If you are using custom monitoring dashboards or alerting rules based on the etcd_bookmark_counts metric, update them to use the new etcd_bookmark_total metric. (#136483, @petern48) [SIG API Machinery, Etcd, Instrumentation and Testing]TopologyAwareWorkloadScheduling feature gate. Added the TopologyPlacement plugin implementing the PlacementGenerate extension point to take constraints into consideration during PodGroup scheduling. (#137271, @brejman) [SIG API Machinery, Apps, Auth, CLI, Cloud Provider, Etcd, Node, Scheduling and Testing]DisruptionMode, PriorityClassName, and Priority fields to the Workload and PodGroup APIs to support workload-aware preemption when the WorkloadAwarePreemption feature gate is enabled. (#136589, @tosi3k) [SIG API Machinery, Apps, Auth, CLI, Cloud Provider, Etcd, Node, Scheduling and Testing]ImageVolumeWithDigest which includes the digest of image volumes in the container status. (#132807, @iholder101) [SIG API Machinery, Apps, Node and Testing]MemoryReservationPolicy cgroup v2 MemoryQoS support to KubeletConfiguration for memory.min protection. (#137584, @QiWang19) [SIG Node and Storage]spec.stubPKCS10Request to the Pod Certificates beta API to improve compatibility with existing certificate authority implementations that expect a PKCS#10 certificate signing request. spec.pkixPublicKey and spec.proofOfPossession were deprecated in favor of this field. (#136729, @ahmedtd) [SIG API Machinery, Auth, Node and Testing]PersistentVolumeClaimUnusedSinceTime feature gate) for tracking PersistentVolumeClaim unused status via a new Unused condition on PersistentVolumeClaimStatus. When enabled, the PVC protection controller sets Unused=True with a lastTransitionTime when no non-terminal Pods reference the PersistentVolumeClaim. (#137862, @gnufied) [SIG Apps, Auth, Storage and Testing]ManifestBasedAdmissionControlConfig feature gate is enabled, admission webhooks and CEL-based policies can be loaded from static manifest files on disk via the staticManifestsDir field in AdmissionConfiguration. These policies are active from API server startup, survive etcd unavailability, and can protect API-based admission resources from modification. (#137346, @aramase) [SIG API Machinery, Apps, Architecture, Auth, Autoscaling, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node, Release, Scheduling, Storage, Testing and Windows]DRAListTypeAttributes feature gate (disabled by default) activates the following enhancements:
bools/ints/strings/versions) for device attributes in ResourceSlice. The number of attribute values, including scalars and lists, per single device is limited to 48.matchAttribute/distinctAttribute constraints in ResourceClaim now work on both scalar and list attributes. The matchAttribute constraint matches when the intersection of all list values among candidate devices is non-empty. The distinctAttribute constraint (behind the ConsumableCapacity feature gate) matches when all list values among candidate devices are pairwise disjoint. Scalar values are implicitly treated as a singleton set..includes that works on both scalar and list attributes to test inclusion (e.g., device.attributes["dra.example.com"].model.includes("model-a")), supporting migration when a DRA driver changes an attribute value type from scalar to list or vice versa. (#137190, @everpeace) [SIG API Machinery, Node, Scheduling and Testing]concurrent-node-status-updates flag that is split from the concurrent-node-syncs flag. (#136716, @yonizxz) [SIG Cloud Provider]TopologyAwareWorkloadScheduling feature gate. (#136944, @brejman) [SIG Scheduling and Testing]v1alpha1 now uses explicit declarative enforcement. (#136793, @yongruilin) [SIG API Machinery and Scheduling]TopologyAwareWorkloadScheduling feature gate. (#137083, @brejman) [SIG Scheduling]TopologyAwareWorkloadScheduling feature gate. Deprecated MinNodeScore and MaxNodeScore in favor of MinScore and MaxScore. (#137201, @brejman) [SIG Scheduling]v1alpha1) for querying DRA resource pool availability. External schedulers can discover available devices across pools before submitting workloads. Requires the DRAResourcePoolStatus feature gate (alpha). (#137028, @nmn3m) [SIG API Machinery, Apps, Auth, Etcd, Instrumentation, Node, Scheduling, Storage and Testing]--concurrent-resourceclaim-syncs flag to kube-controller-manager to configure ResourceClaim reconcile concurrency. (#134701, @anson627) [SIG API Machinery, Apps, Node and Testing]--tls-curve-preferences flag for configuring TLS key exchange mechanism. (#137115, @damdo) [SIG API Machinery, Architecture, CLI, Cloud Provider, Node and Testing]PodGroupPodsCount scheduler plugin to support workload-aware scheduling by prioritizing placements with higher Pod counts within a group. (#137488, @vshkrabkov) [SIG Scheduling and Testing]tlsServerName field to EgressSelectorConfiguration TLSConfig to allow overriding the server name used for TLS certificate verification. (#136640, @kennangaibel) [SIG API Machinery, Apps, Auth, Storage and Testing]DRANodeAllocatableResources feature, which introduces a new ResourceSlice.Spec.Devices[*].NodeAllocatableResourceMappings field for DRA drivers to declare how device resources map to node allocatable Kubernetes resources (e.g., cpu, memory).(#136725, @pravk03) [SIG API Machinery, Apps, Node, Scheduling and Testing]TopologyAwareWorkloadScheduling feature gate, supporting scheduling of PodGroups on nodes with matching topology domains. (#137489, @brejman) [SIG API Machinery, Apps, Auth, CLI, Cloud Provider, Etcd, Node, Scheduling and Testing]imageMinimumGCAge. (#135997, @ngopalak-redhat) [SIG API Machinery and Node]sets.String with sets.Set[string] in apiserver admission subsystem. This is a breaking change for consumers of the NewLifecycle function. (#134044, @mcallzbl) [SIG API Machinery and Auth]cpuCFSQuotaPeriod kubelet config field requires the CustomCPUCFSQuotaPeriod feature gate when using non-default values. No functional changes introduced. (#133845, @rbiamru) [SIG Node and Release]PodGroupPolicy struct in scheduling.k8s.io/v1alpha1. (#136424, @JoelSpeed) [SIG API Machinery and Scheduling]DeviceTaintRules: the TimeAdded field of the taint is now automatically updated when changing the effect. (#137167, @pohly) [SIG API Machinery, Node and Testing]spec.resourceClaims field to PodGroup resources for referencing ResourceClaims and ResourceClaimTemplates. Claims made by a PodGroup are reserved for the entire PodGroup instead of individual Pods, supporting more than 256 Pods sharing a single ResourceClaim. ResourceClaimTemplates referenced by a PodGroup's claim replicate into a ResourceClaim specific to that PodGroup, shared by all of the group's Pods. (#136989, @nojnhuh) [SIG API Machinery, Apps, Auth, CLI, Cloud Provider, Etcd, Node, Scheduling and Testing]v1.36. (#137795, @ttsuuubasa) [SIG API Machinery, Node, Scheduling and Testing]DeviceTaintRules depends on enabling resource.k8s.io/v1beta2 and the DeviceTaintRules feature gate. (#137170, @pohly) [SIG API Machinery, Apps, Auth, Cluster Lifecycle, Etcd, Node, Scheduling and Testing]NodeResourcesFit to implement the PlacementScore extension point. The usage of the PlacementScore extension point is guarded by the TopologyAwareWorkloadScheduling feature gate. (#136652, @brejman) [SIG Scheduling]fake.NewClientset() to work properly with correct schema. (#131068, @soltysh) [SIG API Machinery]NodeResourcesFitArgs validation when using RequestedToCapacityRatio scoring strategy. (#132120, @flpanbin) [SIG Scheduling]kube-apiserver, allowing it to recover from an established connection to an incorrect server that never returns the expected response during APIService availability checks. (#137157, @bsalamat) [SIG API Machinery]fake.NewClientset which replaces the deprecated NewSimpleClientset for kube-aggregator and sample-apiserver. (#136537, @soltysh) [SIG API Machinery]apiserver_storage_events_received_total to beta. (#136314, @petern48) [SIG API Machinery, Etcd, Instrumentation and Testing]ImageVolume feature to stable. (#136711, @saschagrunert) [SIG Apps, Architecture, Node and Testing]InPlacePodLevelResourcesVerticalScaling feature gate to beta, enabled by default. Pod-level CPU and memory resources can be resized in place for Pods with pod-level resources configured. (#137684, @ndixita) [SIG API Machinery, Apps, Autoscaling, Node, Release, Scheduling and Testing]UserNamespacesSupport feature gate to GA. (#136792, @rata) [SIG API Machinery, Apps, CLI, Node, Storage and Testing]config.k8s.io/flagz API to v1beta1. (#137174, @richabanker) [SIG API Machinery, Instrumentation, Node, Scheduling and Testing]config.k8s.io/statusz API to v1beta1. (#137173, @richabanker) [SIG API Machinery, Instrumentation, Scheduling and Testing]HPAScaleToZero feature gate is enabled. (#135118, @johanneswuerbach) [SIG Apps, Autoscaling and Testing]scheduling.k8s.io/v1alpha2 Workload and PodGroup API to express workload-level scheduling requirements and let kube-scheduler act on those. Removed scheduling.k8s.io/v1alpha1 Workload API. (#136976, @tosi3k) [SIG API Machinery, Apps, Auth, CLI, Cloud Provider, Etcd, Node, Scheduling, Storage and Testing]--audit-policy-file config file now supports specifying group: "*" in resource rules to match all API groups. (#135262, @cmuuss) [SIG API Machinery, Auth and Testing]informer_queued_items for informer queue length, published as informer_queued_items{name=kube-controller-manager,group=<group>,resource=<resource>,version=<version>} <count>. (#135782, @richabanker) [SIG API Machinery, Architecture, Instrumentation and Testing]memory.min for Guaranteed pods and memory.low for Burstable pods, with node-level metrics and rollback reconciliation (KEP-2570). (#137719, @sohankunkerkar) [SIG Node, Storage and Testing]VolumeAttributesClass feature gate to true and updated the preferred storage version to storage.k8s.io/v1. (#134556, @carlory) [SIG API Machinery, Apps, Etcd, Network, Node, Scheduling, Storage and Testing]endpoints field as optional in the OpenAPI spec for discovery.k8s.io/v1 EndpointSlice. This matches server behavior and resolves validation issues. (#136111, @aojea) [SIG Network]DRAPrioritizedList to GA. (#136924, @troychiu) [SIG Apps, Architecture, Autoscaling, CLI, Cloud Provider, Cluster Lifecycle, Network, Node, Release, Scheduling, Storage and Testing]NodeDeclaredFeatures to beta. (#136042, @pravk03) [SIG API Machinery, Apps, Cluster Lifecycle, Instrumentation, Node, Scheduling, Storage and Testing]SnapshotMetadataService to v1beta1. Removed support for the v1alpha1 version. (#137564, @iPraveenParihar) [SIG Storage and Testing]MutableCSINodeAllocatableCount feature gate is locked to enabled. (#136230, @torredil) [SIG API Machinery and Storage]kubernetes_build_info, rest_client_requests_total, rest_client_request_duration_seconds, running_managed_controllers) from Alpha to Beta stability, providing stronger API and label stability guarantees for consumers. (#136154, @bhope) [SIG API Machinery, Apps, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Etcd, Instrumentation, Network, Node, Scalability, Scheduling, Storage and Testing]scheduler_goroutines, scheduler_permit_wait_duration_seconds, scheduler_plugin_evaluation_total, scheduler_plugin_execution_duration_seconds, scheduler_scheduling_algorithm_duration_seconds, scheduler_unschedulable_pods) from alpha to beta stability, providing stronger API and label stability guarantees for metric consumers. (#136155, @bhope) [SIG Instrumentation and Scheduling]v1.36. (#135048, @yliaog) [SIG API Machinery, Architecture, Auth, Network, Node, Scheduling and Testing]ConstrainedImpersonation feature to beta, enabled by default. (#137609, @enj) [SIG API Machinery and Testing]DRAAdminAccess feature gate to GA. (#137373, @ritazh) [SIG API Machinery, Auth, Node, Scheduling and Testing]MutatingAdmissionPolicy to GA (v1) in Kubernetes v1.36. The feature is now enabled by default. (#136039, @lalitc375) [SIG API Machinery, Architecture, Etcd and Testing]NodeLogQuery feature gate to GA. (#137544, @jrvaldes) [SIG Node and Windows]ProcMountType feature to GA. (#137454, @haircommander) [SIG API Machinery, Apps, Auth, CLI, Node, Storage and Testing]watch_list_duration_seconds metric from ALPHA to BETA. (#136086, @richabanker) [SIG API Machinery, Instrumentation, Node and Testing]CSIMigrationPortworx feature gate (locked since v1.33) and alpha InTreePluginPortworxUnregister feature gate, with all operations now redirected to CSI. (#135322, @carlory) [SIG API Machinery, Apps, Auth, Node, Scalability, Scheduling, Storage and Testing]ProtoMessage() marker method implementations from Kubernetes REST API types in k8s.io/api, which had incorrectly identified them as standard v1 proto messages. Protobuf serialization of Kubernetes API types should use k8s.io/apimachinery/pkg/runtime/serializer/protobuf. (#137084, @liggitt) [SIG API Machinery, Apps, Architecture, Auth, Node, Scheduling and Storage]apiserver.latency.k8s.io/impersonation audit event annotation when the ConstrainedImpersonation feature is enabled. (#137523, @enj) [SIG API Machinery, Auth and Testing]DRAConsumableCapacity feature gate is enabled by default. (#136611, @sunya-ch) [SIG API Machinery, Cluster Lifecycle, Node, Scheduling and Testing]StrictIPCIDRValidation feature gate in kube-apiserver is enabled by default, meaning that API fields no longer allow IP or CIDR values with extraneous leading "0"s (e.g., 010.000.000.005 rather than 10.0.0.5) or CIDR subnet/mask values with ambiguous semantics (e.g., 192.168.0.5/24 rather than 192.168.0.0/24 or 192.168.0.5/32). (#137053, @danwinship) [SIG Network and Testing]kube-scheduler now updates PodGroup status with a PodGroupScheduled condition reflecting whether the group was successfully scheduled or is unschedulable. (#137611, @helayoty) [SIG API Machinery, Apps, Scheduling and Testing]/configz endpoint of kubelet, kube-scheduler, cloud controller manager, and kube-proxy to serialize the APIVersion and Kind fields and use public types instead of internal. (#136044, @SergeyKanzhelev) [SIG API Machinery, Cloud Provider, Cluster Lifecycle, Network, Node, Scheduling and Testing]One column per quarter.
fix: use named logger in leaderelection module (#406, @jbott)
…availability. The PreferClose value is now deprecated in favor of the more explicit PreferSameZone. (#134457, @danwinship) [SIG API Machinery, Apps, N…
Added ObservedGeneration to CustomResourceDefinition conditions. (#134984, @michaelasp)
Added WithOrigin within apis/core/validation with adjusted tests. (#132825, @PatrickLaabs)
Added scoring for the prioritized list feature so nodes that best satisfy the highest-ranked subrequests were chosen. (#134711, @mortent) [SIG Node, Scheduling and Testing]
Added the --min-compatibility-version flag to kube-apiserver, kube-controller-manager, and kube-scheduler. (#133980, @siyuanfoundation) [SIG API Machinery, Architecture, Cluster Lifecycle, Etcd, Scheduling and Testing]
Added the StorageVersionMigration v1beta1 API and removed the v1alpha1 API.
ACTION REQUIRED: The v1alpha1 API is no longer supported. Users must remove any v1alpha1 resources before upgrading. (#134784, @michaelasp) [SIG API Machinery, Apps, Auth, Etcd and Testing]
Added validation to ensure log-flush-frequency is a positive value, returning an error instead of causing a panic. (#133540, @BenTheElder) [SIG Architecture, Instrumentation, Network and Node]
All containers are restarted when a source container in a restart policy rule exits. This alpha feature is gated behind RestartAllContainersOnContainerExit. (#134345, @yuanwang04) [SIG Apps, Node and Testing]
CSI drivers can now opt in to receive service account tokens via the secrets field instead of volume context by setting spec.serviceAccountTokenInSecrets: true in the CSIDriver object. This prevents tokens from being exposed in logs and other outputs. The feature is gated by the CSIServiceAccountTokenSecrets feature gate (beta in v1.35). (#134826, @aramase) [SIG API Machinery, Auth, Storage and Testing]
Changed kuberc configuration schema. Two new optional fields added to kuberc configuration, credPluginPolicy and credPluginAllowlist. This is documented in KEP-3104 and documentation is added to the website by kubernetes/website#52877 (#134870, @pmengelbert) [SIG API Machinery, Architecture, Auth, CLI, Instrumentation and Testing]
DRA device taints: DeviceTaintRule status provides information about the rule, including whether Pods still need to be evicted (EvictionInProgress condition). The newly added None effect can be used to preview what a DeviceTaintRule would do if it used the NoExecute effect and to taint devices (device health) without immediately affecting scheduling or running Pods. (#134152, @pohly) [SIG API Machinery, Apps, Auth, Node, Release, Scheduling and Testing]
DRA: The DynamicResourceAllocation feature gate for the core functionality (GA in v1.34) has now been locked to enabled-by-default and cannot be disabled anymore. (#134452, @pohly) [SIG Auth, Node, Scheduling and Testing]
Enabled kubectl get -o kyaml by default. To disable it, set KUBECTL_KYAML=false. (#133327, @thockin)
Enabled in-place resizing of pod-level resources.
Enabled the NominatedNodeNameForExpectation feature in kube-scheduler by default.
ClearingNominatedNodeNameAfterBinding feature in kube-apiserver by default. (#135103, @ania-borowiec) [SIG API Machinery, Apps, Architecture, Auth, Autoscaling, CLI, Cloud Provider, Cluster Lifecycle, Etcd, Instrumentation, Network, Node, Scheduling, Storage and Testing]Enhanced discovery responses to merge API groups and resources from all peer apiservers when the UnknownVersionInteroperabilityProxy feature is enabled. (#133648, @richabanker) [SIG API Machinery, Auth, Cloud Provider, Node, Scheduling and Testing]
Extended core/v1 Toleration to support numeric comparison operators (Gt,Lt). (#134665, @helayoty) [SIG API Machinery, Apps, Node, Scheduling, Testing and Windows]
Feature gate dependencies are now explicit, and validated at startup. A feature can no longer be enabled if it depends on a disabled feature. In particular, this means that AllAlpha=true will no longer work without enabling disabled-by-default beta features that are depended on (either with AllBeta=true or explicitly enumerating the disabled dependencies). (#133697, @tallclair) [SIG API Machinery, Architecture, Cluster Lifecycle and Node]
Generated OpenAPI model packages for API types into zz_generated.model_name.go files, accessible via the OpenAPIModelName() function. This allows API authors to declare desired OpenAPI model packages instead of relying on the Go package path of API types. (#131755, @jpbetz) [SIG API Machinery, Apps, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node, Scheduling, Storage and Testing]
Implemented constrained impersonation as described in KEP-5284. (#134803, @enj) [SIG API Machinery, Auth and Testing]
Introduced a new declarative validation tag +k8s:customUnique to control listmap uniqueness. (#134279, @yongruilin) [SIG API Machinery and Auth]
Introduced a structured and versioned v1alpha1 response for the statusz endpoint. (#134313, @richabanker) [SIG API Machinery, Architecture, Instrumentation, Network, Node, Scheduling and Testing]
Introduced a structured and versioned v1alpha1 response format for the flagz endpoint. (#134995, @yongruilin) [SIG API Machinery, Architecture, Instrumentation, Network, Node, Scheduling and Testing]
Introduced the GangScheduling kube-scheduler plugin to support "all-or-nothing" scheduling using the scheduling.k8s.io/v1alpha1 Workload API. (#134722, @macsko) [SIG API Machinery, Apps, Auth, CLI, Etcd, Scheduling and Testing]
Introduced the Node Declared Features capability (alpha), which includes:
Node.Status.DeclaredFeatures field for publishing node-specific features.component-helpers library for feature registration and inference.NodeDeclaredFeatures scheduler plugin to match pods with nodes that provide required features.NodeDeclaredFeatureValidator admission plugin to validate pod updates against a node's declared features. (#133389, @pravk03) [SIG API Machinery, Apps, Node, Release, Scheduling and Testing]Introduced the scheduling.k8s.io/v1alpha1 Workload API to express workload-level scheduling requirements and allow the kube-scheduler to act on them. (#134564, @macsko) [SIG API Machinery, Apps, CLI, Etcd, Scheduling and Testing]
Introduced the alpha MutableSchedulingDirectivesForSuspendedJobs feature gate (disabled by default), which allows mutating a Job's scheduling directives while the Job is suspended.
It also updates the Job controller to clears the status.startTime field for suspended Jobs. (#135104, @mimowo) [SIG Apps and Testing]
Kube-apiserver: Fixed a v1.34 regression in CustomResourceDefinition handling that incorrectly warned about unrecognized formats on number and integer properties. (#133896, @yongruilin) [SIG API Machinery, Apps, Architecture, Auth, CLI, Cloud Provider, Contributor Experience, Network, Node and Scheduling]
Kube-apiserver: Fixed a possible panic validating a custom resource whose CustomResourceDefinition indicates a status subresource exists, but which does not define a status property in the openAPIV3Schema. (#133721, @fusida) [SIG API Machinery, Apps, Architecture, Auth, Autoscaling, CLI, Cloud Provider, Cluster Lifecycle, Etcd, Instrumentation, Network, Node, Release, Scheduling, Storage and Testing]
Kubernetes API Go types removed runtime use of the github.com/gogo/protobuf library, and are no longer registered into the global gogo type registry. Kubernetes API Go types were not suitable for use with the google.golang.org/protobuf library, and no longer implement ProtoMessage() by default to avoid accidental incompatible use. If removal of these marker methods impacts your use, it can be re-enabled for one more release with a kubernetes_protomessage_one_more_release build tag, but will be removed in v1.36. (#134256, @liggitt) [SIG API Machinery, Apps, Architecture, Auth, CLI, Cluster Lifecycle, Instrumentation, Network, Node, Scheduling and Storage]
Made node affinity in Persistent Volume mutable. (#134339, @huww98) [SIG API Machinery, Apps and Node]
Moved the ImagePullIntent and ImagePulledRecord objects used by the kubelet to track image pulls to the v1beta1 API version. (#132579, @stlaz) [SIG Auth and Node]
Pod resize now only allows CPU and memory resources; other resource types are forbidden. (#135084, @tallclair) [SIG Apps, Node and Testing]
Prevented Pods from being scheduled onto nodes that lack the required CSI driver. (#135012, @gnufied) [SIG API Machinery, Scheduling, Storage and Testing]
Promoted HPA configurable tolerance to beta. The HPAConfigurableTolerance feature gate has now been enabled by default. (#133128, @jm-franc) [SIG API Machinery and Autoscaling]
Promoted ReplicaSet and Deployment .status.terminatingReplicas tracking to beta. The DeploymentReplicaSetTerminatingReplicas feature gate is now enabled by default. (#133087, @atiratree) [SIG API Machinery, Apps and Testing]
Promoted PodObservedGenerationTracking to GA. (#134948, @natasha41575) [SIG API Machinery, Apps, Node, Scheduling and Testing]
Promoted the JobManagedBy feature to general availability. The JobManagedBy feature gate was locked to true and will be removed in a future Kubernetes release. (#135080, @dejanzele) [SIG API Machinery, Apps and Testing]
Promoted the MaxUnavailableStatefulSet feature to beta and enabling it by default. (#133153, @helayoty) [SIG API Machinery and Apps]
Removed the StrictCostEnforcementForVAP and StrictCostEnforcementForWebhooks feature gates, which were locked since v1.32. (#134994, @liggitt) [SIG API Machinery, Auth, Node and Testing]
Scheduler: Added the bindingTimeout argument to the DynamicResources plugin configuration, allowing customization of the wait duration in PreBind for device binding conditions.
Defaults to 10 minutes when DRADeviceBindingConditions and DRAResourceClaimDeviceStatus are both enabled. (#134905, @fj-naji) [SIG Node and Scheduling]
The DRA device taints and toleration feature received a separate feature gate, DRADeviceTaintRules, which controlled support for DeviceTaintRules. This allowed disabling it while keeping DRADeviceTaints enabled so that tainting via ResourceSlices continued to work. (#135068, @pohly) [SIG API Machinery, Apps, Auth, Node, Scheduling and Testing]
The Pod Certificates feature moved to beta. The PodCertificateRequest feature gate is set disabled by default. To use the feature, users must enable the certificates API groups in v1beta1 and enable the PodCertificateRequest feature gate. The UserAnnotations field was added to the PodCertificateProjection API and the corresponding UnverifiedUserAnnotations field was added to the PodCertificateRequest API. (#134624, @yt2985) [SIG API Machinery, Apps, Auth, Etcd, Instrumentation, Node and Testing]
The KubeletEnsureSecretPulledImages feature was promoted to Beta and enabled by default. (#135228, @aramase) [SIG Auth, Node and Testing]
The PreferSameZone and PreferSameNode values for the Service
trafficDistribution field graduated to general availability. The
PreferClose value is now deprecated in favor of the more explicit
PreferSameZone. (#134457, @danwinship) [SIG API Machinery, Apps, Network and Testing]
Updated ResourceQuota to count device class requests within a ResourceClaim as two additional quotas when the DRAExtendedResource feature is enabled:
Updated storage version for MutatingAdmissionPolicy to v1beta1. (#133715, @cici37) [SIG API Machinery, Etcd and Testing]
Updated the Partitionable Devices feature to support referencing counter sets across ResourceSlices within the same resource pool. Devices from incomplete pools were no longer considered for allocation. This change introduced backwards-incompatible updates to the alpha feature, requiring any ResourceSlices using it to be removed before upgrading or downgrading between v1.34 and v1.35. (#134189, @mortent) [SIG API Machinery, Node, Scheduling and Testing]
Upgraded the PodObservedGenerationTracking feature to beta in v1.34 and removed the alpha version description from the OpenAPI specification. (#133883, @yangjunmyfm192085)
fix: update required Python version to 3.10+ (#392, @tomplus)
fix: missing import refresh_token (#389, @tomplus)
chore: add __all__ for imported symbols (#386, @tomplus)
Deprecated StreamingConnectionIdleTimeout field of the kubelet config. (#131992, @lalitc375)
Added omitempty and opt tag to the API v1beta2 AdminAccess type in the DeviceRequestAllocationResult struct. (#132338, @PatrickLaabs)
Added a runtime.ApplyConfiguration interface implemented by all generated apply configuration types. (#132194, @alvaroaleman) [SIG API Machinery and Instrumentation]
Added a detailed event for in-place pod vertical scaling completed, improving cluster management and debugging. (#130387, @shiya0705) [SIG API Machinery, Apps, Autoscaling, Node, Scheduling and Testing]
Added a mechanism for configurable container restarts: container-level restart rules. This was an alpha feature behind the ContainerRestartRules feature gate. (#132642, @yuanwang04) [SIG API Machinery, Apps, Node and Testing]
Added a new FileKeyRef field to containers, allowing them to load variables from files by setting this field.
Introduced the EnvFiles feature gate to govern activation of this functionality. (#132626, @HirazawaUi) [SIG API Machinery, Apps, Node and Testing]
Added driver-owned fields in ResourceSlice to mark whether the device was shareable among multiple resource claims (or requests) and to specify how each capacity could be shared between different requests.
ResourceClaim to specify resource requirements against each device capacity.ResourceClaim.Status to specify how much device capacity is reserved for a specific request.ResourceClaim.Status for the device supports multiple allocations.Added new optional APIs in ResouceSlice.Basic and ResourceClaim.Status.AllocatedDeviceStatus. (#130160, @KobayashiD27) [SIG API Machinery, Apps, Architecture, Node, Release, Scheduling and Testing]
Added support for specifying controlplane or cluster egress selectors in JWT authenticators via the issuer.egressSelectorType field in the AuthenticationConfiguration.jwt array. If unset, the previous behavior of using no egress selector is preserved. This functionality requires the StructuredAuthenticationConfigurationEgressSelector beta feature gate (enabled by default). (#132768, @enj) [SIG API Machinery, Auth and Testing]
Added support in the Kubelet for monitoring the health of devices allocated via Dynamic Resource Allocation (DRA) and report it in the pod.status.containerStatuses.allocatedResourcesStatus field. This required the DRA plugin to implement the new v1alpha1 NodeHealth gRPC service. This feature was controlled by the ResourceHealthStatus feature gate. (#130606, @Jpsassine) [SIG Apps, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Etcd, Network, Node, Release, Scheduling, Storage and Testing]
Added support in the kubelet's image pull credential tracking for service account-based verification. When an image was pulled using service account credentials via external credential providers, subsequent Pods using the same service account (UID, name, and namespace) could access the cached image without re-authentication for the lifetime of that service account. (#132771, @aramase) [SIG Auth, Node and Testing]
Added validation to reject Pods using the PodLevelResources feature on Windows OS due to lack of support. The API server rejected Pods with pod-level resources and a Pod.spec.os.name targeting Windows. Kubelet on nodes running Windows also rejected Pods with pod-level resources at the admission phase. (#133046, @toVersus) [SIG Apps and Node]
Added warnings when creating headless service with set loadBalancerIP,externalIPs and/or SessionAffinity. (#132214, @Peac36)
Allowed pvc.spec.VolumeAttributesClassName to change from non-nil to nil. (#132106, @AndrewSirenko)
Allowed setting the hostnameOverride field in PodSpec to specify any RFC 1123 DNS subdomain as the pod's hostname. The HostnameOverride feature gate was introduced to control enablement of this functionality. (#132558, @HirazawaUi) [SIG API Machinery, Apps, Network, Node and Testing]
Changed underlying logic for Eviction Manager helper functions. (#132277, @KevinTMtz) [SIG Node, Scheduling and Testing]
Changed underlying logic to propagate pod-level hugepage cgroup to containers when they did not specify hugepage resources.
Corrected the documentation to clarify that podSelector is optional and described its default behavior. (#131354, @tomoish)
DRA API: resource.k8s.io/v1alpha3 now only contains DeviceTaintRule. All other types got removed because they became obsolete when introducing the v1beta1 API in 1.32. before updating a cluster where resourceclaims, resourceclaimtemplates, deviceclasses, or resourceslices might have been stored using Kubernetes < 1.32, delete all of those resources before updating and recreate them as needed while running Kubernetes >= 1.32. (#132000, @pohly) [SIG Etcd, Node, Scheduling and Testing]
DRA: Starting with Kubernetes 1.34, the alpha-level resource.k8s.io/admin-access label has been updated to resource.kubernetes.io/admin-access. Admins using the alpha feature and updating from 1.33 can set both labels, upgrade, then remove resource.k8s.io/admin-access when no downgrade is going to happen anymore. (#131996, @ritazh) [SIG Node and Testing]
DRA: The scheduler plugin prevented abnormal filter runtimes by timing out after 10 seconds. This was configurable via the plugin configuration's FilterTimeout. Setting it to zero disabled the timeout and restored the behavior of Kubernetes <= 1.33. (#132033, @pohly) [SIG Node, Scheduling and Testing]
DRA: When the prioritized list feature was used in a request and the resulting number of allocated devices exceeded the number of allowed devices per claim, the scheduler aborted the attempt to allocate devices early. Previously, it tried to many different combinations, which could take a long time. (#130593, @mortent) [SIG Apps, Node, Scheduling and Testing]
DRA: removed support for the v1alpha4 kubelet gRPC API (added in 1.31, superseded in 1.32). DRA drivers using the helper package from Kubernetes >= 1.32 use the v1beta1 API and continue to be supported. (#132574, @pohly)
Deprecated StreamingConnectionIdleTimeout field of the kubelet config. (#131992, @lalitc375)
Dynamic Resource Allocation: Graduated core functionality to general availability (GA). This newly stable feature uses the structured parameters flavor of DRA. (#132706, @pohly) [SIG API Machinery, Apps, Auth, Autoscaling, Etcd, Node, Scheduling and Testing]
Enabled kube-apiserver support for PodCertificateRequest and PodCertificate projected volumes (behind the PodCertificateRequest feature gate). (#128010, @ahmedtd) [SIG API Machinery, Apps, Auth, Cloud Provider, Etcd, Node, Storage and Testing]
Extended resources backed by DRA feature allowed cluster operator to specify extendedResourceName in DeviceClass, and application operator to continue using extended resources in pod's requests to request for DRA devices matching the DeviceClass.
NodeResourcesFit plugin scoring didn't work for extended resources backed by DRA. (#130653, @yliaog) [SIG API Machinery, Apps, Auth, Node, Scheduling and Testing]
Extended the NodePorts scheduling plugin to consider hostPorts used by restartable init containers. (#132040, @avrittrohwer) [SIG Scheduling and Testing]
Fixed a 1.33 regression that causes a nil panic in kube-scheduler when aggregating resource requested across container's spec and status. (#132895, @yue9944882) [SIG Node and Scheduling]
Fixed prerelease lifecycle for PodCertificateRequest. (#133350, @carlory)
Introduced OpenAPI format support for k8s-short-name and k8s-long-name in CustomResourceDefinition schemas. (#132504, @jpbetz) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node, Scheduling and Storage]
Introduced the admissionregistration.k8s.io/v1beta1/MutatingAdmissionPolicy API type. To enable, enable the MutatingAdmissionPolicy feature gate (which was off by default) and set --runtime-config=admissionregistration.k8s.io/v1beta1=true on the kube-apiserver.
Note that the default stored version remained alpha in 1.34, and whoever enabled beta during 1.34 needed to run a storage migration yourself to ensure you don't depend on alpha data in etcd. (#132821, @cici37) [SIG API Machinery, Etcd and Testing]
Kube-apiserver: Added support for disabling caching of authorization webhook decisions in the --authorization-config file. The new fields cacheAuthorizedRequests and cacheUnauthorizedRequests could be set to false to prevent caching for authorized or unauthorized requests. See the https://kubernetes.io/docs/reference/access-authn-authz/authorization/#using-configuration-file-for-authorization for more details. (#129237, @rfranzke) [SIG API Machinery and Auth]
Kube-apiserver: Promoted the StructuredAuthenticationConfiguration feature gate to GA. (#131916, @aramase) [SIG API Machinery, Auth and Testing]
Kube-apiserver: the AuthenticationConfiguration type accepted in --authentication-config files has been promoted to apiserver.config.k8s.io/v1. (#131752, @aramase) [SIG API Machinery, Auth and Testing]
Kube-log-runner: Added the -log-file-size parameter to rotate log output into a new file once it reached a certain size. Introduced -log-file-age to enable automatic removal of old output files, and -flush-interval to support periodic flushing. (#127667, @zylxjtu) [SIG API Machinery, Apps, Architecture, Auth, Autoscaling, CLI, Cloud Provider, Cluster Lifecycle, Etcd, Instrumentation, Network, Node, Release, Scheduling, Storage, Testing and Windows]
Kubectl: Graduated kuberc support to beta. A kuberc configuration file provided a mechanism for customizing kubectl behavior (distinct from kubeconfig, which configures cluster access across different clients). (#131818, @soltysh) [SIG CLI and Testing]
Promoted Job Pod Replacement Policy to general availability. The JobPodReplacementPolicy feature gate was locked to true and will be removed in a future Kubernetes release. (#132173, @dejanzele) [SIG Apps and Testing]
Promoted MutableCSINodeAllocatableCount to beta. (#132429, @torredil)
Promoted feature-gate VolumeAttributesClass to GA
Promoted the APIServerTracing feature gate to GA. The --tracing-config-file flag accepted TracingConfiguration in version apiserver.config.k8s.io/v1 (with no changes from apiserver.config.k8s.io/v1beta1). (#132340, @dashpole) [SIG API Machinery and Testing]
Promoted the AuthorizeWithSelectors and AuthorizeNodeWithSelectors feature gates to stable and locked on. (#132656, @liggitt) [SIG API Machinery, Auth and Testing]
Promoted the KubeletTracing feature gate to GA. (#132341, @dashpole) [SIG Instrumentation and Node]
Promoted the RelaxedEnvironmentVariableValidation feature gate to GA and locked it in the enabled state by default. (#132054, @HirazawaUi) [SIG Apps, Architecture, Node and Testing]
Removed an inaccurate statement about requiring ports when the Pod spec hostNetwork field was set. (#130994, @BenTheElder) [SIG Network and Node]
Removed deprecated gogo protocol definitions from k8s.io/kubelet/pkg/apis/pluginregistration in favor of google.golang.org/protobuf. (#132773, @saschagrunert)
Removed deprecated gogo protocol definitions from k8s.io/cri-api in favor of google.golang.org/protobuf. (#128653, @saschagrunert) [SIG API Machinery, Auth, Instrumentation, Node and Testing]
Replaced Boolean-pointer-helper functions with the k8s.io/utils/ptr implementations. (#132794, @PatrickLaabs) [SIG API Machinery, Auth, CLI, Node and Testing]
Replaced boolPtrFn helper functions with the "k8s.io/utils/ptr" implementation. (#132907, @PatrickLaabs)
Replaced deprecated package k8s.io/utils/pointer with k8s.io/utils/ptr for the apiextensions-apiserver apiextensions. (#132723, @PatrickLaabs)
Replaced deprecated package k8s.io/utils/pointer with k8s.io/utils/ptr for the apiserver (1/2). (#132751, @PatrickLaabs) [SIG API Machinery and Auth]
Replaced deprecated package k8s.io/utils/pointer with k8s.io/utils/ptr for the component-base. (#132754, @PatrickLaabs) [SIG API Machinery, Architecture, Instrumentation and Scheduling]
Replaced deprecated package k8s.io/utils/pointer with k8s.io/utils/ptr for the kube-aggregator apiregistration. (#132701, @PatrickLaabs)
Simplied validation error message for invalid fields by removing redundant field name. (#132513, @xiaoweim) [SIG API Machinery, Apps, Auth, Node and Scheduling]
Simplied validation error message for required fields by removing redundant messages. (#132472, @xiaoweim) [SIG API Machinery, Apps, Architecture, Auth, Cloud Provider, Network, Node and Storage]
The KubeletServiceAccountTokenForCredentialProviders feature was beta and enabled by default. (#133017, @aramase) [SIG Auth and Node]
The conditionType is "oneof" approved/denied check of CertificateSigningRequest's .status.conditions field was migrated to declarative validation.
If the DeclarativeValidation feature gate was enabled, mismatches with existing validation are reported via metrics.
If the DeclarativeValidationTakeover feature gate was enabled, declarative validation was the primary source of errors for migrated fields. (#133013, @aaron-prindle) [SIG API Machinery and Auth]
The fallback behavior of the Downward API's resourceFieldRef field was updated to account for pod-level resources: if container-level limits were not set, pod-level limits were now used before falling back to node allocatable resources. (#132605, @toVersus) [SIG Node, Scheduling and Testing]
The validation of replicas field in the ReplicationController /scale subresource has been migrated to declarative validation.
If the DeclarativeValidation feature gate is enabled, mismatches with existing validation are reported via metrics.
If the DeclarativeValidationTakeover feature gate is enabled, declarative validation is the primary source of errors for migrated fields. (#131664, @jpbetz) [SIG API Machinery and Apps]
The validation-gen code generator generated validation code that supported validation ratcheting. (#132236, @yongruilin) [SIG API Machinery, Apps, Auth and Node]
Updated IsDNS1123SubdomainWithUnderscore so that, when it returned an error, it also returned the correct regex information (dns1123SubdomainFmtWithUnderscore). (#132034, @ChosenFoam)
Updated etcd version to v3.6.0. (#131501, @joshjms) [SIG API Machinery, Cloud Provider, Cluster Lifecycle, Etcd and Testing]
Updated the v1 credential provider configuration to include the tokenAttributes.cacheType field. This field is required and must be set to either ServiceAccount or Token when configuring a provider that uses a service account to fetch registry credentials. (#132617, @aramase) [SIG Auth, Node and Testing]
Zero-value metadata.creationTimestamp values are now omitted and no longer serialize an explicit null in JSON, YAML, and CBOR output (#130989, @liggitt) [SIG API Machinery, Apps, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Etcd, Instrumentation, Network, Node, Scheduling, Storage and Testing]
AppArmor profiles specified in the Pod or container SecurityContext were no longer copied to deprecated AppArmor annotations (prefix container.apparmor.security.beta.kubernetes.io/). Anything that inspected the deprecated annotations must be migrated to use the SecurityContext fields instead. (#131989, @tallclair)
MultiCIDRServiceAllocator was locked and enabled by default, DisableAllocatorDualWrite was enabled by default. (#131318, @aojea) [SIG API Machinery, Apps, Architecture, Auth, Etcd, Network and Testing]
…as referring to different IP addresses (as in CVE-2021-29923).
A new alpha feature gate, MutableCSINodeAllocatableCount, has been introduced.
When this feature gate is enabled, the CSINode.Spec.Drivers[*].Allocatable.Count field becomes mutable, and a new field, NodeAllocatableUpdatePeriodSeconds, is available in the CSIDriver object. This allows periodic updates to a node's reported allocatable volume capacity, preventing stateful pods from becoming stuck due to outdated information that kube-scheduler relies on. (#130007, @torredil) [SIG Apps, Node, Scheduling and Storage]
Added feature gate DRAPartitionableDevices, when enabled, Dynamic Resource Allocation support partitionable devices allocation. (#130764, @cici37) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node, Scheduling, Storage and Testing]
Added DRA support for a "one-of" prioritized list of selection criteria to satisfy a device request in a resource claim. (#128586, @mortent) [SIG API Machinery, Apps, Etcd, Node, Scheduling and Testing]
Added a /flagz endpoint for kubelet endpoint (#128857, @zhifei92) [SIG Architecture, Instrumentation and Node]
Added a new tolerance field to HorizontalPodAutoscaler, overriding the cluster-wide default. Enabled via the HPAConfigurableTolerance alpha feature gate. (#130797, @jm-franc) [SIG API Machinery, Apps, Autoscaling, Etcd, Node, Scheduling and Testing]
Added support for configuring custom stop signals with a new StopSignal container lifecycle (#130556, @sreeram-venkitesh) [SIG API Machinery, Apps, Node and Testing]
Added support for in-place vertical scaling of Pods with sidecars (containers defined within initContainers where the restartPolicy is set to Always). (#128367, @vivzbansal) [SIG API Machinery, Apps, CLI, Node, Scheduling and Testing]
CPUManager Policy Options support is GA (#130535, @ffromani) [SIG API Machinery, Node and Testing]
Changed the Pod API to support hugepage resources at spec level for pod-level resources. (#130577, @KevinTMtz) [SIG Apps, CLI, Node, Scheduling, Storage and Testing]
DRA API: The maximum number of pods that can use the same ResourceClaim is now 256 instead of 32. Downgrading a cluster where this relaxed limit is in use to Kubernetes 1.32.0 is not supported, as version 1.32.0 would refuse to update ResourceClaims with more than 32 entries in the status.reservedFor field. (#129543, @pohly) [SIG API Machinery, Node and Testing]
DRA: CEL expressions using attribute strings exceeded the cost limit because their cost estimation was incomplete. (#129661, @pohly) [SIG Node]
DRA: Device taints enable DRA drivers or admins to mark device as unusable, which prevents allocating them. Pods may also get evicted at runtime if a device becomes unusable, depending on the severity of the taint and whether the claim tolerates the taint. (#130447, @pohly) [SIG API Machinery, Apps, Architecture, Auth, Etcd, Instrumentation, Node, Scheduling and Testing]
DRA: Starting Kubernetes 1.33, only users with access to an admin namespace with the kubernetes.io/dra-admin-access label are authorized to create ResourceClaim or ResourceClaimTemplate objects with the adminAccess field in this admin namespace if they want to and only they can reference these ResourceClaims or ResourceClaimTemplates in their pod or deployment specs. (#130225, @ritazh) [SIG API Machinery, Apps, Auth, Node and Testing]
DRA: when asking for "All" devices on a node, Kubernetes <= 1.32 proceeded to schedule pods onto nodes with no devices by not allocating any devices for those pods. Kubernetes 1.33 changes that to only picking nodes which have at least one device. Users who want the "proceed with scheduling also without devices" semantic can use the upcoming prioritized list feature with one sub-request for "all" devices and a second alternative with "count: 0". (#129560, @bart0sh) [SIG API Machinery and Node]
Expanded the on-disk kubelet credential provider configuration to allow an optional tokenAttribute field to be configured. When it is set, the kubelet will provision a token with the given audience bound to the current pod and its service account. This KSA token along with required annotations on the KSA defined in configuration will be sent to the credential provider plugin via its standard input (along with the image information that is already sent today). The KSA annotations to be sent are configurable in the kubelet credential provider configuration. (#128372, @aramase) [SIG API Machinery, Auth, Node and Testing]
Fixed the example validation rule in godoc:
When configuring a JWT authenticator:
If username.expression uses 'claims.email', then 'claims.email_verified' must be used in
username.expression or extra[].valueExpression or claimValidationRules[].expression.
An example claim validation rule expression that matches the validation automatically
applied when username.claim is set to 'email' is 'claims.?email_verified.orValue(true) == true'.
By explicitly comparing the value to true, we let type-checking see the result will be a boolean,
and to make sure a non-boolean email_verified claim will be caught at runtime. (#130875, @aramase) [SIG Auth and Release]
For the InPlacePodVerticalScaling feature, the API server will no longer set the resize status to Proposed upon receiving a resize request. (#130574, @natasha41575) [SIG Apps, Node and Testing]
Graduate the MatchLabelKeys (MismatchLabelKeys) feature in PodAffinity (PodAntiAffinity) to GA (#130463, @sanposhiho) [SIG API Machinery, Apps, Node, Scheduling and Testing]
Graduated image volume sources to beta:
subPath/subPathExpr for image volumeskubelet_image_volume_requested_total, kubelet_image_volume_mounted_succeed_total and kubelet_image_volume_mounted_errors_total (#130135, @saschagrunert) [SIG API Machinery, Apps, Node and Testing]Implemented a new status field, .status.terminatingReplicas, for Deployments and ReplicaSets to track terminating pods. The new field is present when the DeploymentPodReplacementPolicy feature gate is enabled. (#128546, @atiratree) [SIG API Machinery, Apps and Testing]
Implemented validation for NodeSelectorRequirement values in Kubernetes when creating pods. (#128212, @AxeZhan) [SIG Apps and Scheduling]
Improved how the API server responds to list requests where the response format negotiates to Protobuf. List responses in Protobuf are marshalled one element at the time, drastically reducing memory needed to serve large collections. Streaming list responses can be disabled via the StreamingCollectionEncodingToProtobuf feature gate. (#129407, @serathius) [SIG API Machinery, Apps, Architecture, Auth, CLI, Cloud Provider, Network, Node, Release, Scheduling, Storage and Testing]
InPlacePodVerticalScaling: Memory limits cannot be decreased unless the memory resize restart policy is set to RestartContainer. Container resizePolicy is no longer mutable. (#130183, @tallclair) [SIG Apps and Node]
Introduced API type coordination.k8s.io/v1beta1/LeaseCandidate
CoordinatedLeaderElection feature moves to Beta (#130751, @Jefftree) [SIG API Machinery, Etcd and Testing]
Introduced API type coordination.k8s.io/v1beta1/LeaseCandidate (#130291, @Jefftree) [SIG API Machinery, Etcd and Testing]
It introduces a new scope name VolumeAttributesClass.
It matches all PVC objects that have the volume attributes class mentioned.
If you want to limit the count of PVCs that have a specific volume attributes class. In that case, you can create a quota object with the scope name VolumeAttributesClass and a matchExpressions that match the volume attributes class. (#124360, @carlory) [SIG API Machinery, Apps and Testing]
KEP-3857: Recursive Read-only (RRO) mounts: promote to GA (#130116, @AkihiroSuda) [SIG Apps, Node and Testing]
kubectl: Added alpha support for customizing kubectl behavior using preferences from a kuberc file, separate from kubeconfig. (#125230, @ardaguclu) [SIG API Machinery, CLI and Testing]
kubelet: added KubeletConfiguration.subidsPerPod. (#130028, @AkihiroSuda) [SIG API Machinery and Node]
Kubernetes components that accepted X.509 client certificate authentication now read the user UID from a certificate subject name RDN with object ID 1.3.6.1.4.1.57683.2. An RDN with this object ID had to contain a string value and appear no more than once in the certificate subject. Reading the user UID from this RDN could be disabled by setting the beta feature gate AllowParsingUserUIDFromCertAuth to false(until the feature gate graduated to GA). (#127897, @modulitos) [SIG API Machinery, Auth and Testing]
MergeDefaultEvictionSettings indicates that defaults for the evictionHard, evictionSoft, evictionSoftGracePeriod, and evictionMinimumReclaim fields should be merged into values specified for those fields in this configuration. Signals specified in this configuration take precedence. Signals not specified in this configuration inherit their defaults. (#127577, @vaibhav2107) [SIG API Machinery and Node]
New configuration is introduced to the kubelet that allows it to track container images and the list of authentication information that leads to their successful pulls. This data is persisted across reboots of the host and restarts of the kubelet.
The kubelet ensures any image requiring credential verification is always pulled if authentication information from an image pull is not yet present, thus enforcing authentication / re-authentication. This means an image pull might be attempted even in cases where a pod requests the IfNotPresent image pull policy, and might lead to the pod not starting if its pull policy is Never and is unable to present authentication information that led to a previous successful pull of the image it is requesting. (#128152, @stlaz) [SIG API Machinery, Architecture, Auth, Node and Testing]
Promoted JobSuccessPolicy E2E to Conformance (#130658, @tenzen-y) [SIG API Machinery, Apps, Architecture and Testing]
Promoted NodeInclusionPolicyInPodTopologySpread to Stable in v1.33 (#130920, @kerthcet) [SIG Apps, Node, Scheduling and Testing]
Promoted the JobSuccessPolicy to Stable. (#130536, @tenzen-y) [SIG API Machinery, Apps, Architecture and Testing]
Promoted the Job's JobBackoffLimitPerIndex feature-gate to stable. (#130061, @mimowo) [SIG API Machinery, Apps, Architecture and Testing]
Promoted the feature gate AnyVolumeDataSource to GA. (#129770, @sunnylovestiramisu) [SIG Apps, Storage and Testing]
Removed general available feature gate CPUManager. (#129296, @carlory) [SIG API Machinery, Node and Testing]
Removed general available feature-gate PDBUnhealthyPodEvictionPolicy. (#129500, @carlory) [SIG API Machinery, Apps and Auth]
Start reporting swap capacity as part of node.status.nodeSystemInfo. (#129954, @iholder101) [SIG API Machinery, Apps and Node]
Graduated the MultiCIDRServiceAllocator feature gate to stable, and the DisableAllocatorDualWrite feature gate to beta (disabled by default).
Action required for Kubernetes cluster administrators and for distributions that manage the cluster Service CIDR.
Kubernetes now allows users to define the cluster Service CIDR via an API object: ServiceCIDR.
Distributions or administrators of Kubernetes may want to control that new Service CIDRs added to the cluster do not overlap with other networks on the cluster, that only belong to a specific range of IPs. Administrators may also prefer to retain the existing behavior of only having one ServiceCIDR per cluster. You can use ValidatingAdmissionPolicy to achieve this. (#128971, @aojea) [SIG Apps, Architecture, Auth, CLI, Etcd, Network, Release and Testing]
The ClusterTrustBundle API is moving to v1beta1.
In order for the ClusterTrustBundleProjection feature to work on the kubelet side, the ClusterTrustBundle API must be available at v1beta1 version and the ClusterTrustBundleProjection feature gate must be enabled. If the API becomes later after kubelet started running, restart the kubelet to enable the feature. (#128499, @stlaz) [SIG API Machinery, Apps, Auth, Etcd, Node, Storage and Testing]
The Service trafficDistribution field, including the PreferClose option, has graduated to GA. Services that do not have the field configured will continue to operate with their existing behavior. Refer to the documentation https://kubernetes.io/docs/concepts/services-networking/service/#traffic-distribution for more details. (#130673, @gauravkghildiyal) [SIG Apps, Network and Testing]
The feature gate InPlacePodVerticalScalingAllocatedStatus is deprecated and no longer used. The AllocatedResources field in ContainerStatus is now guarded by the InPlacePodVerticalScaling feature gate. (#130880, @tallclair) [SIG CLI, Node and Scheduling]
The kube-controller-manager will set the observedGeneration field on pod conditions when the PodObservedGenerationTracking feature gate is set. (#130650, @natasha41575) [SIG API Machinery, Apps, Node, Scheduling, Storage, Testing and Windows]
The kube-scheduler will set the observedGeneration field on pod conditions when the PodObservedGenerationTracking feature gate is set. (#130649, @natasha41575) [SIG Node, Scheduling and Testing]
The kubelet will set the observedGeneration field on pod conditions when the PodObservedGenerationTracking feature gate is set. (#130573, @natasha41575) [SIG Apps, Node, Scheduling, Storage, Testing and Windows]
The minimum value validation of ReplicationController's replicas and minReadySeconds fields have been migrated to declarative validation. The requiredness of both fields is also declaratively validated.
If the DeclarativeValidation feature gate is enabled, mismatches with existing validation are reported via metrics.
If the DeclarativeValidationTakeover feature gate is enabled, declarative validation is the primary source of errors for migrated fields. (#130725, @jpbetz) [SIG API Machinery, Apps, Architecture, CLI, Cluster Lifecycle, Instrumentation, Network, Node and Storage]
The resource.k8s.io/v1beta1 API is deprecated and will be removed in 1.36. Use v1beta2 instead. (#129970, @mortent) [SIG API Machinery, Apps, Auth, Etcd, Node, Scheduling and Testing]
Validation now requires new StatefulSets with a .spec.serviceName field value to pass DNS1123 validation. Previously created StatefulSets with an invalid .spec.serviceName field value could not create any pods, and should be deleted.
When the PreferSameTrafficDistribution feature gate is enabled, a new trafficDistribution value PreferSameNode is available, which attempts to always route Service connections to an endpoint on the same node as the client. Additionally, PreferSameZone is introduced as an alias for PreferClose. (#130844, @danwinship) [SIG API Machinery, Apps, Network and Windows]
When the PodObservedGenerationTracking feature gate was set, the kubelet populated status.observedGeneration to reflect the latest metadata.generation it observed for the pod. (#130352, @natasha41575) [SIG API Machinery, Apps, CLI, Node, Release, Scheduling, Storage, Testing and Windows]
When the StrictIPCIDRValidation feature gate is enabled, Kubernetes will be
slightly stricter about what values will be accepted as IP addresses and network
address ranges (“CIDR blocks”).
In particular, octets within IPv4 addresses are not allowed to have any leading
0s, and IPv4-mapped IPv6 values (e.g. ::ffff:192.168.0.1) are forbidden.
These sorts of values can potentially cause security problems when different
components interpret the same string as referring to different IP addresses
(as in CVE-2021-29923).
This tightening applies only to fields in built-in API kinds, and not to custom resource kinds, values in Kubernetes configuration files, or command-line arguments.
(When the feature gate is disabled, creating an object with such an invalid IP or CIDR value will result in a warning from the API server about the fact that it will be rejected in the future.) (#122550, #128786, @danwinship) [SIG API Machinery, Apps, Network, Node, Scheduling and Testing]
apidiscovery.k8s.io/v2beta1 API group is disabled by default (#130347, @Jefftree) [SIG API Machinery and Testing]
kubectl apply now coerces null values for labels and annotations in manifests to empty string values,
consistent with typed JSON metadata decoding, rather than dropping all labels and annotations (#129257, @liggitt) [SIG API Machinery]
fix: add missing leaderelection.resourcelock package (#358, @tomplus)
fix: add missing leaderelection package (#357, @tomplus)
fix: Delete extra characters in URL (#354, @satayyeb)
DRA: CEL expressions using attribute strings exceeded the cost limit because their cost estimation was incomplete. Cost estimation was unnecessarily also computed in the scheduler. (#129690, @pohly) [SIG Node]
DRA API: the maximum number of pods which can use the same ResourceClaim is now 256 instead of 32. Beware that downgrading a cluster where this relaxed limit is in use to Kubernetes 1.32.0 is not supported because 1.32.0 would refuse to update ResourceClaims with more than 32 entries in the status.reservedFor field. (#129544, @pohly) [SIG API Machinery, Node and Testing]
fix rest api aiohttp timeout (#337, @soamicharan)
fix rest api aiohttp timeout (#337, @soamicharan)
This fix may affect you if you don't configure timeout for watch/stream. Previously it was treated as 5 min, now it's forever.
ACTION REQUIRED for custom scheduler plugin developers:
PodEligibleToPreemptOthers in the preemption interface now includes ctx in the parameters.
Please update your plugins' implementation accordingly. (#126465, @googs1025) [SIG Scheduling]
Changed NodeToStatusMap from a map to a struct and exposed methods to access the entries. Added absentNodesStatus, which informs the status of nodes that are absent in the map. For developers of out-of-tree PostFilter plugins, ensure to update the usage of NodeToStatusMap. Additionally, NodeToStatusMap should eventually be renamed to NodeToStatusReader. (#126022, @macsko) [SIG Node, Scheduling, and Testing]
A new /resize subresource was added to request pod resource resizing. Update your k8s client code to utilize the /resize subresource for Pod resizing operations. (#128266, @AnishShah) [SIG API Machinery, Apps, Node and Testing]
A new feature that allows unsafe deletion of corrupt resources has been added, it is disabled by default,
and it can be enabled by setting the option --feature-gates=AllowUnsafeMalformedObjectDeletion=true.
It comes with an API change, a new delete option ignoreStoreReadErrorWithClusterBreakingPotential has
been introduced, it is not set by default, this maintains backward compatibility.
In order to perform an unsafe deletion of a corrupt resource, the user must enable the option for the delete
request. A resource is considered corrupt if it can not be successfully retrieved from the storage due to
a) transformation error e.g. decryption failure, or b) the object failed to decode. Normal deletion flow is
attempted first, and if it fails with a corrupt resource error then it triggers unsafe delete.
In addition, when this feature is enabled, the 'details' field of 'Status' from the LIST response
includes information that identifies the corrupt object(s).
NOTE: unsafe deletion ignores finalizer constraints, and skips precondition checks.
WARNING: this may break the workload associated with the resource being unsafe-deleted, if it relies on
the normal deletion flow, so cluster breaking consequences apply. (#127513, @tkashem) [SIG API Machinery, Etcd, Node and Testing]
Added singleProcessOOMKill flag to the kubelet configuration. Setting that to true enable single process OOM killing in cgroups v2. In this mode, if a single process is OOM killed within a container, the remaining processes will not be OOM killed. (#126096, @utam0k) [SIG API Machinery, Node, Testing and Windows]
Added a /flagz endpoint for kube-apiserver endpoint. (#127581, @richabanker) [SIG API Machinery, Architecture, Auth and Instrumentation]
Added a Stream field to PodLogOptions, which allows clients to request certain log stream (stdout or stderr) of the container.
Please also note that the combination of a specific Stream and TailLines is not supported. (#127360, @knight42) [SIG API Machinery, Apps, Architecture, Node, Release and Testing]
Added alpha support for asynchronous Pod preemption.
When the SchedulerAsyncPreemption feature gate is enabled, the scheduler now runs API calls to trigger preemptions asynchronously for better performance. (#128170, @sanposhiho) [SIG Scheduling and Testing]
Added driver-owned fields in ResourceClaim.Status to report device status data for each allocated device. (#128240, @LionelJouin) [SIG API Machinery, Network, Node and Testing]
Added enforcement of an upper cost bound for DRA evaluations of CEL. The API server and scheduler now enforce an upper bound on the cost and runtime steps required for evaluating a CEL expression. (#128101, @pohly) [SIG API Machinery and Node]
Added the ability to change the maximum backoff delay accrued between container restarts for a node for containers in CrashLoopBackOff. To set this for a node, turn on the feature gate KubeletCrashLoopBackoffMax and set the CrashLoopBackOff.MaxContainerRestartPeriod field between "1s" and "300s" in your kubelet config file. (#128374, @lauralorenz) [SIG API Machinery and Node]
Allow for Pod search domains to be a single dot . or contain an underscore _ (#127167, @adrianmoisey) [SIG Apps, Network and Testing]
Annotation batch.kubernetes.io/cronjob-scheduled-timestamp added to Job objects scheduled from CronJobs is promoted to stable. (#128336, @soltysh)
Apply fsGroup policy for ReadWriteOncePod volumes. (#128244, @gnufied) [SIG Storage and Testing]
Changed the Pod API to support resources at spec level for pod-level resources. (#128407, @ndixita) [SIG API Machinery, Apps, CLI, Cluster Lifecycle, Node, Release, Scheduling and Testing]
ContainerStatus.AllocatedResources is now guarded by a separate feature gate, InPlacePodVerticalSaclingAllocatedStatus (#128377, @tallclair) [SIG API Machinery, CLI, Node, Scheduling and Testing]
Coordination.v1alpha1 API is dropped and replaced with coordination.v1alpha2. Old coordination.v1alpha1 types must be deleted before upgrade (#127857, @Jefftree) [SIG API Machinery, Etcd, Scheduling and Testing]
DRA: Restricted the length of opaque device configuration parameters. At admission time, Kubernetes enforces a 10KiB size limit. (#128601, @pohly) [SIG API Machinery, Apps, Auth, Etcd, Node, Scheduling and Testing]
DRA: scheduling pods is up to 16x faster, depending on the scenario. Scheduling throughput depends a lot on cluster utilization. It is higher for lightly loaded clusters with free resources and gets lower when the cluster utilization increases. (#127277, @pohly) [SIG API Machinery, Apps, Architecture, Auth, Etcd, Instrumentation, Node, Scheduling and Testing]
DRA: the DeviceRequestAllocationResult struct now has an "AdminAccess" field which should be used instead of the corresponding field in the DeviceRequest field when dealing with an allocation. If a device is only allocated for admin access, allocating it again for normal usage is now supported, as originally intended. To allow admin access, starting with 1.32 the DRAAdminAccess feature gate must be enabled. (#127266, @pohly) [SIG API Machinery, Apps, Auth, Etcd, Network, Node, Scheduling and Testing]
Disallow k8s.io and kubernetes.io namespaced extra key in structured authentication configuration. (#126553, @aramase) [SIG Auth]
Fixed a bug in the NestedNumberAsFloat64 Unstructured field accessor that could have caused it to return rounded float64 values instead of errors when accessing very large int64 values. (#128099, @benluddy)
Fixed the bug where spec.terminationGracePeriodSeconds of the pod will always be overwritten by the MaxPodGracePeriodSeconds of the soft eviction, you can enable the AllowOverwriteTerminationGracePeriodSeconds feature gate, which will restore the previous behavior. If you do need to set this, please file an issue with the Kubernetes project to help contributors understand why you needed it. (#122890, @HirazawaUi) [SIG API Machinery, Architecture, Node and Testing]
Graduated Job's ManagedBy field to beta. (#127402, @mimowo) [SIG API Machinery, Apps and Testing]
Implemented a new, alpha seLinuxChangePolicy field within a Pod-level securityContext, under SELinuxChangePolicy feature gate. This field allows for opting out from mounting Pod volumes with SELinux label when SELinuxMount feature is enabled (it is alpha and disabled by default now).
Please see the KEP how we expect to warn users before any SELinux behavior changes and how they can opt-out before. Note that this field and feature gate is useful only with clusters that run with SELinux enabled. No action is required on clusters without SELinux. (#127981, @jsafrane) [SIG API Machinery, Apps, Architecture, Node, Storage and Testing]
Introduced v1alpha1 API for mutating admission policies, enabling extensible # admission control via CEL expressions (KEP 3962: Mutating Admission Policies). # To use, enable the MutatingAdmissionPolicy feature gate and the admissionregistration.k8s.io/v1alpha1 # API via --runtime-config. (#127134, @jpbetz) [SIG API Machinery, Auth, Etcd and Testing]
Introduced compressible resource setting on system reserved and kube reserved slices. (#125982, @harche)
kube-apiserver: Promoted the StructuredAuthorizationConfiguration feature gate to GA. The --authorization-config flag now accepts AuthorizationConfiguration in version apiserver.config.k8s.io/v1 (with no changes from apiserver.config.k8s.io/v1beta1). (#128172, @liggitt) [SIG API Machinery, Auth and Testing]
kube-proxy now reconciles Service/Endpoint changes with conntrack table and cleans up only stale UDP flow entries (#127318, @aroradaman) [SIG Network and Windows]
kube-scheduler removed AzureDiskLimits ,CinderLimits EBSLimits and GCEPDLimits plugin. Given the corresponding CSI driver reports how many volumes a node can handle in NodeGetInfoResponse, the kubelet stores this limit in CSINode and the scheduler then knows the limit of the driver on the node. Removed plugins AzureDiskLimits, CinderLimits, EBSLimits and GCEPDLimits if you explicitly enabled them in the scheduler config. (#124003, @carlory) [SIG Scheduling, Storage and Testing]
kubelet: the --image-credential-provider-config file was loaded with strict deserialization, which failed if the config file contained duplicate or unknown fields. This protected against accidentally running with malformed config files, unindented files, or typos in field names, and it prevented unexpected behavior. (#128062, @aramase) [SIG Auth and Node]
NodeRestriction admission now validates the audience value that kubelet is requesting a service account token for is part of the pod spec volume. This change is introduced with a new kube-apiserver featuregate ServiceAccountNodeAudienceRestriction that's enabled by default. (#128077, @aramase) [SIG Auth, Storage and Testing]
Promoted CustomResourceFieldSelectors to stable; the feature was enabled by default. The --feature-gates=CustomResourceFieldSelectors=true flag was no longer needed on kube-apiserver binaries and would be removed in a future release. (#127673, @jpbetz) [SIG API Machinery and Testing]
Promoted feature gate StatefulSetAutoDeletePVC from beta to stable. (#128247, @mattcary) [SIG API Machinery, Apps, Auth and Testing]
Removed all support for classic dynamic resource allocation (DRA). The DRAControlPlaneController feature gate, formerly alpha, is no longer available. Kubernetes now only uses the structured parameters model (also alpha) for allocating dynamic resources to Pods.
if and only if classic DRA was enabled in a cluster, remove all workloads (pods, app deployments, etc. ) which depend on classic DRA and make sure that all PodSchedulingContext resources are gone before upgrading. PodSchedulingContext resources cannot be removed through the apiserver after an upgrade and workloads would not work properly. (#128003, @pohly) [SIG API Machinery, Apps, Auth, Etcd, Node, Scheduling and Testing]
Removed generally available feature gate HPAContainerMetrics (#126862, @carlory) [SIG API Machinery, Apps and Autoscaling]
Removed restrictions on subresource flag in kubectl commands (#128296, @AnishShah) [SIG CLI]
Revised the kubelet API Authorization with new subresources, that allow finer-grained authorization checks and access control for kubelet endpoints.
Provided you enable the KubeletFineGrainedAuthz feature gate, you can access kubelet's /healthz endpoint by granting the caller nodes/helathz permission in RBAC.
Similarly you can also access kubelet's /pods endpoint to fetch a list of Pods bound to that node by granting the caller nodes/pods permission in RBAC.
Similarly you can also access kubelet's /configz endpoint to fetch kubelet's configuration by granting the caller nodes/configz permission in RBAC.
You can still access kubelet's /healthz, /pods and /configz by granting the caller nodes/proxy permission in RBAC but that also grants the caller permissions to exec, run and attach to containers on the nodes and doing so does not follow the least privilege principle. Granting callers more permissions than they need can give attackers an opportunity to escalate privileges. (#126347, @vinayakankugoyal) [SIG API Machinery, Auth, Cluster Lifecycle and Node]
The core functionality of Dynamic Resource Allocation (DRA) got promoted to beta. No action is required when upgrading, the previous v1alpha3 API is still supported, so existing deployments and DRA drivers based on v1alpha3 continue to work. Downgrading from 1.32 to 1.31 with DRA resources in the cluster (resourceclaims, resourceclaimtemplates, deviceclasses, resourceslices) is not supported because the new v1beta1 is used as storage version and not readable by 1.31. (#127511, @pohly) [SIG API Machinery, Apps, Auth, Etcd, Node, Scheduling and Testing]
The default value for node-monitor-grace-period has been increased to 50s (earlier 40s) (Ref - https://github.com/kubernetes/kubernetes/issues/121793) (#126287, @devppratik) [SIG API Machinery, Apps and Node]
The resource/v1alpha3.ResourceSliceList filed which should have been named "metadata" but was instead named "listMeta" is now properly "metadata". (#126749, @thockin) [SIG API Machinery]
The synthetic "Bookmark" event for the watch stream requests will now include a new annotation: kubernetes.io/initial-events-list-blueprint. THe annotation contains an empty, versioned list that is encoded in the requested format (such as protobuf, JSON, or CBOR), then base64-encoded and stored as a string. (#127587, @p0lyn0mial) [SIG API Machinery]
To enhance usability and developer experience, CRD validation rules now support direct use of (CEL) reserved keywords as field names in object validation expressions. Name format CEL library is supported in new expressions. (#126977, @aaron-prindle) [SIG API Machinery, Architecture, Auth, Etcd, Instrumentation, Release, Scheduling and Testing]
Updated incorrect description of persistentVolumeClaimRetentionPolicy (#126545, @yangjunmyfm192085) [SIG API Machinery, Apps and CLI]
X.509 client certificate authentication to the kube-apiserver now produces credential IDs (derived from the certificate's signature) , for use in audit logging. (#125634, @ahmedtd) [SIG API Machinery, Auth and Testing]
Allow resource names >2 parts (#343, @edwinpjacques)
Fixed incorrect "v1 Binding is deprecated in v1.6+" warning in kube-scheduler log. (kubernetes/kubernetes#125540, @pohly) [SIG API Machinery]
Websocket connect method returns an asynchronous context manager instead of a websocket (#328, @olivier-matz-6wind)
Example:
websocket = await core_v1_ws.connect_get_namespaced_pod_exec(...)
# now context manager is returned which can be used in this way:
async with websocket as ws:
...
await ws.send_bytes(...)
Added load_config function (#331, @james-mchugh)
Pod exec enhancements (#328, @olivier-matz-6wind)
Fix content-type detection for object sending as patch (#334, @tomplus)
Fix stopping Watch for logs and events with timeout (#330, @tomplus)
The resource/v1alpha3.ResourceSliceList filed which should have been named "metadata" but was instead named "listMeta" is now properly "metadata". (kubernetes/kubernetes#126761, @thockin) [SIG API Machinery]
'ACTION REQUIRED: The Dynamic Resource Allocation (DRA) driver's DaemonSet must be deployed with a service account that enables writing ResourceSlice and reading ResourceClaim objects.' (kubernetes/kubernetes#125163, @pohly) [SIG Auth, Node and Testing]
Add UserNamespaces field to NodeRuntimeHandlerFeatures (kubernetes/kubernetes#126034, @sohankunkerkar) [SIG API Machinery, Apps and Node]
Added Coordinated Leader Election as Alpha under the CoordinatedLeaderElection feature gate. With the feature enabled, the control plane can use LeaseCandidate objects (coordination.k8s.io/v1alpha1 API group) to participate in a leader election and let the kube-apiserver select the best instance according to some strategy. (kubernetes/kubernetes#124012, @Jefftree) [SIG API Machinery, Apps, Auth, Cloud Provider, Etcd, Node, Release, Scheduling and Testing]
Added a .status.features.supplementalGroupsPolicy field to Nodes. The field is true when the feature is implemented in the CRI implementation (KEP-3619). (kubernetes/kubernetes#125470, @everpeace) [SIG API Machinery, Apps, Node and Testing]
Added an allocatedResourcesStatus to each container status to indicate the health status of devices exposed by the device plugin. (kubernetes/kubernetes#126243, @SergeyKanzhelev) [SIG API Machinery, Apps, Node and Testing]
Added support to the kube-proxy nodePortAddresses / --nodeport-addresses option to
accept the value "primary", meaning to only listen for NodePort connections
on the node's primary IPv4 and/or IPv6 address (according to the Node object).
This is strongly recommended, if you were not previously using
--nodeport-addresses, to avoid surprising behavior.
(This behavior is enabled by default with the nftables backend; you would
need to explicitly request --nodeport-addresses 0.0.0.0/0,::/0 there to get
the traditional "listen on all interfaces" behavior.) (kubernetes/kubernetes#123105, @danwinship) [SIG API Machinery, Network and Windows]
Added the feature gates StrictCostEnforcementForVAP and StrictCostEnforcementForWebhooks to enforce the strict cost calculation for CEL extended libraries. It is strongly recommended to turn on the feature gates as early as possible. (kubernetes/kubernetes#124675, @cici37) [SIG API Machinery, Auth, Node and Testing]
Changed how the API server handles updates to .spec.defaultBackend of Ingress objects.
Server-side apply now considers .spec.defaultBackend to be an atomic struct. This means that any field-owner who sets values in that struct (they are mutually exclusive) owns the whole struct. For almost all users this change has no impact; for controllers that want to change the default backend port from number to name (or vice-versa), this makes it easier. (kubernetes/kubernetes#126207, @thockin) [SIG API Machinery]
Component-base/logs: when compiled with Go >= 1.21, component-base will automatically configure the slog default logger together with initializing klog. (kubernetes/kubernetes#120696, @pohly) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Storage and Testing]
CustomResourceDefinition objects created with non-empty caBundle fields which are invalid or do not contain any certificates will not appear in discovery or serve endpoints until a valid caBundle is provided. Updates to CustomResourceDefinition are no longer allowed to transition a valid caBundle field to an invalid caBundle field, because this breaks serving of the existing CustomResourceDefinition. (kubernetes/kubernetes#124061, @Jefftree) [SIG API Machinery]
Dynamic Resource Allocation (DRA): Added a feature so the number of ResourceClaim objects can be limited per namespace and by the number of devices requested through a specific class via the v1.ResourceQuota mechanism. (kubernetes/kubernetes#120611, @pohly) [SIG API Machinery, Apps, Auth, CLI, Etcd, Node, Release, Scheduling and Testing]
Dynamic Resource Allocation (DRA): client-side validation of a ResourceHandle would have accepted a missing DriverName, whereas server-side validation then would have raised an error. (kubernetes/kubernetes#124075, @pohly)
Dynamic Resource Allocation (DRA): in the pod.spec.recourceClaims array, the source indirection is no longer necessary. Instead of e.g. source: resourceClaimTemplateName: my-template, one can write resourceClaimTemplateName: my-template. (kubernetes/kubernetes#125116, @pohly) [SIG API Machinery, Apps, Auth, Node, Scheduling and Testing]
Enhanced the Dynamic Resource Allocation (DRA) with an updated version of the resource.k8s.io API group. The primary user-facing type remains the ResourceClaim, however significant changes have been made, resulting in the new version, v1alpha3, which is not compatible with the previous version. (kubernetes/kubernetes#125488, @pohly) [SIG API Machinery, Apps, Auth, CLI, Cluster Lifecycle, Etcd, Node, Release, Scheduling, Storage and Testing]
Fixed a 1.30.0 regression in OpenAPI descriptions of the imagePullSecrets and
hostAliases fields to mark the fields used as keys in those lists as either defaulted
or required. (kubernetes/kubernetes#124553, @pmalek)
Fixed a 1.30.0 regression in openapi descriptions of PodIP.IP and HostIP.IP fields to mark the fields used as keys in those lists as required. (kubernetes/kubernetes#126057, @thockin)
Fixed a bug in the API server where empty collections of ValidatingAdmissionPolicies did not have an items field. (kubernetes/kubernetes#124568, @xyz-li) [SIG API Machinery]
Fixed a deep copy issue when retrieving the controller reference. (kubernetes/kubernetes#124116, @HiranmoyChowdhury) [SIG API Machinery and Release]
Fixed code-generator client-gen to work with api/v1-like package structure. (kubernetes/kubernetes#125162, @sttts) [SIG API Machinery and Apps]
Fixed incorrect "v1 Binding is deprecated in v1.6+" warning in kube-scheduler log. (kubernetes/kubernetes#125540, @pohly) [SIG API Machinery]
Fixed the comment for the Job's managedBy field. (kubernetes/kubernetes#124793, @mimowo) [SIG API Machinery and Apps]
Fixed the documentation for the default value of the procMount entry in securityContext within a Pod.
The documentation was previously using the name of the internal variable DefaultProcMount, rather than the actual value, "Default". (kubernetes/kubernetes#125782, @aborrero) [SIG Apps and Node]
Graduate PodDisruptionConditions to GA and lock (kubernetes/kubernetes#125461, @mimowo) [SIG Apps, Node, Scheduling and Testing]
Graduated MatchLabelKeys/MismatchLabelKeys feature in PodAffinity/PodAntiAffinity to Beta. (kubernetes/kubernetes#123638, @sanposhiho) [SIG API Machinery, Apps, Scheduling and Testing]
Graduated JobPodFailurePolicy to GA and locked it to it's default. (kubernetes/kubernetes#125442, @mimowo) [SIG API Machinery, Apps, Scheduling and Testing]
Graduated the Job successPolicy field to beta.
The new reason label, "SuccessPolicy" and "CompletionsReached" are added to the "jobs_finished_total" metric.
Additionally, if you enable the JobSuccessPolicy feature gate, the Job gets "CompletionsReached" reason for the "SuccessCriteriaMet" and "Complete" condition type
when the number of succeeded Job Pods (.status.succeeded) reached the desired completions (.spec.completions). (kubernetes/kubernetes#126067, @tenzen-y) [SIG API Machinery, Apps and Testing]
Graduated the DisableNodeKubeProxyVersion feature gate to beta. By default, the kubelet no longer attempts to set the .status.kubeProxyVersion field for its associated Node. (kubernetes/kubernetes#123845, @HirazawaUi) [SIG API Machinery, Cloud Provider, Network, Node and Testing]
Improved scheduling performance when many nodes, and prefilter returned 1-2 nodes (e.g. daemonset)
For developers of out-of-tree PostFilter plugins, note that the semantics of NodeToStatusMap are changing: A node with an absent value in the NodeToStatusMap should be interpreted as having an UnschedulableAndUnresolvable status. (kubernetes/kubernetes#125197, @gabesaba)
Introduced a new boolean kubelet flag --fail-cgroupv1. (kubernetes/kubernetes#126031, @harche) [SIG API Machinery and Node]
K8s.io/apimachinery/pkg/util/runtime: Added support for new calls to handle panics and errors in the context where they occur. PanicHandlers and ErrorHandlers now must accept a context parameter for that. Log output is structured instead of unstructured. (kubernetes/kubernetes#121970, @pohly) [SIG API Machinery and Instrumentation]
KEP-1880: Users of the new feature to add multiple service CIDR will use by default a dual-write strategy on the new ClusterIP allocators to avoid the problem of possible duplicate IPs allocated to Services when running skewed kube-apiservers using different allocators. They can opt-out of this behavior by enabled the feature gate DisableAllocatorDualWrite. (kubernetes/kubernetes#122047, @aojea) [SIG API Machinery, Apps, Instrumentation and Testing]
Kube-apiserver: Added Alpha features to allow API server authz to check the context of requests:
AuthorizeWithSelectors feature gate enables including field and label selector information from requests in webhook authorization calls.AuthorizeNodeWithSelectors feature gate changes node authorizer behavior to limit requests from node API clients, so that each Node can only get / list / watch its own Node API object, and can also only get / list / watch Pod API objects bound to that node. Clients using kubelet credentials to read other nodes or unrelated pods must change their authentication credentials (recommended), adjust their usage, or obtain broader read access independent of the node authorizer. (kubernetes/kubernetes#125571, @liggitt) [SIG API Machinery, Auth, Node, Scheduling and Testing]Kube-apiserver: ControllerRevision objects are now verified to contain valid JSON data in the data field. (kubernetes/kubernetes#125549, @liggitt) [SIG API Machinery and Apps]
Kube-apiserver: the --encryption-provider-config file is now loaded with strict deserialization, which fails if the config file contains duplicate or unknown fields. This protects against accidentally running with config files that are malformed, mis-indented, or have typos in field names, and getting unexpected behavior. When --encryption-provider-config-automatic-reload is used, new encryption config files that contain typos after the kube-apiserver is running are treated as invalid and the last valid config is used. (kubernetes/kubernetes#124912, @enj) [SIG API Machinery and Auth]
Kube-controller-manager: the horizontal-pod-autoscaler-upscale-delay and horizontal-pod-autoscaler-downscale-delay flags have been removed (deprecated and non-functional since v1.12). (kubernetes/kubernetes#124948, @SataQiu) [SIG API Machinery, Apps and Autoscaling]
Made kube-proxy Windows service control manager integration (--windows-service) configurable in v1alpha1 component configuration via windowsRunAsService field. (kubernetes/kubernetes#126072, @aroradaman) [SIG Network and Scalability]
PersistentVolumeLastPhaseTransitionTime feature is stable and enabled by default. (kubernetes/kubernetes#124969, @RomanBednar) [SIG API Machinery, Apps, Storage and Testing]
Promoted LocalStorageCapacityIsolation to beta; the behaviour is enabled by default. Within the kubelet, storage capacity isolation is active if the feature gate is enabled and the specific Pod is using a user namespace. (kubernetes/kubernetes#126014, @PannagaRao) [SIG Apps, Autoscaling, Node, Storage and Testing]
Promoted StatefulSetStartOrdinal to stable. This means --feature-gates=StatefulSetStartOrdinal=true are not needed on kube-apiserver and kube-controller-manager binaries and they'll be removed soon following policy at https://kubernetes.io/docs/reference/using-api/deprecation-policy/#deprecation. (kubernetes/kubernetes#125374, @pwschuurman) [SIG API Machinery, Apps and Testing]
Promoted feature-gate VolumeAttributesClass to beta (disabled by default). Users need to enable the feature gate and the storage.k8s.io/v1beta1 API group to use this feature.
Promoted the VolumeAttributesClass API to beta. (kubernetes/kubernetes#126145, @carlory) [SIG API Machinery, Apps, CLI, Etcd, Storage and Testing]
Removed deprecated command flags --volume-host-cidr-denylist and --volume-host-allow-local-loopback from kube-controller-manager. (kubernetes/kubernetes#124017, @carlory) [SIG API Machinery, Apps, Cloud Provider and Storage]
Removed feature gate CustomResourceValidationExpressions. (kubernetes/kubernetes#126136, @cici37) [SIG API Machinery, Cloud Provider and Testing]
Reverted a change where ConsistentListFromCache was moved to beta and enabled by default. (kubernetes/kubernetes#126139, @enj)
Revised the Pod API with Alpha support for volumes derived from OCI artifacts. This feature is behind the ImageVolume feature gate. (kubernetes/kubernetes#125660, @saschagrunert) [SIG API Machinery, Apps and Node]
Supported fine-grained supplemental groups policy (KEP-3619), which enabled fine-grained control for supplementary groups in the first container processes. This allows you to choose whether to include groups defined in the container image (/etc/groups) for the container's primary UID or not. (kubernetes/kubernetes#117842, @everpeace) [SIG API Machinery, Apps and Node]
The (alpha) nftables mode of kube-proxy now requires version 1.0.1 or later
of the nft command-line, and kernel 5.13 or later. (For testing/development
purposes, you can use older kernels, as far back as 5.4, if you set the
nftables.skipKernelVersionCheck option in the kube-proxy config, but this is not
recommended in production since it may cause problems with other nftables
users on the system.) (kubernetes/kubernetes#124152, @danwinship) [SIG Network]
To enhance usability and developer experience, CRD validation rules now support direct use of (CEL) reserved keywords as field names in object validation expressions for existing expressions in storage, will fully support runtime in next release for compatibility concern. (kubernetes/kubernetes#126188, @cici37) [SIG API Machinery and Testing]
Updated the feature MultiCIDRServiceAllocator to beta (disabled by default). Users need to enable the feature gate and the networking v1beta1 group to be able to use this new feature, that allows to dynamically reconfigure Service CIDR ranges. (kubernetes/kubernetes#125021, @aojea) [SIG API Machinery, Apps, CLI, Etcd, Instrumentation, Network and Testing]
Use omitempty for optional Job Pod Failure Policy fields. (kubernetes/kubernetes#126046, @mimowo)
User can choose a different static policy option SpreadPhysicalCPUsPreferredOption to spread cpus across physical cpus for some specific applications (kubernetes/kubernetes#123733, @Jeffwan) [SIG Node]
When the featuregate AnonymousAuthConfigurableEndpoints is enabled users can update the AuthenticationConfig file with endpoints for with anonymous requests are alllowed. (kubernetes/kubernetes#124917, @vinayakankugoyal) [SIG API Machinery, Auth, Cloud Provider, Node and Testing]
Move ConsistentListFromCache feature flag to Beta and enable it by default (kubernetes/kubernetes#126469, @serathius) [SIG API Machinery]
Add Coordinated Leader Election as alpha under the CoordinatedLeaderElection feature gate. With the feature enabled, the control plane can use LeaseCandidate objects (coordination.k8s.io/v1alpha1 API group) to participate in a leader election and let the kube-apiserver select the best instance according to some strategy. (kubernetes/kubernetes#124012, @Jefftree) [SIG API Machinery, Apps, Auth, Cloud Provider, Etcd, Node, Release, Scheduling and Testing]
Add an AllocatedResourcesStatus to each container status to indicate the health status of devices exposed by the device plugin. (kubernetes/kubernetes#126243, @SergeyKanzhelev) [SIG API Machinery, Apps, Node and Testing]
Added Node.Status.Features.SupplementalGroupsPolicy field which is set to true when the feature is implemented in the CRI implementation (KEP-3619) (kubernetes/kubernetes#125470, @everpeace) [SIG API Machinery, Apps, Node and Testing]
CustomResourceDefinition objects created with non-empty caBundle fields which are invalid or do not contain any certificates will not appear in discovery or serve endpoints until a valid caBundle is provided. Updates to CustomResourceDefinition are no longer allowed to transition a valid caBundle field to an invalid caBundle field. (kubernetes/kubernetes#124061, @Jefftree) [SIG API Machinery]
DRA: The DRA driver's daemonset must be deployed with a service account that enables writing ResourceSlice and reading ResourceClaim objects. (kubernetes/kubernetes#125163, @pohly) [SIG Auth, Node and Testing]
DRA: new API and several new features (kubernetes/kubernetes#125488, @pohly) [SIG API Machinery, Apps, Auth, CLI, Cluster Lifecycle, Etcd, Node, Release, Scheduling, Storage and Testing]
DRA: the number of ResourceClaim objects can be limited per namespace and by the number of devices requested through a specific class via the v1.ResourceQuota mechanism. (kubernetes/kubernetes#120611, @pohly) [SIG API Machinery, Apps, Auth, CLI, Etcd, Node, Release, Scheduling and Testing]
Fix the documentation for the default value of the procMount entry in the pod securityContext. The documentation was previously using the name of the internal variable 'DefaultProcMount' rather than the actual value 'Default'. (kubernetes/kubernetes#125782, @aborrero) [SIG Apps and Node]
Fixed a bug in the API server where empty collections of ValidatingAdmissionPolicies did not have an items field. (kubernetes/kubernetes#124568, @xyz-li) [SIG API Machinery]
Graduate the Job SuccessPolicy to Beta.
The new reason label, "SuccessPolicy" and "CompletionsReached" are added to the "jobs_finished_total" metric. Additionally, If we enable the "JobSuccessPolicy" feature gate, the Job gets "CompletionsReached" reason for the "SuccessCriteriaMet" and "Complete" condition type when the number of succeeded Job Pods (".status.succeeded") reached the desired completions (".spec.completions"). (kubernetes/kubernetes#126067, @tenzen-y) [SIG API Machinery, Apps and Testing]
Introduce a new boolean kubelet flag --fail-cgroupv1 (kubernetes/kubernetes#126031, @harche) [SIG API Machinery and Node]
Kube-apiserver: adds an alpha AuthorizeWithSelectors feature that includes field and label selector information from requests in webhook authorization calls; adds an alpha AuthorizeNodeWithSelectors feature that makes the node authorizer limit requests from node API clients to get / list / watch its own Node API object, and to get / list / watch its own Pod API objects. Clients using kubelet credentials to read other nodes or unrelated pods must change their authentication credentials (recommended), adjust their usage, or grant broader read access independent of the node authorizer. (kubernetes/kubernetes#125571, @liggitt) [SIG API Machinery, Auth, Node, Scheduling and Testing]
Kube-proxy Windows service control manager integration(--windows-service) is now configurable in v1alpha1 component configuration via WindowsRunAsService field (kubernetes/kubernetes#126072, @aroradaman) [SIG Network and Scalability]
Promote LocalStorageCapacityIsolation to beta and enable if user namespace is enabled for the pod (kubernetes/kubernetes#126014, @PannagaRao) [SIG Apps, Autoscaling, Node, Storage and Testing]
Promote StatefulSetStartOrdinal to stable. This means --feature-gates=StatefulSetStartOrdinal=true are not needed on kube-apiserver and kube-controller-manager binaries and they'll be removed soon following policy at https://kubernetes.io/docs/reference/using-api/deprecation-policy/#deprecation (kubernetes/kubernetes#125374, @pwschuurman) [SIG API Machinery, Apps and Testing]
Promoted feature-gate VolumeAttributesClass to beta (disabled by default). Users need to enable the feature gate and the storage v1beta1 group to use this new feature.
VolumeAttributesClass and VolumeAttributesClassList to storage.k8s.io/v1beta1. (kubernetes/kubernetes#126145, @carlory) [SIG API Machinery, Apps, CLI, Etcd, Storage and Testing]Removed feature gate CustomResourceValidationExpressions. (kubernetes/kubernetes#126136, @cici37) [SIG API Machinery, Cloud Provider and Testing]
Revert "Move ConsistentListFromCache feature flag to Beta and enable it by default" (kubernetes/kubernetes#126139, @enj) [SIG API Machinery]
Revised the Pod API with alpha support for volumes derived from OCI artefacts.
This feature is behind the ImageVolume feature gate. (kubernetes/kubernetes#125660, @saschagrunert) [SIG API Machinery, Apps and Node]
The Ingress.spec.defaultBackend is now considered an atomic struct for the purposes of server-side-apply. This means that any field-owner who sets values in that struct (they are mutually exclusive) owns the whole struct. For almost all users this change has no impact. For controllers which want to change port from number to name (or vice-versa), this makes it easier. (kubernetes/kubernetes#126207, @thockin) [SIG API Machinery]
To enhance usability and developer experience, CRD validation rules now support direct use of (CEL) reserved keywords as field names in object validation expressions for existing expressions in storage, will fully support runtime in next release for compatibility concern. (kubernetes/kubernetes#126188, @cici37) [SIG API Machinery and Testing]
Add UserNamespaces field to NodeRuntimeHandlerFeatures (kubernetes/kubernetes#126034, @sohankunkerkar) [SIG API Machinery, Apps and Node]
Fixes a 1.30.0 regression in openapi descriptions of PodIP.IP and HostIP.IP fields to mark the fields used as keys in those lists as required. (kubernetes/kubernetes#126057, @thockin) [SIG API Machinery]
Graduate JobPodFailurePolicy to GA and lock (kubernetes/kubernetes#125442, @mimowo) [SIG API Machinery, Apps, Scheduling and Testing]
Graduate PodDisruptionConditions to GA and lock (kubernetes/kubernetes#125461, @mimowo) [SIG Apps, Node, Scheduling and Testing]
PersistentVolumeLastPhaseTransitionTime feature is stable and enabled by default. (kubernetes/kubernetes#124969, @RomanBednar) [SIG API Machinery, Apps, Storage and Testing]
The (alpha) nftables mode of kube-proxy now requires version 1.0.1 or later
of the nft command-line, and kernel 5.13 or later. (For testing/development
purposes, you can use older kernels, as far back as 5.4, if you set the
nftables.skipKernelVersionCheck option in the kube-proxy config, but this is not
recommended in production since it may cause problems with other nftables
users on the system.) (kubernetes/kubernetes#124152, @danwinship) [SIG Network]
Use omitempty for optional Job Pod Failure Policy fields (kubernetes/kubernetes#126046, @mimowo) [SIG Apps]
User can choose a different static policy option SpreadPhysicalCPUsPreferredOption to spread cpus across physical cpus for some specific applications (kubernetes/kubernetes#123733, @Jeffwan) [SIG Node]
DRA: in the pod.spec.recourceClaims array, the source indirection is no longer necessary. Instead of e.g. source: resourceClaimTemplateName: my-template, one can write resourceClaimTemplateName: my-template. (kubernetes/kubernetes#125116, @pohly) [SIG API Machinery, Apps, Auth, Node, Scheduling and Testing]
Fix code-generator client-gen to work with api/v1-like package structure. (kubernetes/kubernetes#125162, @sttts) [SIG API Machinery and Apps]
KEP-1880: Users of the new feature to add multiple service CIDR will use by default a dual-write strategy on the new ClusterIP allocators to avoid the problem of possible duplicate IPs allocated to Services when running skewed kube-apiservers using different allocators. They can opt-out of this behavior by enabled the feature gate DisableAllocatorDualWrite (kubernetes/kubernetes#122047, @aojea) [SIG API Machinery, Apps, Instrumentation and Testing]
Kube-apiserver: ControllerRevision objects are now verified to contain valid JSON data in the data field. (kubernetes/kubernetes#125549, @liggitt) [SIG API Machinery and Apps]
Update the feature MultiCIDRServiceAllocator to beta (disabled by default). Users need to enable the feature gate and the networking v1beta1 group to be able to use this new feature, that allows to dynamically reconfigure Service CIDR ranges. (kubernetes/kubernetes#125021, @aojea) [SIG API Machinery, Apps, CLI, Etcd, Instrumentation, Network and Testing]
When the featuregate AnonymousAuthConfigurableEndpoints is enabled users can update the AuthenticationConfig file with endpoints for with anonymous requests are alllowed. (kubernetes/kubernetes#124917, @vinayakankugoyal) [SIG API Machinery, Auth, Cloud Provider, Node and Testing]
Fixed incorrect "v1 Binding is deprecated in v1.6+" warning in kube-scheduler log. (kubernetes/kubernetes#125540, @pohly) [SIG API Machinery]
Added the feature gates StrictCostEnforcementForVAP and StrictCostEnforcementForWebhooks to enforce the strct cost calculation for CEL extended libraries. It is strongly recommended to turn on the feature gates as early as possible. (kubernetes/kubernetes#124675, @cici37) [SIG API Machinery, Auth, Node and Testing]
Component-base/logs: when compiled with Go >= 1.21, component-base will automatically configure the slog default logger together with initializing klog. (kubernetes/kubernetes#120696, @pohly) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Storage and Testing]
DRA: client-side validation of a ResourceHandle would have accepted a missing DriverName, whereas server-side validation then would have raised an error. (kubernetes/kubernetes#124075, @pohly) [SIG Apps]
Fix Deep Copy issue in getting controller reference (kubernetes/kubernetes#124116, @HiranmoyChowdhury) [SIG API Machinery and Release]
Fix the comment for the Job's managedBy field (kubernetes/kubernetes#124793, @mimowo) [SIG API Machinery and Apps]
Fixes a 1.30.0 regression in openapi descriptions of imagePullSecrets and hostAliases fields to mark the fields used as keys in those lists as either defaulted or required. (kubernetes/kubernetes#124553, @pmalek) [SIG API Machinery]
Graduate MatchLabelKeys/MismatchLabelKeys feature in PodAffinity/PodAntiAffinity to Beta (kubernetes/kubernetes#123638, @sanposhiho) [SIG API Machinery, Apps, Scheduling and Testing]
Graduated the DisableNodeKubeProxyVersion feature gate to beta. By default, the kubelet no longer attempts to set the .status.kubeProxyVersion field for its associated Node. (kubernetes/kubernetes#123845, @HirazawaUi) [SIG API Machinery, Cloud Provider, Network, Node and Testing]
Improved scheduling performance when many nodes, and prefilter returns 1-2 nodes (e.g. daemonset)
For developers of out-of-tree PostFilter plugins, note that the semantics of NodeToStatusMap are changing: A node with an absent value in the NodeToStatusMap should be interpreted as having an UnschedulableAndUnresolvable status (kubernetes/kubernetes#125197, @gabesaba) [SIG Scheduling]
K8s.io/apimachinery/pkg/util/runtime: new calls support handling panics and errors in the context where they occur. PanicHandlers and ErrorHandlers now must accept a context parameter for that. Log output is structured instead of unstructured. (kubernetes/kubernetes#121970, @pohly) [SIG API Machinery and Instrumentation]
Kube-apiserver: the --encryption-provider-config file is now loaded with strict deserialization, which fails if the config file contains duplicate or unknown fields. This protects against accidentally running with config files that are malformed, mis-indented, or have typos in field names, and getting unexpected behavior. When --encryption-provider-config-automatic-reload is used, new encryption config files that contain typos after the kube-apiserver is running are treated as invalid and the last valid config is used. (kubernetes/kubernetes#124912, @enj) [SIG API Machinery and Auth]
Kube-controller-manager removes deprecated command flags: --volume-host-cidr-denylist and --volume-host-allow-local-loopback (kubernetes/kubernetes#124017, @carlory) [SIG API Machinery, Apps, Cloud Provider and Storage]
Kube-controller-manager: the horizontal-pod-autoscaler-upscale-delay and horizontal-pod-autoscaler-downscale-delay flags have been removed (deprecated and non-functional since v1.12) (kubernetes/kubernetes#124948, @SataQiu) [SIG API Machinery, Apps and Autoscaling]
Support fine-grained supplemental groups policy (KEP-3619), which enables fine-grained control for supplementary groups in the first container processes. You can choose whether to include groups defined in the container image(/etc/groups) for the container's primary uid or not. (kubernetes/kubernetes#117842, @everpeace) [SIG API Machinery, Apps and Node]
The kube-proxy nodeportAddresses / --nodeport-addresses option now accepts the value "primary", meaning to only listen for NodePort connections on the node's primary IPv4 and/or IPv6 address (according to the Node object). This is strongly recommended, if you were not previously using --nodeport-addresses, to avoid surprising behavior.
(This behavior is enabled by default with the nftables backend; you would
need to explicitly request --nodeport-addresses 0.0.0.0/0,::/0 there to get
the traditional "listen on all interfaces" behavior.) (kubernetes/kubernetes#123105, @danwinship) [SIG API Machinery, Network and Windows]
Nothing published for this version
fix: Timeout related fixes (#320, @olivier-matz-6wind)
StrictCostEnforcementForVAP and StrictCostEnforcementForWebhooks to enforce the strct cost calculation for CEL extended libraries. It is strongly recommended to turn on the feature gates as early as possible. (#124676, @cici37) [SIG API Machinery, Auth, Node and Testing]feat: remove setuptools from requirements (#318, @tomplus)
Switching to workspaces caused some breaking changes in the flags to the various k8s.io/code-generator tools. Downstream consumers should look at stag…
Fixes a 1.30.0 regression in openapi descriptions of imagePullSecrets and hostAliases fields to mark the fields used as keys in those lists as either defaulted or required. (kubernetes/kubernetes#124553, @pmalek) [SIG API Machinery]
Fixes a 1.30.0 regression in openapi descriptions of imagePullSecrets and hostAliases fields to mark the fields used as keys in those lists as either defaulted or required. (kubernetes/kubernetes#124694, @pmalek) [SIG API Machinery]
Added (alpha) support for the managedBy field on Jobs. Jobs with a custom value of this field - any value other than kubernetes.io/job-controller - were skipped by the job controller, and their reconciliation was delegated to an external controller, indicated by the value of the field. Jobs that didn't have this field at all, or where the field value was the reserved string kubernetes.io/job-controller, were reconciled by the built-in job controller.
(kubernetes/kubernetes#123273, @mimowo)
Added alpha-level support for the SuccessPolicy in Jobs. (kubernetes/kubernetes#123412, @tenzen-y)
Added the CEL library for IP Addresses and CIDRs. This was made available for use starting from version 1.31.
(kubernetes/kubernetes#121912, @JoelSpeed)
Allowed container runtimes to fix an image garbage collection bug by adding an image_id field to the CRI Container message.
(kubernetes/kubernetes#123508, @saschagrunert)
Dynamic Resource Allocation: DRA drivers can now use "structured parameters" to let the scheduler handle claim allocation. (kubernetes/kubernetes#123516, @pohly)
Fixed accidental enablement of the new alpha optionalOldSelf API field in CustomResourceDefinition validation rules, which should only have been allowed to be set when the CRDValidationRatcheting feature gate is enabled.
(kubernetes/kubernetes#122329, @jpbetz)
Implemented the prescore extension point for the volumeBinding plugin. It now returns skip if it doesn't do anything in Score.
(kubernetes/kubernetes#115768, @AxeZhan)
Kubelet would fail if NodeSwap was used with LimitedSwap and cgroupv1 node. (kubernetes/kubernetes#123738, @kannon92)
Promoted AdmissionWebhookMatchConditions to GA. The feature is now stable, and the feature gate is now locked to default.
(kubernetes/kubernetes#123560, @ivelichkovich)
Structured Authentication Configuration now supports DiscoveryURL. If specified, discoveryURL overrides the URL used to fetch discovery information. This is for scenarios where the well-known and jwks endpoints are hosted at a different location than the issuer (such as locally in the cluster).
(kubernetes/kubernetes#123527, @aramase)
The StorageVersionMigration API, previously available as a Custom Resource Definition (CRD), is now a built-in API in Kubernetes.
(kubernetes/kubernetes#123344, @nilekhc)
When configuring a JWT authenticator:
If username.expression used 'claims.email', then 'claims.email_verified' must have been used in username.expression or extra[*].valueExpression or claimValidationRules[*].expression. An example claim validation rule expression that matches the validation automatically applied when username.claim is set to 'email' is 'claims.?email_verified.orValue(true)'.
(kubernetes/kubernetes#123737, @enj)
readOnly volumes now support recursive read-only mounts for kernel versions >= 5.12."
(kubernetes/kubernetes#123180, @AkihiroSuda)
cri-api: Implemented KEP-3857: Recursive Read-only (RRO) mounts. (kubernetes/kubernetes#123272, @AkihiroSuda)
kube-apiserver: the AuthenticationConfiguration type accepted in --authentication-config files has been promoted to apiserver.config.k8s.io/v1beta1.
(kubernetes/kubernetes#123696, @aramase)
kubelet allowed specifying a custom root directory for pod logs (instead of the default /var/log/pods) using the podLogsDir key in kubelet configuration.
(kubernetes/kubernetes#112957, @mxpv)
resource.k8s.io/ResourceClaim (alpha API): The strategic merge patch strategy for the status.reservedFor array was changed so that a strategic-merge-patch can now add individual entries. This change may break clients using strategic merge patch to update status, which rely on the previous behavior (replacing the entire array).
(kubernetes/kubernetes#122276, @pohly)
Added a CBOR implementation of runtime.Serializer. Until CBOR graduates to Alpha, API servers will refuse to start if configured with CBOR support. (kubernetes/kubernetes#122881, @benluddy)
Added a alpha feature, behind the RelaxedEnvironmentVariableValidation feature gate.
When that gate is enabled, Kubernetes allows almost all printable ASCII characters to be used in the names
of environment variables for containers in Pods. (kubernetes/kubernetes#123385, @HirazawaUi)
Added a new (alpha) field, trafficDistribution, to the Service spec to express preferences for traffic distribution to endpoints. Enabled through the ServiceTrafficDistribution feature gate. (kubernetes/kubernetes#123487, @gauravkghildiyal)
Added audienceMatchPolicy field to AuthenticationConfiguration and support for configuring multiple audiences. The "audienceMatchPolicy" can be empty (or unset) when a single audience is specified in the "audiences" field. The "audienceMatchPolicy" must be set to "MatchAny" when multiple audiences are specified in the "audiences" field. (kubernetes/kubernetes#123165, @aramase)
Added consistent vanity import to files and provided tooling for verifying and updating them. (kubernetes/kubernetes#120642, @jcchavezs)
Added the disable-force-detach CLI option for kube-controller-manager. By default, it's set to false. When enabled, it prevents force detaching volumes based on maximum unmount time and node status. If activated, the non-graceful node shutdown feature must be used to recover from node failure. Additionally, if a pod needs to be forcibly terminated at the risk of corruption, the appropriate VolumeAttachment object must be deleted. (kubernetes/kubernetes#120344, @rohitssingh)
Added to MutableFeatureGate the ability to override the default setting of feature gates, to allow default-enabling a feature on a component-by-component basis instead of for all affected components simultaneously. (kubernetes/kubernetes#122647, @benluddy)
Aggregated discovery supports both v2beta1 and v2 types and feature is promoted to GA. (kubernetes/kubernetes#122882, @Jefftree)
Alpha support for field selectors on custom resources has been added. With the CustomResourceFieldSelectors feature gate enabled, the CustomResourceDefinition API now allows specifying selectableFields. Listing a field there enables filtering custom resources for that CustomResourceDefinition in list or watch requests. (kubernetes/kubernetes#122717, @jpbetz)
AppArmor profiles can now be configured through fields on the PodSecurityContext and container SecurityContext. The beta AppArmor annotations are deprecated, and AppArmor status is no longer included in the node ready condition. (kubernetes/kubernetes#123435, @tallclair)
Contextual logging is now in beta and enabled by default. Check out the KEP and official documentation for more details. (kubernetes/kubernetes#122589, @pohly)
Enabled concurrent log rotation in kubelet. You can now configure the maximum number of concurrent rotations with the containerLogMaxWorkers setting, and adjust the monitoring interval with containerLogMonitorInterval. (kubernetes/kubernetes#114301, @harshanarayana)
Graduated pod scheduling gates to general availability.
The PodSchedulingReadiness feature gate no longer has any effect, and the
.spec.schedulingGates field is always available within the Pod and PodTemplate APIs. (kubernetes/kubernetes#123575, @Huang-Wei)
Graduated support for minDomains in pod topology spread constraints, to general availability.
The MinDomainsInPodTopologySpread feature gate no longer has any effect, and the field is
always available within the Pod and PodTemplate APIs. (kubernetes/kubernetes#123481, @sanposhiho)
In kubelet configuration, the .memorySwap.swapBehavior field now accepts a new value NoSwap, which becomes the default if unspecified. The previously accepted UnlimitedSwap value has been dropped.
(kubernetes/kubernetes#122745, @kannon92)
Kube-apiserver: the AuthorizationConfiguration type accepted in --authorization-config files has been promoted to apiserver.config.k8s.io/v1beta1. (kubernetes/kubernetes#123640, @liggitt)
OIDC authentication will now fail if the username asserted based on a CEL expression config is the empty string. Previously the request would be authenticated with the username set to the empty string. (kubernetes/kubernetes#123568, @enj)
Removed note that hostAliases are not supported on hostNetwork Pods from the PodSpec API. The feature has been supported since v1.8. (kubernetes/kubernetes#122422, @neolit123)
Structured Authentication Configuration now supports configuring multiple JWT authenticators. The maximum allowed JWT authenticators in the authentication configuration is 64. (kubernetes/kubernetes#123431, @aramase)
Text logging in Kubernetes components now uses textlogger. The same split streams of info and error log entries with buffering of info entries is now also supported for text output (off by default, alpha feature). Previously, this was only supported for JSON. Performance is better also without split streams. (kubernetes/kubernetes#114672, @pohly)
The API server now detects and fails on startup if there are conflicting issuers between JWT authenticators and service account configurations. Previously, such configurations would run but could be inconsistently effective depending on the credential. (kubernetes/kubernetes#123561, @enj)
The JWT authenticator configuration set via the --authentication-config flag is now dynamically reloaded as the file changes on disk. (kubernetes/kubernetes#123525, @enj)
The StructuredAuthenticationConfiguration feature is now beta and enabled. (kubernetes/kubernetes#123719, @enj)
The kube_codegen tool now ignores the vendor folder during code generation.
(kubernetes/kubernetes#122729, @jparrill)
The kubernetes repo now uses Go workspaces. This should not impact end users at all, but does have impact for developers of downstream projects. Switching to workspaces caused some breaking changes in the flags to the various k8s.io/code-generator tools. Downstream consumers should look at staging/src/k8s.io/code-generator/kube_codegen.sh to see the changes. (kubernetes/kubernetes#123529, @thockin)
Updated an audit annotation key used by the …/serviceaccounts/<name>/token resource handler.
The annotation used to persist the issued credential identifier is now authentication.kubernetes.io/issued-credential-id. (kubernetes/kubernetes#123098, @munnerz) [SIG Auth]
Users are now allowed to mutate FSGroupPolicy and PodInfoOnMount in CSIDriver.Spec. (kubernetes/kubernetes#116209, @haoruan)
ValidatingAdmissionPolicy was promoted to GA and will be enabled by default. (kubernetes/kubernetes#123405, @cici37)
When scheduling a mix of pods using ResourceClaims and others that don't, scheduling a pod with ResourceClaims has a lower impact on scheduling latency. (kubernetes/kubernetes#121876, @pohly)
When working with client-go events, it's now recommended to use NewEventBroadcasterAdapterWithContext instead of NewEventBroadcasterAdapter if contextual logging support is needed. (kubernetes/kubernetes#122142, @pohly)
A new (alpha) field, trafficDistribution, has been added to the Service spec.
This field provides a way to express preferences for how traffic is distributed to the endpoints for a Service.
It can be enabled through the ServiceTrafficDistribution feature gate. (kubernetes/kubernetes#123487, @gauravkghildiyal) [SIG API Machinery, Apps and Network]
Add alpha-level support for the SuccessPolicy in Jobs (kubernetes/kubernetes#123412, @tenzen-y) [SIG API Machinery, Apps and Testing]
Added (alpha) support for the managedBy field on Jobs. Jobs with a custom value of this field - any
value other than kubernetes.io/job-controller - are skipped by the job controller, and their
reconciliation is delegated to an external controller, indicated by the value of the field. Jobs that
don't have this field at all, or where the field value is the reserved string kubernetes.io/job-controller,
are reconciled by the built-in job controller. (kubernetes/kubernetes#123273, @mimowo) [SIG API Machinery, Apps and Testing]
Added a alpha feature, behind the RelaxedEnvironmentVariableValidation feature gate.
When that gate is enabled, Kubernetes allows almost all printable ASCII characters to be used in the names
of environment variables for containers in Pods. (kubernetes/kubernetes#123385, @HirazawaUi) [SIG Apps, Node and Testing]
Added alpha support for field selectors on custom resources.
Provided that the CustomResourceFieldSelectors feature gate is enabled, the CustomResourceDefinition
API now lets you specify selectableFields. Listing a field there allows filtering custom resources for that
CustomResourceDefinition in list or watch requests. (kubernetes/kubernetes#122717, @jpbetz) [SIG API Machinery]
Added support for configuring multiple JWT authenticators in Structured Authentication Configuration. The maximum allowed JWT authenticators in the authentication configuration is 64. (kubernetes/kubernetes#123431, @aramase) [SIG Auth and Testing]
Aggregated discovery supports both v2beta1 and v2 types and feature is promoted to GA (kubernetes/kubernetes#122882, @Jefftree) [SIG API Machinery and Testing]
Allowing container runtimes to fix an image garbage collection bug by adding an image_id field to the CRI Container message. (kubernetes/kubernetes#123508, @saschagrunert) [SIG Node]
AppArmor profiles can now be configured through fields on the PodSecurityContext and container SecurityContext.
Conflicting issuers between JWT authenticators and service account config are now detected and fail on API server startup. Previously such a config would run but would be inconsistently effective depending on the credential. (kubernetes/kubernetes#123561, @enj) [SIG API Machinery and Auth]
Dynamic Resource Allocation: DRA drivers may now use "structured parameters" to let the scheduler handle claim allocation. (kubernetes/kubernetes#123516, @pohly) [SIG API Machinery, Apps, Auth, CLI, Cluster Lifecycle, Instrumentation, Node, Release, Scheduling, Storage and Testing]
Graduated pod scheduling gates to general availability.
The PodSchedulingReadiness feature gate no longer has any effect, and the
.spec.schedulingGates field is always available within the Pod and PodTemplate APIs. (kubernetes/kubernetes#123575, @Huang-Wei) [SIG API Machinery, Apps, Node, Scheduling and Testing]
Graduated support for minDomains in pod topology spread constraints, to general availability.
The MinDomainsInPodTopologySpread feature gate no longer has any effect, and the field is
always available within the Pod and PodTemplate APIs. (kubernetes/kubernetes#123481, @sanposhiho) [SIG API Machinery, Apps, Scheduling and Testing]
JWT authenticator config set via the --authentication-config flag is now dynamically reloaded as the file changes on disk. (kubernetes/kubernetes#123525, @enj) [SIG API Machinery, Auth and Testing]
Kube-apiserver: the AuthenticationConfiguration type accepted in --authentication-config files has been promoted to apiserver.config.k8s.io/v1beta1. (kubernetes/kubernetes#123696, @aramase) [SIG API Machinery, Auth and Testing]
Kube-apiserver: the AuthorizationConfiguration type accepted in --authorization-config files has been promoted to apiserver.config.k8s.io/v1beta1. (kubernetes/kubernetes#123640, @liggitt) [SIG Auth and Testing]
Kubelet should fail if NodeSwap is used with LimitedSwap and cgroupv1 node. (kubernetes/kubernetes#123738, @kannon92) [SIG API Machinery, Node and Testing]
Kubelet: a custom root directory for pod logs (instead of default /var/log/pods) can be specified using the podLogsDir
key in kubelet configuration. (kubernetes/kubernetes#112957, @mxpv) [SIG API Machinery, Node, Scalability and Testing]
Kubelet: the .memorySwap.swapBehavior field in kubelet configuration accepts a new value NoSwap and makes this the default if unspecified; the previously accepted UnlimitedSwap value has been dropped. (kubernetes/kubernetes#122745, @kannon92) [SIG API Machinery, Node and Testing]
OIDC authentication will now fail if the username asserted based on a CEL expression config is the empty string. Previously the request would be authenticated with the username set to the empty string. (kubernetes/kubernetes#123568, @enj) [SIG API Machinery, Auth and Testing]
PodSpec API: remove note that hostAliases are not supported on hostNetwork Pods. The feature has been supported since v1.8. (kubernetes/kubernetes#122422, @neolit123) [SIG API Machinery and Apps]
Promote AdmissionWebhookMatchConditions to GA. The feature is now stable and the feature gate is now locked to default. (kubernetes/kubernetes#123560, @ivelichkovich) [SIG API Machinery and Testing]
Structured Authentication Configuration now supports DiscoveryURL.
discoveryURL if specified, overrides the URL used to fetch discovery information.
This is for scenarios where the well-known and jwks endpoints are hosted at a different
location than the issuer (such as locally in the cluster). (kubernetes/kubernetes#123527, @aramase) [SIG API Machinery, Auth and Testing]
Support Recursive Read-only (RRO) mounts (KEP-3857) (kubernetes/kubernetes#123180, @AkihiroSuda) [SIG API Machinery, Apps, Node and Testing]
The StructuredAuthenticationConfiguration feature is now beta and enabled by default. (kubernetes/kubernetes#123719, @enj) [SIG API Machinery and Auth]
The StorageVersionMigration API, which was previously available as a Custom Resource Definition (CRD), is now a built-in API in Kubernetes. (kubernetes/kubernetes#123344, @nilekhc) [SIG API Machinery, Apps, Auth, CLI and Testing]
The kubernetes repo now uses Go workspaces. This should not impact end users at all, but does have impact for developers of downstream projects. Switching to workspaces caused some breaking changes in the flags to the various k8s.io/code-generator tools. Downstream consumers should look at staging/src/k8s.io/code-generator/kube_codegen.sh to see the changes. (kubernetes/kubernetes#123529, @thockin) [SIG API Machinery, Apps, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node, Release, Storage and Testing]
ValidatingAdmissionPolicy is promoted to GA and will be enabled by default. (kubernetes/kubernetes#123405, @cici37) [SIG API Machinery, Apps, Auth and Testing]
When configuring a JWT authenticator:
If username.expression uses 'claims.email', then 'claims.email_verified' must be used in username.expression or extra[].valueExpression or claimValidationRules[].expression. An example claim validation rule expression that matches the validation automatically applied when username.claim is set to 'email' is 'claims.?email_verified.orValue(true)'. (kubernetes/kubernetes#123737, @enj) [SIG API Machinery and Auth]
Added a CBOR implementation of runtime.Serializer. Until CBOR graduates to Alpha, API servers will refuse to start if configured with CBOR support. (kubernetes/kubernetes#122881, @benluddy) [SIG API Machinery]
Added audienceMatchPolicy field to AuthenticationConfiguration and support for configuring multiple audiences.
Contextual logging is now beta and enabled by default. (kubernetes/kubernetes#122589, @pohly) [SIG Instrumentation]
Cri-api: KEP-3857: Recursive Read-only (RRO) mounts (kubernetes/kubernetes#123272, @AkihiroSuda) [SIG Node]
Enabled a mechanism for concurrent log rotatation via kubelet using a configuration entity of containerLogMaxWorkers which controls the maximum number of concurrent rotation that can be performed and an interval configuration of containerLogMonitorInterval that can aid is configuring the monitoring duration to best suite your cluster's log generation standards. (kubernetes/kubernetes#114301, @harshanarayana) [SIG API Machinery, Node and Testing]
Text logging in Kubernetes components now uses textlogger. The same split streams of info and error log entries with buffering of info entries is now also supported for text output (off by default, alpha feature). Previously, this was only supported for JSON. Performance is better also without split streams. (kubernetes/kubernetes#114672, @pohly) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node, Storage and Testing]
This change adds the following CLI option for kube-controller-manager:
disable-force-detach (defaults to false): Prevent force detaching volumes based on maximum unmount time and node status. If enabled, the non-graceful node shutdown feature must be used to recover from node failure (see https://kubernetes.io/blog/2023/08/16/kubernetes-1-28-non-graceful-node-shutdown-ga/). If enabled and a pod must be forcibly terminated at the risk of corruption, then the appropriate VolumeAttachment object (see here: https://kubernetes.io/docs/reference/kubernetes-api/config-and-storage-resources/volume-attachment-v1/) must be deleted. (kubernetes/kubernetes#120344, @rohitssingh) [SIG API Machinery, Apps, Storage and Testing]Updated an audit annotation key used by the …/serviceaccounts/<name>/token resource handler.
The annotation used to persist the issued credential identifier is now authentication.kubernetes.io/issued-credential-id. (kubernetes/kubernetes#123098, @munnerz) [SIG Auth]
Add CEL library for IP Addresses and CIDRs. This will not be available for use until 1.31. (kubernetes/kubernetes#121912, @JoelSpeed) [SIG API Machinery]
Added to MutableFeatureGate the ability to override the default setting of feature gates, to allow default-enabling a feature on a component-by-component basis instead of for all affected components simultaneously. (kubernetes/kubernetes#122647, @benluddy) [SIG API Machinery and Cluster Lifecycle]
Adds a rule on the kube_codegen tool to ignore vendor folder during the code generation. (kubernetes/kubernetes#122729, @jparrill) [SIG API Machinery and Cluster Lifecycle]
Allow users to mutate FSGroupPolicy and PodInfoOnMount in CSIDriver.Spec (kubernetes/kubernetes#116209, @haoruan) [SIG API Machinery, Storage and Testing]
Client-go events: NewEventBroadcasterAdapterWithContext should be used instead of NewEventBroadcasterAdapter if the goal is to support contextual logging. (kubernetes/kubernetes#122142, @pohly) [SIG API Machinery, Instrumentation and Scheduling]
Fixes accidental enablement of the new alpha optionalOldSelf API field in CustomResourceDefinition validation rules, which should only be allowed to be set when the CRDValidationRatcheting feature gate is enabled. (kubernetes/kubernetes#122329, @jpbetz) [SIG API Machinery]
Implement prescore extension point for volumeBinding plugin. Return skip if it doesn't do anything in Score. (kubernetes/kubernetes#115768, @AxeZhan) [SIG Scheduling, Storage and Testing]
Resource.k8s.io/ResourceClaim (alpha API): the strategic merge patch strategy for the status.reservedFor array was changed such that a strategic-merge-patch can add individual entries. This breaks clients using strategic merge patch to update status which rely on the previous behavior (replacing the entire array). (kubernetes/kubernetes#122276, @pohly) [SIG API Machinery]
When scheduling a mixture of pods using ResourceClaims and others which don't, scheduling a pod with ResourceClaims impacts scheduling latency less. (kubernetes/kubernetes#121876, @pohly) [SIG API Machinery, Node, Scheduling and Testing]
Nothing published for this version
In v1.30, explicit 0 values will be allowed in this field in the v1 API. The flowcontrol.apiserver.k8s.io/v1beta3 APIs are deprecated and will no long…
'kube-apiserver: adds --authentication-config flag for reading AuthenticationConfiguration
files. --authentication-config flag is mutually exclusive with the existing --oidc-*
flags.' (kubernetes/kubernetes#119142, @aramase)
'kube-scheduler component config (KubeSchedulerConfiguration) kubescheduler.config.k8s.io/v1beta3
is removed in v1.29. Migrated kube-scheduler configuration files to kubescheduler.config.k8s.io/v1.' (kubernetes/kubernetes#119994, @SataQiu)
A new sleep action for the PreStop lifecycle hook was added, allowing containers to pause for a specified duration before termination. (kubernetes/kubernetes#119026, @AxeZhan)
Added CEL expressions to v1alpha1 AuthenticationConfiguration. (kubernetes/kubernetes#121078, @aramase)
Added Windows support for InPlace Pod Vertical Scaling feature. (kubernetes/kubernetes#112599, @fabi200123) [SIG Autoscaling, Node, Scalability, Scheduling and Windows]
Added ImageMaximumGCAge field to Kubelet configuration, which allows a user to set the maximum age an image is unused before it's garbage collected. (kubernetes/kubernetes#121275, @haircommander)
Added UserNamespacesPodSecurityStandards feature gate to enable user namespace support for Pod Security Standards.
Enabling this feature will modify all Pod Security Standard rules to allow setting: spec[.*].securityContext.[runAsNonRoot,runAsUser].
This feature gate should only be enabled if all nodes in the cluster support the user namespace feature and have it enabled.
The feature gate will not graduate or be enabled by default in future Kubernetes releases. (kubernetes/kubernetes#118760, @saschagrunert) [SIG API Machinery, Auth, Node and Release]
Added optionalOldSelf to x-kubernetes-validations to support ratcheting CRD schema constraints. (kubernetes/kubernetes#121034, @alexzielenski)
Added a new ServiceCIDR type that allows to dynamically configure the cluster range used to allocate Service ClusterIPs addresses. (kubernetes/kubernetes#116516, @aojea)
Added a new ipMode field to the .status of Services where type is set to LoadBalancer.
The new field is behind the LoadBalancerIPMode feature gate. (kubernetes/kubernetes#119937, @RyanAoh) [SIG API Machinery, Apps, Cloud Provider, Network and Testing]
Added options for configuring nf_conntrack_udp_timeout, and nf_conntrack_udp_timeout_stream variables of netfilter conntrack subsystem. (kubernetes/kubernetes#120808, @aroradaman)
Added support for CEL expressions to v1alpha1 AuthorizationConfiguration webhook matchConditions. (kubernetes/kubernetes#121223, @ritazh)
Added support for projecting certificates.k8s.io/v1alpha1 ClusterTrustBundle objects into pods. (kubernetes/kubernetes#113374, @ahmedtd)
Added the DisableNodeKubeProxyVersion feature gate. If DisableNodeKubeProxyVersion is enabled, the kubeProxyVersion field is not set. (kubernetes/kubernetes#120954, @HirazawaUi)
Fixed a bug where CEL expressions in CRD validation rules would incorrectly compute a high estimated cost for functions that return strings, lists or maps. The incorrect cost was evident when the result of a function was used in subsequent operations. (kubernetes/kubernetes#119800, @jpbetz) [SIG API Machinery, Auth and Cloud Provider]
Fixed the API comments for the Job Ready field in status. (kubernetes/kubernetes#121765, @mimowo)
Fixed the API comments for the FailIndex Job pod failure policy action. (kubernetes/kubernetes#121764, @mimowo)
Go API: the ResourceRequirements struct was replaced with VolumeResourceRequirements for use with volumes. (kubernetes/kubernetes#118653, @pohly)
Graduated Job BackoffLimitPerIndex feature to beta. (kubernetes/kubernetes#121356, @mimowo)
Marked the onPodConditions field as optional in Job's pod failure policy. (kubernetes/kubernetes#120204, @mimowo)
Promoted PodReadyToStartContainers condition to beta. (kubernetes/kubernetes#119659, @kannon92)
The flowcontrol.apiserver.k8s.io/v1beta3 FlowSchema and PriorityLevelConfiguration APIs has been promoted to flowcontrol.apiserver.k8s.io/v1, with the following changes:
PriorityLevelConfiguration: the .spec.limited.nominalConcurrencyShares field defaults to 30 only if the field is omitted (v1beta3 also defaulted an explicit 0 value to 30). Specifying an explicit 0 value is not allowed in the v1 version in v1.29 to ensure compatibility with v1.28 API servers. In v1.30, explicit 0 values will be allowed in this field in the v1 API.
The flowcontrol.apiserver.k8s.io/v1beta3 APIs are deprecated and will no longer be served in v1.32. All existing objects are available via the v1 APIs. Transition clients and manifests to use the v1 APIs before upgrading to v1.32. (kubernetes/kubernetes#121089, @tkashem)The kube-proxy command-line documentation was updated to clarify that
--bind-address does not actually have anything to do with binding to an
address, and you probably don't actually want to be using it. (kubernetes/kubernetes#120274, @danwinship)
The kube-scheduler selectorSpread plugin has been removed, please use the podTopologySpread plugin instead. (kubernetes/kubernetes#117720, @kerthcet)
The matchLabelKeys/mismatchLabelKeys feature is introduced to the hard/soft PodAffinity/PodAntiAffinity. (kubernetes/kubernetes#116065, @sanposhiho)
When updating a CRD, per-expression cost limit check are now skipped for x-kubernetes-validations rules of versions that are not mutated. (kubernetes/kubernetes#121460, @jiahuif)
CSINodeExpandSecret feature has been promoted to GA in this release and is enabled
by default. The CSI drivers can make use of the secretRef values passed in NodeExpansion
request optionally sent by the CSI Client from this release onwards. (kubernetes/kubernetes#121303, @humblec)
NodeStageVolume calls will now be retried if the CSI node driver is not running. (kubernetes/kubernetes#120330, @rohitssingh)
PersistentVolumeLastPhaseTransitionTime is now beta and enabled by default. (kubernetes/kubernetes#120627, @RomanBednar)
ValidatingAdmissionPolicy type checking now supports CRDs and API extensions types. (kubernetes/kubernetes#119109, @jiahuif)
kube-apiserver: added --authorization-config flag for reading a configuration file containing an apiserver.config.k8s.io/v1alpha1 AuthorizationConfiguration object. The --authorization-config flag is mutually exclusive with --authorization-modes and --authorization-webhook-* flags. The alpha StructuredAuthorizationConfiguration feature flag must be enabled for --authorization-config to be specified. (kubernetes/kubernetes#120154, @palnabarun)
kube-proxy now has a new nftables-based mode, available by running
`kube-proxy --feature-gates NFTablesProxyMode=true --proxy-mode nftables`
This is currently an alpha-level feature and while it probably will not eat your data, it may nibble at it a bit. (It passes e2e testing but has not yet seen real-world use.)
At this point it should be functionally mostly identical to the iptables
mode, except that it does not (and will not) support Service NodePorts on
127.0.0.1. (Also note that there are currently no command-line arguments
for the nftables-specific config; you will need to use a config file if
you want to set the equivalent of any of the --iptables-xxx options.)
As this code is still very new, it has not been heavily optimized yet; while it is expected to eventually have better performance than the iptables backend, very little performance testing has been done so far. (kubernetes/kubernetes#121046, @danwinship)
kube-proxy: Added an option/flag for configuring the nf_conntrack_tcp_be_liberal sysctl (in the kernel's netfilter conntrack subsystem). When enabled, kube-proxy will not install the DROP rule for invalid conntrack states, which currently breaks users of asymmetric routing. (kubernetes/kubernetes#120354, @aroradaman)
Added support for projecting certificates.k8s.io/v1alpha1 ClusterTrustBundle objects into pods. (kubernetes/kubernetes#113374, @ahmedtd) [SIG API Machinery, Apps, Auth, Node, Storage and Testing]
Adds optionalOldSelf to x-kubernetes-validations to support ratcheting CRD schema constraints (kubernetes/kubernetes#121034, @alexzielenski) [SIG API Machinery]
Fix API comment for the Job Ready field in status (kubernetes/kubernetes#121765, @mimowo) [SIG API Machinery and Apps]
Fix API comments for the FailIndex Job pod failure policy action. (kubernetes/kubernetes#121764, @mimowo) [SIG API Machinery and Apps]
A new sleep action for the PreStop lifecycle hook is added, allowing containers to pause for a specified duration before termination. (kubernetes/kubernetes#119026, @AxeZhan) [SIG API Machinery, Apps, Node and Testing]
Add ImageMaximumGCAge field to Kubelet configuration, which allows a user to set the maximum age an image is unused before it's garbage collected. (kubernetes/kubernetes#121275, @haircommander) [SIG API Machinery and Node]
Add a new ServiceCIDR type that allows to dynamically configure the cluster range used to allocate Service ClusterIPs addresses (kubernetes/kubernetes#116516, @aojea) [SIG API Machinery, Apps, Auth, CLI, Network and Testing]
Add the DisableNodeKubeProxyVersion feature gate. If DisableNodeKubeProxyVersion is enabled, the kubeProxyVersion field is not set. (kubernetes/kubernetes#120954, @HirazawaUi) [SIG API Machinery, Apps and Node]
Added Windows support for InPlace Pod Vertical Scaling feature. (kubernetes/kubernetes#112599, @fabi200123) [SIG Autoscaling, Node, Scalability, Scheduling and Windows]
Added UserNamespacesPodSecurityStandards feature gate to enable user namespace support for Pod Security Standards.
Enabling this feature will modify all Pod Security Standard rules to allow setting: spec[.*].securityContext.[runAsNonRoot,runAsUser].
This feature gate should only be enabled if all nodes in the cluster support the user namespace feature and have it enabled.
The feature gate will not graduate or be enabled by default in future Kubernetes releases. (kubernetes/kubernetes#118760, @saschagrunert) [SIG API Machinery, Auth, Node and Release]
Added options for configuring nf_conntrack_udp_timeout, and nf_conntrack_udp_timeout_stream variables of netfilter conntrack subsystem. (kubernetes/kubernetes#120808, @aroradaman) [SIG API Machinery and Network]
Adds CEL expressions to v1alpha1 AuthenticationConfiguration. (kubernetes/kubernetes#121078, @aramase) [SIG API Machinery, Auth and Testing]
Adds support for CEL expressions to v1alpha1 AuthorizationConfiguration webhook matchConditions. (kubernetes/kubernetes#121223, @ritazh) [SIG API Machinery and Auth]
CSINodeExpandSecret feature has been promoted to GA in this release and enabled by default. The CSI drivers can make use of the secretRef values passed in NodeExpansion request optionally sent by the CSI Client from this release onwards. (kubernetes/kubernetes#121303, @humblec) [SIG API Machinery, Apps and Storage]
Graduate Job BackoffLimitPerIndex feature to Beta (kubernetes/kubernetes#121356, @mimowo) [SIG Apps]
Kube-apiserver: adds --authorization-config flag for reading a configuration file containing an apiserver.config.k8s.io/v1alpha1 AuthorizationConfiguration object. --authorization-config flag is mutually exclusive with --authorization-modes and --authorization-webhook-* flags. The alpha StructuredAuthorizationConfiguration feature flag must be enabled for --authorization-config to be specified. (kubernetes/kubernetes#120154, @palnabarun) [SIG API Machinery, Auth and Testing]
Kube-proxy now has a new nftables-based mode, available by running
kube-proxy --feature-gates NFTablesProxyMode=true --proxy-mode nftables
This is currently an alpha-level feature and while it probably will not eat your data, it may nibble at it a bit. (It passes e2e testing but has not yet seen real-world use.)
At this point it should be functionally mostly identical to the iptables
mode, except that it does not (and will not) support Service NodePorts on
127.0.0.1. (Also note that there are currently no command-line arguments
for the nftables-specific config; you will need to use a config file if
you want to set the equivalent of any of the --iptables-xxx options.)
As this code is still very new, it has not been heavily optimized yet; while it is expected to eventually have better performance than the iptables backend, very little performance testing has been done so far. (kubernetes/kubernetes#121046, @danwinship) [SIG API Machinery and Network]
Kube-proxy: Added an option/flag for configuring the nf_conntrack_tcp_be_liberal sysctl (in the kernel's netfilter conntrack subsystem). When enabled, kube-proxy will not install the DROP rule for invalid conntrack states, which currently breaks users of asymmetric routing. (kubernetes/kubernetes#120354, @aroradaman) [SIG API Machinery and Network]
PersistentVolumeLastPhaseTransitionTime is now beta, enabled by default. (kubernetes/kubernetes#120627, @RomanBednar) [SIG Storage]
Promote PodReadyToStartContainers condition to beta. (kubernetes/kubernetes#119659, @kannon92) [SIG Node and Testing]
The flowcontrol.apiserver.k8s.io/v1beta3 FlowSchema and PriorityLevelConfiguration APIs has been promoted to flowcontrol.apiserver.k8s.io/v1, with the following changes:
.spec.limited.nominalConcurrencyShares field defaults to 30 only if the field is omitted (v1beta3 also defaulted an explicit 0 value to 30). Specifying an explicit 0 value is not allowed in the v1 version in v1.29 to ensure compatibility with 1.28 API servers. In v1.30, explicit 0 values will be allowed in this field in the v1 API.
The flowcontrol.apiserver.k8s.io/v1beta3 APIs are deprecated and will no longer be served in v1.32. All existing objects are available via the v1 APIs. Transition clients and manifests to use the v1 APIs before upgrading to v1.32. (kubernetes/kubernetes#121089, @tkashem) [SIG API Machinery and Testing]The kube-proxy command-line documentation was updated to clarify that
--bind-address does not actually have anything to do with binding to an
address, and you probably don't actually want to be using it. (kubernetes/kubernetes#120274, @danwinship) [SIG Network]
The matchLabelKeys/mismatchLabelKeys feature is introduced to the hard/soft PodAffinity/PodAntiAffinity. (kubernetes/kubernetes#116065, @sanposhiho) [SIG API Machinery, Apps, Cloud Provider, Scheduling and Testing]
ValidatingAdmissionPolicy Type Checking now supports CRDs and API extensions types. (kubernetes/kubernetes#119109, @jiahuif) [SIG API Machinery, Apps, Auth and Testing]
When updating a CRD, per-expression cost limit check is skipped for x-kubernetes-validations rules of versions that are not mutated. (kubernetes/kubernetes#121460, @jiahuif) [SIG API Machinery]
Added a new ipMode field to the .status of Services where type is set to LoadBalancer.
The new field is behind the LoadBalancerIPMode feature gate. (kubernetes/kubernetes#119937, @RyanAoh) [SIG API Machinery, Apps, Cloud Provider, Network and Testing]
Fixed a bug where CEL expressions in CRD validation rules would incorrectly compute a high estimated cost for functions that return strings, lists or maps. The incorrect cost was evident when the result of a function was used in subsequent operations. (kubernetes/kubernetes#119800, @jpbetz) [SIG API Machinery, Auth and Cloud Provider]
Go API: the ResourceRequirements struct needs to be replaced with VolumeResourceRequirements for use with volumes. (kubernetes/kubernetes#118653, @pohly) [SIG API Machinery, Apps, Auth, Node, Scheduling, Storage and Testing]
Kube-apiserver: adds --authentication-config flag for reading AuthenticationConfiguration files. --authentication-config flag is mutually exclusive with the existing --oidc-* flags. (kubernetes/kubernetes#119142, @aramase) [SIG API Machinery, Auth and Testing]
Kube-scheduler component config (KubeSchedulerConfiguration) kubescheduler.config.k8s.io/v1beta3 is removed in v1.29. Migrate kube-scheduler configuration files to kubescheduler.config.k8s.io/v1. (kubernetes/kubernetes#119994, @SataQiu) [SIG Scheduling and Testing]
Mark the onPodConditions field as optional in Job's pod failure policy. (kubernetes/kubernetes#120204, @mimowo) [SIG API Machinery and Apps]
Retry NodeStageVolume calls if CSI node driver is not running (kubernetes/kubernetes#120330, @rohitssingh) [SIG Apps, Storage and Testing]
The kube-scheduler selectorSpread plugin has been removed, please use the podTopologySpread plugin instead. (kubernetes/kubernetes#117720, @kerthcet) [SIG Scheduling]
feat: add bookmark support in watcher (#291, @tkauf15k)
Kubernetes API Version: v1.28.2
Kubernetes API Version: v1.28.2
ContainerAllocateResponse. This field maps to the CDIDevice field in the CRI protocol. (kubernetes/kubernetes#118254, @elezar) [SIG Node and Testing]ServedVersions field to StorageVersion API. (kubernetes/kubernetes#118386, @Richabanker)IP mode field to loadbalancer status ingress. (kubernetes/kubernetes#118895, @RyanAoh)podReplacementPolicy and terminating field to job api. (kubernetes/kubernetes#119301, @kannon92)namespaceParamRef field to admissionregistration.k8s.io/v1alpha1.ValidatingAdmissionPolicy. (kubernetes/kubernetes#119215, @alexzielenski) [SIG API Machinery and Testing]localhostProfile. (kubernetes/kubernetes#117020, @cji)reason and fieldPath into CRD validation rules to allow users to specify reason and field path when validation failed. (kubernetes/kubernetes#118041, @cici37) [SIG API Machinery]namespaceObject
variable with expressions. (kubernetes/kubernetes#118267, @cici37) [SIG API Machinery and Testing]CRDValidationRatcheting alpha feature. During a PATCH or UPDATE Validation Ratcheting discards errors thrown by unchanged portions of the resource from most OpenAPI schema validations. (kubernetes/kubernetes#118990, @alexzielenski)batch.kubernetes.io/cronjob-scheduled-timestamp to Job objects scheduled from CronJobs. (kubernetes/kubernetes#118137, @helayoty)delayCacheUntilActive to KubeSchedulerConfiguration that can provide a tradeoff between memory efficiency and scheduling speed when their leadership is updated in kube-scheduler (kubernetes/kubernetes#115754, @linxiulei) [SIG API Machinery and Scheduling]KMSv2KDF feature gate (off by default), KMS v2 uses a key derivation function to generate single use data encryption keys from a secret seed combined with some random data. This eliminates the need for a counter based nonce while avoiding nonce collision concerns associated with AES-GCM's 12 byte nonce. (kubernetes/kubernetes#118828, @enj)rest.DefaultServerUrlFor function. (kubernetes/kubernetes#118055, @timofurrer)BackoffLimitPerIndex. (kubernetes/kubernetes#119294, @mimowo)AdmissionWebhookMatchCondition feature to beta. (kubernetes/kubernetes#119380, @a-hilaly)memory.oom.group . This causes processes within the cgroup to be treated as a unit and killed simultaneously in the event of an OOM kill on any process in the cgroup. (kubernetes/kubernetes#117793, @tzneal) [SIG Apps, Node and Testing]--logging-format flag to support structured logging. (kubernetes/kubernetes#117800, @cyclinder)PreFilter extension point for skipping the Filter phase if the Pod doesn't use volumes with limits. (kubernetes/kubernetes#115398, @tangwz) [SIG Scheduling]LastPhaseTransitionTime field which holds a timestamp of when the volume last transitioned its phase. (kubernetes/kubernetes#116469, @RomanBednar)hostNetwork: true and declare ports, get the hostPort field set automatically. Previously this would happen in the PodTemplate of a Deployment, DaemonSet or other workload API. Now hostPort will only be set when an actual Pod is being created. If this presents a problem, setting the feature gate "DefaultHostNetworkHostPortsInPodTemplates" to true will revert this behavior. Please file a kubernetes bug if you need to do this. (kubernetes/kubernetes#117696, @thockin) [SIG Apps]ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding to v1beta1. (kubernetes/kubernetes#118644, @alexzielenski) [SIG API Machinery, Apps and Testing]ValidtaingAdmissionPolicy to beta, and it is turned off by default. (kubernetes/kubernetes#119409, @alexzielenski)BETA stability. (kubernetes/kubernetes#119264, @logicalhan) [SIG API Machinery, Architecture, Cluster Lifecycle and Instrumentation]resizeStatus enum from pvc.Status and replaced with AllocatedResourceStatus. (kubernetes/kubernetes#116335, @gnufied) [SIG API Machinery, Apps, Auth, Node, Storage and Testing]WindowsHostProcessContainers feature-gate. (kubernetes/kubernetes#117570, @marosset) [SIG API Machinery, Apps, Auth, Node and Windows]PodFailurePolicy from alpha to beta. (kubernetes/kubernetes#117802, @kerthcet) [SIG API Machinery and Apps]statefulset.kubernetes.io/pod-index. (kubernetes/kubernetes#119232, @danielvegamyhre) [SIG Apps]BackoffLimitPerIndex in Jobs. (kubernetes/kubernetes#118009, @mimowo)IPTablesOwnershipCleanup feature (KEP-3178) is now GA; kubelet no longer
creates the KUBE-MARK-DROP chain (which has been unused for several releases)
or the KUBE-MARK-MASQ chain (which is now only created by kube-proxy). (kubernetes/kubernetes#119374, @danwinship)SelfSubjectReview API is promoted to authentication.k8s.io/v1 and the kubectl auth whoami command is GA. (kubernetes/kubernetes#117713, @nabokihms) [SIG API Machinery, Architecture, Auth, CLI and Testing]<pod>-<claim name>, but a random suffix will avoid name collisions. (kubernetes/kubernetes#117351, @pohly) [SIG API Machinery, Apps, Auth, Node, Scheduling and Testing]PodFailurePolicy from alpha to beta (kubernetes/kubernetes#118278, @mimowo)client-go: Improved memory use of reflector caches when watching large numbers
of objects which do not change frequently. (kubernetes/kubernetes#113362, @sxllwx)component-base/logs is now stricter about not applying configurations multiple
times and will return an error when that is attempted. Can be overridden by binaries
which need to do that. (kubernetes/kubernetes#117108, @pohly)kube-controller-manager: The LegacyServiceAccountTokenCleanUp feature gate
is now available as alpha (off by default). When enabled, the legacy-service-account-token-cleaner
controller loop removes service account token secrets that have not been used
in the time specified by --legacy-service-account-token-clean-up-period (defaulting
to one year), and are referenced from the .secrets list of a ServiceAccount
object, and are not referenced from pods. (kubernetes/kubernetes#115554, @yt2985)kube-scheduler component config (KubeSchedulerConfiguration) kubescheduler.config.k8s.io/v1beta2
is removed in v1.28. Migrate kube-scheduler configuration files to kubescheduler.config.k8s.io/v1. (kubernetes/kubernetes#117649, @SataQiu)responseKind: {} for resources which are missing group/version/kind information, to ensure compatibility with v0.26.0-v0.26.3 clients. (kubernetes/kubernetes#119835, @liggitt) [SIG API Machinery and Testing]-v command line flag when combined with --config. (kubernetes/kubernetes#119867, @pohly) [SIG Network]ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding to v1beta1. (kubernetes/kubernetes#118644, @alexzielenski) [SIG API Machinery, Apps and Testing]ValidtaingAdmissionPolicy to beta and it is turned off by default. (kubernetes/kubernetes#119409, @alexzielenski) [SIG API Machinery, Apps, Auth, Instrumentation, Node, Release, Storage and Testing]KMSv2KDF feature gate (off by default), KMS v2 uses a key derivation function to generate single use data encryption keys from a secret seed combined with some random data. This eliminates the need for a counter based nonce while avoiding nonce collision concerns associated with AES-GCM's 12 byte nonce. (kubernetes/kubernetes#118828, @enj) [SIG API Machinery, Auth and Testing]ContainerAllocateResponse. This field maps to the CDIDevice field in the CRI protocol. (kubernetes/kubernetes#118254, @elezar) [SIG Node and Testing]batch.kubernetes.io/cronjob-scheduled-timestamp to Job objects scheduled from CronJobs. (kubernetes/kubernetes#118137, @helayoty) [SIG Apps]reason and fieldPath into CRD validation rules to allow users to specify reason and field path when validation failed. (kubernetes/kubernetes#118041, @cici37) [SIG API Machinery]namespaceObject
variable with expressions. (kubernetes/kubernetes#118267, @cici37) [SIG API Machinery and Testing]AdmissionWebhookMatchCondition feature to beta (kubernetes/kubernetes#119380, @a-hilaly) [SIG API Machinery]BETA stability. (kubernetes/kubernetes#119264, @logicalhan) [SIG API Machinery, Architecture, Cluster Lifecycle and Instrumentation]resizeStatus enum from pvc.Status and replaced with AllocatedResourceStatus (kubernetes/kubernetes#116335, @gnufied) [SIG API Machinery, Apps, Auth, Node, Storage and Testing]statefulset.kubernetes.io/pod-index. (kubernetes/kubernetes#119232, @danielvegamyhre) [SIG Apps]<pod>-<claim name>, but a random suffix will avoid name collisions. (kubernetes/kubernetes#117351, @pohly) [SIG API Machinery, Apps, Auth, Node, Scheduling and Testing]memory.oom.group . This causes processes within the cgroup to be treated as a unit and killed simultaneously in the event of an OOM kill on any process in the cgroup. (kubernetes/kubernetes#117793, @tzneal) [SIG Apps, Node and Testing]delayCacheUntilActive to KubeSchedulerConfiguration that can provide a tradeoff between memory efficiency and scheduling speed when their leadership is updated in kube-scheduler (kubernetes/kubernetes#115754, @linxiulei) [SIG API Machinery and Scheduling]LegacyServiceAccountTokenCleanUp feature gate is now available as alpha (off by default). When enabled, the legacy-service-account-token-cleaner controller loop removes service account token secrets that have not been used in the time specified by --legacy-service-account-token-clean-up-period (defaulting to one year), and are referenced from the .secrets list of a ServiceAccount object, and are not referenced from pods. (kubernetes/kubernetes#115554, @yt2985) [SIG API Machinery, Apps, Auth, Release and Testing]hostNetwork: true and declare ports get the hostPort field set automatically. Previously this would happen in the PodTemplate of a Deployment, DaemonSet or other workload API. Now hostPort will only be set when an actual Pod is being created. If this presents a problem, setting the feature gate "DefaultHostNetworkHostPortsInPodTemplates" to true will revert this behavior. Please file a kubernetes bug if you need to do this. (kubernetes/kubernetes#117696, @thockin) [SIG Apps]SelfSubjectReview API is promoted to authentication.k8s.io/v1 and the kubectl auth whoami command is GA. (kubernetes/kubernetes#117713, @nabokihms) [SIG API Machinery, Architecture, Auth, CLI and Testing]Introduced a breaking change to the resource.k8s.io API in its AllocationResult struct. This change allows a kubelet plugin for the DynamicResourceAll…
Kubernetes API Version: v1.27.6
Added error handling for seccomp localhost configurations that do not properly set a localhostProfile (kubernetes/kubernetes#117020, @cji) [SIG API Machinery and Node]
Fixed an issue where kubelet does not set case-insensitive headers for http probes. (#117182, @dddddai) (kubernetes/kubernetes#117324, @dddddai) [SIG API Machinery, Apps and Node]
Revised the comment about the feature-gate level for PodFailurePolicy from alpha to beta (kubernetes/kubernetes#117815, @kerthcet) [SIG Apps]
A fix in the resource.k8s.io/v1alpha1/ResourceClaim API avoids harmless (?) ".status.reservedFor: element 0: associative list without keys has an element that's a map type" errors in the apiserver. Validation now rejects the incorrect reuse of the same UID in different entries. (kubernetes/kubernetes#115354, @pohly)
A terminating pod on a node that is not caused by preemption no longer prevents kube-scheduler from preempting pods on that node
PreemptionByKubeScheduler to PreemptionByScheduler (kubernetes/kubernetes#114623, @Huang-Wei)API: resource.k8s.io/v1alpha1.PodScheduling was renamed to resource.k8s.io/v1alpha2.PodSchedulingContext. (kubernetes/kubernetes#116556, @pohly) [SIG API Machinery, Apps, Auth, CLI, Node, Scheduling and Testing]
Added CEL runtime cost calculation into ValidatingAdmissionPolicy, matching the evaluation cost
restrictions that already apply to CustomResourceDefinition.
If rule evaluation uses more compute than the limit, the API server aborts the evaluation and the
admission check that was being performed is aborted; the failurePolicy for the ValidatingAdmissionPolicy
determines the outcome. (kubernetes/kubernetes#115747, @cici37)
Added auditAnnotations to ValidatingAdmissionPolicy, enabling CEL to be used to add audit annotations to request audit events.
Added validationActions to ValidatingAdmissionPolicyBinding, enabling validation failures to be handled by any combination of the warn, audit and deny enforcement actions. (kubernetes/kubernetes#115973, @jpbetz)
Added messageExpression field to ValidationRule. (kubernetes/kubernetes#115969, @DangerOnTheRanger)
Added messageExpression to ValidatingAdmissionPolicy, to set custom failure message via CEL expression. (kubernetes/kubernetes#116397, @jiahuif) [SIG API Machinery]
Added a new IPAddress object kind
Added a new alpha API: ClusterTrustBundle (certificates.k8s.io/v1alpha1).
A ClusterTrustBundle may be used to distribute X.509 trust anchors to workloads within the cluster. (kubernetes/kubernetes#113218, @ahmedtd) [SIG API Machinery, Auth and Testing]
Added authorization check support to the CEL expressions of ValidatingAdmissionPolicy via a authorizer
variable with expressions. The new variable provides a builder that allows expressions such authorizer.group('').resource('pods').check('create').allowed(). (kubernetes/kubernetes#116054, @jpbetz) [SIG API Machinery and Testing]
Added matchConditions field to ValidatingAdmissionPolicy and enabled support for CEL based custom match criteria. (kubernetes/kubernetes#116350, @maxsmythe)
Added new option to the InterPodAffinity scheduler plugin to ignore existing
podspreferred inter-pod affinities if the incoming pod has no preferred inter-pod affinities. This option can be used as an optimization for higher scheduling throughput (at the cost of an occasional pod being scheduled non-optimally/violating existing pods preferred inter-pod affinities). To enable this scheduler option, set theInterPodAffinityscheduler plugin argignorePreferredTermsOfExistingPods: true` (kubernetes/kubernetes#114393, @danielvegamyhre)
Added the MatchConditions field to ValidatingWebhookConfiguration and MutatingWebhookConfiguration for the v1beta and v1 apis.
The AdmissionWebhookMatchConditions featuregate is now in Alpha (kubernetes/kubernetes#116261, @ivelichkovich) [SIG API Machinery and Testing]
Added validation to ensure that if service.kubernetes.io/topology-aware-hints and service.kubernetes.io/topology-mode annotations are both set, they are set to the same value.Also Added deprecation warning if service.kubernetes.io/topology-aware-hints annotation is used. (kubernetes/kubernetes#116612, @robscott)
Added warnings about workload resources (Pods, ReplicaSets, Deployments, Jobs, CronJobs, or ReplicationControllers) whose names are not valid DNS labels. (kubernetes/kubernetes#114412, @thockin)
Adds feature gate NodeLogQuery which provides cluster administrators with a streaming view of logs using kubectl without them having to implement a client side reader or logging into the node. (kubernetes/kubernetes#96120, @LorbusChris)
Api: validation of a PodSpec now rejects invalid ResourceClaim and ResourceClaimTemplate names. For a pod, the name generated for the ResourceClaim when using a template also must be valid. (kubernetes/kubernetes#116576, @pohly)
Bump default API QPS limits for Kubelet. (kubernetes/kubernetes#116121, @wojtek-t)
Enabled the StatefulSetStartOrdinal feature gate in beta (kubernetes/kubernetes#115260, @pwschuurman)
Enabled usage of kube-proxy, kube-scheduler and kubelet HTTP APIs for changing the logging
verbosity at runtime for JSON output. (kubernetes/kubernetes#114609, @pohly)
Encryption of API Server at rest configuration now allows the use of wildcards in the list of resources. For example, . can be used to encrypt all resources, including all current and future custom resources. (kubernetes/kubernetes#115149, @nilekhc)
Extended the kubelet's PodResources API to include resources allocated in ResourceClaims via DynamicResourceAllocation. Additionally, added a new Get() method to query a specific pod for its resources. (kubernetes/kubernetes#115847, @moshe010) [SIG Node]
Forbid to set matchLabelKeys when labelSelector is not set in topologySpreadConstraints (kubernetes/kubernetes#116535, @denkensk)
GCE does not support LoadBalancer Services with ports with different protocols (TCP and UDP) (kubernetes/kubernetes#115966, @aojea) [SIG Apps and Cloud Provider]
GRPC probes are now a GA feature. GRPCContainerProbe feature gate was locked to default value and will be removed in v1.29. If you were setting this feature gate explicitly, please remove it now. (kubernetes/kubernetes#116233, @SergeyKanzhelev)
Graduated Kubelet Topology Manager to GA. (kubernetes/kubernetes#116093, @swatisehgal)
Graduated KubeletTracing to beta, which means that the feature gate is now enabled by default. (kubernetes/kubernetes#115750, @saschagrunert)
Graduated seccomp profile defaulting to GA.
Set the kubelet --seccomp-default flag or seccompDefault kubelet configuration field to true to make pods on that node default to using the RuntimeDefault seccomp profile.
Enabling seccomp for your workload can have a negative performance impact depending on the kernel and container runtime version in use.
Guidance for identifying and mitigating those issues is outlined in the Kubernetes seccomp tutorial. (kubernetes/kubernetes#115719, @saschagrunert) [SIG API Machinery, Node, Storage and Testing]
Graduated the container resource metrics feature on HPA to beta. (kubernetes/kubernetes#116046, @sanposhiho)
Implemented API streaming for the watch-cache
When sendInitialEvents ListOption is set together with watch=true, it begins the watch stream with synthetic init events followed by a synthetic "Bookmark" after which the server continues streaming events. (kubernetes/kubernetes#110960, @p0lyn0mial)
Introduced API for streaming.
Added SendInitialEvents field to the ListOptions. When the new option is set together with watch=true, it begins the watch stream with synthetic init events followed by a synthetic "Bookmark" after which the server continues streaming events. (kubernetes/kubernetes#115402, @p0lyn0mial)
Introduced a breaking change to the resource.k8s.io API in its AllocationResult struct. This change allows a kubelet plugin for the DynamicResourceAllocation feature to service allocations from multiple resource driver controllers. (kubernetes/kubernetes#116332, @klueska)
Introduces new alpha functionality to the reflector, allowing user to enable API streaming.
To activate this feature, users can set the ENABLE_CLIENT_GO_WATCH_LIST_ALPHA environmental variable.
It is important to note that the server must support streaming for this feature to function properly.
If streaming is not supported by the server, the reflector will revert to the previous method
of obtaining data through LIST/WATCH semantics. (kubernetes/kubernetes#110772, @p0lyn0mial) [SIG API Machinery]
K8s.io/client-go/tools/record.EventBroadcaster: after Shutdown() is called, the broadcaster now gives up immediately after a failure to write an event to a sink. Previously it tried multiple times for 12 seconds in a goroutine. (kubernetes/kubernetes#115514, @pohly) [SIG API Machinery]
K8s.io/component-base/logs: usage of the pflag values in a normal Go flag set led to panics when printing the help message (kubernetes/kubernetes#114680, @pohly) [SIG Instrumentation]
Kubeadm: explicitly set priority for static pods with priorityClassName: system-node-critical (kubernetes/kubernetes#114338, @champtar) [SIG Cluster Lifecycle]
Kubelet: a "maxParallelImagePulls" field can now be specified in the kubelet configuration file to control how many image pulls the kubelet can perform in parallel. (kubernetes/kubernetes#115220, @ruiwen-zhao) [SIG API Machinery, Node and Scalability]
Kubelet: changed MemoryThrottlingFactor default value to 0.9 and formulas to calculate memory.high (kubernetes/kubernetes#115371, @pacoxu)
Kubernetes components that perform leader election now only support using Leases for this. (kubernetes/kubernetes#114055, @aimuz)
Migrated the DaemonSet controller (within kube-controller-manager) to use contextual logging (kubernetes/kubernetes#113622, @249043822)
New service.kubernetes.io/topology-mode annotation has been introduced as a replacement for the service.kubernetes.io/topology-aware-hints annotation.
service.kubernetes.io/topology-aware-hints annotation has been deprecated.Pods owned by a Job now uses the labels batch.kubernetes.io/job-name and batch.kubernetes.io/controller-uid.
The legacy labels job-name and controller-uid are still added for compatibility. (kubernetes/kubernetes#114930, @kannon92)
Promoted CronJobTimeZone feature to GA (kubernetes/kubernetes#115904, @soltysh)
Promoted SelfSubjectReview to Beta (kubernetes/kubernetes#116274, @nabokihms) [SIG API Machinery, Auth, CLI and Testing]
Relaxed API validation to allow pod node selector to be mutable for gated pods (additions only, no deletions or mutations). (kubernetes/kubernetes#116161, @danielvegamyhre)
Remove kubernetes.io/grpc standard appProtocol (kubernetes/kubernetes#116866, @LiorLieberman) [SIG API Machinery and Apps]
Remove deprecated --enable-taint-manager and --pod-eviction-timeout CLI (kubernetes/kubernetes#115840, @atosatto)
Removed support for the v1alpha1 kubeletplugin API of DynamicResourceManagement. All plugins must be updated to v1alpha2 in order to function properly. (kubernetes/kubernetes#116558, @klueska)
The API server now re-uses data encryption keys while the kms v2 plugin key ID is stable. Data encryption keys are still randomly generated on server start but an atomic counter is used to prevent nonce collisions. (kubernetes/kubernetes#116155, @enj)
The PodDisruptionBudget spec.unhealthyPodEvictionPolicy field has graduated to beta and is enabled by default. On servers with the feature enabled, this field may be set to AlwaysAllow to always allow unhealthy pods covered by the PodDisruptionBudget to be evicted. (kubernetes/kubernetes#115363, @ravisantoshgudimetla) [SIG Apps, Auth and Node]
The DownwardAPIHugePages kubelet feature graduated to stable / GA. (kubernetes/kubernetes#115721, @saschagrunert) [SIG Apps and Node]
The following feature gates for volume expansion GA features have now been removed and must no longer be referenced in --feature-gates flags: ExpandCSIVolumes, ExpandInUsePersistentVolumes, ExpandPersistentVolumes (kubernetes/kubernetes#113942, @mengjiao-liu)
The list-type of the alpha resourceClaims field introduced to Pods in 1.26.0 was modified from set to map, resolving an incompatibility with use of this schema in CustomResourceDefinitions and with server-side apply. (kubernetes/kubernetes#114585, @JoelSpeed)
Updated API reference for Requests, specifying they must not exceed limits (kubernetes/kubernetes#115434, @ehashman)
Updated KMSv2 to beta (kubernetes/kubernetes#115123, @aramase)
Updated: Redefine AppProtocol field description and add new standard values (kubernetes/kubernetes#115433, @LiorLieberman) [SIG API Machinery, Apps and Network]
/metrics/slis is now available for control plane components allowing you to scrape health check metrics. (kubernetes/kubernetes#114997, @Richabanker)
APIServerTracing feature gate is now enabled by default. Tracing in the API
Server is still disabled by default, and requires a config file to enable. (kubernetes/kubernetes#116144, @dashpole)
NodeResourceFit and NodeResourcesBalancedAllocation implement the PreScore
extension point for a more performant calculation. (kubernetes/kubernetes#115655, @tangwz)
PodSchedulingReadiness is graduated to beta. (kubernetes/kubernetes#115815, @Huang-Wei)
PodSpec.Container.Resources became mutable for CPU and memory resource types.
PodSpec.Container.ResizePolicy (new object) gives users control over how their containers are resized.PodStatus.Resize status describes the state of a requested Pod resize.PodStatus.ResourcesAllocated describes node resources allocated to Pod.PodStatus.Resources describes node resources applied to running containers by CRI.UpdateContainerResources CRI API now supports both Linux and Windows. (kubernetes/kubernetes#102884, @vinaykul)SELinuxMountReadWriteOncePod graduated to Beta. (kubernetes/kubernetes#116425, @jsafrane)
StatefulSetAutoDeletePVC feature gate promoted to beta. (kubernetes/kubernetes#116501, @mattcary)
StatefulSet names must be DNS labels, rather than subdomains. Any StatefulSet
which took advantage of subdomain validation (by having dots in the name) can't
possibly have worked, because we eventually set pod.spec.hostname from the StatefulSetName,
and that is validated as a DNS label. (kubernetes/kubernetes#114172, @thockin)
ValidatingAdmissionPolicy now provides a status field that contains results of type checking the validation expression.
The type checking is fully informational, and the behavior of the policy is unchanged. (kubernetes/kubernetes#115668, @jiahuif)
cacheSize field in EncryptionConfiguration is not supported for KMSv2 provider (kubernetes/kubernetes#113121, @aramase)
k8s.io/component-base/logs now also supports adding command line flags to a flag.FlagSet. (kubernetes/kubernetes#114731, @pohly)
kubelet: migrated --container-runtime-endpoint and --image-service-endpoint
to kubelet config (kubernetes/kubernetes#112136, @pacoxu)
resource.k8s.io/v1alpha1 was replaced with resource.k8s.io/v1alpha2. Before
upgrading a cluster, all objects in resource.k8s.io/v1alpha1 (ResourceClaim, ResourceClaimTemplate,
ResourceClass, PodScheduling) must be deleted. The changes are internal, so
YAML files which create pods and resource claims don't need changes except for
the newer apiVersion. (kubernetes/kubernetes#116299, @pohly)
volumes: resource.claims is now cleared for PVC specs during create or update of a pod spec with inline PVC template or of a PVC because it has no effect. (kubernetes/kubernetes#115928, @pohly)
Added a new alpha API: ClusterTrustBundle (certificates.k8s.io/v1alpha1).
A ClusterTrustBundle may be used to distribute X.509 trust anchors to workloads within the cluster. (kubernetes/kubernetes#113218, @ahmedtd) [SIG API Machinery, Auth and Testing]
Remove kubernetes.io/grpc standard appProtocol (kubernetes/kubernetes#116866, @LiorLieberman) [SIG API Machinery and Apps]
API: resource.k8s.io/v1alpha1.PodScheduling was renamed to resource.k8s.io/v1alpha2.PodSchedulingContext. (kubernetes/kubernetes#116556, @pohly) [SIG API Machinery, Apps, Auth, CLI, Node, Scheduling and Testing]
APIServerTracing feature gate is now enabled by default. Tracing in the API Server is still disabled by default, and requires a config file to enable. (kubernetes/kubernetes#116144, @dashpole) [SIG API Machinery and Testing]
Added CEL runtime cost calculation into ValidatingAdmissionPolicy, matching the evaluation cost
restrictions that already apply to CustomResourceDefinition.
If rule evaluation uses more compute than the limit, the API server aborts the evaluation and the
admission check that was being performed is aborted; the failurePolicy for the ValidatingAdmissionPolicy
determines the outcome. (kubernetes/kubernetes#115747, @cici37) [SIG API Machinery]
Added messageExpression to ValidatingAdmissionPolicy, to set custom failure message via CEL expression. (kubernetes/kubernetes#116397, @jiahuif) [SIG API Machinery]
Added a new IPAddress object kind
Added a new alpha API: ClusterTrustBundle (certificates.k8s.io/v1alpha1).
A ClusterTrustBundle may be used to distribute X.509 trust anchors to workloads within the cluster. (kubernetes/kubernetes#113218, @ahmedtd) [SIG API Machinery, Auth and Testing]
Added authorization check support to the CEL expressions of ValidatingAdmissionPolicy via a authorizer
variable with expressions. The new variable provides a builder that allows expressions such authorizer.group('').resource('pods').check('create').allowed(). (kubernetes/kubernetes#116054, @jpbetz) [SIG API Machinery and Testing]
Added matchConditions field to ValidatingAdmissionPolicy, enabled support for CEL based custom match criteria. (kubernetes/kubernetes#116350, @maxsmythe) [SIG API Machinery and Testing]
Added messageExpression field to ValidationRule. (#115969, @DangerOnTheRanger) (kubernetes/kubernetes#115969, @DangerOnTheRanger) [SIG API Machinery, Architecture, Auth, CLI, Cloud Provider, Instrumentation, Node and Testing]
Added the MatchConditions field to ValidatingWebhookConfiguration and MutatingWebhookConfiguration for the v1beta and v1 apis.
The AdmissionWebhookMatchConditions featuregate is now in Alpha (kubernetes/kubernetes#116261, @ivelichkovich) [SIG API Machinery and Testing]
Added validation to ensure that if service.kubernetes.io/topology-aware-hints and service.kubernetes.io/topology-mode annotations are both set, they are set to the same value.
service.kubernetes.io/topology-aware-hints annotation is used. (kubernetes/kubernetes#116612, @robscott) [SIG Apps, Network and Testing]Adds auditAnnotations to ValidatingAdmissionPolicy, enabling CEL to be used to add audit annotations to request audit events. Adds validationActions to ValidatingAdmissionPolicyBinding, enabling validation failures to be handled by any combination of the warn, audit and deny enforcement actions. (kubernetes/kubernetes#115973, @jpbetz) [SIG API Machinery and Testing]
Adds feature gate NodeLogQuery which provides cluster administrators with a streaming view of logs using kubectl without them having to implement a client side reader or logging into the node. (kubernetes/kubernetes#96120, @LorbusChris) [SIG API Machinery, Apps, CLI, Node, Testing and Windows]
Api: validation of a PodSpec now rejects invalid ResourceClaim and ResourceClaimTemplate names. For a pod, the name generated for the ResourceClaim when using a template also must be valid. (kubernetes/kubernetes#116576, @pohly) [SIG Apps]
Bump default API QPS limits for Kubelet. (kubernetes/kubernetes#116121, @wojtek-t) [SIG API Machinery and Node]
Enable the "StatefulSetStartOrdinal" feature gate in beta (kubernetes/kubernetes#115260, @pwschuurman) [SIG API Machinery and Apps]
Extended the kubelet's PodResources API to include resources allocated in ResourceClaims via DynamicResourceAllocation. Additionally, added a new Get() method to query a specific pod for its resources. (kubernetes/kubernetes#115847, @moshe010) [SIG Node]
Forbid to set matchLabelKeys when labelSelector isn’t set in topologySpreadConstraints (kubernetes/kubernetes#116535, @denkensk) [SIG API Machinery, Apps and Scheduling]
GCE does not support LoadBalancer Services with ports with different protocols (TCP and UDP) (kubernetes/kubernetes#115966, @aojea) [SIG Apps and Cloud Provider]
GRPC probes are now a GA feature. GRPCContainerProbe feature gate was locked to default value and will be removed in v1.29. If you were setting this feature gate explicitly, please remove it now. (kubernetes/kubernetes#116233, @SergeyKanzhelev) [SIG API Machinery, Apps and Node]
Graduate Kubelet Topology Manager to GA. (kubernetes/kubernetes#116093, @swatisehgal) [SIG API Machinery, Node and Testing]
Graduate KubeletTracing to beta, which means that the feature gate is now enabled by default. (kubernetes/kubernetes#115750, @saschagrunert) [SIG Instrumentation and Node]
Graduate the container resource metrics feature on HPA to beta. (kubernetes/kubernetes#116046, @sanposhiho) [SIG Autoscaling]
Introduced a breaking change to the resource.k8s.io API in its AllocationResult struct. This change allows a kubelet plugin for the DynamicResourceAllocation feature to service allocations from multiple resource driver controllers. (kubernetes/kubernetes#116332, @klueska) [SIG API Machinery, Apps, CLI, Node, Scheduling and Testing]
Introduces new alpha functionality to the reflector, allowing user to enable API streaming.
To activate this feature, users can set the ENABLE_CLIENT_GO_WATCH_LIST_ALPHA environmental variable.
It is important to note that the server must support streaming for this feature to function properly.
If streaming is not supported by the server, the reflector will revert to the previous method
of obtaining data through LIST/WATCH semantics. (kubernetes/kubernetes#110772, @p0lyn0mial) [SIG API Machinery]
Kubelet: change MemoryThrottlingFactor default value to 0.9 and formulas to calculate memory.high (kubernetes/kubernetes#115371, @pacoxu) [SIG API Machinery, Apps and Node]
Migrated the DaemonSet controller (within `kube-controller-manager) to use contextual logging (kubernetes/kubernetes#113622, @249043822) [SIG API Machinery, Apps, Instrumentation and Testing]
New service.kubernetes.io/topology-mode annotation has been introduced as a replacement for the service.kubernetes.io/topology-aware-hints annotation.
service.kubernetes.io/topology-aware-hints annotation has been deprecated.NodeResourceFit and NodeResourcesBalancedAllocation implement the PreScore extension point for a more performant calculation. (kubernetes/kubernetes#115655, @tangwz) [SIG Scheduling]
Pods owned by a Job will now use the labels batch.kubernetes.io/job-name and batch.kubernetes.io/controller-uid.
The legacy labels job-name and controller-uid are still added for compatibility. (kubernetes/kubernetes#114930, @kannon92) [SIG Apps]
Promote CronJobTimeZone feature to GA (kubernetes/kubernetes#115904, @soltysh) [SIG API Machinery and Apps]
Promoted SelfSubjectReview to Beta (kubernetes/kubernetes#116274, @nabokihms) [SIG API Machinery, Auth, CLI and Testing]
Relax API validation to allow pod node selector to be mutable for gated pods (additions only, no deletions or mutations). (kubernetes/kubernetes#116161, @danielvegamyhre) [SIG Apps, Scheduling and Testing]
Remove deprecated --enable-taint-manager and --pod-eviction-timeout CLI flags (kubernetes/kubernetes#115840, @atosatto) [SIG API Machinery, Apps, Node and Testing]
Resource.k8s.io/v1alpha1 was replaced with resource.k8s.io/v1alpha2. Before upgrading a cluster, all objects in resource.k8s.io/v1alpha1 (ResourceClaim, ResourceClaimTemplate, ResourceClass, PodScheduling) must be deleted. The changes will be internal, so YAML files which create pods and resource claims don't need changes except for the newer apiVersion. (kubernetes/kubernetes#116299, @pohly) [SIG API Machinery, Apps, CLI, Node, Scheduling and Testing]
SELinuxMountReadWriteOncePod graduated to Beta. (kubernetes/kubernetes#116425, @jsafrane) [SIG Storage and Testing]
StatefulSetAutoDeletePVC feature gate promoted to beta. (kubernetes/kubernetes#116501, @mattcary) [SIG Apps, Auth and Testing]
The API server now re-uses data encryption keys while the kms v2 plugin's key ID is stable. Data encryption keys are still randomly generated on server start but an atomic counter is used to prevent nonce collisions. (kubernetes/kubernetes#116155, @enj) [SIG API Machinery, Auth and Testing]
The API server's encryption at rest configuration now allows the use of wildcards in the list of resources. For example, '.' can be used to encrypt all resources, including all current and future custom resources. (kubernetes/kubernetes#115149, @nilekhc) [SIG API Machinery, Auth and Testing]
Update KMSv2 to beta (kubernetes/kubernetes#115123, @aramase) [SIG API Machinery, Auth and Testing]
Updated: Redefine AppProtocol field description and add new standard values (kubernetes/kubernetes#115433, @LiorLieberman) [SIG API Machinery, Apps and Network]
ValidatingAdmissionPolicy now provides a status field that contains results of type checking the validation expression. The type checking is fully informational, and the behavior of the policy is unchanged. (kubernetes/kubernetes#115668, @jiahuif) [SIG API Machinery, Auth, Cloud Provider and Testing]
We have removed support for the v1alpha1 kubeletplugin API of DynamicResourceManagement. All plugins must update to v1alpha2 in order to function properly going forward. (kubernetes/kubernetes#116558, @klueska) [SIG API Machinery, Apps, CLI, Node, Scheduling and Testing]
Graduated seccomp profile defaulting to GA.
Set the kubelet --seccomp-default flag or seccompDefault kubelet configuration field to true to make pods on that node default to using the RuntimeDefault seccomp profile.
Enabling seccomp for your workload can have a negative performance impact depending on the kernel and container runtime version in use.
Guidance for identifying and mitigating those issues is outlined in the Kubernetes seccomp tutorial. (kubernetes/kubernetes#115719, @saschagrunert) [SIG API Machinery, Node, Storage and Testing]
Implements API for streaming for the watch-cache
When sendInitialEvents ListOption is set together with watch=true, it begins the watch stream with synthetic init events followed by a synthetic "Bookmark" after which the server continues streaming events. (kubernetes/kubernetes#110960, @p0lyn0mial) [SIG API Machinery]
Introduce API for streaming.
Add SendInitialEvents field to the ListOptions. When the new option is set together with watch=true, it begins the watch stream with synthetic init events followed by a synthetic "Bookmark" after which the server continues streaming events. (kubernetes/kubernetes#115402, @p0lyn0mial) [SIG API Machinery]
Kubelet: a "maxParallelImagePulls" field can now be specified in the kubelet configuration file to control how many image pulls the kubelet can perform in parallel. (kubernetes/kubernetes#115220, @ruiwen-zhao) [SIG API Machinery, Node and Scalability]
PodSchedulingReadiness is graduated to beta. (kubernetes/kubernetes#115815, @Huang-Wei) [SIG API Machinery, Apps, Scheduling and Testing]
In-place resize feature for Kubernetes Pods
resources defined for containers are mutable for cpu and memory resource types.resizePolicy for containers in a pod to allow users control over how their containers are resized.allocatedResources field to container status in pod status that describes the node resources allocated to a pod.resources field to container status that reports actual resources applied to running containers.resize field to pod status that describes the state of a requested pod resize.
For details, see KEPs below. (kubernetes/kubernetes#102884, @vinaykul) [SIG API Machinery, Apps, Instrumentation, Node, Scheduling and Testing]The PodDisruptionBudget spec.unhealthyPodEvictionPolicy field has graduated to beta and is enabled by default. On servers with the feature enabled, this field may be set to AlwaysAllow to always allow unhealthy pods covered by the PodDisruptionBudget to be evicted. (kubernetes/kubernetes#115363, @ravisantoshgudimetla) [SIG Apps, Auth and Node]
The DownwardAPIHugePages kubelet feature graduated to stable / GA. (kubernetes/kubernetes#115721, @saschagrunert) [SIG Apps and Node]
Volumes: resource.claims gets cleared for PVC specs during create or update of a pod spec with inline PVC template or of a PVC because it has no effect. (kubernetes/kubernetes#115928, @pohly) [SIG API Machinery, Apps and Storage]
A fix in the resource.k8s.io/v1alpha1/ResourceClaim API avoids harmless (?) ".status.reservedFor: element 0: associative list without keys has an element that's a map type" errors in the apiserver. Validation now rejects the incorrect reuse of the same UID in different entries. (kubernetes/kubernetes#115354, @pohly) [SIG API Machinery]
CacheSize field in EncryptionConfiguration is not supported for KMSv2 provider (kubernetes/kubernetes#113121, @aramase) [SIG API Machinery, Auth and Testing]
K8s.io/client-go/tools/record.EventBroadcaster: after Shutdown() is called, the broadcaster now gives up immediately after a failure to write an event to a sink. Previously it tried multiple times for 12 seconds in a goroutine. (kubernetes/kubernetes#115514, @pohly) [SIG API Machinery]
K8s.io/component-base/logs now also supports adding command line flags to a flag.FlagSet. (kubernetes/kubernetes#114731, @pohly) [SIG Architecture]
Update API reference for Requests, specifying they must not exceed limits (kubernetes/kubernetes#115434, @ehashman) [SIG Architecture, Docs and Node]
/metrics/slis is made available for control plane components allowing you to scrape health check metrics. (kubernetes/kubernetes#114997, @Richabanker) [SIG API Machinery, Apps, Architecture, Auth, Autoscaling, CLI, Cloud Provider, Cluster Lifecycle, Instrumentation, Network, Node, Release, Scheduling, Storage and Testing]
A terminating pod on a node that is not caused by preemption won't prevent kube-scheduler from preempting pods on that node
Added new option to the InterPodAffinity scheduler plugin to ignore existing pods` preferred inter-pod affinities if the incoming pod has no preferred inter-pod affinities. This option can be used as an optimization for higher scheduling throughput (at the cost of an occasional pod being scheduled non-optimally/violating existing pods' preferred inter-pod affinities). To enable this scheduler option, set the InterPodAffinity scheduler plugin arg "ignorePreferredTermsOfExistingPods: true". (kubernetes/kubernetes#114393, @danielvegamyhre) [SIG API Machinery and Scheduling]
Added warnings about workload resources (Pods, ReplicaSets, Deployments, Jobs, CronJobs, or ReplicationControllers) whose names are not valid DNS labels. (kubernetes/kubernetes#114412, @thockin) [SIG API Machinery and Apps]
K8s.io/component-base/logs: usage of the pflag values in a normal Go flag set led to panics when printing the help message (kubernetes/kubernetes#114680, @pohly) [SIG Instrumentation]
Kube-proxy, kube-scheduler and kubelet have HTTP APIs for changing the logging verbosity at runtime. This now also works for JSON output. (kubernetes/kubernetes#114609, @pohly) [SIG API Machinery, Architecture, Cloud Provider, Instrumentation and Testing]
Kubeadm: explicitly set priority for static pods with priorityClassName: system-node-critical (kubernetes/kubernetes#114338, @champtar) [SIG Cluster Lifecycle]
Kubelet: migrate "--container-runtime-endpoint" and "--image-service-endpoint" to kubelet config (kubernetes/kubernetes#112136, @pacoxu) [SIG API Machinery, Node and Scalability]
Kubernetes components that perform leader election now only support using Leases for this. (kubernetes/kubernetes#114055, @aimuz) [SIG API Machinery, Cloud Provider and Scheduling]
StatefulSet names must be DNS labels, rather than subdomains. Any StatefulSet which took advantage of subdomain validation (by having dots in the name) can't possibly have worked, because we eventually set pod.spec.hostname from the StatefulSetName, and that is validated as a DNS label. (kubernetes/kubernetes#114172, @thockin) [SIG Apps]
The following feature gates for volume expansion GA features have been removed and must no longer be referenced in --feature-gates flags: ExpandCSIVolumes, ExpandInUsePersistentVolumes, ExpandPersistentVolumes (kubernetes/kubernetes#113942, @mengjiao-liu) [SIG API Machinery, Apps and Testing]
The list-type of the alpha resourceClaims field introduced to Pods in 1.26.0 was modified from "set" to "map", resolving an incompatibility with use of this schema in CustomResourceDefinitions and with server-side apply. (kubernetes/kubernetes#114585, @JoelSpeed) [SIG API Machinery]
Your coding agent can read these notes before it upgrades. Set up the MCP server →