Статья также доступна на украинском (перейти к просмотру).
Оглавление
- Технические требования к аппаратному и программному обеспечению сервера
- Подготовка программной среды сервера
- Развертывание 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 Автор: Александр Ровник
|
|
Рекомендуемые статьи по теме:
- Установка и настройка Ubuntu 20.04 Server
- Мониторинг Docker контейнеров c помощью Zabbix на Ubuntu 20.04
- Что такое Apache Pulsar и каковы его преимущества по сравнению с RabbitMQ и Kafka
- FreeBSD 13.4: разбираем главные изменения в новой версии
- Как читать и устанавливать переменные среды и оболочки в Linux
Авторам статьи важно Ваше мнение. Будем рады его обсудить с Вами:
comments powered by Disqus