Ubuntu

Встановлення та конфігурація Kubernetes, запуск програми в кластері K8S

Встановлення та конфігурація Kubernetes, запуск програми в кластері K8S

У цій статті ми коротко проведемо процедуру підготовки сервера та розгортання найпростішого кластера Kubernetes на одному хості, розгляньте приклад контейнера Nginx в околицях Kubernetes.

Зміст:

Коротко про те, що таке Кубернаї. Кубернети (Часто використовується зменшення K8)- Це відкритий код, створений для управління конвеєрними програмами, розгортанням автоматизації та масштабуванням.

Kubernetes написано в Google Engooders. Google відкрив вихідний код Kubernetes у 2014 році.

Плюси використання:

Це одна з найбільш очевидних переваг реалізації. Давайте встановимо Kubernetes у віртуальну машину з Ubuntu Server 20 OS.04 і подивіться на практиці, як це працює.

Параметри VM:

Підключіться до консолі сервера через SSH.

Спочатку вимкніть брандмауер

# Sudo ufw відключити

Брандмауер зупинився та відключений при запуску системи

Тоді вам потрібно вимкнути файл насоса Swap. Кубернатс не почнеться з нього:

# Sudo swapoff -a
# Sudo sed -i 's/^\/swap/# \/swap/'/etc/fstab

Установка Docker для Kubernates

Далі вам потрібно встановити систему контейнерів Docker. Розробники Kubernates офіційно оголосили, що з моменту Kubernates V1.23 Вони повністю відмовиться від Докера як виконане контейнерне середовище. Замість Docker буде використовуватися внутрішній інтерфейс виконання контейнера (CRI). Всі старі версії K8S та поточні Kubernetes v1.21 Продовжуйте використовувати Docker як систему контейнерності.

Встановіть пакети, які дозволяють отримати доступ до APT -сховищ на протоколі HTTPS:

# Sudo apt-get update && sudo apt-gget instport-transport-https ca-certificates curl software-properties-common gnupg2

Додайте офіційний ключ Docker GPG:

# Sudo curl -fssl https: // завантажити.Докер.Com/linux/ubuntu/gpg | Sudo apt-ключ додавання -

Додайте сховище Docker:

# Sudo add-apt-repository \
"Deb [arch = amd64] https: // завантажити.Докер.Com/linux/ubuntu \
$ (lsb_release -cs) \
Стабільний "

Тепер ви можете встановити сам Docker:

# Sudo apt-get update && sudo apt-get install -y \

Контейнер.Io = 1.2.13-2 \

Docker -ce = 5: 19.03.11 ~ 3-0 ~ Ubuntu- $ (lsb_release -cs) \

Docker -ce -cli = 5: 19.03.11 ~ 3-0 ~ Ubuntu- $ (lsb_release -cs)

Створіть конфігураційний файл для Doker Demon:


# Sudo mkdir/etc/docker/
# Sudo nano/etc/docker/deemon.Json

Вкажіть наступну конфігурацію:

"Exec-opts": ["рідний.CgroupDriver = systemd], "log-driver": "json-file", "log-opts": "max-size": "100 м", "драйвер зберігання": "накладання2"  

Відновіть послугу Docker і додайте її до автоматичного завантаження:

# Sudo mkdir -p/etc/systemd/system/docker.Послуга.D
# Sudo Systemctl Daemon-Reload
# Sudo systemctl перезавантажити docker
# Sudo systemctl enable docker

Синхронізація стану Докера.Сервіс із SYSV Service Script за допомогою/lib/systemd/systemd-sysv-innstall. Виконання:/lib/systemd/systemd-sysv-incall увімкнути docker

Після цього потрібно додати, щоб змінити параметри iptables:

# Sudo nano /etc /система.D/K8.Конфігурація

Потрібно додати такі параметри:

Сітка.Мост.Bridge-NF-Call-IP6Tables = 1 сітка.Мост.Bridge-nf-call-iptables = 1
Ці параметри дозволяють обробляти мостовий трафік у NetFilter.

Застосуйте налаштування:

# Sudo syssctl - Система

Налаштування та запуску кластерів Kubernetes

Тепер вам потрібно встановити утиліти, які дозволяють розширювати, налаштувати та керувати кластером Кубернети.

Щоб їх встановити, додайте клавішу GPG:

# Sudo curl -s https: // пакети.Хмара.Google.Com/apt/doc/apt-ключ.GPG | Sudo apt-ключ додавання -

Додайте сховище:

# Sudo cat <Deb https: // apt.Кубернети.Io/ kubernetes-xenial main
Eof

Ми оновлюємо список повторень та встановлюємо утиліти K8S:

# Sudo apt-get оновлення
# Sudo apt -get install -kubelet kubeadm kubectl

Весь підготовчий етап завершено, ви можете почати встановлювати самі Kubernetes.

Завантажте необхідні зображення із сховища. Ми запускаємо команду і переходимо на заливання кави, процес може бути не швидким, все залежить від швидкості вашого Інтернету.

# Sudo kubeadm конфігураційні зображення витягують

Щоб ініціалізувати кластер K8S, дотримуйтесь команди:

# Sudo kubeadm init-network-cidr = 10.244.0.0/16

Ключ -Pod-network-cidr вказує на те, що внутрішня (розгорнута Кубернети) буде 10.244.0.0/16.

Перший раз, коли я запустив цю команду, я отримав повідомлення про помилку:

[Init] Використання версії Kubernetes: v1.21.2 [Preflight] Запуск попереднього польоту перевіряє фазу виконання помилки перед польотом: [Preflight] сталася деякі фатальні помилки: [errum numcpu]: кількість доступних процесорів 1 менше, ніж необхідний 2 [Preflight] Якщо ви знаєте, що ви робите, Ви можете зробити перевірку нефаталу з "ігнорувати-плюхові-сердир = ...", щоб побачити запас акцій цієї помилки, виконані за допомогою --v = 5 або вище

Потрібно бігати з ключем --v = 5 , що виведе детальну причину помилки. У моєму випадку було виділено VM, на якому Kubernetes встановив лише одне ядро, і було потрібно щонайменше 2.

Я вимкнув VM, додав додатковий VCPU і все почалося. З успішним запуском ми повинні отримати такий висновок:

[Init] Використання версії Kubernetes: v1.21.2 [Preflight] Запуск попереднього польоту перевіряє [перед польотом], витягуючи зображення, необхідні для налаштування кластера Kubernetes [Preflight] Це може зайняти хвилину-дві, залежно від швидкості вашого підключення до Інтернету [Preflight] Ви також можете виконати цю дію в заздалегідь використовуючи "kubeadm config images taull" [certs] за допомогою сертифікатної папки "/etc/kubernetes/pki" [certs], генеруючи сертифікат "ca" та ключ [certs], що генерує сертифікат "apiserver" та клавіші [certs] apiserver, що обслуговується cert, підписаний Для імен DNS [K8S-Master Kubernetes Kubernetes.За замовчуванням Kubernetes.За замовчуванням.SVC Kubernetes.За замовчуванням.SVC.Кластер.Місцевий] та IPS [10.96.0.1 192.168.0.19] [Certs] Генерування сертифіката та ключа Apiserver-kubelet-client "[certs] генерування сертифіката та ключа сертифікатів сертифікатів" сертифікат "та ключів [certs] генеруючи сертифікат та клавіші [certs] сертифікат /ключ [Certs] etcd/сервер "Сертифікат та ключ [ceres] etcd/сервер підписується на імена DNS [K8S-Master Localhost] та IPS [192.168.0.19 127.0.0.1 :: 1] [Certs] Покоління "etcd/peer" сертифікат та ключ [certs] etcd/peer serving cert підписується на назви DNS [K8s-Master localhost] та IPS [192.168.0.19 127.0.0.1 :: 1] [certs] Генерування сертифікату та клавіш "etcd/healthceck-client" [certs] генерування сертифікату та клавіш "certs]" adiserver-etcd-client "[certs] генерування клавіші та відкритого ключа kubeconfig] за допомогою папок Kubeconfig [kubeconfig] за допомогою KubeConfig "/etc/kubernetes" [kubeconfig] писати "адміністратор.Conf "kubeconfig файл [kubeconfig] написання" kubelet.Conf "kubeconfig file [kubeconfig] написати" контролер-менеджер.Conf "kubeconfig file [kubeconfig] написати" планувальник ".Conf "kubeconfig file [kubelet-start] Записний файл середовища kubelet з прапорами у файл"/var/kubelet/kubeadm-flags.Env "[kubelet-start] Запис конфігурації kubelet у файл"/var/lib/kubelet/config.yaml "[kubelet-start] запуск кулевого [керуючого площини] за допомогою маніфестної папки"/etc/kubernetes/maniastes "[керуюча площина], створюючи статичний маніфест стручка для" kube-apiserver "[керуюча площина], створюючи статичний стручковий маніфест для "kube-controller-manager" [керуюча площина] створення статичного маніфесту стручка для "kube-scheduler" [etcd] креатичного маніфесту для локального etcd для kubelet для завантаження площини управління як статичні стручки з каталогу "/etc///etc/etc//etc//etc/etc/etc/etc/etc/etc/etc/etc/etc/etc/. Kubernetes/проявки ". Це може зайняти до 4M0 [apicLient] Усі компоненти управління контрольними після 12.505102 секунди [завантаження-конфіг] зберігання конфігурації USSAP "Kubeadm-Config" у просторі імен "Kube-System" [kubelet] Створення конфігурації "kubelet -ornfig.21 "в просторі імен Kube-SOSTEM з конфігурацією для кубелетів у кластері [завантаження-керти]. Будь ласка, дивіться-inupload-certs [kark-control-plane], що позначають вузол k8s-master як керуючу площину, додавши мітки: [вузол-роль.Кубернети.IO/MASTER (відставлений) вузол-роль.Кубернети.IO/КОНТРОЛЬНИЙ ПЛАЙН.Кубернети.IO/Виключення-від-зовнішній навантаження Баланс] [Площа-контроль позначки], що позначає вузол K8S-Master як контрольну площину, додавши.Кубернети.IO/Master: Noschedule] [Bootstrap-token] Використання маркера: Z689OJ.pu0b5nxub3frdob6 [bootstrap-token] Налаштування токенів bootstrap, cluster-info configmap, ролі RBAC [bootstrap-token] налаштовані правила RBAC, щоб дозволити токенам для завантаження вузлів [Bootstrap-token] налаштовані правила RBAC, щоб дозволити завантажувальники вузлів для post csrsp in post csrsp in v pll in v prod v prod v pro post pro pl. Замовте для вузлів отримати довгострокові дані сертифікатів [Bootstrap-token] налаштовані правила RBAC, щоб дозволити контролер CSRApprover автоматично затвердити CSR з токену Bootstrap Node [Bootstrap-token] налаштовані правила RBAC, щоб дозволити обертання сертифікатів для всіх сертифікатів клієнта вузла в кластері [Bootstrap-token] Створення конфігурації "Cluster-Info" у просторі імен "Kube-Public" [kubelet-finalize] оновлення "/etc/kubernetes/kubelett.conf ", щоб вказати на сертифікат клієнта Кублета та ключ [Addons] Застосовуваний необхідний додаток: Coredns [Addons] застосований Essential Addon: Kube-Proxy Ваш керуючий площина Kubernetes успішно ініціалізується! Щоб почати використовувати кластер, вам потрібно запустити наступний як звичайний користувач: mkdir -p $ home/.Kube sudo cp -i/etc/kubernetes/адміністратор.Conf $ home/.Kube/config sudo chown $ (id -u): $ (id -g) $ home/.Альтернативно Kube/config, якщо ви є користувачем Root, ви можете запустити: експортувати kubeconfig =/etc/kubernetes/admin.Cont You Shoup тепер розгорніть мережу стручок на кластер. Запустіть "kubectl infoct -f [podnetwork].Yaml "З одним із варіантів, перелічених за адресою: https: // kubernetes.IO/Docs/Concepts/Cluster-dministranis/Addons/Ви приєднуєте будь-які вузли числа, запускаючи наступне на кожному як корінь: kubeadm Приєднуйтесь до 192.168.0.19: 6443 -Token Z689OJ.PU0B5NXUB3FRDOB6 \-Discovery-Token-Ca-Cert-Cert-Hash SHA256: 0C91B280545CA2769DA492EE24BA0DB2630F9D6FC379BD7C585DF56451 

Весь кластер K8S розпочався. Для того, щоб виконати команди з поточного користувача, вам потрібно скопіювати адміністратора Config Cluster.

Створіть каталог у домашньому каталозі поточного користувача:

# mkdir -p $ home/.Куб

Скопіюйте конфігурацію адміністратора кластера:

# Sudo cp -i/etc/kubernetes/адміністратор.Conf $ home/.Kube/config

Налаштуйте права:

# Sudo Chown $ (id -u): $ (id -g) $ home/.Kube/config

Також ця конфігурація може бути скопійована безпосередньо в хост, з якого ви хочете керувати кластером K8S.

Кластер майже налаштований, але вам все одно потрібно встановити плагін, який керуватиме мережею (інтерфейс контейнерного мережі CNI)). Для цього ми виконуємо таку команду:

# kubectl застосувати -f https: // raw.Githubusercontent.Com/coreos/flannel/master/documentation/kube-flannel.yml

ПОПЕРЕДЖЕННЯ: Політика/V1beta1 podsecurityPolacy відбивається у V1.21+, недоступний у V1.25+ podsecurityPolicy.Політика/PSP.Фланель.Непривілейований Creed Cledole.RBAC.Дозвіл.K8.IO/Flannel Creed ClusterroLebinding.RBAC.Дозвіл.K8.IO/Flannel Creed ServiceAccount/Flannel Creed Configmap/Kube-flannel-cfg Creed Deemonset.Програми/kube-flannel-ds creed

А оскільки у нас є тестовий кластер і він складається з одного вузла. Тому нам потрібно дозволити запуск контейнерів до головного вузла.

# Кубектл Тенн-вузли-Всі вузол-роль.Кубернети.IO/Master-Node/K8S-Master Untainted

Щоб перевірити, чи всі компоненти кластера розпочалися та працюють, виконайте команду:

# Kubectl отримувати стручки-kube-cube-sostem

Ця команда відображає всі запущені субсидії в просторі імен системи.

Стручок - Це логічна асоціація контейнерів або контейнера в одну програму із загальною IP -адресою та ресурсами диска. POD може складатися з одного контейнера або декількох. Припустимо, один із проектів, який ми маємо під складом Nginx, Gunicorn з проектом Django та селерою.

Запуск контейнера Nginx в Kubernetes

Кластер Kubernates встановлений і працює, ви можете спробувати запустити тест під наприклад, з веб -сервером nginx. Для цього виконайте команду:

# kubectl запустити nginx -image = nginx

Pod/nginx creed

За допомогою цієї команди ми вказали кластер завантажити зображення Nginx останню доступну версію та почати стручок таким чином.

Щоб перевірити роботу нашого стручка, ми виконаємо:

# Kubectl отримати стручки -w

Ключ -w дозволяє очікувати зміни статусу.

Для перегляду журналів POD:

# kubectl журналів nginx -f

Щоб підключитися до віртуальної консолі POD, використовуйте команду:

# kubectl exec -it nginx - /bin /bash

Видалити стручок:

# Kubectl delete pods nginx

Найкраща материнська плата 2021
Давайте поговоримо про одну з найважливіших компонентів будь -якого ПК. Ми дізнаємось, як вибрати материнську плату, навіщо це потрібно, чому вам потр...
Як створити та налаштувати канал Telegram
Щороку кількість користувачів месенджера Telegram зростає експоненціально. У 2021 році ця цифра становить приблизно 300 мільйонів. користувачі. Телегр...
ABC -UPDATE - Альтернативний менеджер повстання Windows
Незважаючи на всі вдосконалення Центру оновлення Windows, багатьом користувачам все ще недостатньо комфортно. Важко не погодитися з цим твердженням, а...