www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Установка, обновление, резервное копирование и восстановление кластера Kubernetes с использованием kubeadm

Дата публикации Oct 3, 2019

  • Три Сервера Ubuntu версия Ubuntu 16.04 Xenial LTS

меры

Запустите команды ниже на всех узлах

Получить ключ Docker gpg

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Добавьте хранилище Docker

sudo add-apt-repository    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

Получите ключ gpg Kubernetes

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

Добавить хранилище Kubernetes

cat << EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list
deb https://apt.kubernetes.io/ kubernetes-xenial main
EOF

Обновите ваши пакеты

sudo apt-get update

Установите Docker, kubelet, kubeadm и kubectl:

sudo apt-get install -y docker-ce=18.06.1~ce~3-0~ubuntu kubelet=1.13.5-00 kubeadm=1.13.5-00 kubectl=1.13.5-00

Сохранить все установленные пакеты в текущей версии

sudo apt-mark hold docker-ce kubelet kubeadm kubectl

Добавьте правило iptables вsysctl.conf:

echo "net.bridge.bridge-nf-call-iptables=1" | sudo tee -a /etc/sysctl.conf

Включите iptables немедленно:

sudo sysctl -p

Отключить своп

swapoff -a

Выполнять следующие команды только на мастере

Инициализация кластера Kubernetes

sudo kubeadm init --pod-network-cidr=121.244.0.0/16

Как только вы запустите указанную выше команду, вы получите изображение, похожее на следующее. Скопируйте команду kubeadmin join и сохраните ее.

Инициирование в Kubernetes завершено

Настройка локальная

mkdir -p $HOME/.kube

sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config

sudo chown $(id -u):$(id -g) $HOME/.kube/config

Вы можете использовать любой из следующих вариантов. Если вы планируете установить Istio после установки Kubernetes, используйте вариант 2.

Применить фланелевое наложение сети CNI (вариант 1)

kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Применить сетевое наложение Calico (вариант 2)

curl https://docs.projectcalico.org/v3.9/manifests/calico.yaml -OPOD_CIDR="<your-pod-cidr>" \
sed -i -e "s?121.244.0.0/16?$POD_CIDR?g" calico.yaml
kubectl apply -f calico.yaml

Выполнять следующие команды только на рабочих узлах

kubeadm join [your unique string from the kubeadm init command]

Запомните команду, напечатанную на экране ранее, которую вы сохранили. да, тот!

Убедитесь, что рабочие узлы успешно присоединились к кластеру:

kubectl get nodes

Обновление кластера Kubernetes

kubeadm позволяет нам обновлять компоненты кластера в правильном порядке, добавляя важные обновления функций, которые мы могли бы использовать в последней стабильной версии Kubernetes.

В этой статье я проведу обновление нашего кластера с версии 1.13.5 до 1.14.1.

Получить версию сервера API:

kubectl version --short

Отпустите удержание версий kubeadm и kubelet:

sudo apt-mark unhold kubeadm kubelet

Установить версию 1.14.1 kubeadm:

sudo apt install -y kubeadm=1.14.1-00

Держите версию kubeadm в 1.14.1:

sudo apt-mark hold kubeadm

Проверьте версию kubeadm

kubeadm version

Запланируйте обновление всех компонентов контроллера:

sudo kubeadm upgrade plan

Когда вы запускаете команду выше, вы должны получить вывод, похожий на изображение ниже.

Обновите компоненты контроллера:

sudo kubeadm upgrade apply v1.14.1

Отпустите удержание версии kubectl:

sudo apt-mark unhold kubectl

Обновление kubectl:

sudo apt install -y kubectl=1.14.1-00

Держите версию kubectl в 1.14.1:

sudo apt-mark hold kubectl

Обновите версию kubelet:

sudo apt install -y kubelet=1.14.1-00

Держите версию kubelet в 1.14.1:

sudo apt-mark hold kubelet

Теперь повторите вышеуказанные шаги во всех узлах. Итак, весь кластер будет обновлен.

Обновления операционной системы в кластере Kubernetes

Когда нам нужно отключить узел для обслуживания, Kubernetes позволяет легко выселить модули на этом узле, отключить их, а затем продолжить планирование модулей после завершения обслуживания.

Кроме того, если узел должен быть выведен из эксплуатации, вы также можете легко удалить узел и заменить его новым, присоединив его к кластеру.

Посмотрите, какие модули работают на каких узлах:

kubectl get pods -o wide

Выселить стручки на узле:

kubectl drain [node_name] --ignore-daemonsets

Смотреть, как узел меняет статус:

kubectl get nodes -w

Расписание pods к узлу после завершения обслуживания:

kubectl uncordon [node_name]

Удалить узел из кластера:

kubectl delete node [node_name]

Добавление нового узла в существующий кластер Kubernetes

Создайте новый токен:

sudo kubeadm token generate

Перечислите токены:

sudo kubeadm token list

Напечатайте команду kubeadm join, чтобы присоединить узел к кластеру:

sudo kubeadm token create [token_name] --ttl 2h --print-join-command

Резервное копирование кластера Kubernetes

Резервное копирование вашего кластера может быть полезным, особенно если у вас есть один кластер etcd, так как там хранится все состояние кластера. Утилита etcdctl позволяет нам легко создавать снимок состояния нашего кластера (etcd) и сохранять его во внешнем местоположении. Я рассмотрю создание снимка и поговорю о восстановлении в случае сбоя.

Получите двоичные файлы etcd:

wget https://github.com/etcd-io/etcd/releases/download/v3.3.12/etcd-v3.3.12-linux-amd64.tar.gz

Разархивируйте сжатые двоичные файлы:

tar xvf etcd-v3.3.12-linux-amd64.tar.gz

Переместить файлы в/usr/local/bin:

sudo mv etcd-v3.3.12-linux-amd64/etcd* /usr/local/bin

Сделайте снимок хранилища данных etcd, используя etcdctl:

sudo ETCDCTL_API=3 etcdctl snapshot save snapshot.db --cacert /etc/kubernetes/pki/etcd/server.crt --cert /etc/kubernetes/pki/etcd/ca.crt --key /etc/kubernetes/pki/etcd/ca.key

Просмотрите страницу справки для etcdctl:

ETCDCTL_API=3 etcdctl --help

Перейдите в папку, содержащую файлы сертификатов:

cd /etc/kubernetes/pki/etcd/

Посмотрите, что снимок был успешным:

ETCDCTL_API=3 etcdctl --write-out=table snapshot status snapshot.db

Заархивируйте содержимое каталога etcd:

sudo tar -zcvf etcd.tar.gz /etc/kubernetes/pki/etcd

Скопируйте каталог etcd на другой сервер:

scp etcd.tar.gz [email protected]:~/

Восстановление резервных копий

Просто следуйте инструкциям, приведенным в следующей ссылке.

https://github.com/etcd-io/etcd/blob/master/Documentation/op-guide/recovery.md

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map