Установка K8s совместно с Rancher

Данный пост не претендует на полноту предоставленной информации.
Все действия выполняете на свой страх и риск.
Для понимания поста требуются минимальные знания в администрировании Linux.

Сегодня мы рассмотрим наполнение локального Docker Registry, установку кластера Kubernetes и установку Rancher для K8s. Установка Kubernetes будет производится с помощью утилиты Rancher Kubernetes Engine (RKE).

Погнали!

Данная инструкция написана для такой схемы:

Установка K8s совместно с Rancher

Состав компонентов: Сервер установки обновлений (далее СУО) – 1 шт., Мастер нода – 3 шт., Воркер нода – 3 шт.

Начнём настройку хостов, тут все просто. На все хосты установим Docker и отключим swap:

apt install docker docker.io

# или

yum install docker docker.io

swapoff -a

nano /etc/fstab

#/swap.img none swap sw 0 0

Затем добавляем вашего текущего пользователя в группу Docker:

sudo usermod -aG docker <Имя_Вашего_пользователя>

В моём примере Docker не будет использовать авторизацию, поэтому на всех хостах создаем файл daemon.json:

nano /etc/docker/daemon.json

Со следующим содержимым:

{

"data-root": "/opt/docker-data", # В моем случае /opt это примонтированный диск

"insecure-registries" : ["<FQDN_СЕРВЕРА_УСТАНОВКИ_ОБНОВЛЕНИЙ>:5000"]

}

Включаем автозагрузку Docker и запускаем его:

systemctl enable docker

systemctl start docker

Теперь необходимо на хостах кубера создать учетную запись rke (для удобства), добавить её в группу docker и настроить доступ с СУО до хостов кубера по SSH ключу.

Теперь загружаем в локальный Docker Registry необходимые образы. Для пакетной загрузки образов можно использовать скрипт из статьи Сохранение и загрузка нескольких Docker образов.

Список образов (так же они будут использоваться в будущих статьях):

Продолжаем настройку СУО. Установим необходимые утилиты, а именно: kubectl, rke и helm. Версии из статьи этих утилит можно взять в репозитории GitHub, папка bin.

Копируем файлы в папку /tmp на СУО и выполняем следующие команды:

cd /tmp

# Установка RKE

cp /tmp/rke_linux-amd64 /usr/local/bin/rke

chmod +x /usr/local/bin/rke

# HELM

tar -zxvf helm-v3.8.2-linux-amd64.tar.gz

mv linux-amd64/helm /usr/local/bin/helm

# KUBECTL

cp /tmp/kubectl /usr/local/bin/

chmod +x /usr/local/bin/kubectl

На СУО создаем папку /opt/rke и в ней создаем файл cluster.yml со следующим содержимым:

nodes:

- address: <FQDN_кубер_мастер_1>

user: rke

role: ['controlplane', 'etcd']

- address: <FQDN_кубер_мастер_2>

user: rke

role: ['controlplane', 'etcd']

- address: <FQDN_кубер_мастер_3>

user: rke

role: ['controlplane', 'etcd']

- address: <FQDN_кубер_воркер_1>

user: rke

role: ['worker']

- address: <FQDN_кубер_воркер_2>

user: rke

role: ['worker']

- address: <FQDN_кубер_воркер_3>

user: rke

role: ['worker']

private_registries:

- url: <АДРЕС_ЛОКАЛЬНОГО_REGISTRY:ПОРТ>

is_default: true

Теперь все готово для установки k8s кластера. Выполняем следующие команды:

cd /opt/rke

rke up

После выполнения rke up в папке /opt/rke появятся два файла (cluster.rkestate и kube_config_cluster.yml). Эти файлы важны и они потребуются для дальнейшей работы с кластером. Теперь давайте проверим статус кластера:

export KUBECONFIG=/opt/rke/kube_config_cluster.yml

# получения статуса нод

kubectl get nodes

На этом установка кластера Kubernetes закончена. Теперь давайте установим Rancher.

Для установки Rancher необходимо доменное имя и SSL сертификат для данного доменного имени. Сертификат должен быть в виде двух файлов .crt и .key. Они понадобятся позже.

На СУО создаем временную папку /tmp/rancher. В эту папку копируем файл rancher-2.6.5.tgz (доступен в папке bin в GitHub). Далее выполняем следующие команды:

cd /tmp/rancher/

helm template rancher ./rancher-2.6.5.tgz --output-dir . \

--no-hooks \

--namespace cattle-system \

--set hostname=<ДОМЕННОЕ_ИМЯ_RANCHER> \

--set rancherImage=<АДРЕС_ЛОКАЛЬНОГО_REGISTRY:ПОРТ>/rancher/rancher \

--set ingress.tls.source=secret \

--set systemDefaultRegistry=<АДРЕС_ЛОКАЛЬНОГО_REGISTRY:ПОРТ> \

--set useBundledSystemChart=true

export KUBECONFIG=/opt/rke/kube_config_cluster.yml

kubectl create namespace cattle-system

kubectl -n cattle-system create secret tls tls-rancher-ingress \

--cert=tls.crt \

--key=tls.key

kubectl -n cattle-system apply -R -f ./rancher

Терминал не закрываем.

Теперь через браузер заходим по адресу https://<ДОМЕННОЕ_ИМЯ_RANCHER>

При первом входе будет выведено сообщение, что нужно ввести пароль для дальнейшей настройки. Там же будет команда которую надо выполнить на СУО (для этого мы и не закрывали терминал). Результатом выполнения команды будет временный пароль. Этот пароль и нужно ввести в веб интерфейсе.

Теперь можно задать свой пароль для учётной записи admin.

На этом настройка Rancher закончена.

Обсудить эту заметку можно в нашем Телеграм канале: https://t.me/devops_spb_ru (@devops_spb_ru)

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества