diff --git a/content/ru/docs/reference/kubectl/_index.md b/content/ru/docs/reference/kubectl/_index.md new file mode 100755 index 0000000000..7b6c2d720b --- /dev/null +++ b/content/ru/docs/reference/kubectl/_index.md @@ -0,0 +1,5 @@ +--- +title: "kubectl CLI" +weight: 60 +--- + diff --git a/content/ru/docs/reference/kubectl/cheatsheet.md b/content/ru/docs/reference/kubectl/cheatsheet.md new file mode 100644 index 0000000000..a79feee5a0 --- /dev/null +++ b/content/ru/docs/reference/kubectl/cheatsheet.md @@ -0,0 +1,389 @@ +--- +title: Шпаргалка по kubectl +reviewers: +- erictune +- krousey +- clove +content_template: templates/concept +card: + name: reference + weight: 30 +--- + +{{% capture overview %}} + +Смотрите также: [обзор Kubectl](/ru/docs/reference/kubectl/overview/) и [руководство по JsonPath](/ru/docs/reference/kubectl/jsonpath). + +Эта команда представляет собой обзор команды `kubectl`. + +{{% /capture %}} + +{{% capture body %}} + +# 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=