Мобильный терминал Termux удобно использовать для администрирования локальных сервисов: вы можете быстро запускать команды, проверять состояние кластера, смотреть логи и применять манифесты. В связке с Kubernetes k3s (лёгким дистрибутивом Kubernetes) это превращается в практичный способ собрать локальный кластер и управлять им из любой точки доступа к вашей домашней сети.
Дальше — разбор, как организовать k3s-кластер и подключить к нему управление через kubectl из Termux.
Что потребуется
Устройство для кластера: ПК/mini-PC/одноплатник, где будет запущен k3s (подойдут Linux-машины).
Termux на Android.
Локальная сеть (желательно одна подсеть). Если нужно объединить устройства в одну сеть через VPN, используйте только для создания локального соединения, а не для обхода ограничений.
kubectl на стороне Termux.
Шаг 1. Поднимаем k3s на сервере
На Linux-хосте установите k3s. Обычно используется официальный инсталлятор. Выполните команды в терминале сервера.
sudo apt update
curl -sfL https://get.k3s.io | sh -После завершения сервер создаст системные компоненты k3s. Для проверки статуса выполните:
sudo systemctl status k3sЕсли узел — управляющая плоскость (single node), это будет достаточно для тестов.
Шаг 2. Находим адрес API Kubernetes
Чтобы Termux мог подключаться к кластеру, нужно знать, по какому адресу и порту доступен Kubernetes API. У k3s по умолчанию используется порт 6443.
На сервере можно определить IP адрес интерфейса (например, локальный):
ip aВыберите IP из вашей локальной сети (например, в диапазоне 192.168.x.x или 10.x.x.x) и используйте его далее как <K3S_SERVER_IP>.
Шаг 3. Получаем kubeconfig или токен кластера
k3s хранит конфиг для подключения в:
/etc/rancher/k3s/k3s.yamlДля управления из Termux удобнее передать этот файл на Android. Варианты передачи:
через scp (если в сети доступны ssh-сервисы),
через файловый обмен (например, SFTP в проводнике),
через вывод содержимого и вставку в локальный файл на Termux.
При использовании kubeconfig важно, чтобы в поле server: был указан доступный с Android адрес. Часто в конфиг прописан 127.0.0.1, и тогда нужно заменить на IP сервера.
Пример: просмотр содержимого kubeconfig на сервере:
sudo cat /etc/rancher/k3s/k3s.yamlНайдите строку вида:
server: https://127.0.0.1:6443Если увидите 127.0.0.1, замените на https://<K3S_SERVER_IP>:6443.
Шаг 4. Переносим kubeconfig на Termux
В Termux создайте директорию для kubeconfig:
mkdir -p ~/.kubeДальше скопируйте kubeconfig в файл ~/.kube/config.
Самый простой путь — передать файл вручную. Если у вас есть способ открыть файл на Android, назовите его config внутри ~/.kube.
Либо выполните передачу по ssh (пример, если ssh включён на сервере):
scp user@<K3S_SERVER_IP>:/etc/rancher/k3s/k3s.yaml ~/.kube/configПосле копирования на Android проверьте содержимое:
cat ~/.kube/config | headУбедитесь, что server: указывает на ваш реальный IP сервера.
Шаг 5. Устанавливаем kubectl в Termux
Установите kubectl в Termux. В зависимости от политики пакетов и архитектуры устройства команда может отличаться. Начните с обновления репозиториев Termux:
pkg updateДальше поставьте kubectl. В ряде случаев доступен пакет:
pkg install kubectlЕсли пакет недоступен в вашей сборке, используйте установку бинарника подходящего релиза (версию можно согласовать с вашим кластером). Учитывайте, что для скачивания потребуется доступ в интернет.
Шаг 6. Проверяем доступ к кластеру
Теперь попробуем получить список узлов:
kubectl get nodesЗатем проверим системные поды:
kubectl get pods -AЕсли команды выполняются без ошибок авторизации и сеть доступна — вы готовы к деплою приложений.
Шаг 7. Деплой тестового приложения (hello world)
Создадим простой deployment и service. Можно сделать через manifest.
Создайте файл, например hello.yaml:
nano hello.yamlСодержимое:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello-termux
spec:
replicas: 1
selector:
matchLabels:
app: hello-termux
template:
metadata:
labels:
app: hello-termux
spec:
containers:
- name: app
image: nginx:stable
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: hello-termux-svc
spec:
selector:
app: hello-termux
ports:
- port: 80
targetPort: 80
type: ClusterIPПримените манифест:
kubectl apply -f hello.yamlПроверьте, что pod запущен:
kubectl get pods
kubectl describe pod -l app=hello-termuxЕсли нужно посмотреть логи:
kubectl logs -l app=hello-termuxШаг 8. Доступ к приложению из вашей сети
Так как сервис типа ClusterIP доступен внутри кластера, для тестового просмотра часто используют:
kubectl port-forward (удобно с мобильного),
смену типа сервиса на NodePort (для простоты в локальной сети),
или Ingress (если он развернут).
Самый быстрый вариант — port-forward. Например, прокинем порт 8080 на pod:
kubectl port-forward deploy/hello-termux 8080:80Теперь открывайте в браузере на Android (или на другом устройстве) адрес localhost:8080 в контексте самого Termux-порта. Важно: port-forward привязан к сессии команды в Termux, поэтому keep-alive нужен до завершения тестов.
Шаг 9. Базовая эксплуатация: обновление и откат
Обновление изображения в deployment можно сделать через новый манифест:
kubectl set image deployment/hello-termux app=nginx:1.26Контролируйте rollout:
kubectl rollout status deployment/hello-termuxПри необходимости откатите на предыдущую версию:
kubectl rollout undo deployment/hello-termuxШаг 10. Частые проблемы и как их диагностировать
1) kubectl не подключается к API
Проверьте:
что
server:в~/.kube/configуказывает на правильный<K3S_SERVER_IP>,доступность порта
6443из сети Android.
Для базовой проверки можно использовать:
nc -vz <K3S_SERVER_IP> 6443Если nc отсутствует:
pkg install netcat2) Проблемы с сертификатами
Если конфиг был передан без коррекции server-адреса или с несоответствием SAN/hostname, kubectl может ругаться на TLS. Обычно помогает корректная правка server: на адрес, соответствующий тому, как вы подключаетесь из Android, и корректная передача CA данных из kubeconfig.
3) Приложение не стартует
Посмотрите события и причины:
kubectl describe pod <pod-name>
kubectl get events --sort-by=.metadata.creationTimestamp | tail -n 30Практические советы для работы с Termux
Сохраняйте манифесты проектов в удобной папке и храните
kubectlконфиги в~/.kube/config.Используйте namespace для разделения задач:
kubectl create ns ...и-nпри командах.Для частых манипуляций применяйте
kubectl applyс обновляемыми yaml-файлами.
Заключение
Связка Termux + Kubernetes k3s позволяет удобно и быстро управлять локальным кластером прямо с мобильного устройства: от проверки состояния до деплоя и логов. Ключевые элементы успеха — корректный kubeconfig, доступность API на порту 6443 из вашей локальной сети и внимательная диагностика (nodes/pods/events/logs).
Если вы хотите, чтобы кластер k3s был настроен под ваши задачи (ресурсы, сеть, политика доступа, мониторинг, Ingress) — обращайтесь в РыбинскЛАБ. Мы поможем спроектировать и внедрить локальную инфраструктуру, а также обучим администрированию Kubernetes в вашем контуре.