Commit Graph

448 Commits

Author SHA1 Message Date
Lubomir I. Ivanov
786ad3ca81 kubeadm: check for available nodes during 'CreateJob' preflight
Instead of erroring during the preflight check 'CreateJob'
from "upgrade" commands when there are no schedulable nodes,
show a warning.

This can happen in single node clusters.

Also increase the Job TTL after completion to 20 seconds
to make sure it's more than the timeout what waits
for the Job to complete.
2024-04-26 12:18:02 +03:00
Kubernetes Prow Robot
9d39ce04fd Merge pull request #123595 from neolit123/1.30-add-timeouts-upgradeconfig
kubeadm: add timeouts to v1beta4.UpgradeConfiguration
2024-03-04 01:16:44 -08:00
Kubernetes Prow Robot
7c11cc9cfc Merge pull request #123578 from carlory/fix-kubeadm-494
kubeadm: print all the kubelets and nodes that need to be upgraded on "upgrade plan"
2024-03-03 01:46:03 -08:00
carlory
22adf221a1 print nodename 2024-03-03 11:03:29 +08:00
Lubomir I. Ivanov
ded6354a8f kubeadm: add Timeouts struct to v1beta4.UpgradeConfiguration
Follow the same process of adding the Timeouts struct
to UpgradeConfiguration similarly to how it was done for
other API Kinds.

In the Timeouts struct include one new timeout:
- UpgradeManifests
2024-03-01 13:04:08 +02:00
Kubernetes Prow Robot
03f24068da Merge pull request #123341 from neolit123/1.30-health-check-all-cp-components
kubeadm: introduce the WaitForAllControlPlaneComponents feature gate
2024-02-29 05:05:42 -08:00
carlory
fb3ab53822 Replace fmt.Print with printer in upgrade plan code and fix configVersions are not printed when output is json or yaml 2024-02-25 21:58:18 +08:00
SataQiu
f3cb5059a7 kubeadm: fix a bug during kubeadm upgrade, where it is not possible to mount a new device and create a symbolic link for /etc/kubernetes (or a sub-directory) so that kubeadm stores its information on the mounted device 2024-02-22 09:42:57 +08:00
Lubomir I. Ivanov
7db7222592 kubeadm: introduce the WaitForAllControlPlaneComponents feature gate
WaitForAllControlPlaneComponents is a new feature gate
that can be used to tell kubeadm to wait for all control plane
components and not only kube-apiserver.

- Add the Waiter function WaitForControlPlaneComponents
that waits for all CP components in parallel. Uses the regular
healthz endpoint for checks of status 200.
- Add a new experimental phase to kubeadm join called "wait-control-plane".
A similar phase exists for kubeadm init.
2024-02-16 17:33:38 +02:00
Kubernetes Prow Robot
8cbe59308c Merge pull request #122786 from HirazawaUi/remove-kubeadm-useless-code
kubeadm: remove code to be removed in 1.30
2024-02-05 07:21:29 -08:00
Shida Qiu
f47c2a1ba6 Revert "kubeadm: fix a bug where the uploaded kubelet configuration in kube-system/kubelet-config ConfigMap does not respect user patch" 2024-02-02 20:34:30 +08:00
HirazawaUi
46c4249e3e Remove code to be removed in 1.30 2024-01-15 19:40:04 +08:00
Kubernetes Prow Robot
a56093db9f Merge pull request #121958 from neolit123/1.30-remove-kubelet-and-func
kubeadm: drop concurrency when waiting for kubelet /healthz
2023-12-25 15:52:25 +01:00
Lubomir I. Ivanov
557118897d kubeadm: drop concurrency when waiting for kubelet /healthz
The function wait.go#WaitForKubeletAndFunc() has been used in
a number of places in kubeadm. It starts a go routine to wait for
the kubelet /healthz and in parallel starts another go routine
to wait for an custom function.

This logic is problematic. If kubeadm is waiting for the kubelet
in parallel with something that requires the kubelet, the right
solution would be to first wait for the kubelet in serial and only
then proceed with the other action. The parallelism here particularly
during "init" required a unwanted "initial timeout" of 40s, before
the kubelet waiting even starts. In most cases, this makes the kubelet
waiter to not even start, while the main point of waiting becomes
the "other action".

- Remove the function WaitForKubeletAndFunc() from the Waiter interface.
- Rename the function WaitForHealthyKubelet() to just WaitForKubelet()
to be consistent with the naming WaitForAPI().
- Update WaitForKubelet() to not use TryRunCommand() and instead
use PollUntilContextTimeout().
- Remove the "initial timeout" of 40s in WaitForKubelet().
- Make both WaitForKubelet() and WaitForAPI() use similar error
handling and output.
- Update all usage of WaitForKubelet() to be a serial call before
any other action, such as another wait* call.
- Make the default wait timeout for the kubelet
/healthz to be 1 minute (kubeadmconstants.DefaultKubeletTimeout).
- Apply updates to all implementations of the Waiter interface.
2023-12-20 08:51:00 +02:00
Kubernetes Prow Robot
1a1941eebb Merge pull request #122079 from carlory/kubeadm-upgrade-health
refactor healthCheck's CreateJob with TTLSecondsAfterFinished
2023-12-15 08:15:04 +01:00
carlory
c62155a770 refactor healthCheck's CreateJob with TTLSecondsAfterFinished
Co-authored-by: Shida Qiu <shidaqiu2018@gmail.com>
2023-12-15 11:32:30 +08:00
xin.li
29335763fe kubeadm: increase ut coverage app/upgrade/versiongetter
Signed-off-by: xin.li <xin.li@daocloud.io>
2023-11-08 09:45:42 +08:00
Kubernetes Prow Robot
c8125c4029 Merge pull request #121305 from neolit123/1.29-super-admin-conf
kubeadm: add support for separate super-admin.conf kubeconfig file
2023-10-27 08:51:31 +02:00
Lubomir I. Ivanov
30ed50d32e kubeadm: make super-admin.conf changes in app/phases
- Register the new file in /certs/renewal, so that the
file is renewed if present. If not present the common message "MISSING"
is shown. Same for other certs/kubeconfig files.
- In /kubeconfig, update the spec for admin.conf to use
the "kubeadm:cluster-admins" Group. A new spec is added for
the "super-admin.conf" file that uses the "system:masters" Group.
- Add a new function EnsureAdminClusterRoleBinding() that includes
logic to ensure that admin.conf contains a User that is properly
bound on the "cluster-admin" built-in ClusterRole. This requires
bootstrapping using the "system:masters" containing "super-admin.conf".
Add detailed unit tests for this new logic.
- In /upgrade#PerformPostUpgradeTasks() add logic to create the
"admin.conf" and "super-admin.conf" with the new, updated specs.
Add detailed unit tests for this new logic.
- In /upgrade#StaticPodControlPlane() ensure that renewal of
"super-admin.conf" is performed if the file exists.
Update unit tests.
2023-10-26 07:36:03 +03:00
Lubomir I. Ivanov
c2a04fa1cf kubeadm: fix export comments to make golangci-lint happy 2023-10-25 19:35:10 +03:00
SataQiu
3da7802b7c kubeadm: cleanup UnknownCRISocket from staticpods test 2023-10-19 14:44:02 +08:00
Kubernetes Prow Robot
801932c012 Merge pull request #120825 from pacoxu/kubeadm-skew-match
kubeadm: adjust kubeadm skew policy for upgrades
2023-10-12 16:00:02 +02:00
Paco Xu
7b1d87383e add kubelet policy skew test for kubeadm 2023-10-12 11:17:05 +08:00
SataQiu
1a68195626 kubeadm: fix the bug that kubeadm always do CRI detection when --config is passed even if it is not required by subcommand 2023-09-25 16:35:47 +08:00
Paco Xu
534a0941e8 kubeadm: change kubelet skew to apiserver to n-3 2023-09-22 20:46:29 +08:00
Kubernetes Prow Robot
35199e42a4 Merge pull request #120549 from pacoxu/kubeadm-etcd-manifests
kubeadm: fix diff order and add tests for new default value manifest
2023-09-12 00:44:13 -07:00
Paco Xu
4d105eb1ce add TestUnmarshalJson for UniversalUnmarshal 2023-09-12 14:41:07 +08:00
Stephen Kitt
e2c1c0d34a kubeadm: drop deprecated pointer package
This replaces deprecated k8s.io/utils/pointer functions with their ptr
equivalent.

Signed-off-by: Stephen Kitt <skitt@redhat.com>
2023-09-11 16:41:12 +02:00
Kubernetes Prow Robot
595a57940a Merge pull request #120039 from chendave/move_testcases
kubeadm: Move the method used only in the test to `postupgrade_test.go`
2023-08-18 07:12:39 -07:00
Dave Chen
72af21e1a1 kubeadm: Cleanup the unused input parameters
Signed-off-by: Dave Chen <dave.chen@arm.com>
2023-08-18 17:20:22 +08:00
Dave Chen
1eb6282016 kubeadm: Move the method used only in the test to postupgrade_test.go
Signed-off-by: Dave Chen <dave.chen@arm.com>
2023-08-18 16:59:08 +08:00
SataQiu
daa7115907 kubeadm: add deprecation message for UpgradeAddonsBeforeControlPlane feature gate 2023-06-01 23:06:26 +08:00
SataQiu
c6aaa1eab0 kubeadm: lower the log level of EtcdSupportedVersion warning message as it is a kubeadm internal warning 2023-05-29 10:39:20 +08:00
SataQiu
b4560f9e57 kubeadm: fix a bug where file copy(backup) could not be executed correctly on Windows platform during upgrade 2023-05-08 22:17:32 +08:00
Kubernetes Prow Robot
98cf297e57 Merge pull request #117391 from catandcoder/master
fix doc mismatch
2023-05-06 08:35:17 -07:00
Kubernetes Prow Robot
bc872028ab Merge pull request #117660 from pacoxu/UpgradeAddonsBeforeControlPlane
kubeadm: add deprecated FG UpgradeAddonsBeforeControlPlane
2023-04-29 20:50:17 -07:00
Kubernetes Prow Robot
9924dc65b7 Merge pull request #117614 from chendave/multi_cri
kubeadm: fix unit test failure on node with multiple cri endpoints
2023-04-28 01:30:16 -07:00
Dave Chen
2572a43034 kubeadm: fix unit test failure on node with multiple cri endpoints
Signed-off-by: Dave Chen <dave.chen@arm.com>
2023-04-28 15:00:16 +08:00
Paco Xu
c6f4bee98d kubeadm: add deprecated FG UpgradeAddonsBeforeControlPlane 2023-04-28 13:55:46 +08:00
Kubernetes Prow Robot
78b56ce16d Merge pull request #116570 from SataQiu/fix-kubeadm-20230314
kubeadm: support upgrade coredns and kube-proxy addons after all the control plane instances have been upgraded
2023-04-27 01:44:26 -07:00
SataQiu
170d5ef9fa code cleanup for kubeadm 2023-04-26 23:51:39 +08:00
SataQiu
e3d84aa93c kubeadm: add the experimental (alpha) feature gate UpgradeAddonsAfterControlPlane that supports upgrade coredns and kube-proxy addons after all the control plane instances have been upgraded 2023-04-25 22:12:50 +08:00
Kubernetes Prow Robot
b35ffd1dcb Merge pull request #113969 from Octopusjust/k8s-pr11
Add test for cmd/kubeadm/app/phases/upgrade/compute.go
2023-04-24 02:45:01 -07:00
cui fliter
1359ebcc5b fix doc mismatch
Signed-off-by: cui fliter <imcusg@gmail.com>
2023-04-16 18:29:45 +08:00
Paco Xu
b1ee8c8b82 kubeadm: no need to check if target coredns version is not changed 2023-02-25 21:53:28 +08:00
Claudiu Belu
2e2ef9b0e7 unit tests: Fixes kubeadm postupgrade failing unit test on Windows
The unit test TestWriteKubeletConfigFiles fails on Windows because the
file not found error message is different on Windows.
2023-02-21 16:53:06 +00:00
Kubernetes Prow Robot
8e31885e36 Merge pull request #115575 from SataQiu/fix-20230207
kubeadm: fix a bug where the uploaded kubelet configuration in kube-system/kubelet-config ConfigMap does not respect user patch
2023-02-16 00:45:38 -08:00
SataQiu
69e50cabd2 kubeadm: fix a bug where the uploaded kubelet configuration in kube-system/kubelet-config ConfigMap does not respect user patch 2023-02-07 18:24:31 +08:00
Kubernetes Prow Robot
8e20effbb7 Merge pull request #114695 from chendave/fix_cross_move
kubeadm: backup kubelet config for "upgrade node" and "upgrade apply"
2023-02-07 02:18:58 -08:00
Dave Chen
5127cbf949 kubeadm: backup kubelet config file for upgrade apply
Back up kubelet config file for `kubeadm upgrade apply`, some code
refactoring is done to de-dup some redundant code logic.

Signed-off-by: Dave Chen <dave.chen@arm.com>
2023-02-02 12:09:18 +08:00