Устали переключаться между десятками команд kubectl? Забываете синтаксис для просмотра логов? Хотите управлять Kubernetes кластером быстро и красиво? Познакомьтесь с k9s - терминальным UI для Kubernetes, который изменит вашу жизнь.

Что такое k9s?

k9s - это интерактивный терминальный интерфейс для управления Kubernetes кластерами. Представьте себе файловый менеджер Midnight Commander, но для Kubernetes ресурсов. Всё управление кластером в одном окне терминала с горячими клавишами.

Установка

macOS

brew install k9s

Linux (snap)

sudo snap install k9s

Скачать бинарник

# Для Linux AMD64
wget https://github.com/derailed/k9s/releases/latest/download/k9s_Linux_amd64.tar.gz
tar -xzf k9s_Linux_amd64.tar.gz
sudo mv k9s /usr/local/bin/

Проверка

k9s version

Первый запуск

Просто наберите k9s в терминале:

k9s

k9s автоматически использует текущий контекст из ~/.kube/config. Можно указать конкретный:

k9s --context production

Основные возможности

Навигация

  • : - командная строка (как в vim)
  • / - поиск
  • ? - справка по горячим клавишам
  • Ctrl+a - показать все namespace
  • 0-9 - переключение между namespace

Просмотр ресурсов

Наберите в командной строке:

  • :pods или :po - список подов
  • :svc - сервисы
  • :deploy - деплойменты
  • :ns - namespace
  • :nodes - ноды кластера
  • :events - события

Горячие клавиши для подов

  • Enter - детальная информация
  • l - логи пода
  • s - shell в контейнер
  • d - describe
  • e - edit yaml
  • Ctrl+k - kill pod
  • y - yaml манифест

Фильтрация и поиск

  • / - поиск по текущему виду
  • f - фильтр по labels
  • Ctrl+/ - fuzzy поиск

Логи

  • l - логи пода
  • 0 - все контейнеры
  • 1-9 - конкретный контейнер
  • w - wrap/unwrap длинные строки
  • f - follow режим

Продвинутые фичи

1. Pulses (пульс кластера)

:pulses - показывает общее состояние кластера. Сразу видно проблемные ресурсы.

2. XRay

:xray - сканирование кластера на проблемы с ресурсами, устаревшие API, проблемы с правами.

3. Popeye интеграция

:popeye - запуск линтера для проверки best practices.

4. Benchmarks

:benchmark - проверка кластера на соответствие CIS Kubernetes Benchmark.

5. Port forwarding

На поде нажмите Shift+f - откроется меню port-forward.

Кастомизация

Конфиг файл

k9s хранит настройки в ~/.config/k9s/config.yml:

k9s:
  refreshRate: 2
  maxConnRetry: 5
  enableMouse: false
  headless: false
  logoless: false
  crumbsless: false
  readOnly: false
  noExitOnCtrlC: false

Алиасы

Создайте ~/.config/k9s/aliases.yml:

aliases:
  pp: v1/pods
  dp: apps/v1/deployments

Хоткеи

В ~/.config/k9s/hotkeys.yml:

hotKeys:
  # Быстрый переход к логам
  shift-l:
    shortCut: Shift-L
    description: Logs
    command: logs

Лайфхаки

1. Быстрое переключение контекстов

:ctx - список всех контекстов, Enter для переключения.

2. Мониторинг в реальном времени

:pods + a - авто-обновление списка подов.

3. Массовые операции

Выделите несколько ресурсов пробелом, затем применяйте действия.

4. Экспорт в YAML

y на любом ресурсе сохранит yaml в буфер обмена.

5. Быстрый exec

:pods → выбрать под → s - сразу попадаете в shell.

Реальные кейсы

Дебаг падающего пода

  1. :po - список подов
  2. /crash - найти проблемный
  3. d - посмотреть describe
  4. p - предыдущие логи
  5. e - отредактировать если нужно

Быстрая проверка деплоя

  1. :deploy - список деплойментов
  2. Enter на нужном - детали
  3. r - связанные ресурсы (pods, rs, svc)

Очистка namespace

  1. :ns - выбрать namespace
  2. :pods - список подов
  3. Ctrl+d - удалить завершённые

k9s vs альтернативы

vs kubectl

  • Не нужно помнить флаги
  • Визуальная навигация
  • Встроенный поиск

vs Lens

  • Работает в терминале
  • Легче и быстрее
  • Не требует Electron

vs k8s Dashboard

  • Не нужен браузер
  • Работает через SSH
  • Горячие клавиши

Итоги

k9s - это швейцарский нож для работы с Kubernetes. Особенно полезен когда:

  • Нужно быстро найти проблему
  • Работаете с множеством кластеров
  • Любите терминал и горячие клавиши
  • Устали от kubectl get pods -n …

Установка занимает минуту, а польза огромная. После недели использования возвращаться к голому kubectl не захочется!