Commit Graph

129649 Commits

Author SHA1 Message Date
Kubernetes Prow Robot
04e0a33303 Merge pull request #138151 from liggitt/go-1-25-release-1-33
[release-1.33] Bump to go 1.25.8
2026-04-09 16:28:27 +05:30
Kubernetes Prow Robot
b21f28f0ec Merge pull request #137677 from haojiwu/cherry-pick-137147-release-1.33
[release-1.33] Fix RepairIPAddress controller startup failure when namespace informer is not yet synced
2026-04-09 16:28:20 +05:30
Kubernetes Prow Robot
151cebbbef Merge pull request #137998 from varshadeshmane92/automated-cherry-pick-of-#133624-upstream-release-1.33
Automated cherry pick of #133624: Fix flaking RunTestDelayedWatchDelivery
2026-04-09 14:13:34 +05:30
Jordan Liggitt
a4cc2ce4c2 Bump to go 1.25 2026-04-01 17:20:17 -04:00
Davanum Srinivas
8489a1d821 bump golang.org/x/vuln/cmd/govulncheck to v1.1.4
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2026-04-01 16:56:59 -04:00
Marek Siarkowicz
a4f94edc37 Fix flaking RunTestDelayedWatchDelivery 2026-03-24 02:47:04 -07:00
Kubernetes Prow Robot
594c1ef261 Merge pull request #137809 from danwinship/automated-cherry-pick-of-#137501-origin-release-1.33
Automated cherry pick of #137501: Fix kube-proxy on systems with nft 1.1.3 (take 2)
2026-03-19 18:08:31 +05:30
Kubernetes Release Robot
ce78d2290a Update CHANGELOG/CHANGELOG-1.33.md for v1.33.10 2026-03-18 18:40:20 +00:00
Kubernetes Release Robot
51a8c572b0 Release commit for Kubernetes v1.33.10 v1.33.10 2026-03-18 18:28:16 +00:00
Alessio Attilio
b5f44064ef pkg/proxy/nftables: fix kube-proxy crash with newer nftables versions
Fixes kube-proxy's nftables mode to work on systems with nft 1.1.3.
2026-03-17 08:15:03 -04:00
Dan Winship
cdf6c75481 Update knftables to v0.0.21 2026-03-17 08:15:03 -04:00
haojiwu
6046458062 Fix RepairIPAddress controller startup failure when namespace informer is not yet synced
Cherry-pick of https://github.com/kubernetes/kubernetes/pull/137147
2026-03-12 13:10:38 -07:00
Kubernetes Prow Robot
391e36f94a Merge pull request #137646 from BenTheElder/no-rules-1.33
drop publishing rules from dependencies.yaml on release-1.33
2026-03-12 11:45:35 +05:30
Benjamin Elder
dd3efcf7a9 drop publishing rules from dependencies.yaml on release branch
We only use the rules in the master branch.

Since we don't need rules.yaml, we don't have two places to match, so we can drop the golang version entirely from this file

bump .go-version alone will be sufficient* on release branches after kubernetes#136954

* ignoring e2e images like agnhost, which will require follow-up PRs ...
2026-03-11 12:59:05 -07:00
Benjamin Elder
f6bd39f561 test/images: read .go-version instead of duplicating 2026-03-11 12:58:50 -07:00
Kubernetes Prow Robot
2a93544e66 Merge pull request #137571 from fuweid/cp-1374942-133
[release-1.33] cmd/kubeadm: ignore EINVAL error during unmount
2026-03-12 01:01:37 +05:30
Kubernetes Prow Robot
53aa6939bd Merge pull request #136958 from lalitc375/automated-cherry-pick-of-#135155-origin-release-1.33
Automated cherry pick of #135155: Fix NPE in CEL schema wrappers of additionalProperties=true objects
2026-03-11 20:45:37 +05:30
Kubernetes Prow Robot
1dce07cee9 Merge pull request #137259 from ahrtr/automated-cherry-pick-of-#137251-upstream-release-1.33
Automated cherry pick of #137251: kubeadm: do not add learner member to etcd client endpoints
2026-03-11 15:59:39 +05:30
Wei Fu
40cd0abf43 cmd/kubeadm: ignore EINVAL error during unmount
If /var/lib/kubelet is MS_SHARED mountpoint, all the mountpoints
under /var/lib/kubelet will have duplicate one. When `kubeadm reset -f`
is executed, it will try to umount one path twice. However, they are in
the peer group. Once we umount one path, the duplicate one will be
umounted as well. So, in this case, we should ignore EINVAL error.

Signed-off-by: Wei Fu <fuweid89@gmail.com>
(cherry picked from commit 2634261c17)
Signed-off-by: Wei Fu <fuweid89@gmail.com>
2026-03-09 10:26:36 -04:00
Kubernetes Prow Robot
12a07614d0 Merge pull request #136902 from varshadeshmane92/automated-cherry-pick-of-#134754-upstream-release-1.33
Automated cherry pick of #134754: Use fast policy refresh interval for TestParamRef
2026-03-03 17:07:19 +05:30
Kubernetes Release Robot
68e7373bef Update CHANGELOG/CHANGELOG-1.33.md for v1.33.9 2026-02-26 20:31:46 +00:00
Kubernetes Release Robot
69220b6175 Release commit for Kubernetes v1.33.9 v1.33.9 2026-02-26 20:19:41 +00:00
Paco Xu
67f0efebf1 kubeadm: do not add learner member to etcd client endpoints 2026-02-26 10:31:21 +00:00
Kubernetes Prow Robot
d5a491b925 Merge pull request #136983 from cpanato/update-go-rel133
[release-1.33] [go] Bump images and versions to go 1.24.13 and distroless iptables
2026-02-12 20:54:02 +05:30
Carlos Panato
e4aef7c315 Bump images and versions to go 1.24.13 and distroless iptables
Signed-off-by: Carlos Panato <ctadeu@gmail.com>
2026-02-12 14:07:59 +01:00
Joe Betz
de4e04baf6 Fix NPE in CEl accessors of additionalProperties=true objects 2026-02-11 22:10:26 +00:00
Kubernetes Release Robot
e95f580e5a Update CHANGELOG/CHANGELOG-1.33.md for v1.33.8 2026-02-10 13:05:56 +00:00
Kubernetes Release Robot
5adfc48e19 Release commit for Kubernetes v1.33.8 v1.33.8 2026-02-10 12:54:00 +00:00
Joe Betz
8184dd6886 Use fast policy refresh interval for TestParamRef 2026-02-09 23:21:41 -08:00
Kubernetes Prow Robot
87e1a6154c Merge pull request #136365 from dlipovetsky/automated-cherry-pick-of-#136014-upstream-release-1.33
Automated cherry pick of #136014: kubeadm: waiting for etcd learner member to be started before promoting during 'kubeadm join'
2026-02-06 03:26:30 +05:30
Kubernetes Prow Robot
dc72324ffd Merge pull request #136595 from RomanBednar/automated-cherry-pick-of-#136202-upstream-release-1.33
Automated cherry pick of #136202: csi: raise kubelet CSI init backoff to cover ~140s DNS delays
2026-02-05 20:44:33 +05:30
Kubernetes Prow Robot
c94b79f22d Merge pull request #136565 from pohly/automated-cherry-pick-of-#136269-origin-release-1.33
Automated cherry pick of #136269: DRA scheduler: double allocation fixes
2026-02-05 19:32:39 +05:30
Kubernetes Prow Robot
24d42be054 Merge pull request #136434 from thc1006/cherry-pick-136028-release-1.33
[release-1.33] fix(kubelet): convert V().Error() to V().Info() for verbosity-aware logging
2026-02-05 19:32:31 +05:30
Kubernetes Prow Robot
b50c7f32b7 Merge pull request #136375 from princepereira/automated-cherry-pick-of-#136241-upstream-release-1.33
Automated cherry pick of #136241: Fix for preferred dualstack and required dualstack in winkernel proxier.
2026-02-05 18:14:32 +05:30
Kubernetes Prow Robot
59cb443824 Merge pull request #136468 from cpanato/update-go-1256-rel133
[release-1.33] [go] Bump dependencies, images and versions used to Go 1.24.12 and distroless iptables
2026-01-31 13:22:25 +05:30
Carlos Panato
9067f06e36 Bump dependencies, images and versions used to Go 1.24.12 and distroless iptables
Signed-off-by: Carlos Panato <ctadeu@gmail.com>
2026-01-30 11:13:21 +01:00
Kubernetes Prow Robot
f184c13310 Merge pull request #136636 from dims/automated-cherry-pick-of-#136529-#136554-upstream-release-1.33
Automated cherry pick of #136529: test: Read /proc/net/nf_conntrack instead of using conntrack binary
#136554: test: Fix KubeProxy CLOSE_WAIT test for IPv6 environments (and where /proc/net/nf_conntrack may be missing)
2026-01-30 14:33:43 +05:30
Davanum Srinivas
7be92699ea Apparently some EC2 images we use do not have /proc/net/nf_conntrack
Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2026-01-29 15:02:43 -05:00
Davanum Srinivas
1479c62a20 test: cleanup from review
- Use netutils.IsIPv6(ip) instead of manual nil/To4 check
- Remove unnecessary ip.To16() call since IPv6 is already 16 bytes
- Remove ipFamily from grep pattern since IP format ensures correctness

Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2026-01-29 15:02:43 -05:00
Davanum Srinivas
727969bb68 test: Fix KubeProxy CLOSE_WAIT test for IPv6 environments
The /proc/net/nf_conntrack file uses fully expanded IPv6 addresses
with leading zeros in each 16-bit group. For example:
  fc00:f853:ccd:e793::3 -> fc00:f853:0ccd:e793:0000:0000:0000:0003

Add expandIPv6ForConntrack() helper function to expand IPv6 addresses
to the format used by /proc/net/nf_conntrack before using them in
the grep pattern.

Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2026-01-29 15:02:43 -05:00
Davanum Srinivas
2e3a2fa222 test: Read /proc/net/nf_conntrack instead of using conntrack binary
The distroless-iptables image no longer includes the conntrack binary
as of v0.8.7 (removed in kubernetes/release#4223 since kube-proxy no
longer needs it after kubernetes#126847).

Update the KubeProxy CLOSE_WAIT timeout test to read /proc/net/nf_conntrack
directly instead of using the conntrack command. The file contains the
same connection tracking data and is accessible from the privileged
host-network pod.

Signed-off-by: Davanum Srinivas <davanum@gmail.com>
2026-01-29 15:02:41 -05:00
Roman Bednar
c45940ecdb csi: raise kubelet CSI init backoff to cover ~140s DNS delays
- bump init backoff to Duration=30ms, Factor=8 (Steps=6) to yield ~140s total
- prevent kubelet restarts when DNS is blackholed and NSS must fall back to myhostname
- keep CSI/CSINode initialization alive long enough to complete in ARO DNS-failure scenarios
2026-01-28 11:49:07 +01:00
Patrick Ohly
ba81d3040d DRA scheduler: fix another root cause of double device allocation
GatherAllocatedState and ListAllAllocatedDevices need to collect information
from different sources (allocated devices, in-flight claims), potentially even
multiple times (GatherAllocatedState first gets allocated devices, then the
capacities).

The underlying assumption that nothing bad happens in parallel is not always
true. The following log snippet shows how an update of the assume
cache (feeding the allocated devices tracker) and in-flight claims lands such
that GatherAllocatedState doesn't see the device in that claim as allocated:

    dra_manager.go:263: I0115 15:11:04.407714      18778] scheduler: Starting GatherAllocatedState
    ...
    allocateddevices.go:189: I0115 15:11:04.407945      18066] scheduler: Observed device allocation device="testdra-all-usesallresources-hvs5d.driver/worker-5/worker-5-device-094" claim="testdra-all-usesallresources-hvs5d/claim-0553"
    dynamicresources.go:1150: I0115 15:11:04.407981      89109] scheduler: Claim stored in assume cache pod="testdra-all-usesallresources-hvs5d/my-pod-0553" claim="testdra-all-usesallresources-hvs5d/claim-0553" uid=<types.UID>: a84d3c4d-f752-4cfd-8993-f4ce58643685 resourceVersion="5680"
    dra_manager.go:201: I0115 15:11:04.408008      89109] scheduler: Removed in-flight claim claim="testdra-all-usesallresources-hvs5d/claim-0553" uid=<types.UID>: a84d3c4d-f752-4cfd-8993-f4ce58643685 version="1211"
    dynamicresources.go:1157: I0115 15:11:04.408044      89109] scheduler: Removed claim from in-flight claims pod="testdra-all-usesallresources-hvs5d/my-pod-0553" claim="testdra-all-usesallresources-hvs5d/claim-0553" uid=<types.UID>: a84d3c4d-f752-4cfd-8993-f4ce58643685 resourceVersion="5680" allocation=<
        	{
        	  "devices": {
        	    "results": [
        	      {
        	        "request": "req-1",
        	        "driver": "testdra-all-usesallresources-hvs5d.driver",
        	        "pool": "worker-5",
        	        "device": "worker-5-device-094"
        	      }
        	    ]
        	  },
        	  "nodeSelector": {
        	    "nodeSelectorTerms": [
        	      {
        	        "matchFields": [
        	          {
        	            "key": "metadata.name",
        	            "operator": "In",
        	            "values": [
        	              "worker-5"
        	            ]
        	          }
        	        ]
        	      }
        	    ]
        	  },
        	  "allocationTimestamp": "2026-01-15T14:11:04Z"
        	}
         >
    dra_manager.go:280: I0115 15:11:04.408085      18778] scheduler: Device is in flight for allocation device="testdra-all-usesallresources-hvs5d.driver/worker-5/worker-5-device-095" claim="testdra-all-usesallresources-hvs5d/claim-0086"
    dra_manager.go:280: I0115 15:11:04.408137      18778] scheduler: Device is in flight for allocation device="testdra-all-usesallresources-hvs5d.driver/worker-5/worker-5-device-096" claim="testdra-all-usesallresources-hvs5d/claim-0165"
    default_binder.go:69: I0115 15:11:04.408175      89109] scheduler: Attempting to bind pod to node pod="testdra-all-usesallresources-hvs5d/my-pod-0553" node="worker-5"
    dra_manager.go:265: I0115 15:11:04.408264      18778] scheduler: Finished GatherAllocatedState allocatedDevices=<map[string]interface {} | len:2>: {

Initial state: "worker-5-device-094" is in-flight, not in cache
- goroutine #1: starts GatherAllocatedState, copies cache
- goroutine #2: adds to assume cache, removes from in-flight
- goroutine #1: checks in-flight

=> device never seen as allocated

This is the second reason for double allocation of the same device in two
different claims. The other was timing in the assume cache. Both were
tracked down with an integration test (separate commit). It did not fail
all the time, but enough that regressions should show up as flakes.
2026-01-27 14:44:04 +01:00
Patrick Ohly
75fd186e7a DRA scheduler: fix one root cause of double device allocation
DRA depends on the assume cache having invoked all event handlers before
Assume() returns, because DRA maintains state that is relevant for scheduling
through those event handlers.

This log snippet shows how this went wrong during PreBind:

    dynamicresources.go:1150: I0115 10:35:29.264437] scheduler: Claim stored in assume cache pod="testdra-all-usesallresources-kqjpj/my-pod-0091" claim="testdra-all-usesallresources-kqjpj/claim-0091" uid=<types.UID>: 516f274f-e1a9-4a4b-b7d2-bb86138e4240 resourceVersion="5636"
    dra_manager.go:198: I0115 10:35:29.264448] scheduler: Removed in-flight claim claim="testdra-all-usesallresources-kqjpj/claim-0091" uid=<types.UID>: 516f274f-e1a9-4a4b-b7d2-bb86138e4240 version="287"
    dynamicresources.go:1157: I0115 10:35:29.264463] scheduler: Removed claim from in-flight claims pod="testdra-all-usesallresources-kqjpj/my-pod-0091" claim="testdra-all-usesallresources-kqjpj/claim-0091" uid=<types.UID>: 516f274f-e1a9-4a4b-b7d2-bb86138e4240 resourceVersion="5636" allocation=<
    ...
    allocateddevices.go:189: I0115 10:35:29.267315] scheduler: Observed device allocation device="testdra-all-usesallresources-kqjpj.driver/worker-1/worker-1-device-096" claim="testdra-all-usesallresources-kqjpj/claim-0091"

- goroutine #1: UpdateStatus result delivered via informer.
  AssumeCache updates cache, pushes event A, emitEvents pulls event A from queue.
  *Not* done with delivering it yet!
- goroutine #2: AssumeCache.Assume called. Updates cache, pushes event B, emits it.
  Old and new claim have allocation, so no "Observed device allocation".
- goroutine #3: Schedules next pod, without considering device as allocated (not in the log snippet).
- goroutine #1: Finally delivers event A: "Observed device allocation", but too late.

Also, events are delivered out-of-order.

The fix is to let emitEvents when called by Assume wait for a potentially
running emitEvents in some other goroutine, thus ensuring that an event pulled
out of the queue by that other goroutine got delivered before Assume itself
checks the queue one more time and then returns.

The time window were things go wrong is small. An E2E test covering this only
flaked rarely, and only in the CI. An integration test (separate commit) with
higher number of pods finally made it possible to reproduce locally. It also
uncovered a second race (fix in separate commit).

The unit test fails without the fix:

    === RUN   TestAssumeConcurrency
        assume_cache_test.go:311: FATAL ERROR:
            	Assume should have blocked and didn't.
    --- FAIL: TestAssumeConcurrency (0.00s)
2026-01-27 14:44:03 +01:00
thc1006
dc42de643f fix(kubelet): convert V().Error() to V().Info() for verbosity-aware logging
This PR fixes incorrect usage of `logger.V(N).Error()` in the kubelet
package. The go-logr package design causes `Error()` calls to bypass
verbosity level checks entirely, meaning these logs are always printed
regardless of the configured verbosity level.

Note: In release-1.33, only pleg/generic.go uses contextual logging
(logger.V().Error). All other files use klog.V().ErrorS() which properly
respects verbosity levels, so they are NOT changed in this cherry-pick.

Files modified (1 file, 1 instance):
- pkg/kubelet/pleg/generic.go

Conversion pattern applied:
- g.logger.V(N).Error(err, "msg", ...) → g.logger.V(N).Info("msg", ..., "err", err)

Fixes: https://github.com/kubernetes/kubernetes/issues/136027
Cherry-pick of: https://github.com/kubernetes/kubernetes/pull/136028

Signed-off-by: thc1006 <84045975+thc1006@users.noreply.github.com>
2026-01-27 00:01:46 +00:00
Prince Pereira
f00408bb42 Fix for preferred dualstack and required dualstack in winkernel proxier. 2026-01-21 05:41:34 +00:00
SataQiu
7a092c63d9 kubeadm: waiting for etcd learner member to be started before promoting during 'kubeadm join' 2026-01-20 16:01:08 -08:00
Kubernetes Prow Robot
41b9b1f939 Merge pull request #136172 from jsafrane/automated-cherry-pick-of-#135629-upstream-release-1.33
Automated cherry pick of #135629: selinux: Fix the controller to ignore finished pods
2026-01-13 21:55:37 +05:30
Jan Safranek
7c5a9b9833 Add unit test with CSIDriver.SELinuxMount=false
Add unit test with a volume plugin that does not support SELinux. That
simulates a CSi driver whose spec.SELinuxMount is empty or false.

This requires a little refactoring, each unit test now has a flag if it
runs with a volume plugin that supports SELinux.
2026-01-12 14:48:14 +01:00
Jan Safranek
aa6b40b2aa Added e2e tests with disabled SELinux
Added few tests with a CSI driver that does not support SELinux and has it
disabled in its CSIDriver instance
2026-01-12 14:48:14 +01:00