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

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

Развёртывание и оркестрация микросервисов с помощью Kubernetes‑клиента (kubectl) в Termux: подключение к кластеру и управление подами

Termux позволяет запускать инженерные инструменты прямо с телефона или планшета под Android. Когда требуется быстро проверить состояние приложений, посмотреть логи, перезапустить поды или выполнить отладочные команды в Kubernetes, удобен kubectl — официальный клиент Kubernetes.

В этой статье рассматривается легитимный и практичный сценарий: развёртывание и оркестрация микросервисов через kubectl в Termux, включая подключение к кластеру (по kubeconfig) и управление подами без «серых» методов и обходов ограничений.

Требования и базовые предпосылки

  • Android‑устройство с установленным Termux.
  • Доступ к Kubernetes‑кластеру и kubeconfig (файл конфигурации) либо способ его безопасной установки.
  • Права в кластере на выполнение операций: просмотр ресурсов, управление подами/деплойментами и (при необходимости) создание/обновление манифестов.

Важно: kubectl не создаёт инфраструктуру «сам по себе», он лишь управляет тем, к чему вы подключились. Кластер должен быть доступен с вашего устройства по сети и быть настроен на приём запросов от клиента.

Подготовка Termux: установка kubectl

Начнём с обновления пакетов и установки утилит. В Termux выполните:

pkg update && pkg upgrade -y
pkg install -y curl ca-certificates

Дальше установим kubectl. В Termux удобнее использовать скачивание релиза под архитектуру Android. Самый надёжный путь — скачивать актуальную версию с официального источника и проверять соответствие архитектуре устройства.

Ниже пример для Linux/Android. При необходимости уточните архитектуру и замените URL на корректный для вашей платформы:

ARCH="arm64"  # при необходимости замените (например, arm или amd64 в зависимости от окружения)
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/arm64/kubectl"
install -o root -g root -m 0755 kubectl /data/data/com.termux/files/usr/bin/kubectl

Проверьте версию:

kubectl version --client --output=yaml

Подключение к кластеру: kubeconfig в Termux

kubectl работает через kubeconfig. Чаще всего это файл с данными о кластере, пользователе и контексте (включая токены или сертификаты).

1) Размещение kubeconfig

Обычно kubeconfig кладут по пути ~/.kube/config. В Termux это будет выглядеть так:

mkdir -p ~/.kube

Далее загрузите ваш kubeconfig (варианты зависят от того, как вы его получили). Если вы используете локальный файл, можно положить его командой переноса:

# пример: если kubeconfig лежит во внутренней папке termux (путь замените на свой)
cp /path/to/kubeconfig ~/.kube/config

Проверьте права доступа (опционально, но рекомендуется):

chmod 600 ~/.kube/config

2) Проверка доступных контекстов

Посмотрите, какие контексты определены в конфиге:

kubectl config get-contexts

Выберите нужный контекст (если их несколько):

kubectl config use-context <context-name>

3) Тест подключения

Проверка, что kubectl видит API кластера:

kubectl cluster-info

Если доступ к кластеру только из определённой сети, подключитесь к ней легально (например, через корпоративную VPN или локальную сеть для разработки), чтобы kubectl мог установить соединение с API‑сервером.

Базовая работа с пространствами имён (Namespaces)

В Kubernetes обычно всё разделяется на namespaces. Перед любыми операциями удобно определить, с каким namespace вы работаете.

Список namespaces:

kubectl get namespaces

Список ресурсов в текущем namespace (по умолчанию — default):

kubectl get pods

Чтобы работать в нужном namespace:

kubectl config set-context --current --namespace=<namespace>

Или задавайте namespace в каждой команде:

kubectl get pods -n <namespace>

Управление подами: типовые команды

Список подов

kubectl get pods -o wide

Получение подробного описания

kubectl describe pod <pod-name>

Просмотр логов

Логи — ключевой инструмент отладки микросервисов:

kubectl logs <pod-name>

Если контейнеров несколько:

kubectl logs <pod-name> -c <container-name>

Если нужен стрим:

kubectl logs -f <pod-name>

Выполнение команды внутри контейнера

Если в образе есть sh или bash:

kubectl exec -it <pod-name> -- sh

Подойдёт и для выполнения конкретной команды:

kubectl exec -it <pod-name> -- <command>

Перезапуск подов

В Kubernetes «правильный» перезапуск обычно достигается через контрольные объекты (Deployment/StatefulSet), но в учебных и отладочных сценариях можно перезапустить сам под.

Например, удалить под — контроллер создаст новый:

kubectl delete pod <pod-name> -n <namespace>

Для аккуратной диагностики сначала проверьте, не является ли под частью критичного StatefulSet/DaemonSet.

Состояние и события

Список событий в namespace помогает понять причины рестартов и проблем с scheduling:

kubectl get events -n <namespace> --sort-by=.metadata.creationTimestamp

Или адресно для пода:

kubectl describe pod <pod-name> -n <namespace>

Развёртывание микросервисов: от манифеста до обновления

Практически всегда микросервисы в Kubernetes описываются манифестами (YAML) для ресурсов уровня Deployment, Service и (при необходимости) Ingress.

1) Пример: деплоймент (Deployment) и сервис

Ниже пример минимального манифеста. Вы создадите его в файл, например app.yaml, и примените через kubectl.

# app.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-microservice
spec:
  replicas: 2
  selector:
    matchLabels:
      app: demo-microservice
  template:
    metadata:
      labels:
        app: demo-microservice
    spec:
      containers:
        - name: app
          image: nginx:stable
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: demo-microservice-svc
spec:
  selector:
    app: demo-microservice
  ports:
    - port: 80
      targetPort: 80
  type: ClusterIP

Применение манифеста:

kubectl apply -n <namespace> -f app.yaml

Проверка:

kubectl get deploy -n <namespace>
kubectl get pods -n <namespace>
kubectl get svc -n <namespace>

2) Обновление образа и роллинг-обновления

Если вы меняете образ (например, тег), обычно достаточно повторно применить манифест или обновить Deployment с помощью set image.

kubectl -n <namespace> set image deployment/demo-microservice app=nginx:1.27.0

Следите за обновлением:

kubectl -n <namespace> rollout status deployment/demo-microservice

И можно посмотреть историю:

kubectl -n <namespace> rollout history deployment/demo-microservice

При необходимости откат:

kubectl -n <namespace> rollout undo deployment/demo-microservice --to-revision=<n>

Оркестрация: где заканчивается kubectl и начинается Kubernetes

Важно понимать границы ответственности. kubectl:

  • не «оркестрирует» сам по себе в смысле выполнения бизнес-логики;
  • управляет Kubernetes‑объектами (Deployment/ReplicaSet/StatefulSet/DaemonSet/CronJob и т.д.);
  • инициирует изменения желаемого состояния, а кластер уже приводит фактическое состояние к желаемому.

То есть оркестрация микросервисов в рамках Kubernetes реализуется через корректные спецификации ресурсов. Termux + kubectl дают вам удобный интерфейс управления.

Безопасность: практики для работы с kubectl

  • Не храните kubeconfig в публично доступных местах. Используйте chmod 600 и храните файл только локально.
  • Минимизируйте права: отдельный ServiceAccount/пользователь с правами «только на нужные пространства имён».
  • Ограничьте вывод чувствительных данных: не публикуйте логи, если там есть токены, ключи или персональные данные.
  • При использовании VPN — создавайте локальную сеть для разработки или подключение к корпоративному контуру, а не для обхода ограничений.

Частые сценарии отладки с телефона

  • Поды в состоянии CrashLoopBackOff: смотрите kubectl logs и kubectl describe.
  • Проблемы с планированием (Pending): проверяйте kubectl describe pod и события kubectl get events.
  • Проблемы с сервисом: проверяйте селекторы и эндпоинты через kubectl get endpoints.

Пример проверки endpoints:

kubectl get endpoints <service-name> -n <namespace>

Заключение

Termux в сочетании с kubectl — практичный инструмент для управления Kubernetes «на выезде»: вы можете подключиться к кластеру через kubeconfig, выбрать контекст и namespace, быстро диагностировать поды, просматривать логи и выполнять обновления деплойментов. При этом оркестрация достигается силами самого Kubernetes, а kubectl выступает удобным управляющим интерфейсом.

Если вам нужна помощь с настройкой доступа, безопасной конфигурацией kubeconfig, разбором ошибок деплоймента или подготовкой типовых манифестов для микросервисов — обратитесь в РыбинскЛАБ. Мы поможем сделать рабочий и поддерживаемый контур под ваши задачи.

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

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

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

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