Гид по технологиям

MicroK8s: быстрый старт и эксплуатация

7 min read Kubernetes Обновлено 24 Dec 2025
MicroK8s: быстрый старт и эксплуатация
MicroK8s: быстрый старт и эксплуатация

MicroK8s — лёгкая, единофайловая дистрибуция Kubernetes от Canonical. Устанавливается быстро на Linux, macOS и Windows, поддерживает одно- и многозвенные кластеры и предоставляет набор готовых аддонов (dashboard, registry, ingress и др.). В статье — пошаговая установка, основные команды, перенос локальных образов, включение аддонов, управление кластером, безопасность, сценарии использования и чек‑листы для ролей.

Логотип Kubernetes

Содержание

  • Установка
  • Взаимодействие с кластером
  • Работа с локальными Docker‑образами
  • Включение Kubernetes Dashboard
  • Полезные аддоны
  • Управление кластером
  • Мультиузловой кластер
  • Безопасность и жёсткие настройки
  • Кейс‑плейбук: установка и развёртывание
  • Чек‑листы по ролям
  • Советы миграции и совместимости
  • Когда MicroK8s не подходит
  • Глоссарий
  • Заключение

Установка

Коротко: MicroK8s доступен для Linux (snap), macOS (Homebrew) и Windows (графический установщик на сайте проекта). Ниже — пошагово для типичного Linux‑сервера на базе snap.

  1. Убедитесь, что у вас установлен snapd. Если нет — установите его через пакетный менеджер дистрибутива.

  2. Установите MicroK8s с флагом classic:

sudo snap install microk8s --classic
  1. Для установки конкретной версии укажите канал:
sudo snap install microk8s --classic --channel=1.19/stable

Этот пример даст MicroK8s на базе Kubernetes v1.19.

  1. Подождите, пока службы Kubernetes запустятся. Проверяйте готовность командой:
microk8s status --wait-ready
  1. Для обычной работы добавьте пользователя в группу microk8s, чтобы не использовать sudo:
sudo usermod -aG microk8s $USER
newgrp microk8s

Важно: выход/повторный вход в сессию может потребоваться, чтобы обновления групп вступили в силу.

Взаимодействие с кластером

MicroK8s включает собственную обёртку kubectl. Для выполнения команд используйте префикс microk8s kubectl:

sudo microk8s kubectl get all --all-namespaces

Это покажет все ресурсы в кластере. Если хочется пользоваться обычным kubectl без префикса, экспортируйте конфигурацию:

sudo microk8s kubectl config view --raw > $HOME/.kube/config

После этого обычный kubectl увидит кластер.

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

Создайте файл manifest.yaml со следующим содержимым:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: nginx
    image: nginx:latest
    ports:
    - name: http
      containerPort: 80
      protocol: TCP

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

sudo microk8s kubectl apply -f ./manifest.yaml

Перепроверьте ресурсы:

sudo microk8s kubectl get all

Скриншот списка ресурсов MicroK8s по умолчанию

Скриншот базового развёртывания NGINX в MicroK8s

Работа с локальными Docker‑образами

MicroK8s по умолчанию не видит ваши локальные Docker‑образы из обычного Docker Daemon. Есть несколько подходов:

  1. Экспорт и импорт через tar:
docker save my-image:latest > my-image.tar
microk8s ctr image import my-image.tar

После импорта Pod‑ы смогут ссылаться на my-image:latest.

  1. Включить локальный registry‑аддон и пушить образы туда:
microk8s enable registry

Registry доступен по localhost:32000. Тегируйте и пушьте образ туда:

docker tag my-image:latest localhost:32000/my-image:latest
docker push localhost:32000/my-image:latest
  1. Настроить внешнюю приватную регистрационную службу (Harbor, Artifactory или облачный реестр) и дать MicroK8s права на pull.

Для проверки списка образов используйте:

microk8s ctr images ls

Совет: в локальной разработке registry‑аддон удобен, но для production используйте авторитетный реестр с управлением доступом.

Включение Kubernetes Dashboard

Dashboard включается как аддон:

microk8s enable dashboard

Проверьте сервисы в пространстве kube-system и найдите kubernetes-dashboard:

microk8s kubectl get services --namespace kube-system

Запишите CLUSTER‑IP и откройте его в браузере. Dashboard позволит управлять ресурсами через GUI.

Полезные аддоны

MicroK8s включает множество аддонов. Некоторые ключевые:

  • dns — CoreDNS для разрешения имён
  • storage — StorageClass на основе директорий хоста
  • ingress — контроллер Ingress (NGINX по умолчанию)
  • registry — локальный Docker registry на localhost:32000
  • istio — Istio service mesh

Посмотреть все доступные аддоны можно командой без аргументов:

microk8s enable

По умолчанию активна минимальная функциональность; вы включаете только то, что нужно.

Управление кластером

Основная команда — microk8s. Короткий набор операций:

  • Просмотр состояния:
microk8s status --format yaml
  • Остановка кластера:
microk8s stop
  • Запуск кластера:
microk8s start
  • Сброс кластера до состояния после установки:
microk8s reset

reset — разрушительная операция: удалит все ресурсы, но не удалит snap. Чтобы также уничтожить хранилища, добавьте --destroy-storage.

Скриншот вывода команды microk8s status

Для вывода конфигурации используйте microk8s config.

Мультиузловой кластер

MicroK8s поддерживает добавление узлов в кластер. Основная идея: один контролирующий узел запускает control plane, другие становятся рабочими.

  1. На мастер‑узле запустите:
microk8s add-node

Команда выдаст строку microk8s join ... для запуска на присоединяемом узле.

  1. На новом узле выполните предложенную команду microk8s join ....

Узел присоединится за несколько секунд, если он видит мастер по указанному адресу.

Просмотр узлов:

microk8s kubectl get nodes

Чтобы удалить узел:

  • На удаляемом узле выполните microk8s leave.
  • На мастере выполните microk8s remove-node .

Скриншот процесса добавления узла в кластер MicroK8s

Ограничения: каждый узел должен быть в изолированной среде (физическая машина, VM или контейнер). Нельзя запускать два рабочих экземпляра MicroK8s в одной и той же среде.

Безопасность и жёсткие настройки

Рекомендации по безопасности для продакшен‑кластера на MicroK8s:

  • Управление доступом: используйте RBAC и создавайте минимальные привилегии для сервис‑аккаунтов.
  • Секреты: храните секреты в зашифрованном виде или используйте внешние провайдеры (Vault, KMS).
  • Сеть: включите NetworkPolicy и контролируйте трафик между Pod‑ами.
  • Контроль образов: используйте подписанные образы и проверку образов (image policy webhook).
  • Обновления: регулярно обновляйте snap командой sudo snap refresh microk8s и тестируйте каналы на staging‑средах.
  • Аудит: включите audit logging в kube‑apiserver и собирайте логи в централизованный стек.
  • Secrets encryption at rest: при необходимости включите шифрование для etcd (при HA конфигурации).

Практический набор команд для базовой жёсткой настройки:

microk8s enable rbac
microk8s enable ingress
microk8s enable dns
microk8s enable storage

Затем настройте NetworkPolicy манифесты и ограничьте доступ к Kubernetes API через firewall.

Кейс‑плейбук: установка, развёртывание и откат

Мини‑SOP для быстрого тестового кластера и развёртывания приложения.

Шаги:

  1. Установка MicroK8s и добавление пользователя в группу:
sudo snap install microk8s --classic
sudo usermod -aG microk8s $USER
newgrp microk8s
  1. Включение основных аддонов:
microk8s enable dns storage registry ingress dashboard
  1. Подготовка образа и пуш в локальный registry:
docker build -t localhost:32000/my-app:1.0 .
docker push localhost:32000/my-app:1.0
  1. Развёртывание приложения (пример Deployment + Service):
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-app
        image: localhost:32000/my-app:1.0
        ports:
        - containerPort: 8080

Примените манифесты и проверьте состояние kubectl get pods -o wide.

  1. Мониторинг и логирование: подключите метрики (Prometheus, Grafana) и собирайте логи.

  2. Откат при проблеме: если новая версия ломает сервис, выполните kubectl rollout undo deployment/my-app.

Критерии приёмки

  • Подключение к кластеру по kubectl корректно.
  • Все Pod‑ы в Ready статусе спустя 2 минуты.
  • Ингресс отвечает корректным кодом 200 на health‑check.

Чек‑листы по ролям

Разделю по ролям: разработчик, инженер платформы, SRE/оператор.

Чек‑лист — разработчик

  • Установил microk8s локально и добавил себя в группу microk8s
  • [ ] Экспортировал kubeconfig и проверил kubectl get nodes
  • Собрал и загрузил образ в registry локально
  • Написал Deployment и Service, проверил liveness/readiness
  • Провёл smoke‑тесты приложения

Чек‑лист — инженер платформы

  • Включил аддоны: dns, storage, ingress, registry при необходимости
  • Настроил RBAC и namespace‑стратегию
  • Включил NetworkPolicy и проверил межсервисную связанность
  • Настроил CI/CD пайплайн для пуша образов в утверждённый реестр

Чек‑лист — SRE/оператор

  • Настроил мониторинг и алерты (SLI/SLO на уровне приложений)
  • [ ] Регулярно применяет snap refresh microk8s в тестовой среде перед продом
  • План резервного копирования etcd и PV
  • Отработал процедуру disaster recovery и rollback

Совет: модели мышления и эвристики

  • MicroK8s = «Kubernetes в коробке» для разработки и лёгкого продакшена. Модель: удобство ≈ максимальная автономность сервера.
  • Выбирайте канал snap по принципу: stable — для продакшена, candidate/beta — для тестирования новшеств.
  • Всегда тестируйте обновления в staging перед применением в prod.

Совместимость, каналы и миграция

Каналы snap указывают версию Kubernetes и стабильность. Примеры каналов:

  • 1.19/stable — стабильный релиз на базе Kubernetes 1.19
  • latest/stable — последний стабильный релиз
  • edge — наиболее свежие изменения, нестабилен

Миграция между версиями:

  • Тестируйте мажорные обновления на staging.
  • Для обновления используйте:
sudo snap refresh microk8s --channel=
  • Проверьте совместимость версий API Kubernetes для ваших манифестов (deprecated API могут быть удалены).

Когда MicroK8s не подходит

Контексты, в которых стоит выбрать альтернативу:

  • Нужна облачная управляемая Kubernetes‑услуга с SLA и интеграцией облачных сервисов.
  • Требуется тонкая кастомизация control plane (в больших enterprise‑кластеров с нестандартными настройками etcd).
  • Высокопроизводительные сетевые требования, требующие CNI‑плагина, которого нет в MicroK8s без доработок.

Альтернативы и их краткая оценка:

  • Minikube — хорош для локальной разработки с гипервизором.
  • kind — запускает кластеры внутри контейнеров, удобен для CI.
  • k3s — облегчённый дистрибутив от Rancher, ориентирован на edge.

Тесты и критерии приёмки

Минимальный набор тестов перед продвижением в прод:

  • Smoke test: приложение отвечает на health‑endpoint 200 в течение 2 минут после deploy.
  • Консервативный тест обновления: выполнить kubectl rollout restart и проверить отсутствие падений.
  • Тест отказоустойчивости: выключить 1 узел и убедиться, что критичные Pod‑ы пересадятся.

Безопасность: быстрые жёсткие настройки

  • Включите RBAC и запретите разрешения cluster‑admin для сервис‑аккаунтов по умолчанию.
  • Настройте NetworkPolicy, ограничивающую доступ между namespace.
  • Используйте Admission Controllers (PodSecurityPolicy/PSA) для контроля привилегий контейнеров.
  • Настройте SMB/Файловые привилегии для volume mount, если используете shared storage.

Глоссарий (1‑строчный)

  • microk8s — однопакетный дистрибутив Kubernetes от Canonical.
  • snap — система упаковки приложений для Linux.
  • addon — дополнительный модуль в MicroK8s (dns, registry, ingress и др.).
  • registry — хранилище Docker‑образов.
  • kubeconfig — файл конфигурации доступа к Kubernetes API.

Советы для локальной аудитории

  • Для российских команд: учитывайте ограничения корпоративных прокси при пуше образов в внешние реестры. Настраивайте proxy в Docker и в конфигурации MicroK8s для доступа к внешним mirror.
  • Если ваша сеть использует приватные CA, добавьте корневые сертификаты в доверенные хранилища Snap/контейнеров.

Заключение

MicroK8s — практичный выбор для разработчиков и небольших продакшен‑сценариев. Он снижает барьер входа в Kubernetes, ускоряет тестирование и позволяет легко масштабировать до многозвенных конфигураций. Для серьёзного продакшена важно продумать безопасность, процесс обновления и интеграцию с реестром образов. Если ваши требования вырастают выше возможностей MicroK8s, рассмотрите k3s, managed Kubernetes от облачных провайдеров или кластер на базе kubeadm.

Важное

  • Перед обновлением всегда тестируйте в staging.
  • microk8s reset — удалит все ресурсы; используйте с осторожностью.

Краткая памятка команд

  • Установить: sudo snap install microk8s --classic
  • Состояние: microk8s status --wait-ready
  • Kubectl: microk8s kubectl get all
  • Включить аддон: microk8s enable
  • Добавить узел: microk8s add-node / microk8s join ...
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Освободить память в Windows через Диспетчер задач
Windows

Освободить память в Windows через Диспетчер задач

Организация учебных материалов в Delicious
Образование

Организация учебных материалов в Delicious

Как организовать каталог Lightroom
Фотография

Как организовать каталог Lightroom

Как открыть таблицу символов в Windows 11
Windows

Как открыть таблицу символов в Windows 11

Цветные ярлыки Gmail для быстрой организации почты
Электронная почта

Цветные ярлыки Gmail для быстрой организации почты

Скрыть ячейки, строки и столбцы в Excel
Excel

Скрыть ячейки, строки и столбцы в Excel