Commit Graph

720 Commits

Author SHA1 Message Date
RA489
ad9d2d71c0 remove bash examples/comments from the v1beta1 and v1beta2 APIs 2020-02-07 11:27:02 +05:30
Mike Danese
d55d6175f8 refactor 2020-01-29 08:50:45 -08:00
Lubomir I. Ivanov
a027c379f7 kubeadm: increase timeouts in the etcd client
- Extend the exponential backoff for add/remove/... retry to
11 steps ~=106 seconds. From experiments for 3 and more members
the race can take more that ~=26 seconds.
- Increase the dialTimeout for client creation to 40 seconds.
20 seconds seems racy for 3 and more members.
2020-01-25 00:48:05 +02:00
Lubomir I. Ivanov
5e0c0779a1 kubeadm: handle multiple members without names during concurrent join
For the etcd client, amend AddMember() to handle a very
rare bug when multiple members can end up with the same
name. Match the member peer address and assign it the name of
the member we are adding. For the rest of the members with missing
names use their member IDs as name. The etcd node is not disrupted
by the unknown names.

The important aspects are:
- The number of members of the initial cluster must match
the members in the cluster.
- The member we are current adding is present in the initial cluster.
2020-01-25 00:48:05 +02:00
Kubernetes Prow Robot
916edd922e
Merge pull request #86861 from SataQiu/fix-kubeadm-20200106
kubeadm upgrades always persist the etcd backup for stacked
2020-01-16 21:38:56 -08:00
Kubernetes Prow Robot
3e8155ead3
Merge pull request #86899 from SataQiu/enable-pull-retry-20200107
kubeadm: support automatic retry after failing to pull image
2020-01-13 13:58:41 -08:00
SataQiu
c7234aa177 kubeadm: support automatic retry after failing to pull image 2020-01-11 15:10:56 +08:00
Rostislav M. Georgiev
7f2d675ad0 kubeadm: Fix a false positive in a warning
The warning message

```
[config] WARNING: Ignored YAML document with GroupVersionKind ...
```

is printed for all GVKs that are not part of the kubeadm core types.
This is wrong as the component config types are supported and successfully
parsed and used despite the fact that the warning is printed for them too.

Hence this simple fix first checks if the group of the GVK is a supported
component config group and the warning is printed only if it's not.

Signed-off-by: Rostislav M. Georgiev <rostislavg@vmware.com>
2020-01-07 17:55:50 +02:00
SataQiu
72559ec693 kubeadm upgrades always persist the etcd backup for stacked 2020-01-06 12:34:28 +08:00
Kubernetes Prow Robot
3760d24674
Merge pull request #86493 from aojea/kubeadmAddress
kubeadm: use bind-address instead of address to configure the http probes
2020-01-03 19:13:40 -08:00
Antonio Ojea
c0bc36c12e kubeadm: probe address for unspecified ips
kubeadm deploys the apiserver, controller-manager and the scheduler
using liveness probes.
The bind-address option is used to configure the probe address, in
case this is configured with an unspecified address, the probe
will fail. When using an unspecified address the probe host field is
left empty, otherwise the bind-address is used.
2020-01-04 00:42:15 +01:00
Kubernetes Prow Robot
f772c9017c
Merge pull request #86609 from Pensu/kubeadm-ci-master
Fixing regex for kubernetes version in kubeadm
2019-12-30 14:29:39 -08:00
Peeyush Gupta
49884bca30 Fixing regex for kubernetes version in kubeadm 2019-12-30 21:12:24 +05:30
tanjunchen
b1e03256d7 alias kubeadmutil for k8s.io/kubernetes/cmd/kubeadm/app/util 2019-12-27 17:57:04 +08:00
Kubernetes Prow Robot
1ca0f89aa1
Merge pull request #86508 from kvaster/master
On OpenRC ServiceIsActive should not report true if no such service exists
2019-12-24 01:05:29 -08:00
SataQiu
2497a1209b bump k8s.io/utils version 2019-12-21 14:54:44 +08:00
Antonio Ojea
7dc6c94395 kubeadm: use bind-address instead of address
kubeadm removed the deprecated "--address" flag for controller-manager
and scheduler in favor of "--bind-address"

We should use bind-address to configure the manifest probe addresses.
2019-12-20 22:03:49 +01:00
Viktor Kuzmin
947d696021 On OpenRC ServiceIsActive should not report true if no such service exists 2019-12-20 23:12:16 +03:00
Lubomir I. Ivanov
effe299082 kubeadm: add basic validation around kubelet.conf parsing
If the user has modified the kubelet.conf post TLS bootstrap
to become invalid, the function getNodeNameFromKubeletConfig() can
panic. This was observed to trigger in "kubeadm reset" use cases.

Add basic validation and unit tests around parsing the kubelet.conf
with the aforementioned function.
2019-12-12 17:30:53 +02:00
Kubernetes Prow Robot
674695c544
Merge pull request #85639 from rosti/kubeadm-cc-kind-to-group
kubeadm: Group centric component configs
2019-12-03 17:01:23 -08:00
Kubernetes Prow Robot
3769de9401
Merge pull request #85745 from aojea/kubeadm_etcd_ipv6
kubeadm: default etcd address based on the IP family
2019-12-02 15:02:58 -08:00
Rafael Fernández López
14fe7225c1
kubeadm: Improve resiliency in CreateOrMutateConfigMap
CreateOrMutateConfigMap was not resilient when it was trying to Create
the ConfigMap. If this operation returned an unknown error the whole
operation would fail, because it was strict in what error it was
expecting right afterwards: if the error returned by the Create call
was a IsAlreadyExists error, it would work fine. However, if an
unexpected error (such as an EOF) happened, this call would fail.

We are seeing this error specially when running control plane node
joins in an automated fashion, where things happen at a relatively
high speed pace.

It was specially easy to reproduce with kind, with several control
plane instances. E.g.:

```
[upload-config] Storing the configuration used in ConfigMap "kubeadm-config" in the "kube-system" Namespace
I1130 11:43:42.788952     887 round_trippers.go:443] POST https://172.17.0.2:6443/api/v1/namespaces/kube-system/configmaps?timeout=10s  in 1013 milliseconds
Post https://172.17.0.2:6443/api/v1/namespaces/kube-system/configmaps?timeout=10s: unexpected EOF
unable to create ConfigMap
k8s.io/kubernetes/cmd/kubeadm/app/util/apiclient.CreateOrMutateConfigMap
	/go/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/app/util/apiclient/idempotency.go:65
```

This change makes this logic more resilient to unknown errors. It will
retry on the light of unknown errors until some of the expected error
happens: either `IsAlreadyExists`, in which case we will mutate the
ConfigMap, or no error, in which case the ConfigMap has been created.
2019-11-30 22:48:16 +01:00
Antonio Ojea
335a3e9efb kubeadm: use correct IP family for etcd localhost
kubeadm always use the IPv4 localhost address by defaultA for etcd

The probe hostname is obtained before the generation of the etcd
parameters, so it can't detect the right IP familiy for the
host of the probe.
This causes that with IPv6 clusters doesn't work because the probe
uses the IPv4 localhost address.

This patchs configures the right localhost address based on the used
AdvertiseAddress IP family.
2019-11-30 17:25:30 +01:00
Lucas Käldström
b46e541eee Add a YAML MetaFactory
- Use `schema.TypeMeta` instead of custom `struct` for VK
- More strict check on GVK after `Interpret` in `SplitYAMLDocuments`
- Adjust `Interpret` comment to include JSON
2019-11-27 17:44:59 +08:00
Rostislav M. Georgiev
b881f19c8b kubeadm: Group centric component configs
kubeadm's current implementation of component config support is "kind" centric.
This has its downsides. Namely:
- Kind names and numbers can change between config versions.
  Newer kinds can be ignored. Therefore, detection of a version change is
  considerably harder.
- A component config can have only one kind that is managed by kubeadm.
Thus a more appropriate way to identify component configs is required.

Probably the best solution identified so far is a config group.
A group name is unlikely to change between versions, while the kind names and
structure can.
Tracking component configs by group name allows us to:
- Spot more easily config version changes and manage alternate versions.
- Support more than one kind in a config group/version.
- Abstract component configs by hiding their exact structure.

Hence, this change rips off the old kind based support for component configs
and replaces it with a group name based one. This also has the following
extra benefits:
- More tests were added.
- kubeadm now errors out if an unsupported version of a known component group
  is used.

Signed-off-by: Rostislav M. Georgiev <rostislavg@vmware.com>
2019-11-26 13:55:28 +02:00
Kubernetes Prow Robot
d1e8702d36
Merge pull request #85201 from fabriziopandini/add-retry-to-etcd
kubeadm: add retry to etcd calls
2019-11-14 07:07:34 -08:00
fabriziopandini
0573a2227f add retry to etcd operations 2019-11-14 09:27:03 +01:00
Jordan Liggitt
752cda4fc4 guard kubeadm dependencies on k8s.io/kubernetes 2019-11-13 15:05:11 -05:00
Yassine TIJANI
b9fe59c93e remove system validators package from kubeadm and use k8s.io/system-validators instead
Signed-off-by: Yassine TIJANI <ytijani@vmware.com>
2019-11-12 01:09:56 +01:00
Lubomir I. Ivanov
ebfdb25c05 kubeadm: always use a short timeout for clientset creation
ToClientSet() in kubeconfig.go creates a clientset from
the passed Config object (kubeconfig). For IP addresses
that are not reachable e.g. Get() calls for ConfigMaps
can block for a few minutes with the default timeout.

Modify the timeout to a shorter value by passing an override.
2019-11-10 05:39:38 +02:00
Kubernetes Prow Robot
01676976c9
Merge pull request #85017 from LouisJackman/remove-goroutine-leak-in-kubeadm-wait
Remove potential Goroutine leak in kubeadm wait.go
2019-11-09 14:03:40 -08:00
Kubernetes Prow Robot
49a9b6cadf
Merge pull request #84727 from danwinship/ipv6-bind
fix apiserver to advertise IPv6 endpoints if bound to IPv6
2019-11-08 18:44:24 -08:00
Louis Jackman
62e314a556
Remove potential Goroutine leak in kubeadm wait.go
There are two writes yet only one read on a non-buffered channel that is
created locally and not passed anywhere else.

Therefore, it could leak one of its two spawned Goroutines if either:
* The provided `f` takes longer than an erroneous result from
  `waiter.WaitForHealthyKubelet`, or;
* The provided `f` completes before an erroneous result from
  `waiter.WaitForHealthyKubelet`.

The fix is to add a one-element buffer so that the channel write happens
for the second Goroutine in these cases, allowing it to finish and freeing
references to the now-buffered channel, letting it to be GC'd.
2019-11-08 21:05:19 +00:00
Kubernetes Prow Robot
ab1b374dd9
Merge pull request #84523 from rajansandeep/skipmigration
Retain CoreDNS corefile when migration fails in kubeadm
2019-11-08 09:00:29 -08:00
Dan Winship
afa0b808f8 Fix apiserver to advertise IPv6 endpoints if bound to IPv6
Also rename utilnet.ChooseBindAddress() to ResolveBindAddress(), to
better describe its functionality.
2019-11-06 11:31:43 -05:00
Sandeep Rajan
16191db353 skip deployment update if migration fails 2019-11-06 10:55:54 -05:00
Kubernetes Prow Robot
529d5dd4b2
Merge pull request #84626 from hwdef/fix-staticcheck1
cmd/kubeadm/app: fix staticcheck warning
2019-11-01 10:21:40 -07:00
hwdef
eae3e3ce8c cmd/kubeadm/app: fix staticcheck warning 2019-11-01 10:39:56 +08:00
Yassine TIJANI
3993c42431 propagate proxy env var to kube-proxy
Signed-off-by: Yassine TIJANI <ytijani@vmware.com>
2019-10-30 16:18:43 +01:00
Lubomir I. Ivanov
772e2e4e39 kubeadm-validators: bump the latest validated Docker version to 19.03 2019-10-28 22:24:46 +02:00
Kubernetes Prow Robot
46b33af8ef
Merge pull request #84309 from hypnoglow/remove-test
kubeadm: remove commented test
2019-10-25 13:03:51 -07:00
Wenjia Zhang
660b17d0ae Pin dependencies and update vendors 2019-10-24 14:09:24 -07:00
Wenjia Zhang
9ead9373f3 Resolve uncompatibility from update: etcd CAFile -> TrustedCAFIle 2019-10-24 14:09:24 -07:00
Wenjia Zhang
3b274fad2a Replace github.com/coreos/etcd by go.etcd.io/etcd 2019-10-24 14:09:24 -07:00
Igor Zibarev
c1381282a3 kubeadm: remove commented test
Removes commented test TestInitConfigurationMarshallingFromFile
as requested per https://github.com/kubernetes/kubeadm/issues/1431
2019-10-24 22:58:01 +03:00
Kubernetes Prow Robot
9fa1bc8003
Merge pull request #83422 from yastij/remove-ipallocator
remove ipallocator in favor of k/utils net package
2019-10-22 12:52:13 -07:00
Yassine TIJANI
f984b4c7a2 remove ipallocator in favor of k/utils net package
Signed-off-by: Yassine TIJANI <ytijani@vmware.com>
2019-10-22 18:37:13 +02:00
Lubomir I. Ivanov
30db92004a
Revert "kubeadm: enable kubelet certificate rotation on primary CP nodes" 2019-10-16 20:45:55 +03:00
Ed Bartosh
078f7a3537 kubeadm: remove OutputFlagSpecified from PrintFlags
This field is not used in the kubeadm code. It was brought from
cli-runtime where it's used to support complex relationship between
command line parameters, which is not present in kubeadm.
2019-10-10 12:53:05 +03:00
Kubernetes Prow Robot
a7e0b768ee
Merge pull request #78764 from bart0sh/PR0070-kubeadm-structured-output-v2
Structured output for 'kubeadm token list'
2019-10-09 14:50:54 -07:00
Kubernetes Prow Robot
33809f24e6
Merge pull request #83556 from zouyee/kubeadminfo
Complete output of docker info
2019-10-08 20:00:04 -07:00
Kubernetes Prow Robot
0f02a0fadf
Merge pull request #83605 from hwdef/fix-spelling-mistake
cmd: fix spelling mistake
2019-10-08 05:25:24 -07:00
Kubernetes Prow Robot
7a0801e1b8
Merge pull request #83339 from neolit123/1.17-master-cert-rotation
kubeadm: enable kubelet certificate rotation on primary CP nodes
2019-10-08 03:45:11 -07:00
Kubernetes Prow Robot
c4108c9b4a
Merge pull request #83090 from Klaven/rm_validator_errors
Removal of kubernetes error dependencies
2019-10-07 23:35:25 -07:00
hwdef
fea743b783 cmd: fix spelling mistake 2019-10-08 13:15:34 +08:00
Kubernetes Prow Robot
6564b34f9e
Merge pull request #83276 from Klaven/pr_v1beta1_dep
Initial deprecation of kubeadm v1beta1 apis
2019-10-07 22:15:11 -07:00
Lubomir I. Ivanov
2dedfddf81 kubeadm: add means to create Node objects via the API client 2019-10-07 18:41:57 +03:00
zouyee
361f20c874 Complete output of docker info
Signed-off-by: Zou Nengren <zouyee1989@gmail.com>
2019-10-07 19:24:15 +08:00
Marek Counts
3a050344d0 Initial deprecation of kubeadm v1beta1 apis 2019-10-06 23:26:12 +00:00
Ted Yu
4a26579335 Show the complete docker info command 2019-10-06 11:26:18 -07:00
fabriziopandini
fd2c678b1c 127.0.0.1-as-advertise-address 2019-10-04 08:41:07 +02:00
Ed Bartosh
3765f21012 Add internal kubeadm output API
Added internal structures and APIs to handle
kubeadm structured output.
2019-10-03 14:13:00 +03:00
Kubernetes Prow Robot
f3981710db
Merge pull request #82473 from Nordix/kubeadm-dualstack-service-ip
Kubeadm DualStack Support for List of Service IPs
2019-10-02 11:26:08 -07:00
Marek Counts
114d7855f3 Removal of kubernetes error dependancies
removed kubernetes error deps
2019-09-28 15:09:48 +00:00
Marek Counts
dfbb6fb6bb replaced logs in validators to be warnings
Originally kubeadm used klot in the validators to log
These logs are converted to warnings and klog was removed.
2019-09-19 12:18:40 +00:00
Han Kang
866ea74326 remove pkg/version and some of redundant copies of it
Change-Id: Ia58367c1b1274bfb49c8a4784051463abaf795de
2019-09-16 16:24:35 -07:00
Arvinderpal Wander
bacc06d8fc kubeadm --service-cluster-ip-range supports a comma seperated list
of service subnets.

Update DNS, Cert, dry-run logic to support list of Service CIDRs.
Added unit tests for GetKubernetesServiceCIDR and updated
GetDNSIP() unit test to inclue dual-sack cases.
2019-09-16 09:33:43 -07:00
Kubernetes Prow Robot
fa3dfa82b0
Merge pull request #82414 from SataQiu/kubeadm-20190906
kubeadm: code clean up about kustomize
2019-09-11 15:27:53 -07:00
Kubernetes Prow Robot
7e060eec79
Merge pull request #81908 from tedyu/etcd-cluster-avail
Remove Client#ClusterAvailable from interface
2019-09-10 17:42:46 -07:00
SataQiu
c53f2f306a kubeadm: code clean up 2019-09-06 18:40:44 +08:00
Rostislav M. Georgiev
31b4c782c7 kubeadm: Fetching kube-proxy's config map is now optional
Whenever kubeadm needs to fetch its configuration from the cluster, it gets
the component configuration of all supported components (currently only kubelet
and kube-proxy). However, kube-proxy is deemed an optional component and its
installation may be skipped (by skipping the addon/kube-proxy phase on init).
When kube-proxy's installation is skipped, its config map is not created and
all kubeadm operations, that fetch the config from the cluster, are bound to
fail with "not found" or "forbidden" (because of missing RBAC rules) errors.

To fix this issue, we have to ignore the 403 and 404 errors, returned on an
attempt to fetch kube-proxy's component config from the cluster.
The `GetFromKubeProxyConfigMap` function now supports returning nil for both
error and object to indicate just such a case.

Signed-off-by: Rostislav M. Georgiev <rostislavg@vmware.com>
2019-09-05 18:25:22 +03:00
Gyuho Lee
93b9545f48 vendor: update with "update-vendor.sh" script
Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
2019-08-29 08:46:02 -07:00
Gyuho Lee
eb1509a1d3 kubeadm/app/util/etcd: : block etcd client creation until connection is up
The new etcd balancer (>3.3.14, 3.4.0) uses an asynchronous resolver for
endpoints. Without "WithBlock", the client may return before the
connection is up.

Signed-off-by: Gyuho Lee <leegyuho@amazon.com>
2019-08-29 08:38:29 -07:00
Ted Yu
2167321adb Remove Client#ClusterAvailable from interface 2019-08-29 07:40:34 -07:00
Kubernetes Prow Robot
b98f622852
Merge pull request #81910 from fabriziopandini/kubeadm-Json6902-Patches
kubeadm: add support for Json6902 Patches
2019-08-28 03:09:54 -07:00
fabriziopandini
0e447d797f kubeadm Json6902 Patches 2019-08-27 14:14:35 +02:00
Kubernetes Prow Robot
2c64627871
Merge pull request #81918 from tedyu/pki-comment
Correct comment in CertOrKeyExist
2019-08-26 10:20:37 -07:00
Ted Yu
55cc0e2957 Correct comment in CertOrKeyExist 2019-08-25 19:30:20 -07:00
Kubernetes Prow Robot
9a5b87a58b
Merge pull request #81821 from hwdef/fix-typo-cmd/kubeadm/app/util/config/initconfiguration.go
fix-typo-cmd/kubeadm/app/util/config/initconfiguration.go
2019-08-23 17:59:30 -07:00
Kubernetes Prow Robot
2d649c347f
Merge pull request #81701 from tedyu/init-cfg-convert
Check error return from Scheme.Convert
2019-08-22 23:27:42 -07:00
SataQiu
7a4cf591ea kubeadm: fix static check failures 2019-08-23 10:51:12 +08:00
hwdef
86dd72f345 fix-typo-cmd/kubeadm/app/util/config/initconfiguration.go 2019-08-23 10:07:07 +08:00
Kubernetes Prow Robot
59f5b3ddc4
Merge pull request #80937 from neolit123/1.16-error-stack-trace
kubeadm: print the stack trace of an error for klog level v>=5
2019-08-22 15:09:18 -07:00
Kubernetes Prow Robot
ca3e86e662
Merge pull request #81623 from neolit123/kernel-validator
kubeadm: support any Linux kernel version newer than 3.10
2019-08-22 11:12:59 -07:00
Lubomir I. Ivanov
2fc19136c1 kubeadm: print the stack trace of an error for klog level v>=5
- replace all stray calls of os.Exit() to util.CheckError() instead
- CheckError() now checks if the klog verbosity level is >=5
and shows a stack trace of the error
- don't call klog.Fatal in version.go
2019-08-22 20:09:54 +03:00
Kubernetes Prow Robot
d54c5163e0
Merge pull request #81458 from fabriziopandini/kubeadm-kustomize-ux
kubeadm: kustomize-ux
2019-08-22 05:46:32 -07:00
Ted Yu
185c0a16ee Check error return from Scheme.Convert 2019-08-20 20:17:14 -07:00
Lubomir I. Ivanov
bec9c3678b kubeadm: support any kernel version newer than 3.10
It seems undesirable that Kubernetes as a system should be
blocking a node if it's Linux kernel is way too new.

If such a problem even occurs we should exclude versions from
the list of supported versions instead of blocking users
from trying e.g. the latest 7.0.0-beta kernel because our
validators are not aware of this new version.
2019-08-21 01:23:53 +03:00
Sadlil Rhythom
3e6d483dd9 Fix Test for kubeadm/app/util/net.GetHostname 2019-08-19 14:38:19 +02:00
Kubernetes Prow Robot
2036ee5dde
Merge pull request #81465 from yanghaichao12/dev190815
remove defaultedInternalConfig from kubeadm
2019-08-16 17:03:06 -07:00
Kubernetes Prow Robot
9e60bedebe
Merge pull request #81385 from neolit123/etcd-probe
kubeadm: use etcd's /health endpoint for it's liveness probe
2019-08-16 14:06:09 -07:00
Lubomir I. Ivanov
99b64f1e8e kubeadm: use etcd's /health endpoint for it's liveness probe
Etcd v3.3.0 added the --listen-metrics-urls flag which allows specifying
addition URLs to the already present /health and /metrics endpoints.

While /health and /metrics are enabled for URLS defined with
--listen-client-urls (v3+ ?) they do require HTTPS.

Replace the present etcdctl based liveness probe with a standard HTTP
GET v1.Probe that connects to http://127.0.0.1:2381/health.

These endpoints are not reachable from the outside and only available
for localhost connections.
2019-08-16 01:06:49 +03:00
yanghaichao12
f54856952f remove defaultedInternalConfig fromr kubeadm
remove defaultedInternalConfig from kubeadm
2019-08-15 17:45:27 +08:00
fabriziopandini
a92e7975d2 kubeadm-kustomize-ux 2019-08-15 09:14:31 +02:00
tariqibrahim
6df4f62d1c [kubernetes/kubeadm] fix minor nil issues in kudeadm code 2019-08-14 21:49:39 -07:00
Kubernetes Prow Robot
c08ee9d51b
Merge pull request #80905 from fabriziopandini/kubeadm-kustomize-core
Kubeadm: kustomize core
2019-08-13 07:55:55 -07:00
fabriziopandini
97181595f0 kubeadm-kustomize-core 2019-08-12 14:16:51 +02:00
SataQiu
2e35c6b5bb kubeadm: the permissions of generated CSR files are changed from 0644 to 0600 2019-08-09 17:36:26 +08:00
Kubernetes Prow Robot
34db8e08c1
Merge pull request #81002 from zgfh/patch-10
kubeadm:  fix name of CA spell error
2019-08-07 03:12:49 -07:00
Kubernetes Prow Robot
b29e187a45
Merge pull request #80992 from dzzg/patch-1
cleanup: fix typo "contstruct" -> "construct"
2019-08-05 23:44:07 -07:00