====== Kubernetes ======
===== Install a cluster with kubeadm =====
Complete guide https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/install-kubeadm/
On Debian stretch:
GRUB_CMDLINE_LINUX="cgroup_enable=memory swapaccount=1"
sudo update-grub
sudo reboot
wget https://download.docker.com/linux/debian/gpg -O - | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/debian stretch stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt-get update
sudo apt-get install docker-ce
wget https://packages.cloud.google.com/apt/doc/apt-key.gpg -O - | sudo apt-key add -
echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
sudo apt-get update
sudo apt-get install kubectl kubelet kubeadm kubernetes-cni
sudo apt-mark hold kubectl kubelet kubeadm
Then bootstrap the cluster with kubeadm:
sudo kubeadm init --node-name k2 --service-dns-domain k.in.philpep.org --pod-network-cidr 10.42.0.0/16 --service-cidr 10.96.0.0/12
mkdir ~/.kube
sudo cat /etc/kubernetes/admin.conf > ~/.kube/config
kubectl get nodes
===== Join worker nodes with kubeadm =====
TODO
===== Upgrade a cluster with kubeadm =====
Read upgrade guide carrefully before upgrading ! Exemple of such notes: https://kubernetes.io/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade-1-15/
On control pane:
export version=1.15.0-00
sudo apt-get install kubeadm=$version
sudo kubeadm upgrade plan
sudo kubeadm upgrade apply v1.15.0
sudo apt-get install kubectl=$version kubelet=$version
sudo systemctl restart kubelet
sudo apt-mark hold kubectl kubelet kubeadm
On other control panes and on worker nodes:
export version=1.15.0-00
sudo apt-get install kubeadm=$version
sudo kubeadm upgrade node
sudo apt-get install kubectl=$version kubelet=$version
sudo systemctl restart kubelet
sudo apt-mark hold kubectl kubelet kubeadm
===== Modify cluster configuration =====
kubeadm write configuration in a configmap named //kubeadm-config// in the //kube-system// namespace.
Edit with:
kubectl -n kube-system edit configmap kubeadm-config
Parameters for api-server, controllers etc, can be added to the //extraArgs// key. Then to apply changes:
kubeadm upgrade node
This will write new static manifests to /etc/kubernetes/manifest and restart the components that need to be restarted.
Example for securing a 1.16 cluster:
ClusterConfiguration: |
apiServer:
extraArgs:
authorization-mode: Node,RBAC
profiling: "false"
enable-admission-plugins: NodeRestriction,AlwaysPullImages,DenyEscalatingExec