← Kubernetes: основы
6 мин · просто · Урок 11 из 11

Скорость в терминале: alias, dry-run, быстрый delete

Приёмы, которые экономят минуты в консоли: короткий alias, переменные под флаги и vim под YAML.

alias k=kubectl

Самое частое слово в терминале Kubernetes - kubectl. За сессию его набирают сотни раз. Короткий alias убирает эту рутину.

alias k=kubectl
k get pod

Чтобы alias жил между сессиями, его кладут в ~/.bashrc. На экзамене CKAD alias k=kubectl и автодополнение уже настроены в стартовом шелле, проверить это стоит первой командой.

Автодополнение для alias включают так:

source <(kubectl completion bash)
complete -o default -F __start_kubectl k

export do и export now

Два сокращения для флагов, которые набирают чаще всего. Имена do и now - договорённость из сообщества CKAD, не магия. Это обычные переменные окружения с куском командной строки.

export do="--dry-run=client -o yaml"
export now="--force --grace-period=0"

$do генерирует манифест, ничего не создавая в кластере. Это быстрый старт: получить каркас YAML и доработать его, вместо того чтобы писать поля руками.

k run web --image=busybox:1.36 $do -- sh -c 'sleep 3600' > /tmp/pod.yaml

--dry-run=client означает «не отправляй в кластер, только проверь и выведи». -o yaml печатает результат в YAML. Дальше правишь файл и применяешь:

k apply -f /tmp/pod.yaml

$now - мгновенное удаление без ожидания graceful shutdown. Обычный delete ждёт период завершения (по умолчанию 30 секунд). На экзамене это потерянное время, когда Pod всё равно надо снести.

k delete pod web $now

В проде --force --grace-period=0 применяют осторожно: процесс получает SIGKILL без шанса корректно закрыться. Для учебного Pod это безопасно, для боевой базы данных - нет.

Генерация вместо ручного YAML

Писать манифест с нуля долго и легко ошибиться в отступах. Почти любой объект сначала генерируют из императивной команды, потом дорабатывают.

# Deployment с 3 репликами - каркас
k create deploy web --image=nginx:1.25 --replicas=3 $do > /tmp/deploy.yaml

# Service к нему
k expose deploy web --port=80 $do > /tmp/svc.yaml

# ConfigMap
k create cm app --from-literal=KEY=val $do > /tmp/cm.yaml

Команда k explain показывает встроенную документацию по полям, когда забыл структуру:

k explain pod.spec.containers

vim под YAML

В YAML отступ задаёт смысл, а табы запрещены. Если редактор вставляет табы или сбивает отступ, манифест не пройдёт валидацию. Минимальный ~/.vimrc под YAML:

set expandtab
set shiftwidth=2
set tabstop=2

expandtab превращает таб в пробелы, shiftwidth=2 и tabstop=2 задают ширину отступа в 2 пробела - стандарт для Kubernetes-манифестов. С таким редактором правка YAML перестаёт ломать структуру.

Домашка

Теорию закрепляет задание на своём кластере: 1 шаг с проверкой. Кластер поднимается по треку Kubernetes локально, задания лежат в репозитории k8s-practice.

./run.sh start k8s-speed-kubectl     # развернуть стартовое состояние
./run.sh verify k8s-speed-kubectl    # проверить текущий шаг

Коротко

Прошли материал до конца? Отметьте урок пройденным.