Установка Kubernetes с K3s: Лёгкая оркестрация контейнеров
Настройка одно- и многоузлового кластера Kubernetes с K3s, использование kubectl, создание deployments и services, управление приложениями с Helm. Руководство по Kubernetes для VPS.
Установка Kubernetes с K3s: Лёгкая оркестрация контейнеров
Kubernetes — отраслевой стандарт оркестрации контейнеров. Однако полная установка Kubernetes может быть ресурсоёмкой и сложной. K3s — это лёгкий дистрибутив Kubernetes от Rancher, предоставляющий все функции Kubernetes в одном бинарном файле и отлично работающий в ресурсоограниченных средах, таких как VPS.
Почему стоит выбрать K3s?
Характеристика
Полный Kubernetes
K3s
Размер бинарного файла
~500MB+
~100MB
Минимальный RAM
2GB+
512MB
Время установки
30-60 мин
5 мин
Зависимости
Много
Минимальные
Совместимость с Kubernetes
Полная
Полная
Использование в production
Да
Да
K3s полностью совместим с Kubernetes API. kubectl, Helm и другие инструменты Kubernetes работают с K3s без проблем. Идеален для небольших и средних production-окружений.
# Установить K3s (режим сервера)
curl -sfL https://get.k3s.io | sh -
# Проверить статус сервиса после установки
systemctl status k3s
# Проверить состояние кластера
kubectl get nodes
# Вывести список всех подов
kubectl get pods -A
Настройка Kubeconfig
hljs bash
# Скопировать kubeconfig для kubectlmkdir -p ~/.kube
cp /etc/rancher/k3s/k3s.yaml ~/.kube/config
chmod 600 ~/.kube/config
# Установить переменную окружения KUBECONFIGexport KUBECONFIG=~/.kube/config
echo'export KUBECONFIG=~/.kube/config' >> ~/.bashrc
# Просмотр информации о кластере
kubectl cluster-info
Настройка многоузлового кластера
Мастер-узел (Server)
hljs bash
# Установить мастер-узел и сохранить токен
curl -sfL https://get.k3s.io | sh -
# Получить токен узла (необходим для рабочих узлов)cat /var/lib/rancher/k3s/server/node-token
Рабочий узел (Agent)
hljs bash
# Подключить рабочий узел к мастеру
curl -sfL https://get.k3s.io | K3S_URL=https://MASTER_IP:6443 K3S_TOKEN=NODE_TOKEN sh -
# Проверить на мастере, что рабочий узел присоединился
kubectl get nodes
Основные команды kubectl
hljs bash
# Список узлов
kubectl get nodes
kubectl get nodes -o wide
# Список подов
kubectl get pods
kubectl get pods -n kube-system
kubectl get pods -A
# Список deployments
kubectl get deployments
# Список services
kubectl get services
# Список namespaces
kubectl get namespaces
# Просмотр деталей ресурса
kubectl describe pod POD_NAME
kubectl describe node NODE_NAME
# Просмотр логов пода
kubectl logs POD_NAME
kubectl logs -f POD_NAME
# Выполнить команду в поде
kubectl exec -it POD_NAME -- /bin/bash
K3s предоставляет всю мощь Kubernetes при минимальном потреблении ресурсов. Это идеальное решение для production-grade оркестрации контейнеров в VPS-окружениях. С K3s на серверах REXE вы можете легко масштабировать приложения, обеспечивать высокую доступность и внедрять современные DevOps-практики.
Часто задаваемые вопросы
В чём ключевое отличие K3s от полного Kubernetes?
K3s — это лёгкий дистрибутив, полностью совместимый с Kubernetes API. Отличия: K3s — один бинарный файл (~100MB), тогда как полный Kubernetes требует нескольких компонентов. K3s может использовать SQLite (вместо etcd), потребляет меньше RAM (512MB против 2GB+) и устанавливается намного быстрее. Оба подходят для production-использования.
Поды не запускаются в K3s, что делать?
Сначала проверьте события командой kubectl describe pod POD_NAME. Распространённые проблемы: 1) Недостаточно ресурсов (проверьте kubectl describe node), 2) Ошибка загрузки образа (протестируйте docker pull), 3) PVC не может быть привязан (проверьте kubectl get pvc), 4) Отсутствует ConfigMap/Secret. Также проверьте логи приложения командой kubectl logs POD_NAME.
Как получить доступ к приложению снаружи?
Три метода: 1) NodePort Service: открывает порт в диапазоне 30000-32767, доступ через IP:PORT. 2) LoadBalancer Service: работает с Klipper LB в K3s. 3) Ingress Controller: обеспечивает доменный доступ к нескольким приложениям через один IP (рекомендуется). Traefik поставляется с K3s по умолчанию.
Как настроить Helm chart?
Просмотрите значения по умолчанию командой helm show values CHART_NAME. Создайте файл values.yaml для настройки и используйте его с helm install -f values.yaml. Также можно передавать отдельные значения через --set key=value. Используйте helm upgrade для обновления существующей установки.
Не могу добавить рабочий узел в кластер K3s, почему?
Проверьте: 1) Порт 6443 на мастере доступен с рабочего узла (telnet MASTER_IP 6443), 2) NODE_TOKEN корректен (cat /var/lib/rancher/k3s/server/node-token), 3) Порт 6443 открыт в брандмауэре, 4) Проверьте логи сервиса k3s-agent на рабочем узле (journalctl -u k3s-agent -f).
Драйверы логов Docker, команда docker logs, логи подов Kubernetes, централизованный сбор логов (Loki, ELK Stack), ротация логов и лучшие практики управления логами в production.
Лучшие практики безопасности Docker: пользователь без root, файловая система только для чтения, профили seccomp, сканирование образов, безопасность Docker socket, сетевая изоляция и управление секретами.