Определение простыми словами
k0s — это минималистичный дистрибутив Kubernetes, упакованный в один бинарный файл (~100 МБ). Он не требует отдельной установки containerd, etcd или CNI-плагинов — всё уже включено. Название расшифровывается как «zero friction, zero deps, zero cost»: запустил бинарь, получил рабочий кластер.
В отличие от kubeadm или полноценного K8s, k0s не предполагает ручной настройки компонентов плоскости управления. Подходит для сред с ограниченными ресурсами: минимальные требования — 1 vCPU, 1 ГБ RAM на worker-ноде.
Сравнение
| Дистрибутив | Размер бинаря | RAM (worker) | Особенности |
|---|---|---|---|
| k0s | ~100 МБ | от 512 МБ | Один бинарь, встроенный etcd, поддержка ARM |
| k3s | ~60 МБ | от 512 МБ | SQLite вместо etcd, Traefik по умолчанию |
| MicroK8s | snap-пакет | от 540 МБ | Ubuntu snap, аддоны через CLI |
| kubeadm | инструмент | от 2 ГБ | Полный K8s, максимальная гибкость |
Кейсы использования
- Edge и IoT: развёртывание кластера на ARM-устройствах (Raspberry Pi 4, Jetson Nano) без ручной сборки зависимостей.
- CI/CD-окружения: поднять одноузловой кластер за 30 секунд для интеграционных тестов в пайплайне.
- VPS с ограниченными ресурсами: production-кластер на 2-3 нодах по 2 vCPU / 2 ГБ RAM — реальный сценарий для небольших проектов.
- Air-gapped окружения: установка без доступа в интернет — все образы и бинари можно распределить заранее.
- Обучение и прототипирование: быстро проверить манифесты без локального minikube.
Негативный пример: k0s не подойдёт, если нужна глубокая кастомизация планировщика, кастомный CNI с нестандартным патчем или управляемый control plane с автоматическим масштабированием — для этого лучше смотреть в сторону OpenShift или managed Kubernetes (EKS, GKE).
Технические детали
Установка и запуск одноузлового кластера (controller + worker на одной машине):
curl -sSLf https://get.k0s.sh | sudo sh
sudo k0s install controller --single
sudo k0s start
sudo k0s kubectl get nodes
Добавление worker-ноды: сгенерируйте join-токен на controller и запустите агент на второй машине:
sudo k0s token create --role=worker > worker-token.txt
sudo k0s install worker --token-file worker-token.txt
sudo k0s start
Конфигурационный файл по умолчанию генерируется командой k0s config create и сохраняется в /etc/k0s/k0s.yaml. Там можно задать CNI (по умолчанию — kube-router или Calico), хранилище (etcd или SQLite для single-node) и параметры API-сервера. kubectl встроен в бинарь: вызывается как k0s kubectl или через симлинк.
🔥 Где это применяется
Частые вопросы
Чем k0s отличается от k3s?
k3s заменяет etcd на SQLite и включает Traefik по умолчанию, что упрощает старт, но ограничивает HA-конфигурации. k0s использует встроенный etcd уже в базовой поставке и предоставляет более чистую архитектуру без лишних компонентов — это удобнее для production и air-gapped сред.
Можно ли использовать k0s в production?
Да. k0s поддерживает multi-master HA через встроенный etcd, автоматическое обновление через k0sctl upgrade и полностью совместим со стандартными Kubernetes-манифестами. Компания Mirantis использует k0s как основу для своих продуктов.
Какие CNI-плагины поддерживает k0s?
По умолчанию используется kube-router или Calico (выбирается в конфиге). Также поддерживаются Cilium, Flannel и любой другой CNI, совместимый со стандартом CNI spec — достаточно отключить встроенный провайдер и установить свой.
Работает ли k0s на ARM?
Да, официальные бинари собираются для amd64, arm64 и armv7. Это делает k0s подходящим для Raspberry Pi, Jetson-устройств и edge-серверов на ARM-процессорах.