Commit Graph

17 Commits

Author SHA1 Message Date
pgayvallet
ba8e01bf13 Add capability to not start kubelet depending on either a configuration file or an environment variable.
Signed-off-by: pgayvallet <pierre.gayvallet@gmail.com>
2017-11-06 15:08:22 +01:00
Ian Campbell
164c4a30f5 kubernetes: support untainting master via metadata
If a stamp file is present in the metadata then untaint.

This is useful for dev environments where you only want to start a single vm.

The construction of the metadata becomes a little more complex to produce
correct json syntax now that there are two (independent) possible options.

Likewise the kubelet.sh script now takes the presence of /var/config/kubeadm
(rather than /var/config/kubeadm/init) as the signal to use the more structured
setup, since we may now have /var/config/kubeadm/untaint-master but not
/var/config/kubeadm/init so would otherwise end up passing the contents of
`/var/config/userdata` (something like `{ "kubeadm": { "untaint-master": "" }
}`) to `kubeadm` and confusing it enormously.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-10-04 11:28:48 +01:00
Ian Campbell
57a2ae4318 kubernetes: adjust for v1.8 bootstrapping arrangements.
With kube 1.8 kubeadm initially configures worker nodes with a
bootstrap-kubelet.conf. Adjust our start of day scripting to DTRT.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-10-03 15:08:43 +01:00
Ian Campbell
9a99164cf7 kubernetes: Use /etc/kubernetes rather than /var/lib/kubelet
This is a bind mount, but /etc/kubernetes is the path formally expected/create
by kubeadm.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-10-03 14:59:54 +01:00
Ian Campbell
6d387bf59d kubernetes: do not try to re-init the cluster on subsequent boots
If `kubelet.conf` already exits then don't try to redo `kubeadm`, no matter
what the metadata requests.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-10-02 10:50:06 +01:00
Ian Campbell
5804f9db3c kubernetes: rename /etc/kubelet.conf to /etc/kubelet.sh.conf
To help reduce confusion from this file (which configures our `kubelet.sh`
wrapper) vs `/var/lib/kubeadm/kubelet.conf` (which is created by `kubeadm` and
configures `kubelet` itself).

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-09-29 10:04:16 +01:00
Ian Campbell
a2d052b3df kubernetes: disable cAdvisor (in kubelet) from listening on 0.0.0.0:4194
Signed-off-by: Ian Campbell <ijc@docker.com>
2017-09-26 11:00:51 +01:00
Ian Campbell
5c4c25cac6 kubernetes: support auto-init via metadata
Set KUBE_MASTER_AUTOINIT when using boot.sh to enable. User will need to pick
up the token for other nodes using `kubeadm token list`.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-09-20 15:23:27 +01:00
Ian Campbell
3ce260cb9a kubernetes: rework kubelet and kubeadm start of day interations
Rework the kubelet.sh script by adding an explicit step which waits for the
configuration to be valid, either by finding appropriate metadata or by waiting
explicitly for kubelet.conf to be created (e.g. by kubeadm) before launching
kubelet. The previous construct was implicitly waiting for kubelet.conf to be
created since kubelet fails if that file is not present.

Pull the set of start of day yaml files to be applied (currently just weave)
out of the kubelet image and into the LinuxKit yaml by providing a directory
which is searched for *.yaml after init.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-09-20 15:23:27 +01:00
Ian Campbell
b6fbc82e41 kubernetes: Configuration of kubelet via file
This allows cri-containerd and docker based systems to pass the correct options
via composition of yml files, while keeping the kubelet service stanza common.

Since bind mounts are not conditional on the presence of the source we need to
create an empty file in the docker case.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-09-18 14:25:54 +01:00
Ian Campbell
07e4f515a4 kubernetes: add basic cni plugins dynamically
This avoids a slightly tricky sequence of nested bind mounts by just unpacking
a tarball on boot (with a stamp so it only happens once).

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-09-18 14:25:54 +01:00
Ian Campbell
1074b4a8d4 kubernetes: point kubelet at /var/lib/cni directly
Still need the /opt bind to host for weave.yaml but no need for etc any longer.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-09-18 14:25:25 +01:00
Ian Campbell
35542e493c kubernetes: drop /rootfs from kubelet container
Since 424203cd9c we can use /var/lib/cni/{etc,opt} directly.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-09-18 12:24:59 +01:00
Ian Campbell
67fa0ad662 kubernetes: allow users to add kubelet options by overriding the command
For example to tell kubelet to use cri-containerd:

    command: ["/usr/bin/kubelet.sh", "--container-runtime=remote", "--container-runtime-endpoint=unix:///var/run/cri-containerd.sock"]

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-09-18 12:24:59 +01:00
Ian Campbell
d48cc7998b kubernetes: Use pkg/metadata
Still a flat/unstructured config space, but at least uses the mounting
machinery.

`boot.sh` continues to just work without modification.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-07-17 13:42:11 +01:00
Ian Campbell
23d6649de0 kubernetes: Format scripts to be more readable.
These were originally generated by some box builder runes and then taken
wholesale here. Format them to be more readable.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-07-17 13:42:11 +01:00
Ian Campbell
cd43b44e7c kubernetes: Build image using Dockerfile and standard build system
This is a pretty straight port of the previous box stuff, without much attempt
to clean things up.

Image label is a placeholder, will update once a batch of changes are complete.

Signed-off-by: Ian Campbell <ijc@docker.com>
2017-07-17 13:42:09 +01:00