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