Сегодня мы рассмотрим вопрос установки Kubernetes кластера в среде операционных систем, основанных на RHEL7: RedHat Enterprise Linux 7, CentOS 7 и Amazonlinux 2.
Мы будем рассматривать установку простого кластера: один мастер-узел + несколько рабочих узлов.
Базовая установка
Первые шаги являются общими для всех узлов кластера: мастеров и рабочих.
Подготовка узлов
Для начала необходимо обновить часть системных настроек на всех узлах будущего кластера.
Выключаем selinux
setenforce 0
Также необходимо отключить selinux при следующей загрузке: открываем /etc/selinux/config и прописываем SELINUX=disabled
Kubernetes требует использования честной памяти, поэтому выключаем swap
swapoff -a
Для правильной маршрутизации сетевых запросов во внутренней сети кластера необходимо включить следующие настройки iptables
sysctl net.bridge.bridge-nf-call-iptables=1
sysctl net.bridge.bridge-nf-call-ip6tables=1
Установка среды исполнения контейнеров
На первом этапе нам необходимо установить среду исполнения и управления контейнерами. Мы будем использовать связку Docker+ContainerD.
В случае RHEL/CentOS: добавляем репозиторий docker и устанавливаем необходимые пакеты
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
yum install docker-ce docker-ce-cli containerd.io
В случае Amazonlinux процесс немного отличается
amazon-linux-extras install -y epel docker
yum install docker containerd
Установка пакетов Kubernetes
Теперь мы можем приступить к установке системных пакетов Kubernetes.
Добавляем репозиторий с kubernetes
yum-config-manager --add-repo https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
Устанавливаем пакеты
yum install kubelet kubeadm kubectl
На этом этапе базовая установка считается законченной и следующие шаги будут направленны на настройку узлов в соответствии с их ролями.
Инициализация кластера
Инициализация мастер-узла
Первым этапом инициализации кластера является инициализация мастер-узла.
Скачиваем образы системных контейнеров
kubeadm config images pull
Инициализируем мастер, где 10.0.1.1 - ip-адрес мастер-узла
kubeadm init --apiserver-advertise-address="10.0.1.1" \ --apiserver-cert-extra-sans="10.0.1.1" \ --node-name k8s-master \ --pod-network-cidr="192.168.0.0/16"
Теперь пора инициализировать сетевой драйвер. В этой статье мы будем использовать Calico версии 3.8 (последняя на момент написания).
kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml
Затем необходимо сгенерировать и сохранить команду для присоединения рабочих узлов
kubeadm token create --print-join-command
Подключение рабочих узлов
Теперь заходим по ssh на каждый рабочий узел и выполняем там полученную на предыдущем шаге команду.
Создание пользователя для управления кластером
Теперь создадим специального пользователя для управления кластером.
Для этого создадим нового пользователя на мастер-узле
useradd kube
Добавляем настройки для подключения к кластеру
mkdir -p /home/kube/.kube
cp -i /etc/kubernetes/admin.conf /home/kube/.kube/config
chown kube:kube /home/kube/.kube/config
Теперь можно проверить
sudo su kube
kubectl get all -A
Всё, на этом установку кластера можно считать выполненной.
Надеюсь, данная статья была вам полезна и до новых встреч.