Найти тему
P3TP0

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

Оглавление

Введение

Kubernetes — это оркестратор для контейнеров, написанный на языке Go в Google. Раньше уже существовали решения для создания и развёртывания виртуальных машин — такие как Microsoft Hyper-V или продукты от VMware.

Для контейнеров был тот же Docker — он позволял администрировать по несколько контейнеров одновременно. Однако для развёртывания больших многокомпонентных продуктов для сервисов и приложений, использующих контейнеры в своей архитектуре, технологий не было.

Поэтому появился Kubernetes: он позволяет автоматизировать развёртывание целых кластеров с контейнерами, гибко задавать различные политики и настройки и пользоваться подходом Infrastructure as Code.

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

Подготовка

Чтобы установить Kubernetes нам потребуется виртуальная машина в облаке или локально на Вашем сервере виртуализации. На данную виртуалку нам необходимо установить Ubuntu Server 22.04 LTS (можете выбрать любую другую версию Ubuntu Server или другой подходящий дистрибутив, например, Debian). После успешной установки операционной системы можно приступать к развертыванию Kubernetes.

Установка Kubernetes

В моем случае для Kubernetes я буду использовать containerd вместо полноценного Docker.

containerd — это бывшая часть Docker, а ныне самостоятельное решение, реализующее исполняемую среду для запуска контейнеров. При его создании, как утверждают разработчики, они стремились к простоте, надёжности и портируемости.

Также в качестве сетевого плагина я буду использовать Calico.

Приступим к установке:

1. Отключаем swap

swapoff -a
sed -i '/swap/s/^/#/' /etc/fstab

2. Добавляем два модуля ядра

tee /etc/modules-load.d/containerd.conf <<EOF
overlay
br_netfilter
EOF

3. Загружаем эти модули ядра

modprobe overlay
modprobe br_netfilter

4. Создаем файл конфигурации

tee /etc/sysctl.d/kubernetes.conf <<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF

5. Применяем все параметры конфигурации ядра

sysctl --system

6. Устанавливаем необходимые утилиты

apt install -y curl gnupg2 software-properties-common apt-transport-https ca-certificates

7. Загружаем GPG-ключ для репозитория Docker

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/docker.gpg

8. Добавляем репозиторий Docker

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

9. Устанавливаем containerd

apt update && apt install -y containerd.io

10. Создаем и вносим изменения в конфигурационный файл для containerd

containerd config default | sudo tee /etc/containerd/config.toml >/dev/null 2>&1
sed -i 's/SystemdCgroup \= false/SystemdCgroup \= true/g' /etc/containerd/config.toml

11. Перезапускаем, добавляем в автозапуск и проверяем статус у containerd

systemctl restart containerd
systemctl enable containerd
systemctl status containerd

12. Загружаем GPG-ключ для репозитория Kubernetes

curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo gpg --dearmour -o /etc/apt/trusted.gpg.d/kubernetes-xenial.gpg

13. Добавляем репозиторий Kubernetes

apt-add-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"

14. Загружаем еще один GPG-ключ для репозитория Kubernetes

curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.28/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg

15. Устанавливаем пакеты Kubernetes

apt update && apt install -y kubelet kubeadm kubectl

16. «Замораживаем» пакеты Kubernetes

apt-mark hold kubelet kubeadm kubectl

17. Инициализируем кластер Kubernetes и задаем CIDR для сети подов

kubeadm init --pod-network-cidr=10.244.0.0/16

18. Создаем папку .kube и копируем туда конфигурационный файл

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

19. Изменяем владельца и группу файла конфигурации Kubernetes для текущего пользователя и «размораживаем» пакеты Kubernetes

chown $(id -u):$(id -g) $HOME/.kube/config
apt-mark unhold kubelet kubeadm kubectl

20. Применяем манифест Calico для развертывания сетевого плагина в нашем кластере Kubernetes

kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.25.0/manifests/calico.yaml

Простые 20 шагов — и Ваш кластер Kubernetes установлен и готов к работе!

После успешного старта Calico Вы можете начинать пользоваться своим кластером Kubernetes и разворачивать в нем все, что душе угодно.

Проверить успешность запуска можно следующей командой:

sudo kubectl get pods -n kube-system

Команда отобразит все системные поды Kubernetes, а также поды Calico.

Если в статусе всех подов будет указано «Running», то Ваш кластер успешно запущен и готов к работе.