В последние годы контейнеризация и оркестрация стали краеугольным камнем современной разработки и развертывания приложений. Kubernetes (K8s) является де-факто стандартом в этой области, обеспечивая масштабируемость, отказоустойчивость и удобство управления контейнеризированными приложениями. Однако, традиционное развертывание Kubernetes требует значительных вычислительных ресурсов и может быть сложным в настройке. В этой статье мы рассмотрим, как развернуть легковесный дистрибутив Kubernetes – k3s – внутри Termux на Android устройствах, создавая распределенный кластер и оркестрируя микросервисы на мобильных узлах.
Что такое Termux и k3s?
Termux – это эмулятор терминала и среды Linux для Android, который позволяет запускать Linux-пакеты, инструменты и серверы непосредственно на вашем мобильном устройстве. Это мощный инструмент для разработчиков, системных администраторов и всех, кто хочет иметь доступ к Linux-окружению на Android.
k3s – это легковесный дистрибутив Kubernetes, разработанный компанией Rancher Labs. Он предназначен для развертывания в средах с ограниченными ресурсами, таких как IoT-устройства, Edge-вычисления и, как мы покажем, мобильные устройства. k3s включает в себя только необходимые компоненты Kubernetes, что делает его простым в установке и эксплуатации.
Предварительные требования
- Android устройство с установленным Termux.
- Достаточное пространство на устройстве (минимум 2-3 ГБ рекомендуется).
- Базовые знания Linux и командной строки.
- Понимание принципов работы Kubernetes (желательно).
Шаг 1: Установка и настройка Termux
Установите Termux из F-Droid (рекомендуется) или Google Play Store. После установки откройте Termux и обновите пакеты:
pkg update && pkg upgrade
Установите необходимые пакеты:
pkg install openssh curl wget
Шаг 2: Развертывание k3s на первом узле (Master)
На первом устройстве (которое будет выступать в роли master-узла) выполните следующую команду для установки k3s:
curl -sfL https://get.k3s.io | sh -s - server --tls-sans 127.0.0.1
Эта команда скачает и установит k3s, а также настроит его как сервер. После завершения установки k3s запустится автоматически. Вы можете проверить статус службы:
systemctl status k3s
Чтобы получить конфигурационный файл kubeconfig для доступа к кластеру, выполните:
sudo cat /etc/rancher/k3s/k3s.yaml
Сохраните этот файл на вашем компьютере. Вам потребуется скопировать его в Termux, чтобы настроить доступ с других узлов.
Шаг 3: Развертывание k3s на рабочих узлах (Nodes)
На каждом устройстве, которое будет выступать в роли рабочего узла, выполните следующую команду, заменив <SERVER_IP> на IP-адрес master-узла:
curl -sfL https://get.k3s.io | K3S_URL=https://<SERVER_IP> K3S_TOKEN=$(cat /var/lib/rancher/k3s/server/node-token) sh -s agent
Для обнаружения IP адреса master ноды, можно использовать команду ip addr show wlan0 на master ноде. Также можно использовать VPN для создания локальной сети, что упростит настройку и взаимодействие между узлами (важно: VPN используется только для организации локальной сети и не предназначено для обхода каких-либо блокировок).
Убедитесь, что мастер-узел доступен с рабочих узлов по сети.
Шаг 4: Настройка доступа к кластеру
Скопируйте файл k3s.yaml, полученный на master-узле, на каждый рабочий узел в Termux. Затем настройте kubectl для доступа к кластеру:
export KUBECONFIG=/path/to/k3s.yaml
Теперь вы можете использовать kubectl для управления кластером с любого устройства, где настроен kubeconfig.
Шаг 5: Развертывание микросервиса
Разверните простой микросервис (например, nginx) в кластере:
kubectl create deployment nginx --image=nginx
kubectl expose deployment nginx --port=80 --type=NodePort
Узнайте, на каком порту доступен ваш сервис:
kubectl get service nginx
Откройте браузер на любом устройстве в сети и перейдите по адресу <NODE_IP>:<NODE_PORT>, чтобы увидеть страницу nginx. NODE_IP - IP адрес одного из узлов кластера. NODE_PORT - порт, указанный в выводе команды kubectl get service nginx.
Заключение
В этой статье мы рассмотрели, как развернуть распределенный кластер Kubernetes (k3s) внутри Termux на Android устройствах. Это открывает новые возможности для разработки, тестирования и развертывания приложений в мобильных средах. Такой кластер может быть полезен для обучения, прототипирования и запуска небольших микросервисов.
РыбинскЛАБ предлагает широкий спектр услуг в области DevOps, Kubernetes и облачных технологий. Мы поможем вам спроектировать, развернуть и поддерживать ваши приложения в облаке, а также обучим вашу команду работе с современными инструментами и технологиями. Свяжитесь с нами для получения консультации и реализации ваших проектов!