Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
84 commits
Select commit Hold shift + click to select a range
fe9bdd1
Mark API server errors as transient in csi raw block driver
eltrufas Aug 18, 2025
c2cd8aa
mark device manager as haelthy before it started for the first time
SergeyKanzhelev Nov 5, 2025
d4672d9
Update CHANGELOG/CHANGELOG-1.34.md for v1.34.2
k8s-release-robot Nov 11, 2025
12e3ff4
Fix alpha API warnings for patch version differences
akhilsingh-git Sep 12, 2025
2664ad0
Fallback to live ns lookup on admission if lister cannot find namespace
liggitt Nov 19, 2025
b00d0b5
[Manual bugfix]: unhide the etcd-join phase for v1.34
borovetsav Nov 27, 2025
0eb6c41
Bump dependencies, images and versions used to Go 1.24.10 and distrol…
cpanato Nov 29, 2025
9f4404b
Merge pull request #135506 from cpanato/update-go134
k8s-ci-robot Dec 1, 2025
e0b59a9
fix panic for the crd with status subresource but lose openAPIV3Schem…
fusida Sep 10, 2025
627803b
Merge pull request #135442 from lalitc375/automated-cherry-pick-of-#1…
k8s-ci-robot Dec 2, 2025
50256f3
fix docker IP address detection for rsync
BenTheElder Dec 3, 2025
38f3932
Merge pull request #135576 from BenTheElder/fix-rsync-1.34
k8s-ci-robot Dec 4, 2025
7d22d65
Merge pull request #135343 from michaelasp/automated-cherry-pick-of-#…
k8s-ci-robot Dec 4, 2025
be4a4f5
Embed proper interface in TransformingStore to ensure DeltaFIFO and R…
Jul 28, 2025
86c4e09
Add unit tests for Data Consistency Detector
Jul 28, 2025
9043cb4
Use transformer in consistency checker
liggitt Nov 26, 2025
58da6ff
Merge pull request #135207 from SergeyKanzhelev/automated-cherry-pick…
k8s-ci-robot Dec 4, 2025
2f17c6c
Merge pull request #135592 from serathius/automated-cherry-pick-of-#1…
k8s-ci-robot Dec 5, 2025
3012c00
Bump dependencies, images and versions used to Go 1.24.11 and distrol…
cpanato Dec 5, 2025
071d411
Merge pull request #135612 from cpanato/update-rel-134
k8s-ci-robot Dec 5, 2025
7124d34
Merge pull request #135482 from borovetsav/fix-kubeadm-control-plane-…
k8s-ci-robot Dec 5, 2025
7c5d1fc
Merge pull request #135064 from eltrufas/automated-cherry-pick-of-#13…
k8s-ci-robot Dec 5, 2025
df11db1
Release commit for Kubernetes v1.34.3
k8s-release-robot Dec 9, 2025
1704494
Update CHANGELOG/CHANGELOG-1.34.md for v1.34.3
k8s-release-robot Dec 9, 2025
4691935
downgrade reflector watchlist fallback log to V(4)
p0lyn0mial Dec 4, 2025
26cf497
local-up-cluster.sh: support more recent containerd like 2.2
pohly Dec 10, 2025
f3ac2c4
hack/lib/util.sh: support uutils' `date` command
AkihiroSuda Nov 7, 2025
af1b6ed
Fix apiserver_watch_events_sizes metric.
mborsz Nov 20, 2025
ed5a8b6
kubeadm: do not sort extraArgs alpha-numerically
neolit123 Nov 22, 2025
c84937e
Merge pull request #135740 from pohly/automated-cherry-pick-of-#13569…
k8s-ci-robot Jan 6, 2026
7b0a085
Merge pull request #135852 from neolit123/automated-cherry-pick-of-#1…
k8s-ci-robot Jan 7, 2026
59ffdb4
Merge pull request #135716 from p0lyn0mial/automated-cherry-pick-of-#…
k8s-ci-robot Jan 7, 2026
7230380
Merge pull request #135811 from AkihiroSuda/fix-135210-1.34
k8s-ci-robot Jan 7, 2026
b872b55
kubeadm: always retry Patch() Node API calls
neolit123 Dec 16, 2025
67256ea
Merge pull request #136071 from neolit123/automated-cherry-pick-of-#1…
k8s-ci-robot Jan 8, 2026
4be9cee
Merge pull request #135363 from fusida/automated-cherry-pick-of-#1337…
k8s-ci-robot Jan 8, 2026
4265285
refactoring: use a common function to enqueue Pod
jsafrane Dec 4, 2025
b25300b
selinux: Do not report conflits with finished pods
jsafrane Dec 4, 2025
1bf9b3d
Rework unit tests to builder pattern
jsafrane Dec 5, 2025
4410a9e
Add new unit tests
jsafrane Dec 5, 2025
ed74b5d
selinux: add e2e test with a completed pod
jsafrane Dec 4, 2025
3e55c95
Fix policy of Pods with unknown SELinux label
jsafrane Dec 8, 2025
e0600b8
Use only enqueuePod to add pods to the controller queue
jsafrane Dec 12, 2025
2aeace0
Added e2e tests with disabled SELinux
jsafrane Dec 19, 2025
0b27e41
Add unit test with CSIDriver.SELinuxMount=false
jsafrane Dec 19, 2025
e24e713
mark QuotaMonitor as not running and invalidate monitors list
atiratree Dec 5, 2025
a375772
Merge pull request #136104 from atiratree/automated-cherry-pick-of-#1…
k8s-ci-robot Jan 9, 2026
b57a776
Switch ipvs and winkernel back to more regular forced syncs
danwinship Dec 5, 2025
b037ee3
Fixes the flaky test (Issue #132953)
aditigupta96 Dec 8, 2025
847bda5
Merge pull request #136123 from danwinship/automated-cherry-pick-of-#…
k8s-ci-robot Jan 10, 2026
31a3b4e
Merge pull request #136099 from jsafrane/automated-cherry-pick-of-#13…
k8s-ci-robot Jan 10, 2026
730ae95
Merge pull request #135816 from mborsz/automated-cherry-pick-of-#1353…
k8s-ci-robot Jan 16, 2026
d77a7d6
kubeadm: waiting for etcd learner member to be started before promoti…
SataQiu Jan 10, 2026
eb8f933
Fix for preferred dualstack and required dualstack in winkernel proxier.
princepereira Dec 16, 2025
cf76cd8
bump go to 1.24.12
BenTheElder Jan 22, 2026
a0f2539
reorder kube-cross to be under go version and dedupe it from the go v…
BenTheElder Oct 8, 2025
9493816
remove blank line between comments and entry
BenTheElder Oct 8, 2025
ddfb1c1
kubelet(dra): fix multiple claims handling
rogowski-piotr Dec 23, 2025
6af7de8
test(e2e/dra): add test for pod requesting allocated and new claims
rogowski-piotr Jan 6, 2026
c356771
fix(expansion):Resolve the issue of UTF-8 characters being truncated,…
AutuSnow Jan 19, 2026
dacc725
test(ut/dra): add unit test for pod requesting prepared and new claims
rogowski-piotr Jan 14, 2026
d9da8e2
fix(kubelet): convert V().Error() to V().Info() for verbosity-aware l…
thc1006 Jan 22, 2026
af0e9bb
DRA scheduler: fix one root cause of double device allocation
pohly Jan 16, 2026
e4b5d3c
DRA scheduler: fix another root cause of double device allocation
pohly Jan 16, 2026
d71e0dc
csi: raise kubelet CSI init backoff to cover ~140s DNS delays
RomanBednar Jan 13, 2026
766a195
Merge pull request #136440 from BenTheElder/134-go1.24.12
k8s-ci-robot Jan 28, 2026
404bf4b
test: Read /proc/net/nf_conntrack instead of using conntrack binary
dims Jan 25, 2026
5d4cdfd
test: Fix KubeProxy CLOSE_WAIT test for IPv6 environments
dims Jan 26, 2026
77976dc
test: cleanup from review
dims Jan 27, 2026
4c53327
Apparently some EC2 images we use do not have /proc/net/nf_conntrack
dims Jan 27, 2026
0cfcccf
Merge pull request #136635 from dims/automated-cherry-pick-of-#136529…
k8s-ci-robot Jan 29, 2026
86f29bf
Bump dependencies, images and versions used to Go 1.24.12 and distrol…
cpanato Jan 23, 2026
7dc238b
Merge pull request #136467 from cpanato/update-go-1256-rel134
k8s-ci-robot Jan 31, 2026
5caaead
Merge pull request #136374 from princepereira/automated-cherry-pick-o…
k8s-ci-robot Feb 5, 2026
8e110c6
Merge pull request #136433 from thc1006/cherry-pick-136028-release-1.34
k8s-ci-robot Feb 5, 2026
976ffc7
Merge pull request #136566 from pohly/automated-cherry-pick-of-#13626…
k8s-ci-robot Feb 5, 2026
2a5c6bb
Merge pull request #136142 from shwetha-s-poojary/automated-cherry-pi…
k8s-ci-robot Feb 5, 2026
62627f5
Merge pull request #136594 from RomanBednar/automated-cherry-pick-of-…
k8s-ci-robot Feb 5, 2026
36b7bc8
Merge pull request #136364 from dlipovetsky/automated-cherry-pick-of-…
k8s-ci-robot Feb 5, 2026
e718109
Merge pull request #136480 from rogowski-piotr/automated-cherry-pick-…
k8s-ci-robot Feb 6, 2026
cc6bd01
Merge pull request #136490 from AutuSnow/automated-cherry-pick-of-#13…
k8s-ci-robot Feb 6, 2026
14507e2
Release commit for Kubernetes v1.34.4
k8s-release-robot Feb 10, 2026
23b2b43
Merge tag 'v1.34.4' into release-4.22
jubittajohn Feb 16, 2026
6c61d72
UPSTREAM: <drop>: hack/update-vendor.sh, make update and update image
jubittajohn Feb 16, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .go-version
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.24.9
1.24.12
355 changes: 300 additions & 55 deletions CHANGELOG/CHANGELOG-1.34.md

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion build/build-image/cross/VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
v1.34.0-go1.24.9-bullseye.0
v1.34.0-go1.24.12-bullseye.0
6 changes: 3 additions & 3 deletions build/common.sh
Original file line number Diff line number Diff line change
Expand Up @@ -97,8 +97,8 @@ readonly KUBE_RSYNC_PORT="${KUBE_RSYNC_PORT:-}"
readonly KUBE_CONTAINER_RSYNC_PORT=8730

# These are the default versions (image tags) for their respective base images.
readonly __default_distroless_iptables_version=v0.7.11
readonly __default_go_runner_version=v2.4.0-go1.24.9-bookworm.0
readonly __default_distroless_iptables_version=v0.7.14
readonly __default_go_runner_version=v2.4.0-go1.24.12-bookworm.0
readonly __default_setcap_version=bookworm-v1.0.6

# These are the base images for the Docker-wrapped binaries.
Expand Down Expand Up @@ -621,7 +621,7 @@ function kube::build::start_rsyncd_container() {
fi

local container_ip
container_ip=$("${DOCKER[@]}" inspect --format '{{ .NetworkSettings.IPAddress }}' "${KUBE_RSYNC_CONTAINER_NAME}")
container_ip=$("${DOCKER[@]}" inspect --format '{{range .NetworkSettings.Networks}}{{.IPAddress}},{{end}}' "${KUBE_RSYNC_CONTAINER_NAME}" | cut -d',' -f1)

# Sometimes we can reach rsync through localhost and a NAT'd port. Other
# times (when we are running in another docker container on the Jenkins
Expand Down
25 changes: 15 additions & 10 deletions build/dependencies.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -113,31 +113,36 @@ dependencies:
# Golang
# TODO: this should really be eliminated and controlled by .go-version
- name: "golang: upstream version"
version: 1.24.9
version: 1.24.12
refPaths:
- path: .go-version
- path: build/build-image/cross/VERSION
- path: staging/publishing/rules.yaml
match: 'default-go-version\: \d+.\d+(alpha|beta|rc)?\.?(\d+)?'

# This should ideally be updated to match the golang version
# but we can dynamically fetch go if the base image is out of date.
# This allows us to ship go updates more quickly.
#
# NOTE: To fully patch all binaries, go-runner and the related base images
# should also be updated, but go-runner is much harder to exploit and has
# far less relevancy to go updates for Kubernetes more generally.
- name: "registry.k8s.io/kube-cross: dependents"
version: v1.34.0-go1.24.12-bullseye.0
refPaths:
- path: build/build-image/cross/VERSION

# Golang pre-releases are denoted as `1.y<pre-release stage>`
# Example: go1.16rc1
#
# This entry is a stub of the major version to allow dependency checks to
# pass when building Kubernetes using a pre-release of Golang.

- name: "golang: 1.<major>"
version: 1.24
refPaths:
- path: build/build-image/cross/VERSION
- path: hack/lib/golang.sh
match: minimum_go_version=go([0-9]+\.[0-9]+)

- name: "registry.k8s.io/kube-cross: dependents"
version: v1.34.0-go1.24.9-bullseye.0
refPaths:
- path: build/build-image/cross/VERSION

# Base images
- name: "registry.k8s.io/debian-base: dependents"
version: bookworm-v1.0.6
Expand Down Expand Up @@ -170,15 +175,15 @@ dependencies:
match: registry\.k8s\.io\/build-image\/debian-base:[a-zA-Z]+\-v((([0-9]+)\.([0-9]+)\.([0-9]+)(?:-([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)(?:\+([0-9a-zA-Z-]+(?:\.[0-9a-zA-Z-]+)*))?)

- name: "registry.k8s.io/distroless-iptables: dependents"
version: v0.7.11
version: v0.7.14
refPaths:
- path: build/common.sh
match: __default_distroless_iptables_version=
- path: test/utils/image/manifest.go
match: configs\[DistrolessIptables\] = Config{list\.BuildImageRegistry, "distroless-iptables", "v([0-9]+)\.([0-9]+)\.([0-9]+)"}

- name: "registry.k8s.io/go-runner: dependents"
version: v2.4.0-go1.24.9-bookworm.0
version: v2.4.0-go1.24.12-bookworm.0
refPaths:
- path: build/common.sh
match: __default_go_runner_version=
Expand Down
3 changes: 3 additions & 0 deletions cmd/kubeadm/app/apis/kubeadm/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -165,6 +165,7 @@ type ControlPlaneComponent struct {
// An argument name in this list is the flag name as it appears on the
// command line except without leading dash(es). Extra arguments will override existing
// default arguments. Duplicate extra arguments are allowed.
// The default arguments are sorted alpha-numerically but the extra arguments are not.
ExtraArgs []Arg

// ExtraVolumes is an extra set of host volumes, mounted to the control plane component.
Expand Down Expand Up @@ -247,6 +248,7 @@ type NodeRegistrationOptions struct {
// Flags have higher priority when parsing. These values are local and specific to the node kubeadm is executing on.
// An argument name in this list is the flag name as it appears on the command line except without leading dash(es).
// Extra arguments will override existing default arguments. Duplicate extra arguments are allowed.
// The default arguments are sorted alpha-numerically but the extra arguments are not.
KubeletExtraArgs []Arg

// IgnorePreflightErrors provides a slice of pre-flight errors to be ignored when the current node is registered, e.g. 'IsPrivilegedUser,Swap'.
Expand Down Expand Up @@ -298,6 +300,7 @@ type LocalEtcd struct {
// An argument name in this list is the flag name as it appears on the
// command line except without leading dash(es). Extra arguments will override existing
// default arguments. Duplicate extra arguments are allowed.
// The default arguments are sorted alpha-numerically but the extra arguments are not.
ExtraArgs []Arg

// ExtraEnvs is an extra set of environment variables to pass to the control plane component.
Expand Down
3 changes: 3 additions & 0 deletions cmd/kubeadm/app/apis/kubeadm/v1beta4/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -170,6 +170,7 @@ type ControlPlaneComponent struct {
// An argument name in this list is the flag name as it appears on the
// command line except without leading dash(es). Extra arguments will override existing
// default arguments. Duplicate extra arguments are allowed.
// The default arguments are sorted alpha-numerically but the extra arguments are not.
// +optional
ExtraArgs []Arg `json:"extraArgs,omitempty"`

Expand Down Expand Up @@ -260,6 +261,7 @@ type NodeRegistrationOptions struct {
// Flags have higher priority when parsing. These values are local and specific to the node kubeadm is executing on.
// An argument name in this list is the flag name as it appears on the command line except without leading dash(es).
// Extra arguments will override existing default arguments. Duplicate extra arguments are allowed.
// The default arguments are sorted alpha-numerically but the extra arguments are not.
// +optional
KubeletExtraArgs []Arg `json:"kubeletExtraArgs,omitempty"`

Expand Down Expand Up @@ -321,6 +323,7 @@ type LocalEtcd struct {
// An argument name in this list is the flag name as it appears on the
// command line except without leading dash(es). Extra arguments will override existing
// default arguments. Duplicate extra arguments are allowed.
// The default arguments are sorted alpha-numerically but the extra arguments are not.
// +optional
ExtraArgs []Arg `json:"extraArgs,omitempty"`

Expand Down
3 changes: 0 additions & 3 deletions cmd/kubeadm/app/cmd/phases/join/controlplanejoin.go
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,6 @@ func NewEtcdJoinPhase() workflow.Phase {
Example: etcdJoinExample,
InheritFlags: getControlPlaneJoinPhaseFlags("etcd"),
ArgsValidator: cobra.NoArgs,
// TODO: unhide this phase once ControlPlaneKubeletLocalMode goes GA:
// https://github.com/kubernetes/enhancements/issues/4471
Hidden: true,
// Only run this phase as if `ControlPlaneKubeletLocalMode` is activated.
RunIf: func(c workflow.RunData) (bool, error) {
return checkFeatureState(c, features.ControlPlaneKubeletLocalMode, true)
Expand Down
5 changes: 1 addition & 4 deletions cmd/kubeadm/app/util/apiclient/idempotency.go
Original file line number Diff line number Diff line change
Expand Up @@ -192,10 +192,7 @@ func PatchNodeOnce(client clientset.Interface, nodeName string, patchFn func(*v1

if _, err := client.CoreV1().Nodes().Patch(ctx, n.Name, types.StrategicMergePatchType, patchBytes, metav1.PatchOptions{}); err != nil {
*lastError = errors.Wrapf(err, "error patching Node %q", n.Name)
if apierrors.IsTimeout(err) || apierrors.IsConflict(err) || apierrors.IsServerTimeout(err) || apierrors.IsServiceUnavailable(err) {
return false, nil
}
return false, *lastError
return false, nil
}

return true, nil
Expand Down
48 changes: 0 additions & 48 deletions cmd/kubeadm/app/util/apiclient/idempotency_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -386,54 +386,6 @@ func TestPatchNodeOnce(t *testing.T) {
},
success: false,
},
{
name: "patch node when timeout",
lookupName: "testnode",
node: v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "testnode",
Labels: map[string]string{v1.LabelHostname: ""},
},
},
success: false,
fakeError: apierrors.NewTimeoutError("fake timeout", -1),
},
{
name: "patch node when conflict",
lookupName: "testnode",
node: v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "testnode",
Labels: map[string]string{v1.LabelHostname: ""},
},
},
success: false,
fakeError: apierrors.NewConflict(schema.GroupResource{}, "fake conflict", nil),
},
{
name: "patch node when there is a server timeout",
lookupName: "testnode",
node: v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "testnode",
Labels: map[string]string{v1.LabelHostname: ""},
},
},
success: false,
fakeError: apierrors.NewServerTimeout(schema.GroupResource{}, "fake server timeout", 1),
},
{
name: "patch node when the service is unavailable",
lookupName: "testnode",
node: v1.Node{
ObjectMeta: metav1.ObjectMeta{
Name: "testnode",
Labels: map[string]string{v1.LabelHostname: ""},
},
},
success: false,
fakeError: apierrors.NewServiceUnavailable("fake service unavailable"),
},
{
name: "patch node failed with unknown error",
lookupName: "testnode",
Expand Down
48 changes: 26 additions & 22 deletions cmd/kubeadm/app/util/arguments.go
Original file line number Diff line number Diff line change
Expand Up @@ -29,37 +29,34 @@ import (
)

// ArgumentsToCommand takes two Arg slices, one with the base arguments and one
// with optional override arguments. In the return list override arguments will precede base
// arguments. If an argument is present in the overrides, it will cause
// with optional override arguments. In the return list, base arguments will precede
// override arguments. If an argument is present in the overrides, it will cause
// all instances of the same argument in the base list to be discarded, leaving
// only the instances of this argument in the overrides to be applied.
func ArgumentsToCommand(base []kubeadmapi.Arg, overrides []kubeadmapi.Arg) []string {
var command []string
// Copy the overrides arguments into a new slice.
args := make([]kubeadmapi.Arg, len(overrides))
copy(args, overrides)
func ArgumentsToCommand(base, overrides []kubeadmapi.Arg) []string {
// Sort only the base.
sortArgsSlice(&base)

// overrideArgs is a set of args which will replace the args defined in the base
// Collect all overrides in a set.
overrideArgs := sets.New[string]()
for _, arg := range overrides {
overrideArgs.Insert(arg.Name)
}

// Append only the base args that do not have overrides.
args := make([]kubeadmapi.Arg, 0, len(base)+len(overrides))
for _, arg := range base {
if !overrideArgs.Has(arg.Name) {
args = append(args, arg)
}
}

sort.Slice(args, func(i, j int) bool {
if args[i].Name == args[j].Name {
return args[i].Value < args[j].Value
}
return args[i].Name < args[j].Name
})
// Append the overrides.
args = append(args, overrides...)

for _, arg := range args {
command = append(command, fmt.Sprintf("--%s=%s", arg.Name, arg.Value))
command := make([]string, len(args))
for i, arg := range args {
command[i] = fmt.Sprintf("--%s=%s", arg.Name, arg.Value)
}

return command
Expand All @@ -85,12 +82,8 @@ func ArgumentsFromCommand(command []string) []kubeadmapi.Arg {
args = append(args, kubeadmapi.Arg{Name: key, Value: val})
}

sort.Slice(args, func(i, j int) bool {
if args[i].Name == args[j].Name {
return args[i].Value < args[j].Value
}
return args[i].Name < args[j].Name
})
sortArgsSlice(&args)

return args
}

Expand All @@ -117,3 +110,14 @@ func parseArgument(arg string) (string, string, error) {

return keyvalSlice[0], keyvalSlice[1], nil
}

// sortArgsSlice sorts a slice of Args alpha-numerically.
func sortArgsSlice(argsPtr *[]kubeadmapi.Arg) {
args := *argsPtr
sort.Slice(args, func(i, j int) bool {
if args[i].Name == args[j].Name {
return args[i].Value < args[j].Value
}
return args[i].Name < args[j].Name
})
}
Loading