Установка MicroK8s на Ubuntu: локальный Kubernetes шаг за шагом

DevOps сильно изменил процесс разработки и доставки ПО. Одной из ключевых технологий этой трансформации является Kubernetes. В этой статье подробно рассмотрим, как установить локальный экземпляр Kubernetes на Ubuntu с помощью MicroK8s. С такой конфигурацией вы сможете безопасно и надёжно запускать контейнерные приложения на локальной машине, в IoT-устройстве или на edge‑узле.
Зачем использовать MicroK8s?
Kubernetes — это платформа с открытым исходным кодом, которая автоматизирует развёртывание, масштабирование и управление контейнеризированными приложениями. MicroK8s — это «микро» версия Kubernetes: компактная, сертифицированная CNCF upstream-реализация, оптимизированная для низкого потребления ресурсов.
Коротко о преимуществах MicroK8s:
- Лёгкая установка и минимальные зависимости (snap).
- Подходит для ноутбуков, серверов разработки, IoT и edge.
- Работает на x86 и ARM.
- Совместима с инструментами Kubernetes (kubectl, Helm и др.).
Когда MicroK8s — хорошая идея: локальная разработка, тестирование CI, демонстрации и обучение Kubernetes. Когда не подходит: если нужен отказоустойчивый кластер в production с многонодовой конфигурацией и расширенными SLA — там чаще используют Charmed Kubernetes, managed Kubernetes в облаке или kOps/eks/gke.
Требования и подготовка
Кратко:
- Ubuntu (обычно 18.04, 20.04, 22.04 и новее).
- Доступ к snap (обычно установлен в Ubuntu по умолчанию).
- Права sudo для установки и первичной настройки.
Важные понятия в одну строку:
- Pod — минимальная единица запуска в Kubernetes: один или несколько контейнеров с общей сетью и томами.
- Addon — дополнительный компонент MicroK8s (DNS, dashboard, ingress и т. п.).
- NodePort — тип сервиса, который открывает порт на узле для доступа к подам.
Шаг 1: Установка MicroK8s на Ubuntu
Установить MicroK8s проще всего через snap:
sudo snap install microk8s --classicАльтернатива: установить через GUI — открыть Ubuntu Software Center, найти «microk8s» и нажать «Install».
Важно: snap-пакеты обновляются автоматически. Если вы хотите фиксировать версию, изучите параметры snap refresh.
Шаг 2: Настройка брандмауэра для MicroK8s
MicroK8s создаёт под‑сеть для контейнеров (CNI). Чтобы обеспечить связь между подами и доступ в интернет, настройте UFW так, чтобы он разрешал входящие и исходящие соединения по интерфейсу cni0, а также разрешал маршрутизируемый трафик:
sudo ufw allow in on cni0 && sudo ufw allow out on cni0
sudo ufw default allow routedВажно: эти правила применимы для UFW. Если вы используете другой брандмауэр (firewalld, nftables, managed cloud firewall), откройте аналогичные правила для интерфейса контейнерной сети и для портов, которые будут использоваться (NodePort, Ingress).
Примечание: если вы работаете в корпоративной сети, согласуйте изменения с сетевой командой.
Шаг 3: Добавление пользователя в группу microk8s
По умолчанию команды microk8s требуют sudo. Для удобства работы в локальной среде добавьте пользователя в группу microk8s и владейте каталогом kube:
sudo usermod -aG microk8s $USER
sudo chown -f -R $USER ~/.kube
newgrp microk8sПосле этого многие microk8s-команды можно выполнять без sudo. На некоторых системах нужно выйти и войти в сеанс, чтобы изменения группы вступили в силу.
Шаг 4: Включение важных аддонов
MicroK8s идёт с минимальным набором, чтобы сохранить малый размер. Часто полезно включить базовые аддоны:
microk8s enable dns dashboard storageПояснения:
- dns — требуется многим приложениям внутри кластера.
- dashboard — графический веб-интерфейс управления.
- storage — простая локальная система хранения (dynamic volume provisioning).
Посмотреть статус и список доступных аддонов:
microk8s status --wait-readyШаг 5: Просмотр и доступ к дашборду MicroK8s
Получите список всех ресурсов и найдите сервис kubernetes-dashboard:
microk8s kubectl get all --all-namespacesВ выводе вы увидите IP пода дашборда (например, 10.152.183.35) и порт 443. Этот IP может отличаться — он генерируется внутри кластера.
Откройте в браузере URL с IP и портом, например https://10.152.183.35:443. Для входа потребуется токен. Получить токен можно так:
token=$(microk8s kubectl -n kube-system get secret | grep default-token | cut -d " " -f1)
microk8s kubectl -n kube-system describe secret $tokenДашборд даёт обзор workloads, сервисов, конфигураций и позволяет управлять ресурсами в удобном интерфейсе.
Шаг 6: Создание сервиса в MicroK8s
Развернём простое приложение «microbot» и откроем его через NodePort.
Создаём деплоймент с одним контейнером:
microk8s kubectl create deployment microbot --image=dontrebootme/microbot:v1Масштабируем до двух реплик:
microk8s kubectl scale deployment microbot --replicas=2Создаём сервис типа NodePort, чтобы открыть доступ извне:
microk8s kubectl expose deployment microbot --type=NodePort --port=80 --name=microbot-serviceПроверим все ресурсы:
microk8s kubectl get all --all-namespacesВ выводе будет поле порта NodePort (например, 30353). Тогда в браузере на локальной машине приложение доступно по адресу:
Troubleshooting — частые проблемы и решения
- Дашборд не открывается: проверьте, что pod kubernetes-dashboard запущен (microk8s kubectl get pods -n kube-system) и что токен корректен. Проверьте правила UFW и SELinux (если активен).
- Не получается получить токен: убедитесь, что secret с default-token существует в namespace kube-system, и что у вас есть права для его просмотра (возможно, вы не в группе microk8s).
- Поды остаются в состоянии Pending: проверьте storage-class и доступность ресурсов CPU/RAM; для ограниченных устройств может потребоваться уменьшить запросы контейнеров.
Безопасность и hardening (рекомендации)
- Минимизируйте права: избегайте запуска подов с привилегиями root без необходимости.
- Используйте NetworkPolicy для ограничения трафика между подами.
- Регулярно обновляйте MicroK8s через snap и следите за совместимостью версий.
- Включайте аддоны только когда они нужны (ingress, registry, observability).
- Разрешайте доступ к дашборду только из доверенной сети или через kubectl proxy.
Важно: дашборд по умолчанию требует токен; не оставляйте публичный доступ к админским интерфейсам.
Альтернативы MicroK8s и когда их выбирать
- minikube — популярный вариант для локальной разработки; запускает виртуальную машину и подходит, если нужна среда, закрытая от хоста.
- kind (Kubernetes IN Docker) — запускает кластер в Docker-контейнерах; хорош для CI и тестов, где важна чистая среда.
- k3s — облегчённый дистрибутив RKE/Lightweight Kubernetes, ориентированный на edge и ARM; отличается от MicroK8s моделью управления и встроенными компонентами.
Выбор по сценарию:
- Для простоты установки и нативной работы на Ubuntu — MicroK8s.
- Для CI, где уже используется Docker — kind.
- Для edge/ARM с минимальными зависимостями — k3s.
Чеклист перед деплоем в production-подобную среду
- Резервные копии etcd (если используете многонодовой кластер).
- Настроен мониторинг (metrics-server, Prometheus).
- Включены NetworkPolicy и RBAC.
- Настроены ingress-контроллеры и TLS.
- Проверены сценарии обновления и отката.
Шпаргалка команд (cheat sheet)
# Установить
sudo snap install microk8s --classic
# Проверить статус
microk8s status --wait-ready
# Включить аддоны
microk8s enable dns dashboard storage ingress registry metrics-server
# Просмотреть все ресурсы
microk8s kubectl get all --all-namespaces
# Получить логи pod
microk8s kubectl logs -n
# Остановить и запустить microk8s
microk8s stop
microk8s start
# Сброс (удаляет состояние!)
microk8s reset Критерии приёмки
- MicroK8s устанавливается без ошибок на целевой версии Ubuntu.
- DNS аддон работает (pod может резолвить service имена).
- Dashboard доступен и авторизует пользователя токеном.
- Приложение разворачивается и доступно через NodePort или Ingress.
Короткий глоссарий
- Pod — базовый блок запуска в Kubernetes.
- NodePort — сервис, который открывает порт на узле для внешнего доступа.
- Addon — встроенный модуль MicroK8s (dns, dashboard, storage и т. п.).
Примеры когда MicroK8s не подойдёт
- Требуется многокластерная production‑инфраструктура с высокой доступностью и автоматическим failover.
- Есть требования к интеграции с корпоративной сетью и сложным Storage (SAN, Ceph) без адаптации.
Резюме
MicroK8s — быстрый и удобный способ получить полноценный Kubernetes на локальной Ubuntu‑машине. Для большинства задач разработки и тестирования он обеспечивает необходимый функционал при минимальных усилиях. Если вы готовите приложение к продакшену, дополните MicroK8s практиками безопасности, мониторинга и планом обновления.
FAQ
- Как получить токен для дашборда? Используйте команды, приведённые в разделе по дашборду (token=$(…) и describe secret).
- Можно ли запускать MicroK8s на ARM? Да, MicroK8s поддерживает ARM‑архитектуры.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента