Поиск по сайту:

Как установить кластер Kubernetes на CentOS 7


Kubernetes, подаренный Google сообществу Opensource, теперь стал предпочтительным инструментом управления контейнерами. Он может управлять и координировать не только среду выполнения Docker, но также среду выполнения Containers и Rkt.

Типичный кластер Kubernetes обычно состоит из главного узла и нескольких рабочих узлов или миньонов. Затем рабочие узлы управляются с главного узла, что обеспечивает управление кластером из центральной точки.

Также важно отметить, что вы также можете развернуть кластер Kubernetes с одним узлом, который обычно рекомендуется для очень легких непроизводственных рабочих нагрузок. Для этого вы можете использовать Minikube — инструмент, который запускает одноузловой кластер Kubernetes на виртуальной машине на вашем узле.

Рекомендуется к прочтению: Как установить кластер Kubernetes на CentOS 8

В этом руководстве мы рассмотрим установку многоузлового кластера Kubernetes на CentOS 7 Linux. Это руководство основано на командной строке, поэтому вам понадобится доступ к окну терминала.

Предварительные условия

  1. Несколько серверов под управлением Centos 7 (1 главный узел, 2 рабочих узла). Рекомендуется, чтобы ваш главный узел имел как минимум два процессора, хотя это не является строгим требованием.
  2. Подключение к Интернету на всех ваших узлах. Мы будем получать пакеты Kubernetes и docker из репозитория. Точно так же вам необходимо убедиться, что менеджер пакетов yum установлен по умолчанию и может получать пакеты удаленно.
  3. Вам также понадобится доступ к учетной записи с правами sudo или root. В этом уроке я буду использовать свою учетную запись root.

Наш кластер из 3 узлов будет выглядеть примерно так:

Установка кластера Kubernetes на мастер-ноде

Чтобы Kubernetes работал, вам понадобится механизм контейнеризации. Для этой установки мы будем использовать docker, поскольку он наиболее популярен.

Следующие шаги будут выполняться на главном узле.

Шаг 1. Подготовьте имя хоста, брандмауэр и SELinux.

На главном узле задайте имя хоста, а если у вас нет DNS-сервера, обновите файл /etc/hosts.

hostnamectl set-hostname master-node
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

Вы можете выполнить ping worker-node-1 и worker-node-2, чтобы проверить, в порядке ли ваш обновленный хост-файл, с помощью команды ping.

ping 10.128.0.29
ping 10.128.0.30

Затем отключите SElinux и обновите правила брандмауэра.

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux
reboot

Установите следующие правила брандмауэра для портов. Убедитесь, что каждая команда firewall-cmd возвращает успех.

firewall-cmd --permanent --add-port=6443/tcp
firewall-cmd --permanent --add-port=2379-2380/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10251/tcp
firewall-cmd --permanent --add-port=10252/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd –reload
modprobe br_netfilter
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

Шаг 2. Настройте репозиторий Kubernetes.

Вам нужно будет добавить репозитории Kubernetes вручную, поскольку они не устанавливаются по умолчанию в CentOS 7.

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

Шаг 3. Установите Kubeadm и Docker.

Теперь, когда репозиторий пакетов готов, вы можете установить пакеты kubeadm и docker.

yum install kubeadm docker -y 

После успешного завершения установки включите и запустите обе службы.

systemctl enable kubelet
systemctl start kubelet
systemctl enable docker
systemctl start docker

Шаг 4. Инициализируйте Kubernetes Master и настройте пользователя по умолчанию.

Теперь мы готовы инициализировать мастер kubernetes, но перед этим вам нужно отключить своп, чтобы запустить команду «kubeadm init».

swapoff -a

Инициализация мастера Kubernetes — это полностью автоматизированный процесс, управляемый командой «kubeadm init», которую вы запустите.

kubeadm init

Возможно, вы захотите скопировать последнюю строку и сохранить ее где-нибудь, поскольку вам нужно будет запустить ее на рабочих узлах.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  \ --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

Совет. Иногда эта команда может жаловаться на переданные аргументы (args), поэтому отредактируйте ее, чтобы избежать каких-либо ошибки. Итак, вы удалите символ ’\’, сопровождающий --token, и ваша окончательная команда будет выглядеть так.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41

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

Чтобы использовать root, запустите:

mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

Чтобы использовать пользователя с поддержкой sudo, выполните:

mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

Теперь проверьте, активирована ли команда kubectl.

kubectl get nodes

На этом этапе вы также заметите, что статус главного узла — «Неготов». Это связано с тем, что нам еще предстоит развернуть сеть модулей в кластере.

Сеть модулей — это оверлейная сеть кластера, которая развертывается поверх существующей сети узлов. Он предназначен для обеспечения возможности подключения через модуль.

Шаг 5. Настройте сеть Pod

Развертывание сетевого кластера — это очень гибкий процесс, зависящий от ваших потребностей, и существует множество доступных вариантов. Поскольку мы хотим максимально упростить установку, мы будем использовать плагин Weavenet, который не требует какой-либо настройки или дополнительного кода и предоставляет один IP-адрес для каждого модуля, что очень удобно для нас. Если вы хотите увидеть больше вариантов, пожалуйста, проверьте здесь.

Эти команды будут важны для настройки сети модуля.

export kubever=$(kubectl version | base64 | tr -d '\n')
kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$kubever"

Теперь, если вы проверите статус вашего главного узла, он должен быть «Готов».

kubectl get nodes

Затем мы добавляем в кластер рабочие узлы.

Настройка рабочих узлов для присоединения к кластеру Kubernetes

Следующие шаги будут выполняться на рабочих узлах. Эти действия следует выполнять на каждом рабочем узле при присоединении к кластеру Kubernetes.

Шаг 1. Подготовьте имя хоста, брандмауэр и SELinux.

На ваших worker-node-1 и worker-node-2 установите имя хоста, а если у вас нет DNS-сервера, также обновите главный и рабочий узлы. узлы в файле /etc/hosts.

hostnamectl set-hostname 'node-1'
cat <<EOF>> /etc/hosts
10.128.0.27 master-node
10.128.0.29 node-1 worker-node-1
10.128.0.30 node-2 worker-node-2
EOF

Вы можете выполнить ping master-node, чтобы проверить, в порядке ли ваш обновленный хост-файл.

Затем отключите SElinux и обновите правила брандмауэра.

setenforce 0
sed -i --follow-symlinks 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

Установите следующие правила брандмауэра для портов. Убедитесь, что все команды firewall-cmd возвращают успех.

firewall-cmd --permanent --add-port=6783/tcp
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=10255/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd  --reload
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptables

Шаг 2. Настройте репозиторий Kubernetes.

Вам нужно будет добавить репозитории Kubernetes вручную, поскольку они не предустановлены в CentOS 7.

cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOF

Шаг 3. Установите Kubeadm и Docker.

Теперь, когда репозиторий пакетов готов, вы можете установить пакеты kubeadm и docker.

yum install kubeadm docker -y 

Запустите и включите обе службы.

systemctl enable docker
systemctl start docker
systemctl enable kubelet
systemctl start kubelet

Шаг 4. Присоедините рабочий узел к кластеру Kubernetes.

Теперь для присоединения к кластеру нам нужен токен, сгенерированный kubeadm init. Вы можете скопировать и вставить его в свои node-1 и node-2, если вы его где-то скопировали.

kubeadm join 10.128.0.27:6443 --token nu06lu.xrsux0ss0ixtnms5  --discovery-token-ca-cert-hash sha256:f996ea3564e6a07fdea2997a1cf8caeddafd6d4360d606dbc82314688425cd41 

Как предложено в последней строке, вернитесь к своему главному узлу и проверьте, присоединились ли рабочий узел-1 и рабочий узел-2 к кластер с помощью следующей команды.

kubectl get nodes

Если все шаги выполнены успешно, вы должны увидеть node-1 и node-2 в состоянии готовности на master-node.

Рекомендуется к прочтению: как развернуть Nginx в кластере Kubernetes

На данный момент мы успешно завершили установку кластера Kubernetes на Centos 7 и успешно подключили два рабочих узла. Теперь вы можете приступить к созданию модулей и развертыванию сервисов.