Скорость в терминале: 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 # проверить текущий шаг
Коротко
alias k=kubectlв~/.bashrcплюсcomplete -o default -F __start_kubectl kдля автодополнения.export do="--dry-run=client -o yaml"превращает любую императивную команду в генератор манифеста.export now="--force --grace-period=0"удаляет Pod мгновенно, процесс получает SIGKILL. Для боевых баз так делать нельзя.- Манифесты не пишут с нуля: генерируют каркас и правят руками.
k explain pod.spec.containersзаменяет поиск структуры в документации.expandtab,shiftwidth=2,tabstop=2в~/.vimrcдержат отступы YAML корректными.
Прошли материал до конца? Отметьте урок пройденным.
Прогресс сохранён в этом браузере
Почистишь историю или откроешь с телефона, и отметки пропадут. Оставь почту, они переедут в аккаунт. Пароль придумывать не нужно.
Готово. теперь в аккаунте: прогресс виден с любого устройства. Мой прогресс