Стаття також доступна російською (перейти до перегляду).
Вступ
- Технічні вимоги до апаратного та програмного забезпечення сервера
- Підготовка програмного середовища сервера
- Розгортання Minikube
- Використання Minikube для управління кластером
Розробка та управління розгалуженими додатками нині не уявляється без використання контейнерного середовища, котре прийшло на зміну середовищу віртуальних машин. Однак складність його організації вимагає наявності інструментарію для здійснення координації роботи контейнерів або їх оркестрування. Одним з таких інструментів є Kubernetes, котрий здатний виконувати вказані функції як у розгалужених системах, так і локальних. Програмний інструмент Minikube є засобом забезпечення роботи Kubernetes саме у межах локального середовища. Для цього він і був створений. Розглянемо його використання у контейнерному середовищі Docker, розгорнутому на VPS-сервері під керуванням ОС Ubuntu 22.04.
Технічні вимоги до апаратного та програмного забезпечення сервера
Для забезпечення роботи будь-якого програмного забезпечення (ПЗ) висуваються певні вимоги до апаратної та програмної частини комп’ютеру, котрі в даному випадку є наступними:
CPU, од | RAM, Gb | Disk, Gb | OC | Віртуальне середовище | Додаткові умови |
≥ 2 | ≥ 2 | ≥ 20 | Linux, macOS, Windows | Docker, VirtualBox VMware Fusion, QEMU, Hyperkit, Podman, Hyper-V, KVM, Parallels | Наявність облікового запису користувача с правами Адміністратора |
Підготовка програмного середовища сервера
Як вже зазначалося, для демонстрації роботи з програмою Minikube на нашому VPS-сервері Ubuntu буде використане віртуальне середовище Docker. Окрім того, будуть встановлені деякі з інструментів, необхідних для управління кластерами Kubernetes та виконані інші додаткові умови. У зв’язку з цим визначимо наступні кроки, які ми повинні виконати на сервері:
- Створення користувача з правами sudo;
- Розгортання Docker-середовища;
- Встановлення програмного інструменту kubectl.
Створення користувача із правами sudo
Для початку створимо користувача із ім’ям testing_minikube. Для цього введемо у терміналі:
$ adduser testing_minikube
Користувач успішно створений. Додамо його до групи з правами sudo:
$ adduser testing_minikube sudo
Результат: «Adding user testing_minikube to group sudo Done.», тобто користувача додано до групи sudo.
Змінимо поточний робочий акаунт Ubuntu за допомогою наступної команди:
$ su -l testing_minikube
Розгортання Docker-середовища
Розгортання та роботу із середовищем Docker ми вже розглядали в одній із попередніх наших статей, де були вказані конкретні кроки по його інсталяції та налаштуванню і тому тут не будемо їх розглядати, а лише продемонструємо активність служби Docker на нашому сервері.
Щоб переконатися, що процес активний, перевіримо статус служби. Для цього введемо в терміналі наступну команду:
$ sudo systemctl status docker
Отже, процес активний.
Для того, щоб у подальшому у нас не виникало проблем із цією службою, додамо поточного користувача до групи docker. Для цього введемо в терміналі:
$ sudo usermod -aG docker testing_minikube && newgrp docker
Користувача додано до групи.
Встановлення Kubectl
Це інструмент командної строки Kubernetes, що, зокрема, дозволяє запускати команди управління ресурсами кластерів. У нашому випадку він буде виконувати свої функції у локальному середовищі. Слід зазначити, що бажано використовувати останню версію програми, щоб у подальшому не виникало колізій.
Завантажимо останню версію kubectl за допомогою наступної команди:
$ curl -LO https://dl.k8s.io/release/`curl -LS https://dl.k8s.io/release/stable.txt`/bin/linux/amd64/kubectl
Після цього зробимо виконуючимся бінарний файл програми:
$ chmod +x ./kubectl
Перенесемо файл до каталогу із змінної оточення PATH:
$ sudo mv ./kubectl /usr/local/bin/kubectl
Перевіримо, чи це остання версія програми:
$ kubectl version --client
Результат – «Client Version: v1.29.1», тобто версія остання.
Розгортання Minikube
Встановити програму можна кількома шляхами, зокрема, шляхом завантаження бінарного файлу із сайту сховища або встановлення програмного пакету Debian.
Завантажимо бінарний файл:
$ curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 \ && chmod +x minikube
Файл завантажено. Для того, щоб він став доступним для запуску із будь-якого місця введемо наступну команду в терміналі:
$ sudo mkdir -p /usr/local/bin/
Запустимо процес інсталяції:
$ sudo install minikube /usr/local/bin/
Програма успішно встановлена.
Використання Minikube для управління кластером
Запуск та створення кластеру
У випадку, якщо б на нашій машині, окрім Docker було встановлено кілька віртуальних середовищ, наприклад, VirtualBox, QEMU або інші, то ми повинні були б у командній строчці за допомогою опції --vm-driver вказати драйвер обраного середовища. Так, для VirtualBox команда виглядала б наступним чином:
$ minikube start --vm-driver=virtualbox
Активуємо засіб, при цьому одразу ж буде створений новий кластер. Для цього наберемо в терміналі:
$ minikube start
За результатами виконання команди бачимо, що відбулися, зокрема, наступні зміни:
- Драйвер docker був обраний в автоматичному режимі (Automatically selected the docker driver);
- Запущена Панель управління вузлом minikube у межах кластеру minikube;
- Ініціювався процес створення базового образу кластеру;
- Відбулося завантаження системи Kubernetes v1.28.3;
- Відбулося створення docker-контейнеру;
- Ініціювався процес конфігурування Kubernetes v1.28.3 для роботи на базі платформи Docker 24.0.7;
- Kubectl був налаштований на використання кластеру minikube та простору імен, встановленого за замовчуванням.
Перевіримо стан кластеру minikube за допомогою наступної управляючої конструкції:
$ minikube status
Вивід команди:
minikube type: Control Plane host: Running kubelet: Running apiserver: Running kubeconfig: Configured
Таким чином, ми з’ясували, що програмний засіб успішно працює із встановленим віртуальним середовищем (гіпервізором) Docker та здатен виконувати свої функції.
Використання можливостей kubectl
Переглянемо поточний стан сервісів кластеру. Для цього введемо в терміналі:
$ kubectl get po -A
Вивід команди:
NAMESPACE | NAME | READY | STATUS | RESTARTS | AGE |
kube-system | coredns-5dd5756b68-52jmj | 1/1 | Running | 0 | 11m |
kube-system | etcd-minikube | 1/1 | Running | 0 | 13m |
kube-system | kube-apiserver-minikube | 1/1 | Running | 0 | 12m |
kube-system | kube-controller-manager-minikube | 1/1 | Running | 0 | 12m |
kube-system | kube-proxy-rvrln | 1/1 | Running | 0 | 11m |
kube-system | kube-scheduler-minikube | 1/1 | Running | 0 | 12m |
kube-system | storage-provisioner | 1/1 | Running | 2 (4m18s ago) | 11m |
Ми бачимо поточний стан всіх складових сервісів та додаткову інформацію про них.
Тепер створимо образ розгортання із ім’ям test-minikube. Для цього введемо в терміналі:
$ kubectl create deployment test-minikube --image=kicbase/echo-server:1.0
Відкриємо образ через порт:
$ kubectl expose deployment test-minikube --type=NodePort --port=8080
Результат – «service/test-minikube exposed», тобто сервіс test-minikube відкритий.
Завжди можна «викликати» потрібний образ або сервіс за допомогою наступної команди
$ kubectl get services test-minikube
Окрім того, можна ініціювати запуск веб-браузеру для доступу до будь-якого сервісу. У нашому випадку команда буде виглядати наступним чином:
$ minikube service test-minikube
Для переадресації порту також можна скористатися можливостями kubectl:
$ kubectl port-forward service/test-minikube 7080:8080
В результаті, сервіс стане доступним за посиланням http://localhost:7080/.
Панель керування Kubernetes
Іноді буває необхідним отримати більш повну інформацію про стан кластеру у зручному веб-форматі. Для цієї мети розробниками передбачено використання Панелі керування, створення котрої активується в автоматичному режимі ще на етапі створення кластеру.
Спробуємо отримати до неї доступ за допомогою наступної управляючої конструкції:
$ minikube dashboard
Таким чином за допомогою посилання http://127.0.0.1:40353/api/v1/namespaces/kubernetes-dashboard/services/http:kubernetes-dashboard:/proxy/ ми завжди можемо скористатися можливостями Панелі керування Kubernetes.
Керуючі команди Minikube
Для управлінням роботою кластеру Minikube має доволі зручні засоби у вигляді простих і зрозумілих команд. Скористаємося ними.
Призупинимо роботу кластеру без втручання у вже розгорнуті додатки:
$ minikube pause
Результат – робота вузла minikube призупинена; призупинена робота 18-ти контейнерів ... .
Відмінимо паузу:
$ minikube unpause
Переглянемо список доступних сервісів Kubernetes:
$ minikube addons list
Зупинимо роботу кластеру:
$ minikube stop
Видалимо кластер:
$ minikube delete
Результат:
* Deleting "minikube" in docker ... * Deleting container "minikube" ... * Removing /home/testing_minikube/.minikube/machines/minikube ... * Removed all traces of the "minikube" cluster.
В результаті будуть видалені всі ознаки існування кластеру.
Ми продемонстрували лише частину можливостей сервісів Minikube та Kubectl, їх же набагато більше, слідкуйте за нашими статтями, буде продовження :)
Запрошуємо Вас скористатися нашим VPS хостингом. Дата-центр FREEhost.UA пропонує вже готові шаблони VPS з Ubuntu та VPS з Docker. Всього через кілька хвилин після підтвердження замовлення Ви зможете скористатися повністю налаштованим сервером. Широка лінійка конфігурацій серверів дозволить обрати ресурси ресурси які потрібні для вирішення саме вашого завдання, а цілодобова підтримка допоможе у вирішенні питань.
Підписуйтесь на наш телеграм-канал https://t.me/freehostua, щоб бути в курсі нових корисних матеріалів.
Дивіться наш канал Youtube на https://www.youtube.com/freehostua.
Ми у чомусь помилилися, чи щось пропустили?
Напишіть про це у коментарях, ми з задоволенням відповімо та обговорюємо Ваші зауваження та пропозиції.
Дата: 06.02.2024 Автор: Олександр Ровник
|
|
Рекомендовані статті на тему:
- Налаштування авторизації через SSL сертифікат на рівні Nginx
- Безопасность на VPS и арендуемых сервера. SSH аутентификация.
- Установка и настройка GitLab на Debian 10
- Зовнішні команди bash для роботи з виразами та виконання складних обчислень
- Організація централізованого зберігання журналів вузлів під управлінням ОС Ubuntu
Авторам статті важлива Ваша думка. Будемо раді його обговорити з Вами:
comments powered by Disqus