====== 19. Обслуживание кластера ======
===== Освобождение нод от нагрузки =====
Выгнать поды с ноды и запретить планирование новых подов:
kubectl drain node-1
Вернуть ноду в рабочее состояние:
kubectl uncordon node-1
Запретить планирование новых подов на ноду:
kubectl cordon node-2
===== Обновление кластера =====
* Поддерживаются последние 3 версии kubernetes.
* Компоненты kubernetes могут быть разных версий:
* kube-apiserver - **X**
* Control-manager и kube-scheduler - **X-1**
* kubelet и kube-proxy - **X-2**
1. Обновление kubeadm
apt upgrade -y kubeadm=1.12.0-00
kubeadm upgrade plan
kubeadm upgrade apply v1.12.0
2. Обновление kubelet на мастере
kubectl drain node master-01 --ignore-daemonsets
apt-mark unhold kubelet kubectl
apt upgrade -y kubectl=1.12.0-00
apt upgrade -y kubelet=1.12.0-00
apt-mark hold kubelet kubectl
systemctl daemon-reload
systemctl restart kubelet.service
3. Обновление kubelet на worker нодах.
kubectl drain node node-01 --ignore-daemonsets#on master
apt-mark unhold kubelet
apt upgrade -y kubelet=1.12.0-00
apt-mark hold kubelet
kubeadm upgrade node config --kubelete-version v1.12.0 #on master
systemctl daemon-reload
systemctl restart kubelet.service
kubectl uncordon node-01 #on master
===== Резервное копирование ETCD =====
Утилита для работы с базой etcd: etcdctl \\
Перед началом работы необходимо указать версию API, через переменную окружения ETCDCTL_API
export ETCDCTL_API=3
etcdctl version
Снять снапшот с базы:
etcdctl \
snapshot save snapshot.db \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/etcd/ca.crt \
--cert=/etc/etcd/etcd-server.crt \
--key=/etc/etcd/etcd-server.key
Восстановить снапшот базы:
systemctl stop kube-apiserver # or service kube-apiserver stop
etcdctl \
snapshot restore snapshot.db \
--data-dir /var/lib/etcd-from-backup \
--endpoints=https://127.0.0.1:2379 \
--cacert=/etc/etcd/ca.crt \
--cert=/etc/etcd/etcd-server.crt \
--key=/etc/etcd/etcd-server.key
Изменить в файле манифеста /etc/kubernetes/manifests/etcd.yaml путь hostPath etcd-data на новый:
volumes:
- hostPath:
path: /var/lib/etcd-from-backup
type: DirectoryOrCreate
name: etcd-data
systemctl restart etcd
systemctl start kube-apiserver