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

Содержание
- Установка
- Взаимодействие с кластером
- Работа с локальными Docker‑образами
- Включение Kubernetes Dashboard
- Полезные аддоны
- Управление кластером
- Мультиузловой кластер
- Безопасность и жёсткие настройки
- Кейс‑плейбук: установка и развёртывание
- Чек‑листы по ролям
- Советы миграции и совместимости
- Когда MicroK8s не подходит
- Глоссарий
- Заключение
Установка
Коротко: MicroK8s доступен для Linux (snap), macOS (Homebrew) и Windows (графический установщик на сайте проекта). Ниже — пошагово для типичного Linux‑сервера на базе snap.
Убедитесь, что у вас установлен snapd. Если нет — установите его через пакетный менеджер дистрибутива.
Установите MicroK8s с флагом classic:
sudo snap install microk8s --classic- Для установки конкретной версии укажите канал:
sudo snap install microk8s --classic --channel=1.19/stableЭтот пример даст MicroK8s на базе Kubernetes v1.19.
- Подождите, пока службы Kubernetes запустятся. Проверяйте готовность командой:
microk8s status --wait-ready- Для обычной работы добавьте пользователя в группу 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

Работа с локальными Docker‑образами
MicroK8s по умолчанию не видит ваши локальные Docker‑образы из обычного Docker Daemon. Есть несколько подходов:
- Экспорт и импорт через tar:
docker save my-image:latest > my-image.tar
microk8s ctr image import my-image.tarПосле импорта Pod‑ы смогут ссылаться на my-image:latest.
- Включить локальный registry‑аддон и пушить образы туда:
microk8s enable registryRegistry доступен по localhost:32000. Тегируйте и пушьте образ туда:
docker tag my-image:latest localhost:32000/my-image:latest
docker push localhost:32000/my-image:latest- Настроить внешнюю приватную регистрационную службу (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 resetreset — разрушительная операция: удалит все ресурсы, но не удалит snap. Чтобы также уничтожить хранилища, добавьте --destroy-storage.

Для вывода конфигурации используйте microk8s config.
Мультиузловой кластер
MicroK8s поддерживает добавление узлов в кластер. Основная идея: один контролирующий узел запускает control plane, другие становятся рабочими.
- На мастер‑узле запустите:
microk8s add-nodeКоманда выдаст строку microk8s join ... для запуска на присоединяемом узле.
- На новом узле выполните предложенную команду
microk8s join ....
Узел присоединится за несколько секунд, если он видит мастер по указанному адресу.
Просмотр узлов:
microk8s kubectl get nodesЧтобы удалить узел:
- На удаляемом узле выполните
microk8s leave. - На мастере выполните
microk8s remove-node.

Ограничения: каждый узел должен быть в изолированной среде (физическая машина, 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 для быстрого тестового кластера и развёртывания приложения.
Шаги:
- Установка MicroK8s и добавление пользователя в группу:
sudo snap install microk8s --classic
sudo usermod -aG microk8s $USER
newgrp microk8s- Включение основных аддонов:
microk8s enable dns storage registry ingress dashboard- Подготовка образа и пуш в локальный registry:
docker build -t localhost:32000/my-app:1.0 .
docker push localhost:32000/my-app:1.0- Развёртывание приложения (пример 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.
Мониторинг и логирование: подключите метрики (Prometheus, Grafana) и собирайте логи.
Откат при проблеме: если новая версия ломает сервис, выполните
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 ...
Похожие материалы
Освободить память в Windows через Диспетчер задач
Организация учебных материалов в Delicious
Как организовать каталог Lightroom
Как открыть таблицу символов в Windows 11
Цветные ярлыки Gmail для быстрой организации почты