Kubectl Command Cheatsheet
Kubectl - это инструмент командной строки для настройки Kubernetes, который взаимодействует с сервером Kubernetes API. Использование Kubectl позволяет создавать, проверять, обновлять и удалять объекты Kubernetes. Эта шпаргалка послужит кратким руководством по выполнению команд для многих распространенных компонентов и ресурсов Kubernetes. Вы можете использовать полную команду для объекта, например, pod(s) или варианты шорткодов, упомянутые в заголовке каждого раздела. Все они приведут к одному и тому же результату. Кроме того, в большинстве команд необходимо указывать конкретное <имя> ресурса, которым вы управляете.
Управление кластером
Отображение информации о конечных точках мастера и сервисов в кластере
``json kubectl cluster-info
Отображение версии Kubernetes, запущенной на клиенте и сервере
``json
версия kubectl
Получение конфигурации кластера
``json kubectl config view
Список доступных ресурсов API
``json
kubectl api-resources
Список доступных версий API
``json kubectl api-versions
Перечислить все
``json
kubectl get all --all-namespaces
Наборы демонов
Shortcode = ds
Перечислить один или несколько наборов демонов
``json kubectl get daemonset
Редактирование и обновление определения одного или нескольких наборов демонов
``json
kubectl edit daemonset <имя_даемонсета>
Удалить демонстрационный набор
``json kubectl delete daemonset <имя_даемонсета>
Создать новый демонстрационный набор
``json
kubectl create daemonset <имя_даемонсета>
Управление развертыванием демонстрационного набора
``json kubectl rollout daemonset
Отображение подробного состояния демонстрационных наборов в пространстве имен
``json
kubectl describe ds <имя_демосета> -n <имя_пространства_имен>
Развертывания
Shortcode = deploy
Список одного или нескольких развертываний
``json kubectl get deployment
Отображение подробной информации о состоянии одного или нескольких развертываний
``json
kubectl describe deployment <имя_развертывания>
Редактирование и обновление определения одного или нескольких развертываний на сервере
``json kubectl edit deployment <deployment_name>
Создание нового развертывания
``json
kubectl create deployment <имя_развертывания>
Удаление развертываний
``json kubectl delete deployment <имя_развертывания>
Просмотр статуса разворачивания развертывания
``json
kubectl rollout status deployment <deployment_name>
События
Shortcode = ev
Список последних событий для всех ресурсов в системе
``json kubectl get events
Список только предупреждений
``json
kubectl get events --field-selector type=Warning
Вывести список событий, но исключить события Pod
``json kubectl get events –field-selector involvedObject.kind!=Pod
Извлечение событий для одного узла с определенным именем
``json
kubectl get events --field-selector involvedObject.kind=Node, involvedObject.name=<имя_узла>
Отфильтровать обычные события из списка событий
``json kubectl get events –field-selector type!=Normal
## Журналы
Печать журналов для капсулы
``json
kubectl logs <имя_под>
Печать журналов за последний час для стручка
``json kubectl logs –since=1h <имя_под>
Получить последние 20 строк журналов
``json
kubectl logs --tail=20 <имя_под>
Получить журналы из сервиса и опционально выбрать контейнер
``json kubectl logs -f <имя_сервиса> [-c <$container>]
Печать журналов для стручка и отслеживание новых журналов
``json
kubectl logs -f <имя_под>
Печать журналов для контейнера в стручке
``json kubectl logs -c <имя_контейнера> <имя_под>
Вывод журналов для капсулы в файл с именем 'pod.log'
``json
kubectl logs <имя_под> pod.log
Просмотр журналов для ранее отказавшего pod
``json kubectl logs –previous <pod_name>
Для работы с журналами мы также рекомендуем использовать инструмент, разработанный Йоханом Халеби, под названием Kubetail. Это bash-скрипт, позволяющий получать журналы из нескольких подсистем одновременно. Подробнее о нем можно узнать на его [Github-репозитории](https://github.com/johanhaleby/kubetail). Здесь приведены примеры команд, использующих Kubetail.
Получить журналы для всех подсистем с именем pod_prefix
``json
kubetail <pod_prefix>
Включить последние 5 минут журналов
``json kubetail <pod_prefix> -s 5m
## Файлы манифеста
Другой вариант модификации объектов - через Manifest Files. Мы настоятельно рекомендуем использовать этот метод. Для этого используются yaml-файлы, в которых заданы все необходимые опции для объектов. Наши yaml-файлы хранятся в git-репозитории, что позволяет отслеживать изменения и оптимизировать их.
Применение конфигурации к объекту по имени файла или stdin. Заменяет существующую конфигурацию.
``json
kubectl apply -f manifest_file.yaml
Создание объектов
``json kubectl create -f manifest_file.yaml
Создание объектов во всех файлах манифеста в каталоге
``json
kubectl create -f ./dir
Создание объектов по URL-адресу
``json kubectl create -f ‘url’
Удаление объекта
``json
kubectl delete -f manifest_file.yaml
Пространства имен
Шорткод = ns
Создать пространство имен <имя>
``json kubectl create namespace <имя_пространства_имен>
Перечислить одно или несколько пространств имен
``json
kubectl get namespace <имя_пространства_имен>
Вывод подробной информации о состоянии одного или нескольких пространств имен
``json kubectl describe namespace <имя_пространства_имен>
Удаление пространства имен
``json
kubectl delete namespace <имя_пространства_имен>
Редактирование и обновление определения пространства имен
``json kubectl edit namespace <имя_пространства_имен>
Отображение использования ресурсов (процессор/память/хранилище) для пространства имен
``json
kubectl top namespace <имя_пространства_имен>
Узлы
Шорткод = нет
Обновление пятен на одном или нескольких узлах
``json kubectl taint node <node_name>
Перечислить один или несколько узлов
``json
kubectl get node
Удаление узла или нескольких узлов
``json kubectl delete node <node_name>
Отображение использования ресурсов (CPU/Memory/Storage) для узлов
``json
kubectl top node
Распределение ресурсов на узел
``json kubectl describe nodes | grep Allocated -A 5
Подсистемы, запущенные на узле
``json
kubectl get pods -o wide | grep <имя_узла>
Аннотирование узла
``json kubectl annotate node <имя_узла>
Пометить узел как не планируемый
``json
kubectl cordon node <node_name>
Пометить узел как планируемый
``json kubectl uncordon node <node_name>
Слить узел для подготовки к обслуживанию
``json
kubectl drain node <node_name>
Добавить или обновить метки одного или нескольких узлов
``json kubectl label node
## Pods
**Shortcode = po**
Перечислите одну или несколько подсистем
``json
kubectl get pod
Удаление стручка
``json kubectl delete pod <имя_под>
Отображение подробного состояния подсистемы
``json
kubectl describe pod <pod_name>
Создание стручка
``json kubectl create pod <имя_под>
Выполнение команды над контейнером в стручке
``json
kubectl exec <имя_под> -c <имя_контейнера> <команда>
Получение интерактивной оболочки для одноконтейнерного стручка
``json kubectl exec -it <имя_пода> /bin/sh
Отображение использования ресурсов (CPU/Memory/Storage) для подсистем
``json
kubectl top pod
Добавление или обновление аннотаций стручка
``json kubectl annotate pod <pod_name>
Добавляет или обновляет метку капсулы
``json
kubectl label pod <pod_name>
Контроллеры репликации
Shortcode = rc
Список контроллеров репликации
``json kubectl get rc
Список контроллеров репликации по пространству имен
``json
kubectl get rc --namespace="<имя_пространства_имен>"
ReplicaSets
Shortcode = rs
Список ReplicaSets
``json kubectl get replicasets
Отображение подробного состояния одного или нескольких наборов реплик
``json
kubectl describe replicasets <имя_репликасета>
Масштабирование набора реплик
``json kubectl scale –replicas=[x]
## Секреты
Создать секрет
``json
kubectl create secret
Список секретов
``json kubectl get secrets
Вывод подробной информации о секретах
``json
kubectl describe secrets
Удалить секрет
``json kubectl delete secret <secret_name>
## Услуги
**Shortcode = svc**
Перечислите одну или несколько услуг
``json
kubectl get services
Отображение подробного состояния сервиса
``json kubectl describe services
Раскрытие контроллера репликации, сервиса, развертывания или стручка в качестве нового сервиса Kubernetes
``json
kubectl expose deployment [deployment_name]
Редактирование и обновление определения одного или нескольких сервисов
``json kubectl edit services
## Учетные записи служб
**Shortcode = sa**
Список счетов обслуживания
``json
kubectl get serviceaccounts
Отображение подробного состояния одной или нескольких учетных записей сервисов
``json kubectl describe serviceaccounts
Замена учетной записи сервиса
``json
kubectl replace serviceaccount
Удаление учетной записи сервиса
``json kubectl delete serviceaccount <имя_сервисного_аккаунта>
## StatefulSet
**Shortcode = sts**
Список StatefulSet
``json
kubectl get statefulset
Удаление только набора StatefulSet (не стручков)
``json kubectl delete statefulset/[stateful_set_name] –cascade=false
## Общие параметры
В Kubectl можно указывать необязательные флаги в командах. Ниже приведены некоторые из наиболее распространенных и полезных.
-o Формат вывода. Например, если вы хотите вывести список всех капсул в формате ps с дополнительной информацией.
``json
kubectl get pods -o wide
-n Сокращение от –namespace. Например, если вы хотите получить список всех модулей в определенном пространстве имен, то выполните следующую команду:
``json kubectl get pods –namespace=[имя_пространства_имен]
``json
kubectl get pods -n=[имя_пространства_имени]
-f Имя файла, директория или URL-адрес файлов для использования при создании ресурса. Например, при создании капсулы с использованием данных в файле с именем newpod.json.
``json kubectl create -f ./newpod.json
-l Селектор для фильтрации, поддерживает '=', '==' и '!='.
Справка по kubectl
-h