====== 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