Определение простыми словами
MicroK8s — это минималистичный дистрибутив Kubernetes, разработанный компанией Canonical (создатели Ubuntu). Он устанавливается как один snap-пакет и разворачивает полноценный кластер Kubernetes буквально за 2-3 минуты. Внутри уже упакованы: API-сервер, etcd, kubelet, kube-proxy и набор аддонов (DNS, ingress, dashboard, Prometheus и другие) — всё активируется одной командой.
В отличие от «большого» Kubernetes, MicroK8s не требует отдельной настройки kubeadm, внешнего etcd или балансировщика нагрузки для старта. Это делает его идеальным выбором для CI/CD-пайплайнов, edge-устройств на ARM, разработческих ноутбуков и небольших production-нод с 1-3 серверами.
Сравнение
| Дистрибутив | Минимум RAM | Установка | Мультинода | Особенности |
|---|---|---|---|---|
| MicroK8s | 540 МБ | snap install microk8s |
Да (microk8s add-node) | Snap-изоляция, аддоны, Canonical-поддержка |
| K3s | 512 МБ | curl + bash-скрипт | Да (агент/сервер) | Один бинарник, SQLite вместо etcd, популярен на ARM |
| Minikube | 2 ГБ | Отдельный бинарник | Нет (только локально) | Виртуализация или Docker-драйвер, только dev-среда |
| K0s | 500 МБ | curl + bash-скрипт | Да | Нет зависимостей ОС, подходит для immutable-систем |
Кейсы использования
- Локальная разработка: разработчик разворачивает кластер на ноутбуке с Ubuntu/Windows WSL2 за 3 минуты без дополнительных инструментов.
- CI/CD-пайплайны: в GitHub Actions или GitLab Runner MicroK8s запускается как сервис и проводит e2e-тесты Helm-чартов прямо в pipeline.
- Edge и IoT: Canonical официально поддерживает MicroK8s на Raspberry Pi 4 (ARM64), что позволяет запускать микросервисы на edge-узлах.
- Небольшие production-кластеры: 3-нодный кластер с HA etcd разворачивается без kubeadm и внешних зависимостей — достаточно выполнить
microk8s add-nodeна каждом сервере. - Обучение Kubernetes: полный API K8s без упрощений, в отличие от Minikube, где часть функций эмулируется.
Негативный пример: MicroK8s не подходит для крупных production-кластеров (50+ нод) с требованиями к кастомной сетевой плоскости (Cilium с eBPF в полном режиме) и сложными политиками обновлений — здесь лучше использовать kubeadm с managed etcd или OpenShift.
Технические детали
MicroK8s использует containerd в качестве CRI и поставляет собственный kubectl, kubeconfig и cni-плагины в изолированном snap-окружении. Все файлы хранятся в /var/snap/microk8s/.
# Установка
sudo snap install microk8s --classic
# Добавить пользователя в группу
sudo usermod -aG microk8s $USER
newgrp microk8s
# Проверить статус
microk8s status --wait-ready
# Включить базовые аддоны
microk8s enable dns ingress metrics-server
# Получить kubeconfig
microk8s config > ~/.kube/config
# Запустить тестовый деплой
microk8s kubectl create deployment nginx --image=nginx
microk8s kubectl expose deployment nginx --port=80 --type=NodePort
# Добавить ноду в кластер (выполнить на master)
microk8s add-node
# На worker-ноде выполнить команду join, выданную выше
# Включить Helm 3
microk8s enable helm3
microk8s helm3 repo add stable https://charts.helm.sh/stable
Для сброса кластера до чистого состояния используется microk8s reset — удаляет все workload’ы, но сохраняет конфигурацию аддонов. Полное удаление: sudo snap remove microk8s.
🔥 Где это применяется
Частые вопросы
Чем MicroK8s отличается от обычного Kubernetes?
MicroK8s — это полноценный Kubernetes, упакованный в snap-пакет с предустановленными компонентами. Отличие в простоте установки и изоляции: все бинарники и конфиги хранятся в /var/snap/microk8s/, не затрагивая систему. API и поведение идентичны upstream Kubernetes.
Можно ли использовать MicroK8s в production?
Да, при условии HA-настройки из 3+ нод с распределённым etcd. Canonical официально поддерживает production-использование и предлагает коммерческую поддержку через Ubuntu Pro. Для кластеров до 10 нод это жизнеспособный вариант.
Работает ли MicroK8s на ARM-процессорах?
Да, поддерживаются архитектуры amd64, arm64 и armhf. MicroK8s официально тестируется на Raspberry Pi 4 и используется в IoT-проектах на базе Ubuntu Core.
Как подключить внешний kubectl к MicroK8s?
Выполните microk8s config > ~/.kube/config на сервере, скопируйте файл на локальную машину и используйте стандартный kubectl. Либо установите алиас: alias kubectl='microk8s kubectl'.