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.