Termux позволяет запускать команды Linux‑подобной среды на Android. Однако важно понимать реальность: Kubernetes обычно разворачивают на полноценной Linux‑инфраструктуре (VM/серверы/контейнерные узлы), а из Termux выполняют управление и автоматизацию. В этой статье рассматривается практический и юридически корректный сценарий: вы используете Termux как рабочее устройство для подготовки конфигураций, генерации и передачи файлов, а также для управления кластером через kubectl, тогда как развёртывание Kubernetes выполняется с опорой на kubeadm на узлах кластера.
Такой подход применим для обучения, лабораторных стендов, а также для небольших кластеров, где критичны воспроизводимость и удобная эксплуатация.
Требования и ограничения
Termux на Android (желательно актуальная версия).
Один или несколько узлов Linux, где будет работать
kubeadm(например, VM в локальной сети или на сервере).Сеть между Termux и узлами кластера: доступ по SSH/с протоколами управления (как минимум возможность доставить файлы и выполнить команды на узлах).
Для управления из Termux нужен файл kubeconfig (обычно
~/.kube/configна вашей стороне).
Если вы разворачиваете локальную сеть для лабораторного стенда (например, через VPN как локальную сеть), используйте его строго для связности устройств в пределах вашего стенда, а не для обхода ограничений доступа.
Архитектура решения: что делает Termux
В типовой схеме Termux выполняет следующие роли:
Подготовка рабочих директорий, манифестов и kubeconfig.
Запуск
kubectlдля управления кластером.При необходимости — генерация шаблонов, проверка YAML и помощь в администрировании (например, выбор контекстов, быстрые запросы, логическая валидация).
А kubeadm используется на узлах кластера (control-plane и workers) для инициализации и подключения узлов.
Подготовка Termux: установка инструментов
Сначала подготовьте базовые пакеты. В Termux используйте менеджер пакетов и установите то, что требуется для работы с YAML и SSH, а также для kubectl.
pkg update -y
pkg upgrade -y
pkg install -y curl wget ca-certificates openssh jqДалее установите kubectl. Удобный способ — скачать бинарник подходящей архитектуры. Если вы не уверены в архитектуре, выполните проверку:
uname -mЗатем установите kubectl (пример для распространённых вариантов — при необходимости подставьте нужную версию и архитектуру):
KUBECTL_VERSION="v1.30.0"
curl -LO "https://dl.k8s.io/release/${KUBECTL_VERSION}/bin/linux/amd64/kubectl"
install -m 0755 kubectl $PREFIX/bin/kubectl
rm -f kubectlПроверьте:
kubectl version --client=trueПодготовка kubeconfig для управления из Termux
Чтобы kubectl работал, ему нужен kubeconfig файл. Обычно он находится на control-plane узле. Вы можете:
Скопировать файл из кластера на Termux (через
scpилиssh).Либо создать kubeconfig на месте (но чаще это не нужно).
Считайте kubeconfig с control-plane узла. На Termux создайте каталог:
mkdir -p $HOME/.kubeПример копирования (замените user/host):
scp user@CONTROL_PLANE_IP:/etc/kubernetes/admin.conf $HOME/.kube/configПрава:
chmod 600 $HOME/.kube/configПроверка подключения:
kubectl get nodesЕсли узлы видны — база готова.
Развёртывание кластера через kubeadm: control-plane
Далее предполагается, что вы настраиваете Kubernetes на узлах Linux с использованием kubeadm. Termux здесь не заменяет роль узлов, но помогает вам хранить манифесты и управлять кластером.
На control-plane узле выполните базовую подготовку (ниже — концептуальный порядок, конкретные параметры зависят от ОС и сети):
Убедитесь, что отключены swap и настроены сетевые требования Kubernetes.
Установите container runtime (например, containerd) и необходимые пакеты.
Настройте cgroups и сетевой модуль согласно документации для вашей ОС.
Инициализируйте кластер через
kubeadm init.
Пример инициализации (замените значения под ваш стенд):
kubeadm init --pod-network-cidr=10.244.0.0/16После успешной инициализации сохраните kubeconfig, чтобы потом перенести его на Termux:
sudo cp /etc/kubernetes/admin.conf /home/youruser/.kube/config
sudo chown youruser:youruser /home/youruser/.kube/configУстановка Pod Network (CNI) после kubeadm init
Чтобы Pod’ы могли общаться между узлами, нужен CNI. На control-plane установите CNI‑провайдер. Варианты зависят от вашей модели сети (flannel/calico/cilium и т.д.). Общая логика:
Применить манифесты CNI в кластер.
Дождаться перехода системных Pod’ов в состояние Running.
Пример (условно) применения манифеста:
kubectl apply -f ./cni-manifest.yamlПроверка:
kubectl get pods -AПодключение worker‑узлов через kubeadm join
После настройки control-plane вы получите команду для подключения workers. Её можно вывести:
kubeadm token create --print-join-commandНа каждом worker узле выполните полученную команду (примерно в виде):
kubeadm join CONTROL_PLANE_IP:6443 --token YOUR_TOKEN --discovery-token-ca-cert-hash sha256:YOUR_HASHПосле присоединения worker узлы должны появиться в списке:
kubectl get nodes -o wideУправление кластером из Termux: kubectl и базовые сценарии
Когда kubeconfig на месте, вы можете полноценно управлять кластером. Рассмотрим практические команды.
Проверка доступности и контекста
kubectl config current-context
kubectl cluster-infoРабота с ресурсами: pods, deployments, services
Список namespace:
kubectl get nsСписок подов в текущем namespace:
kubectl get podsПоказать события в namespace:
kubectl get events -A --sort-by=.metadata.creationTimestampОписать сервис:
kubectl describe svc YOUR_SERVICE_NAMEДеплой тестового приложения
Создайте манифест в Termux (пример). Например, файл app.yaml:
apiVersion: apps/v1
kind: Deployment
metadata:
name: termux-demo
spec:
replicas: 1
selector:
matchLabels:
app: termux-demo
template:
metadata:
labels:
app: termux-demo
spec:
containers:
- name: app
image: nginx:stable
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: termux-demo-svc
spec:
selector:
app: termux-demo
ports:
- port: 80
targetPort: 80
type: ClusterIPПрименение:
kubectl apply -f app.yamlПроверка:
kubectl get deploy,svc
kubectl get pods -l app=termux-demoЛоги, exec и диагностика
Логи пода:
POD_NAME="$(kubectl get pods -l app=termux-demo -o jsonpath='{.items[0].metadata.name}')"
kubectl logs "$POD_NAME" --tail=200Shell внутри контейнера (если образ поддерживает):
kubectl exec -it "$POD_NAME" -- shБыстрая диагностика проблем планирования:
kubectl describe pod "$POD_NAME"Практики безопасности при работе из Termux
Храните kubeconfig защищённым: права на файл и ограничение доступа к устройству.
Не коммитьте kubeconfig в репозитории.
Используйте минимально необходимые права: отдельные ServiceAccounts/roles для задач (если вы строите модель доступа).
Проверяйте контексты перед применением:
kubectl config current-context.
Эксплуатация: обновления, токены, health‑check
Токены kubeadm и join
Если нужно присоединять новые узлы, используйте:
kubeadm token create --print-join-commandПри истечении токенов повторяйте генерацию. Для продакшена также важны регламентные процедуры обновления кластера.
Проверка здоровья компонентов
Обычно удобно смотреть системные namespace:
kubectl get pods -A
kubectl get deployments -A
kubectl get daemonsets -AУправление версиями kubectl
В целях стабильности используйте клиентскую версию kubectl, совместимую с версией API вашего кластера. В лабораторных условиях допускаются небольшие расхождения, но лучше подстраховаться, сверив совместимость.
Автоматизация: локальные скрипты и шаблоны в Termux
Termux хорош для подготовки инфраструктурных артефактов: манифестов, генерации переменных, сборки пакетов конфигураций. Например, вы можете хранить YAML‑шаблоны и подставлять значения, а затем применять их через kubectl.
Если вы используете параметры, удобен подход: хранить kustomization.yaml или простые env‑замены через jq/sed. Однако соблюдайте аккуратность с безопасностью секретов: не встраивайте их в публичные файлы.
Частые ошибки и как их диагностировать
kubectl не видит кластер: проверьте kubeconfig и доступность API server. Команда
kubectl cluster-infoпоможет локализовать проблему.Поды CNI не Running: проверьте сетевой модуль, pod-network-cidr и корректность параметров CNI.
Nodes в NotReady: проверьте swap, runtime, cgroups, состояние kubelet и firewall.
Проблемы с приложением: смотрите
kubectl describeиkubectl logsконкретного пода.
Заключение
Развёртывание Kubernetes‑кластера через kubeadm и управление им через kubectl из Termux — практичный лабораторный и эксплуатационный подход: вы получаете мобильную консоль для администрирования, при этом развёртывание сохраняете на реальных узлах Linux, где Kubernetes и так должен работать. Главное — корректно подготовить kubeconfig, обеспечить связность сети до API server и строго соблюдать принципы диагностики через команды kubectl.
Если вам нужен консультационный аудит стенда, помощь в проектировании сети, подборе CNI, настройке kubeadm или ведении эксплуатации — обращайтесь в РыбинскЛАБ. Мы поможем выстроить стабильный Kubernetes под ваши задачи.