We detected you are likely not from a Russian-speaking region. Would you like to switch to the international version of the site?

  Назад к списку статей

Termux + Kubernetes k3s: локальное создание кластера и управление подами с мобильного терминала

Мобильный терминал 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 netcat

2) Проблемы с сертификатами

Если конфиг был передан без коррекции 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 в вашем контуре.

* Текст статьи подготовлен и структурирован с использованием технологий искусственного интеллекта. Проверен и доработан перед публикацией.

Нужна помощь с настройкой Termux, Linux и серверов?

Я оказываю ИТ-услуги: настройка серверов, автоматизация, безопасность, помощь с Linux и инфраструктурой. Материалы сайта — только в ознакомительных и образовательных целях.

Связаться со мной
Поддержать проект