--- title: Шпаргалка по kubectl reviewers: - erictune - krousey - clove content_type: concept card: name: reference weight: 30 --- Смотрите также: [обзор Kubectl](/ru/docs/reference/kubectl/overview/) и [руководство по JsonPath](/ru/docs/reference/kubectl/jsonpath). Эта команда представляет собой обзор команды `kubectl`. # kubectl - Шпаргалка ## Автодополнение ввода для Kubectl ### BASH ```bash source <(kubectl completion bash) # настройка автодополнения в текущую сессию bash, предварительно должен быть установлен пакет bash-completion . echo "source <(kubectl completion bash)" >> ~/.bashrc # добавление автодополнения autocomplete постоянно в командную оболочку bash. ``` Вы также можете использовать короткий псевдоним для `kubectl`, который можно интегрировать с автодополнениями: ```bash alias k=kubectl complete -F __start_kubectl k ``` ### ZSH ```bash source <(kubectl completion zsh) # настройка автодополнения в текущую сессию zsh echo "[[ $commands[kubectl] ]] && source <(kubectl completion zsh)" >> ~/.zshrc # add autocomplete permanently to your zsh shell ``` ## Контекст и конфигурация kubectl Установка того, с каким Kubernetes-кластером взаимодействует `kubectl` и изменяет конфигурационную информацию. Подробную информацию о конфигурационном файле смотрите на странице [Authenticating Across Clusters with kubeconfig](/docs/tasks/access-application-cluster/configure-access-multiple-clusters/). ```bash kubectl config view # показать объединённые настройки kubeconfig # использовать несколько файлов kubeconfig одновременно и посмотреть объединённую конфигурацию из этих файлов KUBECONFIG=~/.kube/config:~/.kube/kubconfig2 kubectl config view # получить пароль для пользователя e2e kubectl config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}' kubectl config view -o jsonpath='{.users[].name}' # показать первого пользователя kubectl config view -o jsonpath='{.users[*].name}' # получить список пользователей kubectl config get-contexts # показать список контекстов kubectl config current-context # показать текущий контекст (current-context) kubectl config use-context my-cluster-name # установить my-cluster-name как контекст по умолчанию # добавить новую конфигурацию для кластера в kubeconf с базовой аутентификацией kubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword # сохранить пространство имен для всех последующих команд kubectl в этом контексте. kubectl config set-context --current --namespace=ggckad-s2 # установить контекст, используя имя пользователя и пространство имен. kubectl config set-context gce --user=cluster-admin --namespace=foo \ && kubectl config use-context gce kubectl config unset users.foo # удалить пользователя foo ``` ## Apply `apply` управляет приложениями с помощью файлов, которые определяют ресурсы Kubernetes. Выполните команду `kubectl apply` для создания и обновления ресурсов. Это рекомендуемый способ управления приложениями Kubernetes в промышленном окружении. Смотрите [Kubectl Book](https://kubectl.docs.kubernetes.io). ## Создание объектов Манифесты Kubernetes могут быть определены в YAML или JSON. Можно использовать расширение файла `.yaml`, `.yml` и `.json` ```bash kubectl apply -f ./my-manifest.yaml # создать ресурсы kubectl apply -f ./my1.yaml -f ./my2.yaml # создать ресурсы из нескольких файлов kubectl apply -f ./dir # создать ресурсы из всех файлов манифеста в директории kubectl apply -f https://git.io/vPieo # создать ресурсы из URL-адреса kubectl create deployment nginx --image=nginx # запустить один экземпляр nginx kubectl explain pods # посмотреть документацию по манифестам подов # Создать несколько YAML-объектов из stdin cat < pod.yaml kubectl attach my-pod -i # Прикрепить к запущенному контейнеру kubectl port-forward my-pod 5000:6000 # Переадресовать порт 5000 в локальной машине на порт 6000 в поде my-pod kubectl exec my-pod -- ls / # Выполнить команду в существующем поде (в случае одного контейнера). kubectl exec my-pod -c my-container -- ls / # Выполнить команду в существующем поде (в случае нескольких контейнеров) kubectl top pod POD_NAME --containers # Показать метрики по заданному поду вместе с его контейнерами ``` ## Работа с узлами и кластером ```bash kubectl cordon my-node # Отметить узел my-node как неназначаемый kubectl drain my-node # Вытеснить узел my-node, чтобы подготовиться к эксплуатации kubectl uncordon my-node # Отметить узел my-node как назначаемый kubectl top node my-node # Показать метрики по заданному узлу kubectl cluster-info # Показать адреса главного узла и сервисов kubectl cluster-info dump # Вывести состояние текущего кластера в stdout kubectl cluster-info dump --output-directory=/path/to/cluster-state # Вывести состояние текущего кластера в /path/to/cluster-state # Если ограничение с заданным ключом и проявлением уже существует, его значение будет заменено указанным kubectl taint nodes foo dedicated=special-user:NoSchedule ``` ### Типы ресурсов Вывести все поддерживаемые типы ресурсов, включая [API-группу](/docs/concepts/overview/kubernetes-api/#api-groups), флаг [namespaced](/docs/concepts/overview/working-with-objects/namespaces) (организован ли ресурс в пространство имён или нет) и [Kind](/docs/concepts/overview/working-with-objects/kubernetes-objects): ```bash kubectl api-resources ``` Другие варианты команды для анализа API-ресурсов: ```bash kubectl api-resources --namespaced=true # Все ресурсы с пространством имён kubectl api-resources --namespaced=false # Все ресурсы без пространства имён kubectl api-resources -o name # Все ресурсы с простым выводом (только имя ресурса) kubectl api-resources -o wide # Все ресурсы с расширенным (с неограниченной длинной) выводом kubectl api-resources --verbs=list,get # Все ресурсы, которые поддерживают глаголы запроса "list" и "get" kubectl api-resources --api-group=extensions # Все ресурсы в API-группе "extensions" ``` ### Форматирование вывода Для вывода подробной информации в окно терминала в определенном формате, добавьте флаг `-o` (или `--output`) в команду `kubectl`, которая поддерживает форматирование. Формат вывода | Описание --------------| ----------- `-o=custom-columns=` | Вывод таблицы из списка пользовательских столбцов через запятую `-o=custom-columns-file=` | Вывод таблицы из списка пользовательских столбцов, определённых в файле `` `-o=json` | Вывод API-объекта в формате JSON `-o=jsonpath=