Commit Graph

1259 Commits

Author SHA1 Message Date
pacoxu
8946f26769 update pause to 3.4.1 for kubelet/kubeadm
Signed-off-by: pacoxu <paco.xu@daocloud.io>
2021-02-05 21:33:01 +08:00
Sean McGinnis
874ceb0fdf Improve wording in kubeadm upgrade plan
Originally raised as an issue with invalid versions to plan, but it has
been determined with air gapped environments and development versions it
is not possible to fully address that issue.

But one thing that was identified was that we can do a better job in how
we output the upgrade plan information. Kubeadm outputs the requested
version as "Latest stable version", though that may not actually be the
case. For this instance, we want to change this to "Target version" to
be a little more accurate.

Then in the component upgrade table that is emitted, the last column of
AVAILABLE isn't quite right either. Also changing this to TARGET to
reflect that this is the version we are targetting to upgrade to,
regardless of its availability.

There could be some improvements in checking available versions,
particularly in air gapped environments, to make sure we actually have
access to the requested version. But this at least clarifies some of the
output a bit.

Signed-off-by: Sean McGinnis <sean.mcginnis@gmail.com>
2021-02-03 09:44:15 -06:00
Kubernetes Prow Robot
645c40fcf6 Merge pull request #98638 from neolit123/1.21-optimize-unit-tests-certs
kubeadm: introduce static defaults for unit tests
2021-02-02 03:20:29 -08:00
Lubomir I. Ivanov
6578e0f6c5 kubeadm: introduce static defaults for unit tests
Add DefaultedStaticInitConfiguration() which can be
used instead of DefaultedInitConfiguration() during unit tests.

The later can be slow since it performs dynamic defaulting.
2021-02-01 19:43:57 +02:00
Jordan Liggitt
8761972f68 Use private key fixtures for kubeadm unit tests 2021-02-01 10:06:10 -05:00
Lubomir I. Ivanov
01ea75e36d kubeadm: exclude control plane nodes from external LBs
Apply the label:
"node.kubernetes.io/exclude-from-external-load-balancers"

To control plane nodes to preserve backwards compatibility
with the legacy mode where "master" nodes were excluded from
LBs.
2021-01-26 20:42:58 +02:00
Kubernetes Prow Robot
e1c1fd9edf Merge pull request #97880 from justinsb/spelling
Fix spelling typos: scheduable -> schedulable
2021-01-15 03:43:51 -08:00
Kubernetes Prow Robot
4a595bd373 Merge pull request #97372 from ihgann/master
Fix bug in Member Exists Join for Kubeadm etcd join
2021-01-14 12:45:30 -08:00
Lubomir I. Ivanov
3b5e698cb2 kubeadm: trim leading "v" when running CoreDNS migration preflight
During upgrade the coredns migration library seems to require
that the input version doesn't have the "v" prefix".

Fixes a bug where the user cannot run commands such as
"kubeadm upgrade plan" if they have `v1.8.0` installed.

Assuming this is caused by the fact that previously the image didn't
have a "v" prefix.
2021-01-11 18:21:19 +02:00
Justin SB
8797738c02 Fix spelling typos: scheduable -> schedulable
Bulk fix of a common typo.
2021-01-09 12:59:33 -05:00
Kubernetes Prow Robot
42fe1d3405 Merge pull request #97620 from rajansandeep/patch-1
[kubeadm]: CoreDNS preflight: Parse correct version syntax
2021-01-05 04:49:58 -08:00
Sandeep Rajan
a9ba7b06f0 CoreDNS preflight: Remove "v" from version
Corrects the error: "CoreDNS will not be upgraded: cannot migrate up to 'v1.8.0' from '1.7.0'"
2021-01-04 20:26:03 -05:00
Jian Zeng
57d563403b refactor(kubeadm): remove deprecated command "alpha selfhosting pivot" 2020-12-31 13:47:15 +08:00
Kubernetes Prow Robot
80be1d6c72 Merge pull request #96429 from rajansandeep/coredns180-kubeadm
[kubeadm]: Bump CoreDNS version to 1.8.0
2020-12-29 13:19:48 -08:00
Robbie McMichael
de8821acd3 kubeadm: support certificate chain validation
Fixes an issue where some kubeadm phases fail if a certificate file
contains a certificate chain with one or more intermediate CA
certificates. The validation algorithm has been changed from requiring
that a certificate was signed directly by the root CA to requiring that
there is a valid certificate chain back to the root CA.
2020-12-24 23:41:10 +08:00
Ian Gann
dc70c79a00 Fix bug in Member Exists Join for Kubeadm etcd join
In kubeadm etcd join there is a a bug that exists where,
if a peer already exists in etcd, it attempts to mitigate
by continuing and generating the etcd manifest file. However,
this existing "member name" may actually be unset, causing
subsequent etcd consistency checks to fail.

This change checks if the member name is empty - if it is,
it sets the member name to the node name, and resumes.
2020-12-17 11:54:02 -08:00
Kubernetes Prow Robot
03aba080a6 Merge pull request #96860 from pacoxu/fix/96833
fix kube-dns federations check in kubeadm upgrade dns check preflight
2020-12-08 20:04:07 -08:00
Sandeep Rajan
2eabd9d832 fix migration logic
modify addon test to cover the entire migration logic
2020-12-02 12:53:07 -05:00
Paco Xu
4525f3fef8 coredns dep.Severity is newdefault, not newDefault
Signed-off-by: pacoxu <paco.xu@daocloud.io>
2020-11-27 18:17:02 +08:00
pacoxu
05f9e500ad fix kubeadm upgrade dns check preflight
Signed-off-by: pacoxu <paco.xu@daocloud.io>
2020-11-25 21:07:25 +08:00
Sandeep Rajan
40862c3b60 bump coredns to 1.8.0 2020-11-16 15:22:05 -05:00
Lubomir I. Ivanov
fb7ddf88e9 kubeadm: mark the "master" label/taint as deprecated
- Mark the "node-role.kubernetes.io/master" key for labels
and taints as deprecated.
- During "kubeadm init/join" apply the label
"node-role.kubernetes.io/control-plane" to new control-plane nodes,
next to the existing "node-role.kubernetes.io/master" label.
- During "kubeadm upgrade apply", find all Nodes with the "master"
label and also apply the "control-plane" label to them
(if they don't have it).
- During upgrade health-checks collect Nodes labeled both "master"
and "control-plane".
- Rename the constants.ControlPlane{Taint|Toleraton} to
constants.OldControlPlane{Taint|Toleraton} to manage the transition.
- Mark constants.OldControlPlane{{Taint|Toleraton} as deprecated.
- Use constants.OldControlPlane{{Taint|Toleraton} instead of
constants.ControlPlane{Taint|Toleraton} everywhere.
- Introduce constants.ControlPlane{Taint|Toleraton}.
- Add constants.ControlPlaneToleraton to the kube-dns / CoreDNS
Deployments to make them anticipate the introduction
of the "node-role.kubernetes.io/control-plane:NoSchedule"
taint (constants.ControlPlaneTaint) on kubeadm control-plane Nodes.
2020-11-10 22:10:13 +02:00
Kubernetes Prow Robot
acc3910964 Merge pull request #95991 from serathius/datapolicy-kubeadm
Add datapolicy tags to cmd/kubeadm directory
2020-11-03 22:50:17 -08:00
Marek Siarkowicz
8644f3ff83 Add datapolicy tags to cmd/kubeadm directory 2020-10-30 18:32:17 +01:00
Shihang Zhang
ff641f6eb2 mv TokenRequest and TokenRequestProjection to GA 2020-10-29 20:47:01 -07:00
Antonio Ojea
8b52995d32 kubeadm: validate podSubnet against node-cidr-mask
the controller manager should validate the podSubnet against the node-mask
because if they are incorrect can cause the controller-manager to fail.

We don't need to calculate the node-cidr-masks, because those should
be provided by the user, if they are wrong we fail in validation.
2020-10-22 16:24:13 +02:00
Lubomir I. Ivanov
bae6b93d5c kubeadm: add some output to the generate-csr command
Currently the "generate-csr" command does not have any output.
Pass an io.Writer (bound to os.Stdout from /cmd) to the functions
responsible for generating the kubeconfig / certs keys and CSRs.

If nil is passed these functions don't output anything.
2020-10-12 19:05:45 +03:00
Kubernetes Prow Robot
604569482f Merge pull request #94504 from neolit123/1.20-warning-cert-bounds-client-side
kubeadm: print warnings on invalid cert period instead of erroring out
2020-09-29 02:49:25 -07:00
Kubernetes Prow Robot
db9f1e91d9 Merge pull request #94988 from neolit123/1.20-tollerate-missing-ca-key-on-join
kubeadm: warn but do not error out on missing CA keys on CP join
2020-09-28 06:36:48 -07:00
Kubernetes Prow Robot
770eb2c4a0 Merge pull request #94871 from neolit123/1.20-kubeadm-remove-experimental-kustomize
kubeadm: remove the --experimental-kustomize feature
2020-09-24 08:16:06 -07:00
Lubomir I. Ivanov
7c783fa374 kubeadm: make the CP join handling of kubeconfig similar to "init"
The kubeconfig phase of "kubeadm init" detects external CA mode
and skips the generation of kubeconfig files. The kubeconfig
handling during control-plane join executes
CreateJoinControlPlaneKubeConfigFiles() which requires the presence
of ca.key when preparing the spec of a kubeconfig file and prevents
usage of external CA mode.

Modify CreateJoinControlPlaneKubeConfigFiles() to skip generating
the kubeconfig files if external CA mode is detected.
2020-09-24 18:12:00 +03:00
Lubomir I. Ivanov
05b77fe99f kubeadm: warn but do not error out on missing CA keys on CP join
- Modify validateCACertAndKey() to print warnings for missing keys
instead of erroring out.
- Update unit tests.

This allows doing a CP node join in a case where the user has:
- copied shared certificates to the new CP node, but not copied
ca.key files, treating the cluster CAs as external
- signed other required certificates in advance
2020-09-24 18:11:59 +03:00
Kubernetes Prow Robot
f682c4f142 Merge pull request #94816 from neolit123/1.20-relax-kubeconfig-server-validation
kubeadm: relax the validation of kubeconfig server URLs
2020-09-21 10:04:33 -07:00
Lubomir I. Ivanov
8ece27bf4b kubeadm: remove the --experimental-kustomize feature
The feature was replaced by --experimental-patches and deprecated in
1.19.
2020-09-18 03:49:53 +03:00
Lubomir I. Ivanov
edaef35eac kubeadm: relax the validation of kubeconfig server URLs
For external CA users that have prepared the kubeconfig files
for components, they might wish to provide a custom API server URL.
When performing validation on these kubeconfig files, instead of
erroring out on such custom URLs, show a klog Warning.

This allows flexibility around topology setup, where users
wish to make the kubeconfigs point to the ControlPlaneEndpoint instead
of the LocalAPIEndpoint.

Fix validation in ValidateKubeconfigsForExternalCA expecting
all kubeconfig files to use the CPE. The kube-scheduler and
kube-controller-manager now use LAE.
2020-09-16 01:52:09 +03:00
Lubomir I. Ivanov
a5a29c54cc kubeadm: remove the "alpha kubelet config enable-dynamic" command
The command was deprecated in 1.19 and can be removed in 1.20.
2020-09-11 03:40:11 +03:00
Lubomir I. Ivanov
b5b9698fbf kubeadm: print warnings on invalid cert period instead of erroring out
Client side period validation of certificates should not be
fatal, as local clock skews are not so uncommon. The validation
should be left to the running servers.

- Remove this validation from TryLoadCertFromDisk().
- Add a new function ValidateCertPeriod(), that can be used for this
purpose on demand.
- In phases/certs add a new function CheckCertificatePeriodValidity()
that will print warnings if a certificate does not pass period
validation, and caches certificates that were already checked.
- Use the function in a number of places where certificates
are loaded from disk.
2020-09-09 20:53:13 +03:00
Jordan Liggitt
c0ba2364b5 Run slow kubeadm upgrade tests in parallel 2020-09-04 13:36:45 -04:00
Jordan Liggitt
24481db023 Ensure kubeadm tests have unique names 2020-09-04 13:36:29 -04:00
Jordan Liggitt
7e01e38334 Avoid mutating global variables in kubeadm certs phases 2020-09-04 13:36:10 -04:00
Kubernetes Prow Robot
3cdfdfccc9 Merge pull request #94506 from neolit123/1.20-coredns-remove-supported-version-check
kubeadm: remove the CoreDNS check for supported image digests
2020-09-04 07:37:41 -07:00
knight42
2ebd293780 feat(kubeadm): specify resource requests in etcd pod spec
Signed-off-by: knight42 <anonymousknight96@gmail.com>
2020-09-04 11:54:21 +08:00
Lubomir I. Ivanov
4bb75a462f kubeadm: remove the CoreDNS check for supported image digests
The isCoreDNSVersionSupported() check assumes that
there is a running kubelet, that manages the CoreDNS containers.

If the containers are being created it is not possible to fetch
their image digest. To workaround that, a poll can be used in
isCoreDNSVersionSupported() and wait for the CoreDNS Pods
are expected to be running. Depending on timing and CNI
yet to be installed this can cause problems related to
addon idempotency of "kubeadm init", because if the CoreDNS
Pods are waiting for another step they will never get running.

Remove the function isCoreDNSVersionSupported() and assume that
the version is always supported. Rely on the Corefile migration
library to error out if it must.
2020-09-04 05:27:04 +03:00
zounengren
fc0bda5a3c fix kubeadm update coredns with skip pending pod 2020-09-03 10:42:59 +08:00
Kubernetes Prow Robot
2c12a81cb7 Merge pull request #94398 from neolit123/1.20-pin-control-plane-to-local-endpoint
kubeadm: make the scheduler and KCM connect to the local API endpoint
2020-09-02 12:09:19 -07:00
Lubomir I. Ivanov
d9441906c4 kubeadm: make the scheduler and KCM connect to local endpoint
Pinning the kube-controller-manager and kube-scheduler kubeconfig files
to point to the control-plane-endpoint can be problematic during
immutable upgrades if one of these components ends up contacting an N-1
kube-apiserver:
https://kubernetes.io/docs/setup/release/version-skew-policy/#kube-controller-manager-kube-scheduler-and-cloud-controller-manager
For example, the components can send a request for a non-existing API
version.

Instead of using the CPE for these components, use the LocalAPIEndpoint.
This guarantees that the components would talk to the local
kube-apiserver, which should be the same version, unless the user
explicitly patched manifests.
2020-09-01 19:38:28 +03:00
Rostislav M. Georgiev
3bef5d2e0b kubeadm: Ensure etcd manifests are regenerated upon upgrade
A check that verifies that kubeadm does not "upgrade" to an older release was
overly optimized by skipping upgrade if the new version is the same as the old
one. This somewhat makes sense, but that way changes in any of the etcd fields
in the ClusterConfiguration won't be applied if the etcd version is not
changed.

Hence, this simple change ensures that the upgrade is done even when no version
change takes place.

Signed-off-by: Rostislav M. Georgiev <rostislavg@vmware.com>
2020-09-01 15:47:33 +03:00
loopever
b645f3038e Fix some typo 2020-08-11 08:35:31 +08:00
Kubernetes Prow Robot
19f0a54d6b Merge pull request #92183 from wallrj/2163-csr-only-external-ca-mode-2
kubeadm alpha certs generate-csr
2020-07-13 07:18:32 -07:00
Sandeep Rajan
04038fc791 update coredns version to 1.7.0 2020-07-09 11:01:45 -04:00