Commit Graph

11623 Commits

Author SHA1 Message Date
Patrick Ohly
80ab8f0542 dra: handle scheduled pods in kube-controller-manager
When someone decides that a Pod should definitely run on a specific node, they
can create the Pod with spec.nodeName already set. Some custom scheduler might
do that. Then kubelet starts to check the pod and (if DRA is enabled) will
refuse to run it, either because the claims are still waiting for the first
consumer or the pod wasn't added to reservedFor. Both are things the scheduler
normally does.

Also, if a pod got scheduled while the DRA feature was off in the
kube-scheduler, a pod can reach the same state.

The resource claim controller can handle these two cases by taking over for the
kube-scheduler when nodeName is set. Triggering an allocation is simpler than
in the scheduler because all it takes is creating the right
PodSchedulingContext with spec.selectedNode set. There's no need to list nodes
because that choice was already made, permanently. Adding the pod to
reservedFor also isn't hard.

What's currently missing is triggering de-allocation of claims to re-allocate
them for the desired node. This is not important for claims that get created
for the pod from a template and then only get used once, but it might be
worthwhile to add de-allocation in the future.
2023-07-13 21:27:11 +02:00
Kubernetes Prow Robot
5130dad2cf Merge pull request #118408 from danwinship/local-detector
kube-proxy local traffic detector single-vs-dual-stack cleanup
2023-07-11 21:19:11 -07:00
Kubernetes Prow Robot
50782ce5ab Merge pull request #119198 from jadhaj/fix-115385
Document address family of listening INET sockets
2023-07-11 03:19:23 -07:00
Kubernetes Prow Robot
8f1852bb44 Merge pull request #115295 from Namanl2001/pkg/controller/endpointslice
Migrated `pkg/controller/endpointslice` and `pkg/controller/endpointslicemirroring` to contextual logging
2023-07-11 03:19:12 -07:00
Kubernetes Prow Robot
42e1e72105 Merge pull request #119130 from SataQiu/clean-sheduler-20230706
Remove deprecated scheduler CLI flags
2023-07-10 14:03:11 -07:00
Naman
645cb90732 migrated pkg/controller/endpointslicemirroring to contextual logging
Signed-off-by: Naman <namanlakhwani@gmail.com>
2023-07-11 01:43:30 +05:30
Naman
09849b09cf migrated pkg/controller/endpointslice to contextual logging
Signed-off-by: Naman <namanlakhwani@gmail.com>
2023-07-11 01:28:22 +05:30
Jad Haj Yahya
de07643095 Document address family of listening INET sockets 2023-07-10 15:01:13 +03:00
SataQiu
3a5268502f Remove deprecated scheduler CLI flags 2023-07-07 23:33:33 +08:00
Kubernetes Prow Robot
6f9d1d38d8 Merge pull request #118817 from pohly/dra-delete-claims
DRA: improve handling of completed pods
2023-07-06 10:15:15 -07:00
Kubernetes Prow Robot
8c1bf4f461 Merge pull request #116930 from fatsheep9146/contextual-logging-cleanup
contextual logging cleanup
2023-07-06 07:39:03 -07:00
Kubernetes Prow Robot
e5efa0a5ee Merge pull request #117108 from pohly/test-integration-race-detection-component-base-logs
component-base/logs: improve handling of re-applying a configuration
2023-07-05 21:29:08 -07:00
Ziqi Zhao
dfc1838379 Migrated pkg/controller/volume|util|replicaset|nodeipam to contextual logging
Signed-off-by: Ziqi Zhao <zhaoziqi9146@gmail.com>
2023-07-06 07:39:52 +08:00
Patrick Ohly
02efe09abe component-base/logs: improve handling of re-applying a configuration
Normal binaries should never have to do this. It's not safe when there are
already some goroutines running which might do logging. Therefore the new
default is to return an error when a binary accidentally re-applies.

A few unit ensure that there are no goroutines and have to call the functions
more then once. The new ResetForTest API gets used by those to enable changing the
logging settings more than once in the same process.

Integration tests use the same code as the normal binaries. To make reuse of
that code safe, component-base/logs can be configured to silently ignore any
additional calls. This addresses data races that were found when enabling -race
for integration tests. To catch cases where the integration test does want
to modify the config, the old and new config get compared and an error is
raised when it's not the same.

To avoid having to modify all integration tests which start test servers,
reconfiguring component-base/logs is done by the test server packages.
2023-07-05 19:08:54 +02:00
Patrick Ohly
7f5a02fc7e dra resourceclaim controller: enhance logging
Adding logging to event handlers makes it more obvious why (or why not) claims
and pods need to be processed.
2023-07-05 16:10:20 +02:00
Dan Winship
e2900da46a Remove unnecessary utiliptables.Interface arg from local detectors
getLocalDetector() used to pass a utiliptables.Interface to
NewDetectLocalByCIDR() so that NewDetectLocalByCIDR() could verify
that the passed-in CIDR was of the same family as the iptables
interface. It would make more sense for getLocalDetector() to verify
this itself and just *not call NewDetectLocalByCIDR* if the families
don't match, and that's what the code does now. So there's no longer
any need to pass the utiliptables.Interface to the local detector.
2023-07-05 09:11:23 -04:00
Dan Winship
7690c6e812 Simplify getDualStackLocalDetectorTuple
Since the single-stack and dual-stack local-detector-getters now have
the same behavior in terms of error-checking and dual-stack config, we
can just replace the contents of getDualStackLocalDetectorTuple() with
a pair of calls to getLocalDetector().
2023-07-05 09:09:54 -04:00
Dan Winship
cefd50a753 Improve the single-stack LocalDetector behavior
1. When bringing up a single-stack kube-proxy in a dual-stack cluster,
allow using either the primary or secondary IP family.

2. Since the earlier config-checking code will already have bailed out
if the single-stack configuration is unusably broken, we don't need to
do that here. Instead, just return a no-op local detector if there are
no usable CIDRs of the expected IP family.
2023-07-05 09:06:25 -04:00
Dan Winship
bfccfa7016 Add names to the getLocalDetector unit tests, use t.Run 2023-07-05 09:06:25 -04:00
Kubernetes Prow Robot
4c18d40af1 Merge pull request #119075 from chendave/test_gv
kubeadm: check the GV after the config migration
2023-07-04 22:00:54 -07:00
Kubernetes Prow Robot
76227fdb3d Merge pull request #118874 from my-git9/dns-ut
kubeadm: increase ut coverage kubeadm/app/phases/dns
2023-07-04 19:30:54 -07:00
Dave Chen
31943cc3f4 kubeadm: check the GV after the config migration
Signed-off-by: Dave Chen <dave.chen@arm.com>
2023-07-05 10:04:12 +08:00
Kubernetes Prow Robot
68b7685b2a Merge pull request #119081 from sttts/sttts-public-ip-validation-move
kube-apiserver: move "public IP matches IP family" check to option validation
2023-07-04 14:28:54 -07:00
Dr. Stefan Schimanski
4149933ed2 kube-apiserver: move "public IP matches IP family" check to option validation 2023-07-04 22:28:27 +02:00
Kubernetes Prow Robot
8d0e46a5ec Merge pull request #119041 from sttts/sttts-move-back-master-count
cmd/kube-apiserver: move back master count variable from generic controlplane
2023-07-04 13:22:54 -07:00
Kubernetes Prow Robot
0235a5a206 Merge pull request #118707 from pacoxu/unwanted-status-order
update the unwanted-dependencies order
2023-07-04 12:20:54 -07:00
xin.li
c26e1ba10c [UT] increase coverage kubeadm/app/phases/dns
Signed-off-by: xin.li <xin.li@daocloud.io>
2023-07-04 22:11:32 +08:00
Kubernetes Prow Robot
3149875175 Merge pull request #119059 from pacoxu/migrate-experimental-v1beta4
kubeadm: fix "migrate config --allow-experimental-api" to print v1beta4 kubeadm configurations instead of v1beta3
2023-07-04 06:28:53 -07:00
Kubernetes Prow Robot
75889ecec5 Merge pull request #119003 from danwinship/proxy-single-dual
do a better job of validating IP family of kube-proxy config
2023-07-04 02:16:53 -07:00
Paco Xu
01b1174c11 kubeadm: fix "migrate config --allow-experimental-api" to print v1beta4 kubeadm configurations instead of v1beta3 2023-07-04 15:20:43 +08:00
Kubernetes Prow Robot
746b88c6ff Merge pull request #118867 from chendave/env_custom
kubeadm: Support custom env in control plane component
2023-07-03 22:02:52 -07:00
Dave Chen
c68a6b0745 kubeadm: fix fuzzing for ExtraEnvs defined in the control plane component
Signed-off-by: Dave Chen <dave.chen@arm.com>
2023-07-04 10:01:26 +08:00
Dave Chen
80b035a116 kubeadm: Support custom env in control plane component
Signed-off-by: Dave Chen <dave.chen@arm.com>
2023-07-04 09:57:07 +08:00
Dan Winship
a966d18608 Double-check the proxy configuration vs the available IP families 2023-07-03 08:34:06 -04:00
Dr. Stefan Schimanski
36e458612a cmd/kube-apiserver: move back master count variable from generic controlplane 2023-07-03 13:20:29 +02:00
Kubernetes Prow Robot
14b08b82e4 Merge pull request #118941 from neolit123/1.28-restore-test-function-for-config-migrate
kubeadm: restore and generalize the TestMigrateOldConfig test
2023-07-01 03:18:48 -07:00
Dan Winship
1f2bf32e95 Figure out single-stack/dual-stack support before creating the proxier
Rather than having this as part of createProxier(), explicitly figure
out what IP families the proxier can support beforehand, and bail out
if this conflicts with the detected IP family.
2023-06-30 17:43:04 -04:00
Dan Winship
8abfa89e82 Move proxy platformSetup call, and do LocalDetector setup from there 2023-06-30 17:39:36 -04:00
Dan Winship
ebb0fdd4f6 Don't explicitly filter config.NodePortAddresses by IP family
There's no need to do this any more: proxyutil.NodePortAddresses does
it itself.
2023-06-30 12:32:59 -04:00
Dan Winship
a74b9fde3a Don't pass around full node in proxy constructor, just pass PodCIDRs 2023-06-30 11:30:17 -04:00
Lubomir I. Ivanov
0537c1da56 kubeadm: move migrate / validate tests out of config_tests.go
Place the tests in common_tests.go on the backend side in
common_tests.go. A test for migrate TestMigrateOldConfig
was already present there. Apply slightly better coverage to it
and rename desc -> name.

Fix typo in argument oldConfig -> config in ValidateConfig().
2023-06-30 18:14:10 +03:00
Kubernetes Prow Robot
7bac0cee89 Merge pull request #118946 from SataQiu/clean-kubeadm-20230629
kubeadm: remove unused Kind and Resource functions from output API
2023-06-29 02:51:47 -07:00
Kubernetes Prow Robot
4036b6fb41 Merge pull request #118922 from champtar/kubeadm-backdate-ca
kubeadm: backdate generated CAs
2023-06-28 12:28:56 -07:00
SataQiu
24f4785e3e kubeadm: remove unused Kind and Resource functions from output API 2023-06-29 00:16:38 +08:00
SataQiu
90f82d05ce kubeadm: remove unused Kind and Resource functions from kubeadm internal API 2023-06-28 23:36:53 +08:00
Lubomir I. Ivanov
fd15c6791a kubeadm: restore and generalize the TestMigrateOldConfig test
The test required two APIs to be available to test for migration.
Keep it simple and use a variable "gv" on top of the function body
to easily swap the version to be tested once an old API is deleted.
e.g. currently v1beta3 is the "old" API, v1beta4 is the "new" one.

Ultimately, this test only makes sure that the expected kinds are
available post migration.
2023-06-28 18:21:57 +03:00
Kubernetes Prow Robot
52457842d1 Merge pull request #117055 from cyclinder/csi_migration
remove CSI-migration gate
2023-06-28 04:28:31 -07:00
Kubernetes Prow Robot
ddbf3575a7 Merge pull request #116729 from AxeZhan/handlers_sync
[Scheduler] Make sure handlers have synced before scheduling
2023-06-28 01:26:31 -07:00
Etienne Champetier
812556365b kubeadm: backdate generated CAs by 5 minutes
This allow for a small time jump backward after
certificates generation.

Signed-off-by: Etienne Champetier <e.champetier@ateme.com>
2023-06-28 00:12:29 -04:00
Kubernetes Prow Robot
1c32c3bd9f Merge pull request #118866 from neolit123/1.28-add-v1beta4-to-scheme
kubeadm: add v1beta4 to scheme; add --allow-experimental-api flag
2023-06-27 08:56:44 -07:00