Процес встановлення a Кластер Кубернет на CentOS 8 майже схожа на таку CentOS 7 (які можна пройти тут), але процес тут має деякі зміни. Ці зміни в основному стосуються встановлення Докер.
Починаючи з CentOS 8 (і за розширенням RHEL 8), докер тепер спочатку замінено на підман та buildah з яких є інструменти Червоний капелюх. Власне, пакет docker тепер видалено з репозиторію пакетів за замовчуванням.
Цим кроком, Червоний капелюх команда прагне спростити процес створення та використання контейнерів, не потребуючи спеціальних дозволів, водночас підтримуючи сумісність із зображеннями докерів та керуючи ними без необхідності демон. Підман обіцяє запропонувати більшу гнучкість під час бігу Kubernetes середовища, але журі залишається там.
У цій статті ми розглянемо процес встановлення Kubernetes на CentOS 8 платформа, працює на Docker-CE (Спільнота). У наступній статті ми також розглянемо подібну установку, використовуючи підман для наших контейнерів.
Більшість вузлів зазвичай мають унікальні МАК адреси, однак, у деяких унікальних випадках, деякі Віртуальні машини можуть мати ідентичні MAC -адреси. Тому рекомендується підтвердити, що Product_UUID та МАК адреси не ідентичні в жодному з вузлів.
Kubernetes використовує ці значення для однозначної ідентифікації вузлів у кластері. Якщо ці значення не є унікальними для кожного вузла, процес установки може завершитися збоєм.
Щоб перевірити MAC -адресу мережевого інтерфейсу та порівняти її.
# ip посилання.
Щоб перевірити product_uuid і порівняйте, виконайте таку команду.
# cat/sys/class/dmi/id/product_uuid
Наша установка розроблена для того, щоб мати Майстер-Вузол контролюючи Робочі вузли. Наприкінці цієї установки наша логічна архітектура буде виглядати приблизно так.
Майстер -вузол - Ця машина, як правило, діє як площина управління та запускає базу даних кластера та сервер API (з яким спілкується CLI kubectl).
Наш 3-вузол Кластер Кубернет буде виглядати приблизно так:
За Kubernetes для роботи вам знадобиться двигун контейнера. Як згадувалося, ми будемо використовувати Docker-CE.
Будуть виконуватися наступні установи Майстер-вузол CentOS 8.
На тобі Майстер-вузол CentOS 8, встановіть ім’я системного хосту та оновіть DNS у своєму /etc/hosts файл.
# hostnamectl set-hostname master-node. # кіт <> /etc /hosts. 192.168.0.47 майстер-вузол. 192.168.0.48 node-1 робочий-node-1. 192.168.0.49 вузол-2 робочий-вузол-2. EOF.
Далі, пинг ваш робочий вузол-1 та робочий вузол-2 щоб перевірити, чи оновлений файл хосту працює належним чином за допомогою команда ping.
# ping 192.168.0.48. # пінг 192.168.0.49.
Далі вимкніть Selinux, оскільки це потрібно, щоб дозволити контейнерам отримувати доступ до файлової системи хосту, яка потрібна мережам pod та іншим службам.
# setenforce 0.
Налаштування setenforce до 0
ефективно встановлює SELinux на дозволене, що ефективно вимикає SELinux до наступного перезавантаження. Щоб повністю вимкнути його, скористайтесь командою нижче та перезавантажтесь.
# sed -i --follow -symlinks 's/SELINUX = примусове виконання/SELINUX = вимкнено/g'/etc/sysconfig/selinux. # перезавантаження.
Kubernetes використовує різні порти для зв'язку та доступу, і ці порти повинні бути доступними для Kubernetes і не обмежуватися брандмауером.
Налаштуйте правила брандмауера на портах.
# брандмауер-cmd --перманентний --add-port = 6443/tcp. # firewall-cmd --permanent --add-port = 2379-2380/tcp. # брандмауер-cmd --перманентний --add-port = 10250/tcp. # firewall-cmd --permanent --add-port = 10251/tcp. # firewall-cmd --permanent --add-port = 10252/tcp. # брандмауер-cmd --перманентний --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 встановити 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 встановити docker-ce.
Тепер ви можете увімкнути та запустити службу docker.
# systemctl увімкнути докер. # systemctl запустити докер.
Далі вам потрібно буде додати Kubernetes репозиторії вручну, оскільки вони не встановлені за замовчуванням CentOS 8.
# кіт </etc/yum.repos.d/kubernetes.repo. [kubernetes] ім'я = 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.
Kubeadm допомагає завантажити мінімальний життєздатний кластер Kubernetes, який відповідає найкращим практикам. З kubeadm, ваш кластер повинен пройти тести відповідності Kubernetes.
Kubeadm також підтримує інші функції життєвого циклу кластера, такі як оновлення, зниження та управління маркерами завантаження. Kubeadm також зручний для інтеграції з іншими інструментами оркестровки, такими як Відповідальний та Тераформа.
Тепер, коли пакет репо готовий, ви можете перейти до інсталяції kubeadm пакет.
# dnf встановити kubeadm -y
Коли інсталяція успішно завершиться, увімкніть та запустіть службу.
# systemctl увімкнути кубелет. # systemctl запустити kubelet.
Майстер Kubernetes, який виконує роль площину управління для кластера виконується кілька критичних служб, необхідних для кластера. Таким чином, процес ініціалізації виконає ряд попередніх перевірок, щоб переконатися, що машина готова до запуску Kubernetes. Ці попередні перевірки викривають попередження та виходять з помилок. kubeadm init потім завантажує та встановлює компоненти площини керування кластером.
Настав час ініціалізувати майстер Kubernetes, але перед цим вам потрібно відключити підкачку, щоб запустити "kubeadm init«Команда.
# swapoff -a.
Ініціалізація Kubernetes master - це повністю автоматизований процес, яким керує “kubeadm init«Команда, як показано.
# kubeadm init.
Далі скопіюйте таку команду та збережіть її десь, оскільки нам потрібно було виконати цю команду на робочих вузлах пізніше.
kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 \ --discovery-token-ca-cert-hash ha256: f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc8231434
Порада: Іноді вищезгадана команда може викликати помилки щодо переданих аргументів, тому, щоб уникнути помилок, потрібно видалити файл ‘\’
характер, і ваша остаточна команда буде виглядати так.
# kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5-маркер виявлення-ca-cert-hash sha256: f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc823146878.
Одного разу Kubernetes успішно ініціалізований, ви повинні дозволити своєму користувачеві почати використовувати кластер. У нашому сценарії ми будемо використовувати кореневого користувача. Ви також можете запустити кластер за допомогою користувача sudo, як показано.
Використовувати корінь, запустити:
# mkdir -p $ HOME/.kube. # cp -i /etc/kubernetes/admin.conf $ HOME/.kube/config. # chown $ (id -u): $ (id -g) $ HOME/.kube/config.
Для використання a користувач із підтримкою 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 отримати вузли.
У цей момент ви побачите статус майстер-вузла "Не готовий’. Це тому, що ми ще не розгортаємо мережу стручків у кластері.
Мережа стручків - це мережа накладання для кластера, яка розгортається поверх поточної мережі вузлів. Він розроблений таким чином, щоб забезпечити можливість з'єднання по всьому стручку.
Розгортання мережевого кластера - це дуже гнучкий процес, який залежить від ваших потреб, і доступно багато варіантів. Оскільки ми хочемо максимально спростити встановлення, ми будемо використовувати Сітка плагін, який не вимагає ніякої конфігурації або додаткового коду, і він надає одну IP -адресу на стручок, що нам чудово підходить. Якщо ви хочете побачити більше варіантів, перевірте тут.
Ці команди будуть важливі для налаштування мережі стручків.
# експорт kubever = $ (версія kubectl | base64 | tr -d '\ n') # kubectl apply -f " https://cloud.weave.works/k8s/net? k8s-версія = $ kubever "
Тепер, якщо ви перевірите стан свого головного вузла, це має бути "Готовий’.
# kubectl отримати вузли.
Далі додаємо робочі вузли до кластера.
Наступні інструкції виконуватимуться для кожного робочий вузол при приєднанні до кластера Kubernetes.
Спочатку встановіть ім'я хоста у своєму робочий вузол-1 та робочий вузол-2, а потім додайте записи хосту до /etc/hosts файл.
# hostnamectl set-hostname 'node-1' # кіт <> /etc /hosts. 192.168.0.47 майстер-вузол. 192.168.0.48 node-1 робочий-node-1. 192.168.0.49 вузол-2 робочий-вузол-2. EOF.
Далі, пинг ваш майстер -вузол від вашого робочі вузли щоб підтвердити, що ваш оновлений хост -файл працює нормально за допомогою команда ping.
# 192.168.0.47.
Далі вимкніть SElinux та оновіть правила брандмауера.
# setenforce 0. # sed -i --follow -symlinks 's/SELINUX = примусове виконання/SELINUX = вимкнено/g'/etc/sysconfig/selinux. # брандмауер-cmd --перманентний --add-port = 6783/tcp. # брандмауер-cmd --перманентний --add-port = 10250/tcp. # брандмауер-cmd --перманентний --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 config-manager.
# dnf config-manager --add-repo = https://download.docker.com/linux/centos/docker-ce.repo.
Далі додайте containerd.io пакет.
# dnf встановити 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 встановити docker-ce.
Увімкніть та запустіть службу docker.
# systemctl увімкнути докер. # systemctl запустити докер.
Вам потрібно буде додати Kubernetes сховища вручну, оскільки вони не встановлені попередньо CentOS 8.
# кіт </etc/yum.repos.d/kubernetes.repo. [kubernetes] ім'я = 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.
Тепер, коли пакет репо готовий, ви можете перейти до інсталяції kubeadm.
# dnf встановити kubeadm -y
Запустіть і ввімкніть службу.
# systemctl увімкнути кубелет. # systemctl запустити kubelet.
Тепер нам потрібен маркер kubeadm init створено, щоб приєднатися до кластера. Ви можете скопіювати та вставити його у свій вузол-1 та вузол-2 якби ви його десь скопіювали.
# kubeadm join 192.168.0.47:6443 --token nu06lu.xrsux0ss0ixtnms5 --discovery-token-ca-cert-hash sha256: f996ea35r4353d342fdea2997a1cf8caeddafd6d4360d606dbc8231434.
Як запропоновано в останньому рядку, поверніться до свого майстер-вузол і перевірити, чи є працівник вузол-1 та робочий вузол-2 приєдналися до кластера за допомогою наступної команди.
# kubectl отримати вузли.
Якщо всі кроки пройшли успішно, ви повинні побачити вузол-1 та вузол-2 у статусі готового на майстер-вузол. На даний момент ви успішно розгорнули кластер Kubernetes на CentOS 8.
Рекомендована література: Як розгорнути Nginx на кластері Kubernetes
Кластер, який ми створили тут, має єдиний Майстер -вузол, і як такий, якщо Майстер -вузол не вдається, ваш кластер може втратити дані, і його, можливо, доведеться відтворити з нуля.
З цієї причини я рекомендую високодоступну установку.