Урок 02 · Kubernetes на практике
Первый локальный кластер
Что-то не запустилось или осталось непонятным? Задайте вопрос в комментариях к разбору этого урока в канале — разберёмся вместе.
В уроке 1 вы запускали контейнер командой docker run — сами, вручную, на своей машине. Сегодня вместо одной машины появится кластер: несколько логических ролей, которые вместе решают, где и как запускать ваши контейнеры, даже если что-то упадёт. Разворачивать целый настоящий кластер ради тренировки дорого и медленно — поэтому мы поднимем его локально через minikube, который эмулирует полноценный кластер прямо на ноутбуке.
Как устроен кластер
Три роли, которые важно не путать:
- Control plane — «мозг» кластера. Принимает ваши команды через API Server и решает, на какой машине что запускать (Scheduler). Сам код приложений не выполняет.
- Node — рабочая машина (реальная или виртуальная), на которой реально живут контейнеры. На ней работает kubelet — агент, который слушает control plane и дёргает знакомый вам по уроку 1 Docker.
- kubectl — командная строка, через которую вы разговариваете с API Server. Не с нодой напрямую — всегда через control plane.
Практика: поднимите свой кластер
Понадобится всё тот же Docker из урока 1 (minikube по умолчанию использует его как драйвер) плюс два новых инструмента.
-
Поставьте
kubectl— командную строку Kubernetes — по официальной инструкции под вашу ОС. -
Поставьте
minikubeпо официальной инструкции. -
Запустите кластер (при первом запуске minikube скачает образ узла — может занять несколько минут в зависимости от интернета):
minikube start -
Проверьте, что node действительно появилась и готова:
kubectl get nodesВ колонке
STATUSдолжно бытьReady. Это и есть та самая «рабочая машина» из схемы выше — просто она виртуальная и живёт внутри Docker на вашем компьютере. -
Спросите control plane, из чего он состоит:
kubectl cluster-info -
Откройте графическую панель кластера — она покажет то же самое, что вы будете видеть командами, но наглядно:
Откроется браузер с веб-интерфейсом. Пока там пусто — в следующем уроке появится первый Pod, и вы увидите его прямо здесь.minikube dashboard
kubectl get nodes и kubectl cluster-info — это первые две команды, которые вы будете набирать машинально в каждом следующем уроке: первая проверяет, жив ли кластер, вторая — с чем вы вообще разговариваете.
kubectl целиком. Добавьте в профиль своей оболочки алиас alias k=kubectl и включите автодополнение команд — например, для bash: source <(kubectl completion bash) (свой вариант для zsh/fish есть в kubectl completion --help). Десять секунд настройки — и вы будете экономить время на каждой команде до конца курса.
Проверьте себя
Какая часть кластера решает, на какой node запустить ваш контейнер?
Напишите команду, которая запустит локальный кластер minikube:
Напишите команду, которая покажет список node в кластере и их статус: