Руководство по Kubernetes
В статье мы расскажем, что такое Kubernetes, покажем, как установить Kubernetes с нуля, и опишем начало работы с Kubernetes.
Введение в Kubernetes: что это такое и как устроено
Kubernetes (Кубернетес) — это платформа для автоматизации управления контейнерами приложений с помощью кластеров на Ubuntu, CentOS и других ОС семейства Linux. Кластеры подключены к высокоуровневому API. Благодаря этому можно системно группировать контейнеры, балансировать нагрузку и активировать задачи одновременно из сотен приложений.
Настройка Kubernetes-кластера будет интересна крупным компаниям с разработками формата Big Data или команде программистов, которым нужна крупная производственная среда. Для таких масштабных проектов хорошо подойдет инфраструктурная платформа на основе Kubernetes. Kubernetes требователен к приложениям, с которыми работает — они должны функционировать строго по принципу микросервисов. Также кластер Кубернетес расходует много ресурсов, поэтому запускать его в небольших проектах невыгодно.
Основные компоненты архитектуры Kubernetes
Архитектура Kubernetes состоит из следующих компонентов:
- Nodes (нода или узел) — виртуальная или физическая машина, на которой работают контейнеры приложений. Каждая нода содержит компоненты, которые позволяют запускать сервисы контейнеризации (например, Docker или Containerd).
- Pods или поды — базовые модули для управления приложениями. Могут состоять из одного или нескольких контейнеров.
- Volume или том — ресурс для единовременного использования нескольких контейнеров.
- Kube-proxy — совокупность балансировщика нагрузки и прокси-сервера, которые позволяют маршрутизировать входящий трафик для конкретных контейнеров пода.
- Kubelet — транслирует статус подов на узле и следит за корректностью работы конкретного контейнера, образа и других компонентов.
Kubernetes можно установить с помощью готового инструмента или самостоятельно, добавляя каждый компонент архитектуры вручную. Мы расскажем, как установить полный функционал Kubernetes на Ubuntu вторым способом.
Для настройки Kubernetes:
- измените имена хостов,
- установите Kubernetes,
- включите модули ядра,
- настройте sysctl,
- установите Containerd,
- разверните Kubernetes.
В инструкции мы опишем установку для мастер-ноды и для одной рабочей ноды. Мастер-ноду назовем kube-master, а рабочую ноду — kube-worker.
Подготовка к установке
-
1.
На каждой ноде откройте файл hosts с помощью команды:
sudo nano /etc/hosts
-
2.
В файле удалите строку, в которой указан IP вашего сервера. Добавьте записи:
IP_ADDRESS kube-master IP_ADDRESS kube-worker
Где
IP_ADDRESS
— IP-адрес каждого узла. -
3.
Сохраните и закройте файл. Для этого нажмите Ctrl+X, затем Y и Enter.
-
4.
Зайдите в мастер-ноду и измените имя хоста:
sudo hostnamectl set-hostname kube-master
-
5.
Войдите в рабочую ноду и введите команду:
sudo hostnamectl set-hostname kube-worker
-
6.
Перезайдите на каждый из серверов.
Как установить Kubernetes
-
1.
Войдите в мастер-ноду и запустите обновление с помощью команд:
sudo apt update
sudo apt upgrade -y
-
2.
После завершения обновления введите команду:
sudo apt install curl apt-transport-https -y
-
3.
Затем добавьте GPG-ключ командой:
curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
-
4.
Добавьте репозиторий Kubernetes:
echo "deb https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
-
5.
Введите команду:
sudo apt update
-
6.
Установите необходимое программное обеспечение:
sudo apt -y install vim git curl wget kubelet kubeadm kubectl
-
7.
Отключите автоматическое обновление kubelet, kubeadm и kubectl:
sudo apt-mark hold kubelet kubeadm kubectl
-
8.
Включите службу kubelet:
sudo systemctl enable --now kubelet
-
9.
Проверьте установленную версию kubeadm:
kubeadm version
Kubernetes: установка
-
10.
Отключите подкачку памяти:
sudo swapoff -a
Повторите проделанные шаги на kube-worker.
Как включить модули ядра и изменить настройки в sysctl
На всех узлах внесите следующие настройки:
-
1.
Включите модули overlay и br_netfliter:
sudo modprobe overlay
sudo modprobe br_netfilter
-
2.
Теперь измените настройки sysctl. Откройте файл kubernetes.conf:
sudo nano /etc/sysctl.d/kubernetes.conf
-
3.
Вставьте в него следующие строки:
net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1
-
4.
Сохраните и закройте файл. Для этого нажмите Ctrl+X, затем Y и Enter.
-
5.
Перезагрузите sysctl командной:
sudo sysctl --system
Как установить Containerd
Теперь на каждой машине нужно установить среду для запуска контейнеров — Containerd.
-
1.
Настройте постоянную загрузку модулей Containerd с помощью команды (нужно скопировать и вставить сразу все 4 строки):
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf overlay br_netfilter EOF
-
2.
Перезагрузите sysctl командной:
sudo sysctl --system
-
3.
Установите необходимые пакеты:
sudo apt install curl gnupg2 software-properties-common apt-transport-https ca-certificates -y
-
4.
Добавьте GPG-ключ:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
-
5.
Добавьте необходимый репозиторий при помощи команды:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
-
6.
Установите Сontainerd:
sudo apt update
sudo apt install containerd.io -y
-
7.
Зайдите под пользователем root:
sudo su -
-
8.
Создайте новый каталог для Сontainerd:
mkdir -p /etc/containerd
-
9.
Создайте файл конфигурации:
containerd config default>/etc/containerd/config.toml
-
10.
Выйдите из-под пользователя root:
exit
-
11.
Перезапустите Containerd:
sudo systemctl restart containerd
-
12.
Включите автоматический запуск службы Containerd:
sudo systemctl enable containerd
Как развернуть Kubernetes
-
1.
Перейдите в kube-master и извлеките необходимые образы контейнеров:
sudo kubeadm config images pull
-
2.
Инициализируйте кластер при помощи команды:
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
-
3.
В консоли появится информация о команде kubeadm join. Скопируйте и сохраните вывод этой команды. Подключение к кластеру
Введите эту команду на ноде kube-worker, чтобы присоединить ее к кластеру.
Если не сохранили команду добавления в кластер, получите ее повторно:
sudo kubeadm token create --print-join-command
-
4.
Создайте директорию для кластера на мастер-ноде с помощью следующих команд:
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
-
5.
Теперь разверните сеть подов — она используется для коммуникации между несколькими нодами в кластере. Чтобы развернуть виртуальную сеть Flannel pod network, введите:
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
-
6.
После установки проверьте, что сеть развернута:
kubectl get pods --all-namespaces
Kubernetes: настройка
-
7.
Присвойте узлу kube-worker роль worker при помощи команды (команду нужно вводить в мастер-ноде):
sudo kubectl label node kube-worker node-role.kubernetes.io/worker=worker
-
8.
После завершения настроек выполните команду в kube-master:
kubectl get nodes
Kubernetes в действии
Вы должны увидеть в списке мастер-ноду и рабочую ноду.
Готово, вы развернули Kubernetes. Теперь вы можете начать работу с платформой.
Итак, в руководстве мы объяснили, зачем нужен Kubernetes, дали описание основ функционирования архитектуры и показали, как установить Kubernetes на Ubuntu.
Помогла ли вам статья?
Спасибо за оценку. Рады помочь 😊