image

Kubernetes прекращает поддержку Docker-а. Теперь, вся тяжелая работа, которую вы вложили в изучение, сильно изменится. Даже с самого начала пути использование Kubernetes не будет прежним.

Я говорю о самой установке инструмента управления контейнерами. Вы, конечно, не можете развернуть Kubernetes так же, как когда-то — установив Docker в качестве среды выполнения.

Вместе мы сейчас попробуем установить  Kubernetes на Ubuntu Server 20.04 без Docker-а.

Что вам понадобится


  • Пользователь с привилегиями sudo
  • Экземпляр Ubuntu Server 20.04 (он будет служить Контроллером — вам понадобятся другие экземпляры для работы в качестве узлов, но я собираюсь продемонстрировать только на Контроллере, так как установка будет одинаковой на всех машинах)

Как установить среду выполнения containerd


Первое, что мы сделаем, это установим среду выполнения containerd, которая займет место Docker. Войдите в свой экземпляр Ubuntu Server и обязательно обновите apt с помощью команды:

sudo apt-get update

После этого вы должны запустить обновление с помощью команды:

sudo apt-get upgrade -y

Если ядро ??обновляется, вам нужно перезагрузить сервер (если у вас не установлен и не запущен Live Patch).
 
Установите containerd с помощью команды:

sudo apt-get install containerd -y

Настройте containerd и запустите службу с помощью команд:

sudo mkdir -p /etc/containerd
sudo su -
containerd config default  /etc/containerd/config.toml

Как установить Kubernetes


Далее мы установим Kubernetes. Сначала нужно добавить ключ GPG репозитория с помощью команды:

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

Добавьте репозиторий Kubernetes с помощью команды:
 
sudo apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

Теперь вы можете установить все необходимые компоненты Kubernetes с помощью команды:

sudo apt-get install kubeadm kubelet kubectl –y

Как решить несколько проблем, возникших с containerd


Здесь все становится немного сложнее. В Docker было решено множество внутренних вещей. Когда вы переходите на containerd, вам нужно внести некоторые изменения в конфигурацию вручную. 

Первое изменение — добавить строку в /etc/sysctl.conf. Откройте файл командой:

sudo nano /etc/sysctl.conf

Открыв этот файл, добавьте снизу следующее:

net.bridge.bridge-nf-call-iptables = 1

Сохраните и закройте файл. 

Затем введите команды:

sudo -s
sudo echo '1' > /proc/sys/net/ipv4/ip_forward
exit

Перезагрузите конфигурации с помощью команды:

sudo sysctl --system

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

sudo modprobe overlay
sudo modprobe br_netfilter

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

Как завершить настройку


Вам нужно будет отобразить все ваши узлы в / etc / hosts. Убедитесь, что отображение имеет форму:

IP Address hostname

Следующим шагом является установка имени хоста вашего контроллера (убедитесь, что оно соответствует имени хоста, которое вы использовали в / etc / hosts) с помощью команды:

sudo hostnamectl set-hostname HOSTNAME

Где HOSTNAME — это имя хоста, которое вы хотите использовать.

Отключите свопинг, открыв файл fstab для редактирования командой:

sudo nano /etc/fstab

В этом файле закомментируйте (добавив символ # в начало строки) запись, которая начинается с:

/swap.img

Эта строка теперь будет начинаться с:

# / swap.img

Сохраните и закройте файл. 

Отключите своп командой:

sudo swapoff -a

Вытащите необходимые контейнеры командой:

sudo kubeadm config images pull

На контроллере инициализируйте Kubernetes с помощью команды:

sudo kubeadm init --pod-network-cidr=IPADDRESS/24

Где IPADDRESS — это IP-адрес вашего контроллера.

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

Прежде чем вы сможете присоединить узлы к кластеру, вам нужно позаботиться о еще нескольких битах в кластере.

На контроллере создайте каталог кластера с помощью команды:

mkdir -p $ HOME / .kube

Скопируйте файл конфигурации в этот каталог с помощью команды:

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

Дайте конфигурационному файлу соответствующие разрешения с помощью команды:

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

Разверните сеть контейнеров (в данном случае мы будем использовать weave-net) в кластере с помощью команды:

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"

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

Процесс не так прост, как раньше. Надеюсь, что в будущем развертывание кластера Kubernetes будет таким же простым, как и при использовании Docker.