
Процесс установки Кластер Kubernetes на CentOS 8 почти похож на CentOS 7 (который вы можете пройти здесь), но здесь есть несколько изменений. Эти изменения в основном связаны с установкой Докер.
Начиная с CentOS 8 (и по расширению RHEL 8), докер теперь изначально заменен на подман и Buildah какие инструменты из Красная Шапка. Фактически, пакет докеров теперь удален из репозитория пакетов по умолчанию.
Этим ходом Красная Шапка команда стремится упростить процесс создания и использования контейнеров, не требуя специальных разрешений, в то же время поддерживая совместимость с образами докеров и работая с ними без необходимости демон. Подман обещает предложить большую гибкость при работе на Kubernetes среды, но жюри остается там.
В этой статье мы рассмотрим процесс установки Kubernetes на CentOS 8 платформа, работающая на Докер-CE (Community Edition). В следующей статье мы также проведем аналогичную установку, используя подман для наших контейнеров.
Большинство узлов обычно имеют уникальные MAC адресов, однако в некоторых уникальных случаях некоторые Виртуальные машины могут иметь одинаковые MAC-адреса. Поэтому рекомендуется подтвердить, что Product_UUID и MAC адреса не совпадают ни в одном из узлов.
Kubernetes использует эти значения для однозначной идентификации узлов в кластере. Если эти значения не уникальны для каждого узла, процесс установки может завершиться ошибкой.
Проверить MAC-адрес сетевого интерфейса и сравнить его.
# IP-ссылка.
Чтобы проверить product_uuid и сравните, выполните следующую команду.
# cat / sys / class / dmi / id / product_uuid
Наша установка предназначена для Мастер-узел контроль над Рабочие узлы. В конце этой установки наша логическая архитектура будет выглядеть примерно так.
Главный узел - Этот компьютер обычно действует как плоскость управления и запускает базу данных кластера и сервер API (с которым взаимодействует интерфейс командной строки kubectl).
Наш 3-х узловой Кластер Kubernetes будет выглядеть примерно так:
Для Kubernetes для работы вам понадобится движок контейнеризации. Как уже упоминалось, мы будем использовать Докер-CE.
Следующие учреждения будут выполнены на Мастер-узел CentOS 8.
На ваше Мастер-узел CentOS 8, установите имя хоста системы и обновите DNS в своем /etc/hosts файл.
# hostnamectl set-hostname master-node. # кошка <> / etc / hosts. 192.168.0.47 мастер-узел. 192.168.0.48 узел-1 рабочий-узел-1. 192.168.0.49 узел-2 рабочий-узел-2. EOF.
Затем пингуйте свой рабочий-узел-1 и рабочий узел-2 чтобы проверить, правильно ли работает ваш обновленный файл хоста, используя команда ping.
# пинг 192.168.0.48. # пинг 192.168.0.49.
Далее отключите Селинукс, поскольку это необходимо, чтобы позволить контейнерам получить доступ к файловой системе хоста, что необходимо для сетей pod и других служб.
# setenforce 0.
Параметр сила к 0
эффективно устанавливает SELinux в разрешающий режим, что фактически отключает SELinux до следующей перезагрузки. Чтобы полностью отключить его, используйте команду ниже и перезагрузитесь.
# sed -i --follow-symlinks 's / SELINUX = enforcing / SELINUX = disabled / g' / etc / sysconfig / selinux. # перезагружать.
Kubernetes использует различные порты для связи и доступа, и эти порты должны быть доступны Kubernetes и не ограничиваться брандмауэром.
Настройте правила брандмауэра на портах.
# 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.
Вам нужно будет добавить Докер репозиторий первым, поскольку его больше нет в списке пакетов по умолчанию, используя следующие dnf config-менеджер команда.
# dnf config-manager --add-repo = https://download.docker.com/linux/centos/docker-ce.repo.
Также установите containerd.io пакет, который доступен как демон, который управляет полным жизненным циклом контейнера своей хост-системы, из передача и хранение изображений в контейнер, выполнение и контроль в низкоуровневое хранилище, в сетевые вложения и вне.
# dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm.
Теперь установите последнюю версию Docker-ce упаковка.
# dnf install docker-ce.
Теперь вы можете включить и запустить службу докеров.
# systemctl включить докер. # systemctl start docker.
Далее вам нужно будет добавить Kubernetes репозитории вручную, так как они не устанавливаются по умолчанию на CentOS 8.
# кошка </etc/yum.repos.d/kubernetes.repo. [кубернетес] name = Kubernetes. baseurl = https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64. включен = 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.
Кубеадм помогает настроить минимально жизнеспособный кластер Kubernetes, соответствующий лучшим практикам. С Кубеадм, ваш кластер должен пройти тесты на соответствие Kubernetes.
Кубеадм также поддерживает другие функции жизненного цикла кластера, такие как обновления, понижение версии и управление токенами начальной загрузки. Kubeadm также удобен для интеграции с другими инструментами оркестровки, такими как Ansible и Terraform.
Теперь, когда репозиторий пакетов готов, вы можете продолжить и установить Кубеадм упаковка.
# dnf install kubeadm -y
Когда установка завершится успешно, включите и запустите службу.
# systemctl включить kubelet. # systemctl start kubelet.
Мастер Kubernetes, который действует как плоскость управления для кластера работает несколько критически важных служб, необходимых для кластера. Таким образом, процесс инициализации будет выполнять серию предварительных проверок, чтобы убедиться, что машина готова к запуску Kubernetes. Эти предварительные проверки выявляют предупреждения и завершают работу при ошибках. kubeadm init затем загружает и устанавливает компоненты плоскости управления кластером.
Пришло время инициализировать мастер Kubernetes, но перед этим вы должны отключить подкачку, чтобы запустить "kubeadm init«Команда.
# swapoff -a.
Инициализация Kubernetes master - это полностью автоматизированный процесс, который контролируетсяkubeadm init«Команда, как показано.
# kubeadm init.
Затем скопируйте следующую команду и сохраните ее где-нибудь, так как позже нам потребуется запустить эту команду на рабочих узлах.
kubeadm присоединиться к 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 \ --discovery-token-ca-cert-hash ha256: f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606db78c8j2314m
Подсказка: Иногда указанная выше команда может вызывать ошибки в переданных аргументах, поэтому, чтобы избежать ошибок, вам необходимо удалить ‘\’
персонаж, и ваша последняя команда будет выглядеть так.
# kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 –discovery token-ca-cert-hash sha256: f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc8jm14f7.
Один раз Kubernetes успешно инициализирован, вы должны разрешить вашему пользователю начать использовать кластер. В нашем сценарии мы будем использовать пользователя root. Вы также можете запустить кластер с помощью пользователя sudo, как показано.
Использовать корень, запустить:
# 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 получить узлы.
В этот момент вы увидите статус мастер-узла «Не готов’. Это связано с тем, что нам еще предстоит развернуть сеть модулей в кластере.
Сеть pod - это оверлейная сеть для кластера, развернутая поверх существующей сети узлов. Он предназначен для обеспечения возможности подключения через модуль.
Развертывание сетевого кластера - это очень гибкий процесс, зависящий от ваших потребностей, и существует множество доступных вариантов. Поскольку мы хотим, чтобы наша установка была как можно более простой, мы будем использовать Weavenet плагин, который не требует какой-либо конфигурации или дополнительного кода и предоставляет один IP-адрес для каждого модуля, что очень удобно для нас. Если вы хотите увидеть больше вариантов, пожалуйста, отметьте здесь.
Эти команды будут важны для настройки сети модуля.
# экспорт кубевер = $ (версия kubectl | base64 | tr -d '\ n') # kubectl apply -f " https://cloud.weave.works/k8s/net? k8s-version = $ kubever "
Теперь, если вы проверите статус своего главного узла, он должен быть "Готовый’.
# kubectl получить узлы.
Далее мы добавляем рабочие узлы в кластер.
Следующие инструкции будут выполнены для каждого рабочий узел при присоединении к кластеру Kubernetes.
Сначала установите имя хоста на вашем рабочий-узел-1 и рабочий узел-2, а затем добавьте записи хоста в /etc/hosts файл.
# hostnamectl set-hostname 'узел-1' # кошка <> / etc / hosts. 192.168.0.47 мастер-узел. 192.168.0.48 узел-1 рабочий-узел-1. 192.168.0.49 узел-2 рабочий-узел-2. EOF.
Затем пингуйте свой главный узел от твоего рабочие узлы чтобы подтвердить, что ваш обновленный файл хоста работает нормально, используя команда ping.
# 192.168.0.47.
Далее отключите SElinux и обновите правила брандмауэра.
# setenforce 0. # sed -i --follow-symlinks 's / SELINUX = enforcing / SELINUX = disabled / g' / etc / sysconfig / selinux. # 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.
Сначала добавьте репозиторий Docker с помощью диспетчера конфигурации DNF.
# dnf config-manager --add-repo = https://download.docker.com/linux/centos/docker-ce.repo.
Затем добавьте containerd.io упаковка.
# dnf install https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.6-3.3.el7.x86_64.rpm.
После установки этих двух пакетов установите последнюю версию Docker-ce.
# dnf install docker-ce.
Включите и запустите службу докеров.
# systemctl включить докер. # systemctl start docker.
Вам нужно будет добавить Kubernetes репозитории вручную, так как они не устанавливаются на CentOS 8.
# кошка </etc/yum.repos.d/kubernetes.repo. [кубернетес] name = Kubernetes. baseurl = https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64. включен = 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.
Теперь, когда репозиторий пакетов готов, вы можете продолжить и установить Кубеадм.
# dnf install kubeadm -y
Запустите и включите службу.
# systemctl включить kubelet. # systemctl start kubelet.
Теперь нам нужен токен, который kubeadm init сгенерирован, чтобы присоединиться к кластеру. Вы можете скопировать и вставить его на свой узел-1 и узел-2 если вы его где-то скопировали.
# kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 --discovery-token-ca-cert-hash sha256: f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606db78c82314m
Как предложено в последней строке, вернитесь к своему мастер-узел и проверьте, работает ли работник узел-1 и рабочий узел-2 присоединились к кластеру, используя следующую команду.
# kubectl получить узлы.
Если все шаги выполнены успешно, вы должны увидеть узел-1 и узел-2 в состоянии готовности на мастер-узел. На этом этапе вы успешно развернули кластер Kubernetes на CentOS 8.
Рекомендуемое чтение: Как развернуть Nginx в кластере Kubernetes
Кластер, который мы здесь создали, имеет один Главный узел, и как таковой, если Главный узел сбой, ваш кластер может потерять данные и может потребоваться воссоздание с нуля.
По этой причине я рекомендую настройку высокой доступности.