НАЧАЛО РАБОТЫ
Этот раздел содержит самые базовые команды для запуска рабочей нагрузки на вашем кластере.
-
runбудет запускать 1 или более экземпляров образа контейнера в вашем кластере. -
exposeбудет балансировать трафик между запущенными экземплярами и может создать прокси HA для доступа к контейнерам извне кластера.
После запуска вашей рабочей нагрузки, вы можете использовать команды в разделе РАБОТА С ПРИЛОЖЕНИЯМИ для их проверки.
create
Создать под на основе данных в pod.json
kubectl create -f ./pod.json
Создать под на основе JSON, переданного в стандартный ввод
cat pod.json | kubectl create -f -
Изменить данные в docker-registry.yaml в формате JSON, а затем создать ресурс, используя измененные данные
kubectl create -f docker-registry.yaml --edit -o json
Создать ресурс из файла или из стандартного ввода.
Поддерживаются форматы JSON и YAML.
Использование
$ kubectl create -f FILENAME
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, выводить только объект, который был бы отправлен, без его отправки. Если стратегия server, отправлять запрос на сервер без сохранения ресурса. | |
| edit | false | Редактировать ресурс API перед созданием | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | Имя файла, директория или URL файлов для создания ресурса |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| raw | Сырой URI для отправки POST на сервер. Использует транспорт, указанный в файле kubeconfig. | ||
| record | false | Записывать текущую команду kubectl в аннотации ресурса. Если false, не записывать команду. Если true, записывать команду. Если не задано, по умолчанию обновлять существующее значение аннотации только в том случае, если оно уже существует. | |
| recursive | R | false | Обрабатывать директорию, используемую в -f, --filename рекурсивно. Полезно, когда вы хотите управлять связанными манифестами, организованными в одной директории. |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите выполнить kubectl apply к этому объекту в будущем. | |
| selector | l | Селектор (запрос по меткам) для фильтрации, поддерживает '=', '==', и '!=' (например, -l key1=value1,key2=value2) | |
| show-managed-fields | false | Если true, сохранять managedFields при печати объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для проверки входных данных перед отправкой. | |
| windows-line-endings | false | Актуально только если --edit=true. По умолчанию использует окончания строк, используемые вашей платформой. |
роли кластера
Создать роль кластера с именем "pod-reader", которая разрешает пользователю выполнять операции "get", "watch" и "list" над под.
kubectl create clusterrole pod-reader --verb=get,list,watch --resource=pods
Создать роль кластера с именем "pod-reader" с указанным ResourceName
kubectl create clusterrole pod-reader --verb=get --resource=pods --resource-name=readablepod --resource-name=anotherpod
Создать роль кластера с именем "foo" с указанным API Group
kubectl create clusterrole foo --verb=get,list,watch --resource=rs.extensions
Создать роль кластера с именем "foo" с указанным SubResource
kubectl create clusterrole foo --verb=get,list,watch --resource=pods,pods/status
Создать роль кластера с именем "foo" с указанным NonResourceURL
kubectl create clusterrole "foo" --verb=get --non-resource-url=/logs/*
Создать роль кластера с именем "monitoring" с указанным AggregationRule
kubectl create clusterrole monitoring --aggregation-rule="rbac.example.com/aggregate-to-monitoring=true"
Создать роль кластера.
Использование
$ kubectl create clusterrole NAME --verb=verb --resource=resource.group [--resource-name=resourcename] [--dry-run=server|client|none]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| aggregation-rule | Селектор меток агрегации для объединения ролей кластера. | ||
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, выводить только объект, который был бы отправлен, без его отправки. Если стратегия server, отправлять запрос на сервер без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| non-resource-url | [] | Частичный URL, к которому пользователь должен иметь доступ. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| resource | [] | Ресурс, к которому относится правило. | |
| resource-name | [] | Ресурс в белом списке, к которому относится правило, повторите этот флаг для нескольких элементов. | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите выполнить kubectl apply к этому объекту в будущем. | |
| show-managed-fields | false | Если true, сохранять managedFields при печати объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для проверки входных данных перед отправкой. | |
| verb | [] | Глагол, применяемый к ресурсам, содержащимся в правиле. |
связывание ролей кластера
Создать привязку ролей кластера для пользователей user1, user2 и группы group1, используя роль кластера cluster-admin
kubectl create clusterrolebinding cluster-admin --clusterrole=cluster-admin --user=user1 --user=user2 --group=group1
Создать привязку ролей кластера для конкретной роли кластера.
Использование
$ kubectl create clusterrolebinding NAME --clusterrole=NAME [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run=server|client|none]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| clusterrole | Роль кластера, к которой должна ссылаться эта привязка ролей кластера. | ||
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, выводить только объект, который был бы отправлен, без его отправки. Если стратегия server, отправлять запрос на сервер без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| group | [] | Группы, к которым нужно привязать роль кластера. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите выполнить kubectl apply к этому объекту в будущем. | |
| serviceaccount | [] | Учетные записи служб для привязки к роли кластера в формате <пространство имен>:<имя> | |
| show-managed-fields | false | Если true, сохранять managedFields при печати объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для проверки входных данных перед отправкой. |
configmap
Создать новый configmap с именем my-config на основе папки bar
kubectl create configmap my-config --from-file=path/to/bar
Создать новый configmap с именем my-config с указанными ключами вместо имён файлов на диске
kubectl create configmap my-config --from-file=key1=/path/to/bar/file1.txt --from-file=key2=/path/to/bar/file2.txt
Создать новый configmap с именем my-config с ключами key1=config1 и key2=config2
kubectl create configmap my-config --from-literal=key1=config1 --from-literal=key2=config2
Создать новый configmap с именем my-config из пар ключ-значение в файле
kubectl create configmap my-config --from-file=path/to/bar
Создать новый configmap с именем my-config из файла с переменными окружения
kubectl create configmap my-config --from-env-file=path/to/bar.env
Создать configmap на основе файла, директории или указанного литерального значения.
Один configmap может содержать одну или несколько пар ключ/значение.
При создании configmap на основе файла ключ по умолчанию — имя файла, а значение — содержимое файла. Если имя файла является недопустимым ключом, вы можете указать альтернативный ключ.
При создании карты конфигурации на основе каталога, каждый файл, чьё имя файла является допустимым ключом в каталоге, будет упакован в карту конфигурации. Все записи каталога, кроме обычных файлов, игнорируются (например, подкаталоги, символьные ссылки, устройства, каналы и т. д.).
Использование
$ kubectl create configmap NAME [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run=server|client|none]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, любые ошибки в шаблонах игнорируются, когда поле или ключ карты отсутствуют в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| append-hash | false | Добавить хэш конфигурации к её имени. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то будет напечатан только объект, который был бы отправлен, без его отправки. Если стратегия server, то будет отправлен запрос на сервер без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| from-env-file | Укажите путь к файлу для чтения строк вида ключ=значение для создания карты конфигурации (например, файл .env Docker). | ||
| from-file | [] | Файл ключа может быть указан с помощью его пути к файлу, в этом случае имя файла будет использоваться в качестве ключа конфигурации, или необязательно с ключом и путём к файлу, в этом случае будет использоваться заданный ключ. Указание каталога будет итерировать по каждому именованному файлу в каталоге, имя файла которого является допустимым ключом для карты конфигурации. | |
| from-literal | [] | Укажите ключ и значение для вставки в карту конфигурации (например, mykey=somevalue) | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите выполнить kubectl apply на этот объект в будущем. | |
| show-managed-fields | false | Если true, сохраняются managedFields при выводе объектов в форматах JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, используется схема для валидации входных данных перед отправкой. |
cronjob
Создать задание cron
kubectl create cronjob my-job --image=busybox --schedule="*/1 * * * *"
Создать задание cron с командой
kubectl create cronjob my-job --image=busybox --schedule="*/1 * * * *" -- date
Создать задание cron с указанным именем.
Использование
$ kubectl create cronjob NAME --image=image --schedule='0/5 * * * ?' -- [COMMAND] [args...]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, любые ошибки в шаблонах игнорируются, когда поле или ключ карты отсутствуют в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то будет напечатан только объект, который был бы отправлен, без его отправки. Если стратегия server, то будет отправлен запрос на сервер без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| image | Имя образа для запуска. | ||
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| restart | Политика перезапуска задания. Допустимые значения: OnFailure, Never | ||
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите выполнить kubectl apply на этот объект в будущем. | |
| schedule | Расписание в формате Cron, с которым должно выполняться задание. | ||
| show-managed-fields | false | Если true, сохраняются managedFields при выводе объектов в форматах JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, используется схема для валидации входных данных перед отправкой. |
deployment
Создать деплоймент с именем my-dep, который запускает образ busybox
kubectl create deployment my-dep --image=busybox
Создать деплоймент с командой
kubectl create deployment my-dep --image=busybox -- date
Создать деплоймент с именем my-dep, который запускает образ nginx с 3 репликами
kubectl create deployment my-dep --image=nginx --replicas=3
Создать деплоймент с именем my-dep, который запускает образ busybox и экспонирует порт 5701
kubectl create deployment my-dep --image=busybox --port=5701
Создать деплоймент с указанным именем.
Использование
$ kubectl create deployment NAME --image=image -- [COMMAND] [args...]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, любые ошибки в шаблонах игнорируются, когда поле или ключ карты отсутствуют в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то будет напечатан только объект, который был бы отправлен, без его отправки. Если стратегия server, то будет отправлен запрос на сервер без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| image | [] | Имена образов для запуска. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| port | -1 | Порт, который этот контейнер экспонирует. | |
| replicas | r | 1 | Количество реплик для создания. По умолчанию 1. |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите выполнить kubectl apply на этот объект в будущем. | |
| show-managed-fields | false | Если true, сохраняются managedFields при выводе объектов в форматах JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, используется схема для валидации входных данных перед отправкой. |
ingress
Создать единственный Ingress под названием 'simple', который направляет запросы foo.com/bar на svc # svc1:8080 с секретом TLS "my-cert"
kubectl create ingress simple --rule="foo.com/bar=svc1:8080,tls=my-cert"
Создать Ingress для всех путей "/path", указывающий на сервис svc:порт и Ingress Class как "otheringress"
kubectl create ingress catch-all --class=otheringress --rule="/path=svc:port"
Создать Ingress с двумя аннотациями: ingress.annotation1 и ingress.annotations2
kubectl create ingress annotated --class=default --rule="foo.com/bar=svc:port" \ --annotation ingress.annotation1=foo \ --annotation ingress.annotation2=bla
Создать Ingress с тем же хостом и несколькими путями
kubectl create ingress multipath --class=default \ --rule="foo.com/=svc:port" \ --rule="foo.com/admin/=svcadmin:portadmin"
Создать Ingress с несколькими хостами и pathType как Prefix
kubectl create ingress ingress1 --class=default \ --rule="foo.com/path*=svc:8080" \ --rule="bar.com/admin*=svc2:http"
Создать Ingress с включенным TLS, используя сертификат Ingress по умолчанию и разные типы путей
kubectl create ingress ingtls --class=default \ --rule="foo.com/=svc:https,tls" \ --rule="foo.com/path/subpath*=othersvc:8080"
Создать Ingress с включенным TLS, используя определённый секрет и pathType как Prefix
kubectl create ingress ingsecret --class=default \ --rule="foo.com/*=svc:8080,tls=secret1"
Создать Ingress с задним фоном по умолчанию
kubectl create ingress ingdefault --class=default \ --default-backend=defaultsvc:http \ --rule="foo.com/*=svc:8080,tls=secret1"
Создать Ingress с указанным именем.
Использование
$ kubectl create ingress NAME --rule=host/path=service:port[,tls[=secret]]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| annotation | [] | Аннотация для вставки в объект ingress, в формате annotation=value | |
| class | Класс Ingress, который нужно использовать | ||
| default-backend | Сервис по умолчанию для бэкенда, в формате svcname:port | ||
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то выводится только объект, который был бы отправлен, но не отправляется. Если стратегия server, то отправляется запрос на сервер без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| rule | [] | Правило в формате host/path=service:port[,tls=secretname]. Пути, содержащие ведущий символ '*', считаются pathType=Prefix. Аргумент tls необязателен. | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите выполнить kubectl apply для этого объекта в будущем. | |
| show-managed-fields | false | Если true, поля managedFields сохраняются при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для валидации входных данных перед отправкой |
job
Создать job
kubectl create job my-job --image=busybox
Создать job с командой
kubectl create job my-job --image=busybox -- date
Создать job из cron job с именем "a-cronjob"
kubectl create job test-job --from=cronjob/a-cronjob
Создать job с указанным именем.
Использование
$ kubectl create job NAME --image=image [--from=cronjob/name] -- [COMMAND] [args...]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то выводится только объект, который был бы отправлен, но не отправляется. Если стратегия server, то отправляется запрос на сервер без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| from | Имя ресурса, из которого нужно создать Job (поддерживается только cronjob). | ||
| image | Имя образа для запуска. | ||
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите выполнить kubectl apply для этого объекта в будущем. | |
| show-managed-fields | false | Если true, поля managedFields сохраняются при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для валидации входных данных перед отправкой |
namespace
Создать новый namespace с именем my-namespace
kubectl create namespace my-namespace
Создать namespace с указанным именем.
Использование
$ kubectl create namespace NAME [--dry-run=server|client|none]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то выводится только объект, который был бы отправлен, но не отправляется. Если стратегия server, то отправляется запрос на сервер без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите выполнить kubectl apply для этого объекта в будущем. | |
| show-managed-fields | false | Если true, поля managedFields сохраняются при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для валидации входных данных перед отправкой |
poddisruptionbudget
Создать поддробление бюджета pod с именем my-pdb, который выберет все pods с меткой app=rails # и потребует, чтобы по крайней мере один из них был доступен в любой момент времени
kubectl create poddisruptionbudget my-pdb --selector=app=rails --min-available=1
Создать поддробление бюджета pod с именем my-pdb, который выберет все pods с меткой app=nginx # и потребует, чтобы по крайней мере половина выбранных pods была доступна в любой момент времени
kubectl create pdb my-pdb --selector=app=nginx --min-available=50%
Создать поддробление бюджета pod с указанным именем, селектором и требуемым минимальным количеством доступных pods.
Использование
$ kubectl create poddisruptionbudget NAME --selector=SELECTOR --min-available=N [--dry-run=server|client|none]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то выводится только объект, который был бы отправлен, но не отправляется. Если стратегия server, то отправляется запрос на сервер без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| max-unavailable | Максимальное количество или процент недоступных pods, требуемых этим бюджетом. | ||
| min-available | Минимальное количество или процент доступных pods, требуемых этим бюджетом. | ||
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите выполнить kubectl apply для этого объекта в будущем. | |
| selector | Селектор меток для использования в этом бюджете. Поддерживаются только селекторы на основе равенства. | ||
| show-managed-fields | false | Если true, поля managedFields сохраняются при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для валидации входных данных перед отправкой |
priorityclass
Создать класс приоритета с именем high-priority
kubectl create priorityclass high-priority --value=1000 --description="high priority"
Создать класс приоритета с именем default-priority, который считается глобальным приоритетом по умолчанию
kubectl create priorityclass default-priority --value=1000 --global-default=true --description="default priority"
Создать класс приоритета с именем high-priority, который не может прерывать pods с более низким приоритетом
kubectl create priorityclass high-priority --value=1000 --description="high priority" --preemption-policy="Never"
Создать класс приоритета с указанным именем, значением, глобальным значением по умолчанию и описанием.
Использование
$ kubectl create priorityclass NAME --value=VALUE --global-default=BOOL [--dry-run=server|client|none]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда отсутствует поле или ключ карты в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| description | description — произвольная строка, обычно предоставляющая рекомендации о том, когда следует использовать этот класс приоритетов. | ||
| dry-run | none | Должно быть «none», «server» или «client». Если используется стратегия client, выводится только объект, который был бы отправлен, без его отправки. Если используется стратегия server, выполняется запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| global-default | false | global-default указывает, следует ли рассматривать этот класс приоритетов как значение по умолчанию. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| preemption-policy | PreemptLowerPriority | preemption-policy — политика для вытеснения подкастов с более низким приоритетом. | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется без изменений. Этот флаг полезен, когда вы хотите выполнить kubectl apply к этому объекту в будущем. | |
| show-managed-fields | false | Если true, сохранять managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для проверки входных данных перед отправкой. | |
| value | 0 | значение этого класса приоритетов. |
квота
Создать новый ресурсный лимит с именем my-quota
kubectl create quota my-quota --hard=cpu=1,memory=1G,pods=2,services=3,replicationcontrollers=2,resourcequotas=1,secrets=5,persistentvolumeclaims=10
Создать новый ресурсный лимит с именем best-effort
kubectl create quota best-effort --hard=pods=100 --scopes=BestEffort
Создать ресурсный лимит с указанным именем, жёсткими ограничениями и (необязательными) областями.
Использование
$ kubectl create quota NAME [--hard=key1=value1,key2=value2] [--scopes=Scope1,Scope2] [--dry-run=server|client|none]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда отсутствует поле или ключ карты в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть «none», «server» или «client». Если используется стратегия client, выводится только объект, который был бы отправлен, без его отправки. Если используется стратегия server, выполняется запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| hard | Список ресурсов=количество через запятую, определяющих жёсткие ограничения. | ||
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется без изменений. Этот флаг полезен, когда вы хотите выполнить kubectl apply к этому объекту в будущем. | |
| scopes | Список областей квоты через запятую, которые должны совпадать с каждым объектом, отслеживаемым квотой. | ||
| show-managed-fields | false | Если true, сохранять managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для проверки входных данных перед отправкой. |
роль
Создать роль с именем «pod-reader», которая позволяет пользователю выполнять «get», «watch» и «list» для подкастов
kubectl create role pod-reader --verb=get --verb=list --verb=watch --resource=pods
Создать роль с именем «pod-reader» с указанным ResourceName
kubectl create role pod-reader --verb=get --resource=pods --resource-name=readablepod --resource-name=anotherpod
Создать роль с именем «foo» с указанным API Group
kubectl create role foo --verb=get,list,watch --resource=rs.extensions
Создать роль с именем «foo» с указанным SubResource
kubectl create role foo --verb=get,list,watch --resource=pods,pods/status
Создать роль с единственным правилом.
Использование
$ kubectl create role NAME --verb=verb --resource=resource.group/subresource [--resource-name=resourcename] [--dry-run=server|client|none]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда отсутствует поле или ключ карты в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть «none», «server» или «client». Если используется стратегия client, выводится только объект, который был бы отправлен, без его отправки. Если используется стратегия server, выполняется запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| resource | [] | Ресурс, к которому применяется правило | |
| resource-name | [] | Ресурс в списке разрешённых ресурсов, к которому применяется правило, повторите этот флаг для нескольких элементов | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется без изменений. Этот флаг полезен, когда вы хотите выполнить kubectl apply к этому объекту в будущем. | |
| show-managed-fields | false | Если true, сохранять managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для проверки входных данных перед отправкой. | |
| verb | [] | Глагол, который применяется к ресурсам, содержащимся в правиле |
связывание ролей
Создать привязку ролей для user1, user2 и group1, используя роль кластера admin
kubectl create rolebinding admin --clusterrole=admin --user=user1 --user=user2 --group=group1
Создать привязку ролей для конкретной роли или роли кластера.
Использование
$ kubectl create rolebinding NAME --clusterrole=NAME|--role=NAME [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run=server|client|none]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда отсутствует поле или ключ карты в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| clusterrole | Роль кластера, на которую должна ссылаться эта привязка ролей | ||
| dry-run | none | Должно быть «none», «server» или «client». Если используется стратегия client, выводится только объект, который был бы отправлен, без его отправки. Если используется стратегия server, выполняется запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| group | [] | Группы для привязки к роли | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| role | Роль, на которую должна ссылаться эта привязка ролей | ||
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется без изменений. Этот флаг полезен, когда вы хотите выполнить kubectl apply к этому объекту в будущем. | |
| serviceaccount | [] | Учётные записи сервисов для привязки к роли, в формате <namespace>:<name> | |
| show-managed-fields | false | Если true, сохранять managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для проверки входных данных перед отправкой. |
секрет
Создать секрет, используя указанную подкоманду.
Использование
$ kubectl create secret
секрет реестра Docker
Если у вас ещё нет файла .dockercfg, вы можете создать секрет dockercfg напрямую, используя:
kubectl create secret docker-registry my-secret --docker-server=DOCKER_REGISTRY_SERVER --docker-username=DOCKER_USER --docker-password=DOCKER_PASSWORD --docker-email=DOCKER_EMAIL
Создать новый секрет с именем my-secret из ~/.docker/config.json
kubectl create secret docker-registry my-secret --from-file=.dockerconfigjson=path/to/.docker/config.json
Создать новый секрет для использования с реестрами Docker.
Секреты Dockercfg используются для аутентификации в реестрах Docker.
При использовании командной строки Docker для отправки изображений вы можете аутентифицироваться в определённом реестре, выполнив: '$ docker login DOCKER_REGISTRY_SERVER --username=DOCKER_USER --password=DOCKER_PASSWORD --email=DOCKER_EMAIL'.
Это создаёт файл ~/.dockercfg, который используется последующими командами 'docker push' и 'docker pull' для аутентификации в реестре. Адрес электронной почты необязателен.
При создании приложений у вас может быть реестр Docker, требующий аутентификации. Для того, чтобы узлы могли подтягивать изображения от вашего имени, они должны иметь учетные данные. Вы можете предоставить эту информацию, создав секрет dockercfg и прикрепив его к вашей учётной записи сервиса.
Использование
$ kubectl create secret docker-registry NAME --docker-username=user --docker-password=password --docker-email=email [--docker-server=string] [--from-file=[key=]source] [--dry-run=server|client|none]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда отсутствует поле или ключ карты в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| append-hash | false | Добавить хэш секрета к его имени. | |
| docker-email | Электронная почта для реестра Docker | ||
| docker-password | Пароль для аутентификации в реестре Docker | ||
| docker-server | https://index.docker.io/v1/ | Расположение сервера для реестра Docker | |
| docker-username | Имя пользователя для аутентификации в реестре Docker | ||
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то выводить только объект, который был бы отправлен, без его отправки. Если стратегия server, отправлять запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| from-file | [] | Файлы ключей могут быть указаны с помощью их пути к файлу, в этом случае им будет присвоено имя по умолчанию, или же можно указать имя и путь к файлу, в этом случае будет использовано указанное имя. Указание директории итеративно обработает каждый именованный файл в директории, являющийся допустимым ключом секрета. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите в дальнейшем выполнить kubectl apply на этот объект. | |
| show-managed-fields | false | Если true, сохранять managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для проверки входных данных перед отправкой |
secret generic
Создать новый секрет с именем my-secret с ключами для каждого файла в папке bar
kubectl create secret generic my-secret --from-file=path/to/bar
Создать новый секрет с именем my-secret со специфицированными ключами вместо имен в диске
kubectl create secret generic my-secret --from-file=ssh-privatekey=path/to/id_rsa --from-file=ssh-publickey=path/to/id_rsa.pub
Создать новый секрет с именем my-secret с key1=supersecret и key2=topsecret
kubectl create secret generic my-secret --from-literal=key1=supersecret --from-literal=key2=topsecret
Создать новый секрет с именем my-secret, используя комбинацию файла и литерала
kubectl create secret generic my-secret --from-file=ssh-privatekey=path/to/id_rsa --from-literal=passphrase=topsecret
Создать новый секрет с именем my-secret из файла env
kubectl create secret generic my-secret --from-env-file=path/to/bar.env
Создать секрет на основе файла, директории или указанного литерального значения.
Один секрет может содержать одну или несколько пар ключ/значение.
При создании секрета на основе файла, ключ по умолчанию будет базироваться на имени файла, а значение — на содержимом файла. Если имя файла является недопустимым ключом, или вы хотите выбрать свой собственный, вы можете указать альтернативный ключ.
При создании секрета на основе директории, каждый файл, имя которого является допустимым ключом в директории, будет упакован в секрет. Все элементы директории, кроме обычных файлов, игнорируются (например, поддиректории, символьные ссылки, устройства, каналы и т. д.).
Использование
$ kubectl create generic NAME [--type=string] [--from-file=[key=]source] [--from-literal=key1=value1] [--dry-run=server|client|none]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда отсутствует поле или ключ карты в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| append-hash | false | Добавить хэш секрета к его имени. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то выводить только объект, который был бы отправлен, без его отправки. Если стратегия server, отправлять запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| from-env-file | Указать путь к файлу для чтения строк пар ключ=значение для создания секрета (например, файл .env Docker). | ||
| from-file | [] | Файлы ключей могут быть указаны с помощью их пути к файлу, в этом случае им будет присвоено имя по умолчанию, или же можно указать имя и путь к файлу, в этом случае будет использовано указанное имя. Указание директории итеративно обработает каждый именованный файл в директории, являющийся допустимым ключом секрета. | |
| from-literal | [] | Указать ключ и литеральное значение для вставки в секрет (например, mykey=somevalue) | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите в дальнейшем выполнить kubectl apply на этот объект. | |
| show-managed-fields | false | Если true, сохранять managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| type | Тип секрета для создания | ||
| validate | true | Если true, использовать схему для проверки входных данных перед отправкой |
secret tls
Создать новый TLS-секрет с именем tls-secret с заданной парой ключей
kubectl create secret tls tls-secret --cert=path/to/tls.cert --key=path/to/tls.key
Создать TLS-секрет из заданной пары открытого/закрытого ключей.
Пара открытого/закрытого ключей должна существовать заранее. Сертификат открытого ключа должен быть закодирован в .PEM и соответствовать заданному закрытому ключу.
Использование
$ kubectl create secret tls NAME --cert=path/to/cert/file --key=path/to/key/file [--dry-run=server|client|none]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда отсутствует поле или ключ карты в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| append-hash | false | Добавить хэш секрета к его имени. | |
| cert | Путь к PEM-закодированному сертификату открытого ключа. | ||
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то выводить только объект, который был бы отправлен, без его отправки. Если стратегия server, отправлять запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| key | Путь к закрытому ключу, связанному с заданным сертификатом. | ||
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите в дальнейшем выполнить kubectl apply на этот объект. | |
| show-managed-fields | false | Если true, сохранять managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для проверки входных данных перед отправкой |
service
Создать service с помощью указанной подкоманды.
Использование
$ kubectl create service
service clusterip
Создать новый ClusterIP service с именем my-cs
kubectl create service clusterip my-cs --tcp=5678:8080
Создать новый ClusterIP service с именем my-cs (в режиме headless)
kubectl create service clusterip my-cs --clusterip="None"
Создать ClusterIP service с указанным именем.
Использование
$ kubectl create service clusterip NAME [--tcp=<port>:<targetPort>] [--dry-run=server|client|none]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| clusterip | Укажите собственный ClusterIP или установите 'None' для сервиса 'headless' (без балансировки нагрузки). | ||
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то только вывести объект, который будет отправлен, без его отправки. Если стратегия server, то отправить запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите выполнить kubectl apply для этого объекта в будущем. | |
| show-managed-fields | false | Если true, сохранять managedFields при выводе объектов в формате JSON или YAML. | |
| tcp | [] | Пары портов могут быть указаны как '<порт>:<targetPort>'. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для проверки входных данных перед отправкой |
service externalname
Создать новый сервис ExternalName с именем my-ns
kubectl create service externalname my-ns --external-name bar.com
Создайте сервис ExternalName с указанным именем.
Сервис ExternalName ссылается на внешний адрес DNS, а не только на под, что позволит авторам приложений ссылаться на сервисы, которые существуют вне платформы, в других кластерах или локально.
Использование
$ kubectl create service externalname NAME --external-name external.name [--dry-run=server|client|none]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то только вывести объект, который будет отправлен, без его отправки. Если стратегия server, то отправить запрос на стороне сервера без сохранения ресурса. | |
| external-name | Внешнее имя сервиса | ||
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите выполнить kubectl apply для этого объекта в будущем. | |
| show-managed-fields | false | Если true, сохранять managedFields при выводе объектов в формате JSON или YAML. | |
| tcp | [] | Пары портов могут быть указаны как '<порт>:<targetPort>'. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для проверки входных данных перед отправкой |
service loadbalancer
Создать новый сервис LoadBalancer с именем my-lbs
kubectl create service loadbalancer my-lbs --tcp=5678:8080
Создайте сервис LoadBalancer с указанным именем.
Использование
$ kubectl create service loadbalancer NAME [--tcp=port:targetPort] [--dry-run=server|client|none]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то только вывести объект, который будет отправлен, без его отправки. Если стратегия server, то отправить запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите выполнить kubectl apply для этого объекта в будущем. | |
| show-managed-fields | false | Если true, сохранять managedFields при выводе объектов в формате JSON или YAML. | |
| tcp | [] | Пары портов могут быть указаны как '<порт>:<targetPort>'. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для проверки входных данных перед отправкой |
service nodeport
Создать новый сервис NodePort с именем my-ns
kubectl create service nodeport my-ns --tcp=5678:8080
Создайте сервис NodePort с указанным именем.
Использование
$ kubectl create service nodeport NAME [--tcp=port:targetPort] [--dry-run=server|client|none]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то только вывести объект, который будет отправлен, без его отправки. Если стратегия server, то отправить запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| node-port | 0 | Порт, используемый для экспонирования сервиса на каждом узле в кластере. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите выполнить kubectl apply для этого объекта в будущем. | |
| show-managed-fields | false | Если true, сохранять managedFields при выводе объектов в формате JSON или YAML. | |
| tcp | [] | Пары портов могут быть указаны как '<порт>:<targetPort>'. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для проверки входных данных перед отправкой |
serviceaccount
Создать новый сервис аккаунт с именем my-service-account
kubectl create serviceaccount my-service-account
Создайте сервис аккаунт с указанным именем.
Использование
$ kubectl create serviceaccount NAME [--dry-run=server|client|none]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то только вывести объект, который будет отправлен, без его отправки. Если стратегия server, то отправить запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-create | Имя менеджера, используемого для отслеживания владения полями. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите выполнить kubectl apply для этого объекта в будущем. | |
| show-managed-fields | false | Если true, сохранять managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для проверки входных данных перед отправкой |
get
Вывести список всех под в формате ps
kubectl get pods
Вывести список всех под в формате ps с дополнительной информацией (например, имя узла)
kubectl get pods -o wide
Вывести один контроллер репликации с указанным именем в формате ps
kubectl get replicationcontroller web
Список развертываний в формате JSON, в группе API "apps" версии "v1"
kubectl get deployments.v1.apps -o json
Вывод информации об одном под в формате JSON
kubectl get -o json pod web-pod-13je7
Список под, идентифицированного по типу и имени, указанным в "pod.yaml", в формате JSON
kubectl get -f pod.yaml -o json
Список ресурсов из каталога с kustomization.yaml - например, dir/kustomization.yaml
kubectl get -k dir/
Возвращает только значение фазы указанного под
kubectl get -o template pod/web-pod-13je7 --template={{.status.phase}} Список информации о ресурсах в пользовательских колонках
kubectl get pod test-pod -o custom-columns=CONTAINER:.spec.containers[0].name,IMAGE:.spec.containers[0].image
Список всех контроллеров репликации и сервисов вместе в формате ps
kubectl get rc,services
Список одного или нескольких ресурсов по их типу и именам
kubectl get rc/web service/frontend pods/web-pod-13je7
Отображение одного или нескольких ресурсов.
Выводит таблицу с наиболее важной информацией о заданных ресурсах. Вы можете фильтровать список с помощью селектора метки и флага --selector. Если требуемый тип ресурса имеет пространство имён, вы увидите результаты только в текущем пространстве имён, если не передадите --all-namespaces.
Неинициализированные объекты не отображаются, если не передать --include-uninitialized.
Указав вывод как 'template' и предоставив шаблон Go в качестве значения флага --template, вы можете фильтровать атрибуты извлечённых ресурсов.
Используйте "kubectl api-resources" для получения полного списка поддерживаемых ресурсов.
Использование
$ kubectl get [(-o|--output=)json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file|custom-columns|custom-columns-file|wide] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME ...) [flags]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all-namespaces | A | false | Если присутствует, выводит запрашиваемые объект(ы) по всем пространствам имён. Пространство имён в текущем контексте игнорируется, даже если указано с помощью --namespace. |
| allow-missing-template-keys | true | Если true, игнорирует любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| chunk-size | 500 | Возвращает большие списки по частям, а не все сразу. Передайте 0, чтобы отключить. Этот флаг находится на стадии бета-тестирования и может быть изменён в будущем. | |
| field-selector | Селектор (запрос по полям) для фильтрации, поддерживает '=', '==', и '!=' (например, --field-selector key1=value1,key2=value2). Сервер поддерживает только ограниченное количество запросов по полям на тип. | ||
| filename | f | [] | Имя файла, каталог или URL-адрес файлов, определяющих ресурс, который нужно получить от сервера. |
| ignore-not-found | false | Если запрашиваемый объект не существует, команда вернёт код выхода 0. | |
| kustomize | k | Обрабатывает каталог kustomization. Этот флаг не может использоваться вместе с -f или -R. | |
| label-columns | L | [] | Принимает список меток, разделённых запятыми, которые будут представлены в качестве столбцов. Имена чувствительны к регистру. Вы также можете использовать несколько флагов, таких как -L label1 -L label2... |
| no-headers | false | При использовании формата вывода по умолчанию или пользовательских столбцов, не выводить заголовки (по умолчанию выводить заголовки). | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file|custom-columns-file|custom-columns|wide См. пользовательские столбцы [https://kubernetes.io/docs/reference/kubectl/overview/#custom-columns], шаблон golang [http://golang.org/pkg/text/template/#pkg-overview] и шаблон jsonpath [https://kubernetes.io/docs/reference/kubectl/jsonpath/]. | |
| output-watch-events | false | Выводит объекты события наблюдения, когда используется --watch или --watch-only. Существующие объекты выводятся как начальные события ADDED. | |
| raw | Сырой URI для запроса к серверу. Использует транспорт, указанный в файле kubeconfig. | ||
| recursive | R | false | Обрабатывает каталог, используемый в -f, --filename рекурсивно. Полезно, когда нужно управлять связанными манифестами, организованными в одном каталоге. |
| selector | l | Селектор (запрос по меткам) для фильтрации, поддерживает '=', '==', и '!=' (например, -l key1=value1,key2=value2) | |
| server-print | true | Если true, заставляет сервер возвращать соответствующий вывод таблицы. Поддерживает расширения API и CRD. | |
| show-kind | false | Если присутствует, выводит тип ресурса для запрашиваемого объекта(ов). | |
| show-labels | false | При печати отображает все метки в качестве последнего столбца (по умолчанию скрывает столбец меток) | |
| show-managed-fields | false | Если true, сохраняет managedFields при печати объектов в формате JSON или YAML. | |
| sort-by | Если не пусто, сортирует типы списков по этому полю. Спецификация поля выражается как выражение JSONPath (например, '{.metadata.name}'). Поле в ресурсе API, указанное этим выражением JSONPath, должно быть целым числом или строкой. | ||
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона - шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| use-openapi-print-columns | false | Если true, использует метаданные x-kubernetes-print-column (если присутствуют) из схемы OpenAPI для отображения ресурса. | |
| watch | w | false | После перечисления/получения запрошенного объекта, отслеживать изменения. Неинициализированные объекты исключаются, если имя объекта не указано. |
| watch-only | false | Наблюдать за изменениями запрошенного объекта(ов), не перечисляя/получая их сначала. |
Запуск
Запустить pod nginx
kubectl run nginx --image=nginx
Запустить pod hazelcast и разрешить контейнеру экспонировать порт 5701
kubectl run hazelcast --image=hazelcast/hazelcast --port=5701
Запустить pod hazelcast и установить переменные среды "DNS_DOMAIN=cluster" и "POD_NAMESPACE=default" в контейнере
kubectl run hazelcast --image=hazelcast/hazelcast --env="DNS_DOMAIN=cluster" --env="POD_NAMESPACE=default"
Запустить pod hazelcast и установить метки "app=hazelcast" и "env=prod" в контейнере
kubectl run hazelcast --image=hazelcast/hazelcast --labels="app=hazelcast,env=prod"
Прогон в режиме моделирования; вывести соответствующие объекты API без их создания
kubectl run nginx --image=nginx --dry-run=client
Запустить pod nginx, но перегрузить spec частичным набором значений, разобранных из JSON
kubectl run nginx --image=nginx --overrides='{ "apiVersion": "v1", "spec": { ... } }' Запустить pod busybox и сохранить его в фоновом режиме, не перезапускать его при выходе
kubectl run -i -t busybox --image=busybox --restart=Never
Запустить pod nginx с помощью команды по умолчанию, но использовать пользовательские аргументы (arg1 .. argN) для этой команды
kubectl run nginx --image=nginx -- <arg1> <arg2> ... <argN>
Запустить pod nginx с помощью другой команды и пользовательских аргументов
kubectl run nginx --image=nginx --command -- <cmd> <arg1> ... <argN>
Создать и запустить конкретный образ в под.
Использование
$ kubectl run NAME --image=image [--env="key=value"] [--port=port] [--dry-run=server|client] [--overrides=inline-json] [--command] -- [COMMAND] [args...]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| annotations | [] | Аннотации для применения к под. | |
| attach | false | Если true, ждать запуска Под, а затем подключиться к Под так, как если бы был вызван 'kubectl attach ...'. По умолчанию false, если не задан '-i/--stdin', в этом случае значение по умолчанию - true. При использовании '--restart=Never' возвращается код завершения процесса контейнера. | |
| cascade | background | Должно быть "background", "orphan" или "foreground". Выбирает стратегию каскадного удаления для зависимых объектов (например, Под, созданных ReplicationController). По умолчанию background. | |
| command | false | Если true и присутствуют дополнительные аргументы, использовать их как поле 'command' в контейнере, а не поле 'args', которое используется по умолчанию. | |
| dry-run | none | Должно быть "none", "server" или "client". Если используется клиентская стратегия, только отобразить объект, который будет отправлен, не отправляя его. Если используется серверная стратегия, отправить запрос на сервер без сохранения ресурса. | |
| env | [] | Переменные среды для установки в контейнере. | |
| expose | false | Если true, создается служба для контейнера(ов), который(е) выполняются | |
| field-manager | kubectl-run | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | для использования при замене ресурса. |
| force | false | Если true, немедленно удалить ресурсы из API и обойти плавное удаление. Обратите внимание, что немедленное удаление некоторых ресурсов может привести к несогласованности или потере данных и требует подтверждения. | |
| grace-period | -1 | Период времени в секундах, предоставляемый ресурсу для плавного завершения работы. Игнорируется, если отрицательный. Установлено в 1 для немедленного завершения. Может быть установлено только в 0, когда используется --force (принудительное удаление). | |
| hostport | -1 | Маппинг порта хоста для порта контейнера. Для демонстрации контейнера на одной машине. | |
| image | Изображение для запуска контейнера. | ||
| image-pull-policy | Политика подтягивания образа для контейнера. Если оставлено пустым, это значение не будет указано клиентом и будет установлено по умолчанию сервером | ||
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать совместно с -f или -R. | |
| labels | l | Метки, разделенные запятыми, для применения к под(ам). Перезапишут предыдущие значения. | |
| leave-stdin-open | false | Если под запускается в интерактивном режиме или со stdin, оставить stdin открытым после завершения первого подключения. По умолчанию stdin будет закрыт после завершения первого подключения. | |
| limits | Пределы потребления ресурсов для этого контейнера. Например, 'cpu=200m,memory=512Mi'. Обратите внимание, что компоненты на стороне сервера могут назначать пределы в зависимости от конфигурации сервера, например, диапазонов пределов. | ||
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| overrides | Встроенная JSON-замена для генерируемого объекта. Если это не пусто, используется для переопределения сгенерированного объекта. Требуется, чтобы объект предоставил поле apiVersion. | ||
| pod-running-timeout | 1m0s | Продолжительность ожидания (например, 5с, 2м или 3ч, больше нуля), пока не запустится хотя бы один под. | |
| port | Порт, который экспонирует этот контейнер. | ||
| privileged | false | Если true, запустить контейнер в привилегированном режиме. | |
| quiet | q | false | Если true, подавить сообщения запросов. |
| record | false | Записать текущую команду kubectl в аннотацию ресурса. Если установлено в false, не записывать команду. Если установлено в true, записать команду. Если не установлено, по умолчанию обновить существующее значение аннотации только в том случае, если оно уже существует. | |
| recursive | R | false | Обработать директорию, используемую в -f, --filename рекурсивно. Полезно, когда вы хотите управлять связанными манифестами, организованными в одной директории. |
| requests | Требования к ресурсам для этого контейнера. Например, 'cpu=100m,memory=256Mi'. Обратите внимание, что компоненты на стороне сервера могут назначать запросы в зависимости от конфигурации сервера, например, диапазонов пределов. | ||
| restart | Always | Политика перезапуска для этого Под. Допустимые значения [Always, OnFailure, Never]. | |
| rm | false | Если true, удалить ресурсы, созданные в этой команде, для подключенных контейнеров. | |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите выполнить kubectl apply на этом объекте в будущем. | |
| serviceaccount | Учетная запись службы для установки в спецификации под. | ||
| show-managed-fields | false | Если true, сохранить managedFields при отображении объектов в формате JSON или YAML. | |
| stdin | i | false | Сохранить stdin открытым для контейнера(ов) в под, даже если ничего не подключено. |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона - шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| timeout | 0s | Время ожидания перед отказом от удаления, ноль означает определение таймаута на основе размера объекта | |
| tty | t | false | Выделить TTY для каждого контейнера в под. |
| wait | false | Если true, подождать, пока ресурсы исчезнут, прежде чем вернуть результат. Это ожидает finalizers. |
expose
Создать службу для реплицированного nginx, который обслуживает порт 80 и подключается к контейнерам по порту 8000
kubectl expose rc nginx --port=80 --target-port=8000
Создать службу для репликации контроллера, идентифицированного по типу и имени, указанным в "nginx-controller.yaml", который обслуживает порт 80 и подключается к контейнерам по порту 8000
kubectl expose -f nginx-controller.yaml --port=80 --target-port=8000
Создать службу для под valid-pod, которая обслуживает порт 444 с именем "frontend"
kubectl expose pod valid-pod --port=444 --name=frontend
Создать вторую службу на основе вышеуказанной службы, экспонируя порт контейнера 8443 как порт 443 с именем "nginx-https"
kubectl expose service nginx --port=443 --target-port=8443 --name=nginx-https
Создать службу для реплицированного потокового приложения на порту 4100, балансирующего UDP-трафик и имеющей имя 'video-stream'.
kubectl expose rc streamer --port=4100 --protocol=UDP --name=video-stream
Создать службу для реплицированного nginx с использованием replica set, который обслуживает порт 80 и подключается к контейнерам по порту 8000
kubectl expose rs nginx --port=80 --target-port=8000
Создать службу для nginx deployment, который обслуживает порт 80 и подключается к контейнерам по порту 8000
kubectl expose deployment nginx --port=80 --target-port=8000
Экспонировать ресурс как новую службу Kubernetes.
Ищет deployment, service, replica set, replication controller или pod по имени и использует селектор для этого ресурса в качестве селектора для новой службы на указанном порте. Deployment или replica set будут экспонированы как служба только в том случае, если их селектор преобразуется в селектор, поддерживаемый службой, т. е. когда селектор содержит только компонент matchLabels. Обратите внимание, что если порт не указан через --port и экспонированный ресурс имеет несколько портов, все они будут повторно использованы новой службой. Также, если метки не указаны, новая служба повторно использует метки из ресурса, который она экспонирует.
Возможные ресурсы (регистр не имеет значения):
pod (po), service (svc), replicationcontroller (rc), deployment (deploy), replicaset (rs)
Использование
$ kubectl expose (-f FILENAME | TYPE NAME) [--port=port] [--protocol=TCP|UDP|SCTP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| cluster-ip | ClusterIP, который должен быть назначен службе. Оставьте пустым для автоматического распределения или установите в 'None', чтобы создать службу без головы. | ||
| container-port | Синоним для --target-port | ||
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, вывести только объект, который был бы отправлен, не отправляя его. Если стратегия server, отправить запрос на стороне сервера без сохранения ресурса. | |
| external-ip | Дополнительный внешний IP-адрес (не управляемый Kubernetes) для приема службой. Если этот IP-адрес маршрутизируется на узел, к службе можно получить доступ по этому IP-адресу помимо сгенерированного IP-адреса службы. | ||
| field-manager | kubectl-expose | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | Имя файла, директория или URL-адрес файлов, идентифицирующих ресурс для экспонирования службы |
| generator | service/v2 | Имя генератора API для использования. Существует 2 генератора: 'service/v1' и 'service/v2'. Единственное различие между ними заключается в том, что порт службы в v1 называется 'default', а в v2 — без имени. Значение по умолчанию — 'service/v2'. | |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| labels | l | Метки для применения к службе, созданной этим вызовом. | |
| load-balancer-ip | IP-адрес для назначения LoadBalancer. Если пусто, будет создан и использован временный IP-адрес (зависит от облачного провайдера). | ||
| name | Имя для нового созданного объекта. | ||
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| overrides | Встроенное JSON-приоритетное значение для сгенерированного объекта. Если это значение не пустое, оно используется для переопределения сгенерированного объекта. Требует, чтобы объект предоставлял действительное поле apiVersion. | ||
| port | Порт, на котором должна работать служба. Скопировано из ресурса, который экспонируется, если не указано | ||
| protocol | Сеть протокол для создания службы. По умолчанию — 'TCP'. | ||
| record | false | Записать текущую команду kubectl в аннотации ресурса. Если установлено в false, не записывать команду. Если установлено в true, записать команду. Если не установлено, по умолчанию обновлять существующее значение аннотации только в том случае, если оно уже существует. | |
| recursive | R | false | Обработать директорию, используемую в -f, --filename рекурсивно. Полезно, когда вы хотите управлять связанными манифестами, организованными в одной директории. |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите выполнить kubectl apply для этого объекта в будущем. | |
| selector | Селектор меток для использования для этой службы. Поддерживаются только селекторы на основе равенства. Если пусто (по умолчанию), селектор определяется из контроллера репликации или набора реплик. | ||
| session-affinity | Если не пусто, устанавливает для службы сродство сессий в это значение; допустимые значения: 'None', 'ClientIP' | ||
| show-managed-fields | false | Если true, сохранять managedFields при выводе объектов в формате JSON или YAML. | |
| target-port | Имя или номер порта в контейнере, в который служба должна направлять трафик. Необязательно. | ||
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — golang шаблоны [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| type | Тип этой службы: ClusterIP, NodePort, LoadBalancer или ExternalName. По умолчанию — 'ClusterIP'. |
удаление
Удалить pod, используя тип и имя, указанные в pod.json
kubectl delete -f ./pod.json
Удалить ресурсы из директории, содержащей kustomization.yaml - например, dir/kustomization.yaml
kubectl delete -k dir
Удалить pod, основываясь на типе и имени в JSON, переданном в стандартный ввод
cat pod.json | kubectl delete -f -
Удалить pods и services с одинаковыми именами "baz" и "foo"
kubectl delete pod,service baz foo
Удалить pods и services с меткой name=myLabel
kubectl delete pods,services -l name=myLabel
Удалить pod с минимальной задержкой
kubectl delete pod foo --now
Принудительно удалить pod на мертвом узле
kubectl delete pod foo --force
Удалить все pods
kubectl delete pods --all
Удалить ресурсы по именам файлов, стандартному вводу, ресурсам и именам или по ресурсам и селектору меток.
Принимаются форматы JSON и YAML. Может быть указан только один тип аргумента: имена файлов, ресурсы и имена или ресурсы и селектор меток.
Некоторые ресурсы, такие как pods, поддерживают постепенное удаление. Эти ресурсы определяют значение по умолчанию для периода ожидания перед принудительной завершением (grace period), но вы можете переопределить его флагом --grace-period или передать --now, чтобы установить grace period в 1. Поскольку эти ресурсы часто представляют собой сущности в кластере, подтверждение удаления может не поступить сразу. Если узел, на котором находится pod, неактивен или не может связаться с API-сервером, завершение может занять значительно больше времени, чем grace period. Для принудительного удаления ресурса необходимо указать флаг --force. Примечание: только часть ресурсов поддерживает постепенное удаление. В отсутствие поддержки флаг --grace-period игнорируется.
ВАЖНО: Принудительное удаление pods не ожидает подтверждения, что процессы pod завершены, что может привести к продолжению работы этих процессов до тех пор, пока узел не обнаружит удаление и не завершит постепенное удаление. Если ваши процессы используют общий хранилище или общаются с удаленным API и зависят от имени pod для идентификации, принудительное удаление этих pods может привести к запуску нескольких процессов на разных машинах с использованием одного и того же идентификатора, что может привести к повреждению или несогласованности данных. Принудительно удаляйте pods только в том случае, если вы уверены, что pod завершен, или если ваше приложение может допускать одновременный запуск нескольких копий одного и того же pod. Кроме того, если вы принудительно удаляете pods, планировщик может разместить новые pods на этих узлах до того, как узел освободит эти ресурсы, что приведет к немедленному вытеснению этих pods.
Обратите внимание, что команда delete НЕ выполняет проверки версии ресурса, поэтому, если кто-то отправит обновление ресурса в момент, когда вы отправляете команду delete, его обновление будет потеряно вместе с остальной частью ресурса.
Использование
$ kubectl delete ([-f FILENAME] | [-k DIRECTORY] | TYPE [(NAME | -l label | --all)])
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all | false | Удалить все ресурсы, включая неинициализированные, в пространстве имён указанных типов ресурсов. | |
| all-namespaces | A | false | Если присутствует, вывести запрашиваемый(е) объект(ы) во всех пространствах имён. Пространство имён в текущем контексте игнорируется, даже если указано с помощью --namespace. |
| cascade | background | Должно быть "background", "orphan" или "foreground". Выбирает стратегию каскадного удаления для зависимых объектов (например, Pods, созданных ReplicationController). По умолчанию — background. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, вывести только объект, который был бы отправлен, не отправляя его. Если стратегия server, отправить запрос на стороне сервера без сохранения ресурса. | |
| field-selector | Селектор (запрос по полям) для фильтрации, поддерживает '=', '==', и '!='.(например, --field-selector key1=value1,key2=value2). Сервер поддерживает только ограниченное число запросов по полям на тип. | ||
| filename | f | [] | содержащий удаляемый ресурс. |
| force | false | Если true, немедленно удалить ресурсы из API и обойти постепенное удаление. Обратите внимание, что немедленное удаление некоторых ресурсов может привести к несогласованности или потере данных и требует подтверждения. | |
| grace-period | -1 | Период времени в секундах, предоставляемый ресурсу для плавного завершения. Игнорируется, если отрицательно. Установите в 1 для немедленного завершения. Может быть установлено только в 0, когда --force равен true (принудительное удаление). | |
| ignore-not-found | false | Обрабатывать "ресурс не найден" как успешное удаление. По умолчанию "true", когда указан --all. | |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| now | false | Если true, ресурсы помечаются для немедленного завершения (то же, что и --grace-period=1). | |
| output | o | Режим вывода. Используйте "-o name" для более короткого вывода (ресурс/имя). | |
| raw | Сырой URI для DELETE на сервер. Использует транспорт, указанный в файле kubeconfig. | ||
| recursive | R | false | Обработать директорию, используемую в -f, --filename рекурсивно. Полезно, когда вы хотите управлять связанными манифестами, организованными в одной директории. |
| selector | l | Селектор (запрос по меткам) для фильтрации, не включая неинициализированные. | |
| timeout | 0s | Длительность ожидания перед отказом от удаления, ноль означает определение таймаута на основе размера объекта | |
| wait | true | Если true, подождать, пока ресурсы не исчезнут, прежде чем вернуть значение. Это ожидает finalizers. |
УПРАВЛЕНИЕ ПРИЛОЖЕНИЯМИ
Этот раздел содержит команды для создания, обновления, удаления и просмотра ваших рабочих нагрузок в кластере Kubernetes.
применение
Применить конфигурацию в pod.json к pod
kubectl apply -f ./pod.json
Применить ресурсы из директории, содержащей kustomization.yaml - например, dir/kustomization.yaml
kubectl apply -k dir/
Применить переданный в stdin JSON к под
cat pod.json | kubectl apply -f -
Примечание: --prune всё ещё в стадии Alpha # Применить конфигурацию в manifest.yaml, которая соответствует метке app=nginx, и удалить все другие ресурсы, которые не находятся в файле и не соответствуют метке app=nginx
kubectl apply --prune -f manifest.yaml -l app=nginx
Применить конфигурацию из manifest.yaml и удалить все другие конфигурации config map, которые не находятся в файле
kubectl apply --prune -f manifest.yaml --all --prune-whitelist=core/v1/ConfigMap
Применяет конфигурацию к ресурсу по имени файла или stdin. Имя ресурса должно быть указано. Этот ресурс будет создан, если он ещё не существует. Для использования 'apply', всегда сначала создавайте ресурс с помощью 'apply' или 'create --save-config'.
Поддерживаются форматы JSON и YAML.
Предупреждение о стадии Alpha: функциональность --prune ещё не завершена. Не используйте, если вы не знаете текущее состояние. См. https://issues.k8s.io/34274.
Использование
$ kubectl apply (-f FILENAME | -k DIRECTORY)
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all | false | Выбрать все ресурсы в пространстве имён указанных типов ресурсов. | |
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда отсутствует поле или ключ карты в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| cascade | background | Должно быть "background", "orphan", или "foreground". Выбирает стратегию каскадного удаления для зависимых ресурсов (например, Pod, созданных ReplicationController). По умолчанию background. | |
| dry-run | none | Должно быть "none", "server" или "client". Если клиентская стратегия, только вывести объект, который был бы отправлен, но не отправлять его. Если серверная стратегия, отправить запрос на сервер без сохранения ресурса. | |
| field-manager | kubectl-client-side-apply | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | содержащий конфигурацию для применения |
| force | false | Если true, немедленно удалить ресурсы из API и обойти плавное удаление. Обратите внимание, что немедленное удаление некоторых ресурсов может привести к несоответствию или потере данных и требует подтверждения. | |
| force-conflicts | false | Если true, server-side apply принудительно применит изменения к конфликтам. | |
| grace-period | -1 | Период времени в секундах, предоставляемый ресурсу для плавного завершения. Игнорируется, если отрицательный. Установить в 1 для немедленного завершения. Может быть установлен только в 0, когда --force равно true (принудительное удаление). | |
| kustomize | k | Обработать директорию kustomization. Этот флаг не может быть использован вместе с -f или -R. | |
| openapi-patch | true | Если true, использовать openapi для вычисления diff, когда openapi присутствует и ресурс можно найти в спецификации openapi. В противном случае использовать встроенные типы. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| overwrite | true | Автоматически разрешить конфликты между изменённой и текущей конфигурацией, используя значения из изменённой конфигурации. | |
| prune | false | Автоматически удаляет объекты ресурсов, включая неинициализированные, которые не появляются в конфигурациях и были созданы с помощью apply или create --save-config. Следует использовать с -l или --all. | |
| prune-whitelist | [] | Перезаписать белый список по умолчанию с <group/version/kind> для --prune | |
| record | false | Записать текущую команду kubectl в аннотацию ресурса. Если false, не записывать команду. Если true, записать команду. Если не указано, по умолчанию обновлять существующее значение аннотации только в случае, если оно уже существует. | |
| recursive | R | false | Обработать директорию, используемую в -f, --filename рекурсивно. Полезно при управлении связанными манифестами, организованными в одной директории. |
| selector | l | Селектор (запрос по меткам) для фильтрации, поддерживает '=', '==', и '!='.(например, -l key1=value1,key2=value2) | |
| server-side | false | Если true, apply выполняется на сервере, а не на клиенте. | |
| show-managed-fields | false | Если true, сохранить managedFields при печати объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| timeout | 0s | Длительность ожидания, прежде чем отказаться от удаления, ноль означает определение таймаута на основе размера объекта. | |
| validate | true | Если true, использовать схему для проверки входных данных перед отправкой. | |
| wait | false | Если true, ждать, пока ресурсы не исчезнут, прежде чем возвращаться. Это ожидает finalizers. |
edit-last-applied
Изменить аннотации последней применённой конфигурации по типу/имени в YAML
kubectl apply edit-last-applied deployment/nginx
Изменить аннотации последней применённой конфигурации по файлу в JSON
kubectl apply edit-last-applied -f deploy.yaml -o json
Изменить последние аннотации last-applied-configuration ресурсов из стандартного редактора.
Команда edit-last-applied позволяет напрямую редактировать любой API-ресурс, который можно получить с помощью командной строки. Она откроет редактор, определённый переменными среды KUBE_EDITOR или EDITOR, или по умолчанию 'vi' для Linux или 'notepad' для Windows. Можно редактировать несколько объектов, хотя изменения применяются по одному за раз. Команда принимает имена файлов, а также аргументы командной строки, но файлы, на которые вы указываете, должны быть предварительно сохранёнными версиями ресурсов.
По умолчанию используется формат YAML. Для редактирования в JSON укажите "-o json".
Флаг --windows-line-endings можно использовать для принудительного применения Windows-кодировки, иначе будет использоваться кодировка по умолчанию для вашей операционной системы.
В случае возникновения ошибки при обновлении временный файл будет создан на диске, содержащий не применённые изменения. Наиболее распространённая ошибка при обновлении ресурса — другой редактор изменяет ресурс на сервере. В этом случае вам придётся применить свои изменения к новой версии ресурса или обновить временную сохранённую копию, включив в неё последнюю версию ресурса.
Использование
$ kubectl apply edit-last-applied (RESOURCE/NAME | -f FILENAME)
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда отсутствует поле или ключ карты в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| field-manager | kubectl-client-side-apply | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | Имя файла, директория или URL к файлам для редактирования ресурса |
| kustomize | k | Обработать директорию kustomization. Этот флаг не может быть использован вместе с -f или -R. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| record | false | Записать текущую команду kubectl в аннотацию ресурса. Если false, не записывать команду. Если true, записать команду. Если не указано, по умолчанию обновлять существующее значение аннотации только в случае, если оно уже существует. | |
| recursive | R | false | Обработать директорию, используемую в -f, --filename рекурсивно. Полезно при управлении связанными манифестами, организованными в одной директории. |
| show-managed-fields | false | Если true, сохранить managedFields при печати объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| windows-line-endings | false | По умолчанию использует кодировку, native для вашей платформы. |
set-last-applied
Установить последнюю применённую конфигурацию ресурса, соответствующую содержимому файла
kubectl apply set-last-applied -f deploy.yaml
Выполнить set-last-applied для каждого файла конфигурации в директории
kubectl apply set-last-applied -f path/
Установить последнюю применённую конфигурацию ресурса, соответствующую содержимому файла; создаст аннотацию, если она не существует
kubectl apply set-last-applied -f deploy.yaml --create-annotation=true
Установить последние аннотации last-applied-configuration, установив их в соответствии с содержимым файла. Это приводит к обновлению last-applied-configuration так, как будто была запущена команда 'kubectl apply -f
Использование
$ kubectl apply set-last-applied -f FILENAME
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| create-annotation | false | Создаст аннотации 'last-applied-configuration', если в текущих объектах их нет. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, вывести только объект, который будет отправлен, не отправляя его. Если стратегия server, отправить запрос на сервер без сохранения ресурса. | |
| filename | f | [] | Имя файла, директория или URL файлов, содержащих аннотации last-applied-configuration |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| show-managed-fields | false | Если true, сохранить managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — golang шаблоны [http://golang.org/pkg/text/template/#pkg-overview]. |
view-last-applied
Просмотр аннотаций last-applied-configuration по типу/имени в формате YAML
kubectl apply view-last-applied deployment/nginx
Просмотр аннотаций last-applied-configuration по файлам в формате JSON
kubectl apply view-last-applied -f deploy.yaml -o json
Просмотр последних аннотаций last-applied-configuration по типу/имени или файлу.
Значение по умолчанию будет выведено в stdout в формате YAML. Можно изменить формат вывода с помощью опции -o.
Использование
$ kubectl apply view-last-applied (TYPE [NAME | -l label] | TYPE/NAME | -f FILENAME)
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all | false | Выбрать все ресурсы в пространстве имён указанных типов ресурсов | |
| filename | f | [] | Имя файла, директория или URL файлов, содержащих аннотации last-applied-configuration |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| output | o | yaml | Формат вывода. Должно быть yaml|json |
| recursive | R | false | Обработать директорию, используемую в -f, --filename рекурсивно. Полезно при управлении связанными манифестами, организованными в одной директории. |
| selector | l | Селектор (запрос по меткам) для фильтрации, поддерживает '=', '==', и '!='.(например, -l key1=value1,key2=value2) |
annotate
Обновить pod 'foo' аннотацией 'description' со значением 'my frontend' # Если аннотация задана несколько раз, будет применено только последнее значение
kubectl annotate pods foo description='my frontend'
Обновить pod, идентифицированный по типу и имени в "pod.json"
kubectl annotate -f pod.json description='my frontend'
Обновить pod 'foo' аннотацией 'description' со значением 'my frontend running nginx', перезаписывая существующее значение
kubectl annotate --overwrite pods foo description='my frontend running nginx'
Обновить все pods в пространстве имён
kubectl annotate pods --all description='my frontend running nginx'
Обновить pod 'foo' только если ресурс не изменился с версии 1
kubectl annotate pods foo description='my frontend running nginx' --resource-version=1
Обновить pod 'foo' удалением аннотации 'description', если она существует # Флаг --overwrite не требуется
kubectl annotate pods foo description-
Обновить аннотации одного или нескольких ресурсов.
Все объекты Kubernetes поддерживают возможность хранения дополнительной информации с объектом в виде аннотаций. Аннотации — это пары ключ/значение, которые могут быть больше меток и включать произвольные строковые значения, такие как структурированные значения JSON. Инструменты и расширения системы могут использовать аннотации для хранения собственных данных.
Попытка установить уже существующую аннотацию завершится ошибкой, если не установлен флаг --overwrite. Если указан --resource-version и он не соответствует текущей версии ресурса на сервере, команда завершится с ошибкой.
Используйте "kubectl api-resources" для получения полного списка поддерживаемых ресурсов.
Использование
$ kubectl annotate [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all | false | Выбрать все ресурсы, включая неинициализированные, в пространстве имён указанных типов ресурсов. | |
| all-namespaces | A | false | Если true, проверить указанное действие во всех пространствах имён. |
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, вывести только объект, который будет отправлен, не отправляя его. Если стратегия server, отправить запрос на сервер без сохранения ресурса. | |
| field-manager | kubectl-annotate | Имя менеджера, используемого для отслеживания владения полями. | |
| field-selector | Селектор (запрос по полям) для фильтрации, поддерживает '=', '==', и '!='.(например, --field-selector key1=value1,key2=value2). Сервер поддерживает только ограниченное количество запросов по полям для каждого типа. | ||
| filename | f | [] | Имя файла, директория или URL файлов, определяющие ресурс для обновления аннотации |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| list | false | Если true, отобразить аннотации для данного ресурса. | |
| local | false | Если true, аннотация не будет обращаться к api-серверу, а выполнится локально. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| overwrite | false | Если true, разрешить перезапись аннотаций, иначе отклонить обновления аннотаций, которые перезаписывают существующие аннотации. | |
| record | false | Записывать текущую команду kubectl в аннотации ресурса. Если false, не записывать команду. Если true, записать команду. Если не установлено, по умолчанию обновлять существующее значение аннотации только в случае, если оно уже существует. | |
| recursive | R | false | Обработать директорию, используемую в -f, --filename рекурсивно. Полезно при управлении связанными манифестами, организованными в одной директории. |
| resource-version | Если не пустое, обновление аннотации будет успешным только если это текущая версия ресурса для объекта. Действительно только при указании одного ресурса. | ||
| selector | l | Селектор (запрос по меткам) для фильтрации, исключая неинициализированные, поддерживает '=', '==', и '!='.(например, -l key1=value1,key2=value2). | |
| show-managed-fields | false | Если true, сохранить managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — golang шаблоны [http://golang.org/pkg/text/template/#pkg-overview]. |
autoscale
Автомасштабирование развертывания "foo", с количеством pod от 2 до 10, без указанного целевого использования CPU, поэтому будет использоваться политика autoscaling по умолчанию
kubectl autoscale deployment foo --min=2 --max=10
Автомасштабирование контроллера репликации "foo", с количеством pod от 1 до 5, целевое использование CPU на уровне 80%
kubectl autoscale rc foo --max=5 --cpu-percent=80
Создаёт autoscaler, который автоматически выбирает и устанавливает количество pod, запущенных в кластере Kubernetes.
Ищет deployment, replica set, stateful set или replication controller по имени и создаёт autoscaler, который использует данный ресурс в качестве ссылки. Autoscaler может автоматически увеличивать или уменьшать количество развернутых pod в системе по мере необходимости.
Использование
$ kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда ключ поля или карты отсутствует в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| cpu-percent | -1 | Целевое среднее использование ЦП (представленное как процент запрошенного ЦП) по всем поддомен. Если не указано или отрицательно, будет использоваться политика автомасштабирования по умолчанию. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то только распечатать объект, который будет отправлен, без его отправки. Если стратегия server, отправить запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-autoscale | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | Имя файла, директория или URL-адрес файлов, идентифицирующих ресурс для автомасштабирования. |
| kustomize | k | Обработать директорию kustomization. Этот флаг не может использоваться вместе с -f или -R. | |
| max | -1 | Максимальное ограничение для количества поддомен, которое может быть установлено автомасштабировщиком. Требуется. | |
| min | -1 | Минимальное ограничение для количества поддомен, которое может быть установлено автомасштабировщиком. Если не указано или отрицательно, сервер применит значение по умолчанию. | |
| name | Имя для вновь созданного объекта. Если не указано, используется имя входного ресурса. | ||
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| record | false | Записывать текущую команду kubectl в аннотацию ресурса. Если установлено false, не записывать команду. Если установлено true, записывать команду. Если не установлено, по умолчанию обновлять существующее значение аннотации только в случае его наличия. | |
| recursive | R | false | Обрабатывать директорию, используемую в -f, --filename рекурсивно. Полезно, когда нужно управлять связанными манифестами, организованными в одной директории. |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется без изменений. Этот флаг полезен, когда вы хотите выполнить kubectl apply для этого объекта в будущем. | |
| show-managed-fields | false | Если true, сохранять managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона - golang шаблоны [http://golang.org/pkg/text/template/#pkg-overview]. |
debug
Создать интерактивную сессию отладки в поддомене mypod и немедленно подключиться к нему. # (требуется, чтобы функция EphemeralContainers была включена в кластере)
kubectl debug mypod -it --image=busybox
Создать контейнер отладки под названием debugger, используя пользовательский автоматизированный образ отладки. # (требуется, чтобы функция EphemeralContainers была включена в кластере)
kubectl debug --image=myproj/debug-tools -c debugger mypod
Создать копию mypod, добавив контейнер отладки и подключиться к нему
kubectl debug mypod -it --image=busybox --copy-to=my-debugger
Создать копию mypod, изменив команду mycontainer
kubectl debug mypod -it --copy-to=my-debugger --container=mycontainer -- sh
Создать копию mypod, изменив все контейнерные образы на busybox
kubectl debug mypod --copy-to=my-debugger --set-image=*=busybox
Создать копию mypod, добавив контейнер отладки и изменив контейнерные образы
kubectl debug mypod -it --copy-to=my-debugger --image=debian --set-image=app=app:debug,sidecar=sidecar:debug
Создать интерактивную сессию отладки на узле и немедленно подключиться к ней. # Контейнер будет работать в пространствах имен хоста, а файловая система хоста будет смонтирована в /host
kubectl debug node/mynode -it --image=busybox
Отлаживать ресурсы кластера с помощью интерактивных контейнеров отладки.
'debug' предоставляет автоматизацию для распространённых задач отладки для объектов кластера, определённых по ресурсу и имени. По умолчанию используются поддомены, если ресурс не указан.
Действие, выполняемое 'debug', варьируется в зависимости от указанного ресурса. Поддерживаемые действия включают:
- Рабочая нагрузка: Создать копию существующего поддомена с изменёнными атрибутами, например, изменением тега образа на новую версию.
- Рабочая нагрузка: Добавить временный контейнер в уже запущенный поддомен, например, для добавления средств отладки без перезапуска поддомена.
- Узел: Создать новый поддомен, который работает в пространствах имён хоста узла и может получить доступ к файловой системе узла.
Использование
$ kubectl debug (POD | TYPE[[.VERSION].GROUP]/NAME) [ -- COMMAND [args...] ]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| arguments-only | false | Если указано, всё после -- будет передано новому контейнеру как Args вместо Command. | |
| attach | false | Если true, подождать, пока контейнер начнёт работать, и затем подключиться так, как если бы была вызвана 'kubectl attach ...'. По умолчанию false, если не установлен '-i/--stdin', в этом случае значение по умолчанию - true. | |
| container | c | Имя контейнера для использования в контейнере отладки. | |
| copy-to | Создать копию целевого поддомена с этим именем. | ||
| env | [] | Переменные окружения для установки в контейнере. | |
| image | Контейнерный образ для использования в контейнере отладки. | ||
| image-pull-policy | Политика получения образа для контейнера. Если оставлено пустым, это значение не будет указано клиентом и будет установлено по умолчанию сервером. | ||
| quiet | q | false | Если true, подавить информационные сообщения. |
| replace | false | При использовании с '--copy-to', удалить исходный поддомен. | |
| same-node | false | При использовании с '--copy-to', запланировать копию целевого поддомена на том же узле. | |
| set-image | [] | При использовании с '--copy-to', список пар имя=образ для изменения контейнерных образов, аналогично тому, как работает 'kubectl set image'. | |
| share-processes | true | При использовании с '--copy-to', включить совместное использование пространства имен процессов в копии. | |
| stdin | i | false | Поддерживать stdin для контейнера(ов) в поддомене, даже если ничего не подключено. |
| target | При использовании временного контейнера, целевые процессы в этом имени контейнера. | ||
| tty | t | false | Выделить TTY для контейнера отладки. |
diff
Сравнить ресурсы, включённые в pod.json
kubectl diff -f pod.json
Сравнить файл, считанный из stdin
cat service.yaml | kubectl diff -f -
Сравнить конфигурации, указанные именем файла или stdin, между текущей онлайн-конфигурацией и конфигурацией, которая была бы применена.
Вывод всегда в формате YAML.
Переменная среды KUBECTL_EXTERNAL_DIFF может быть использована для выбора собственной команды diff. Пользователи могут использовать внешние команды с параметрами также, например: KUBECTL_EXTERNAL_DIFF="colordiff -N -u"
По умолчанию, команда "diff", доступная в вашей системе, будет запущена с опциями "-u" (объединённое сравнение) и "-N" (считать отсутствующие файлы пустыми).
Код выхода: 0 Различий не найдено. 1 Различия найдены. >1 Kubectl или diff завершились с ошибкой.
Примечание: KUBECTL_EXTERNAL_DIFF, если используется, должен следовать этой конвенции.
Использование
$ kubectl diff -f FILENAME
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| field-manager | kubectl-client-side-apply | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | Имя файла, директория или URL-адрес файлов содержат конфигурацию для сравнения |
| force-conflicts | false | Если true, применение на стороне сервера будет принудительно изменять конфликты. | |
| kustomize | k | Обработать директорию kustomization. Этот флаг не может использоваться вместе с -f или -R. | |
| recursive | R | false | Обрабатывать директорию, используемую в -f, --filename рекурсивно. Полезно, когда нужно управлять связанными манифестами, организованными в одной директории. |
| selector | l | Селектор (запрос по меткам) для фильтрации, поддерживает '=', '==', и '!='.(например, -l key1=value1,key2=value2) | |
| server-side | false | Если true, применение выполняется на сервере, а не на клиенте. |
edit
Редактировать сервис под названием 'docker-registry'
kubectl edit svc/docker-registry
Использовать альтернативный редактор
KUBE_EDITOR="nano" kubectl edit svc/docker-registry
Редактировать задачу 'myjob' в формате JSON, используя формат API v1
kubectl edit job.v1.batch/myjob -o json
Редактировать развертывание 'mydeployment' в формате YAML и сохранить изменённую конфигурацию в его аннотации
kubectl edit deployment/mydeployment -o yaml --save-config
Редактировать ресурс из системного редактора.
Команда edit позволяет напрямую редактировать любой API ресурс, который вы можете получить через командную строку. Она откроет редактор, определённый переменными окружения KUBE_EDITOR или EDITOR, или по умолчанию использует 'vi' для Linux или 'notepad' для Windows. Вы можете редактировать несколько объектов, хотя изменения применяются по одному за раз. Команда принимает имена файлов, а также аргументы командной строки, хотя файлы, на которые вы указываете, должны быть предварительно сохранёнными версиями ресурсов.
Редактирование выполняется с использованием версии API, используемой для получения ресурса. Чтобы редактировать с использованием определённой версии API, полностью квалифицируйте ресурс, версию и группу.
По умолчанию используется формат YAML. Чтобы редактировать в формате JSON, укажите "-o json".
Флаг --windows-line-endings может быть использован для принудительного использования Windows формата окончания строк, в противном случае будет использован формат по умолчанию для вашей операционной системы.
В случае возникновения ошибки при обновлении, временный файл будет создан на диске, содержащий ваши не применённые изменения. Самая распространённая ошибка при обновлении ресурса — другой редактор изменяет ресурс на сервере. В этом случае вам придётся применить свои изменения к более новой версии ресурса или обновить ваш временный сохранённый экземпляр, чтобы включить последнюю версию ресурса.
Использование
$ kubectl edit (RESOURCE/NAME | -f FILENAME)
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| field-manager | kubectl-edit | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | Имя файла, директория или URL файлов для редактирования ресурса |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| output-patch | false | Вывести патч, если ресурс отредактирован. | |
| record | false | Записать текущую команду kubectl в аннотацию ресурса. Если false, не записывать команду. Если true, записать команду. Если не задано, по умолчанию обновить существующее значение аннотации только если оно уже существует. | |
| recursive | R | false | Обработать директорию, указанную в -f, --filename рекурсивно. Полезно при управлении связанными манифестами, организованными в одной директории. |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация останется неизменной. Этот флаг полезен, когда вы хотите выполнить kubectl apply к этому объекту в будущем. | |
| show-managed-fields | false | Если true, сохранить managedFields при печати объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для валидации входных данных перед отправкой | |
| windows-line-endings | false | По умолчанию использует разделители строк, нативные для вашей платформы. |
kustomize
Собрать текущую рабочую директорию
kubectl kustomize
Собрать некоторую общую конфигурацию директории
kubectl kustomize /home/config/production
Сборка из github
kubectl kustomize https://github.com/kubernetes-sigs/kustomize.git/examples/helloWorld?ref=v1.0.6
Сгенерировать набор ресурсов KRM с помощью файла 'kustomization.yaml'. Аргумент DIR должен быть путем к директории, содержащей 'kustomization.yaml', или URL-адресом репозитория git с суффиксом пути, указывающим на него относительно корня репозитория. Если DIR опущен, предполагается '.'.
Использование
$ kubectl kustomize DIR
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| as-current-user | false | использовать uid и gid исполнителя команды для запуска функции в контейнере | |
| enable-alpha-plugins | false | включить плагины kustomize | |
| enable-helm | false | Включить использование генератора Helm chart inflator. | |
| enable-managedby-label | false | включить добавление метки app.kubernetes.io/managed-by | |
| env | e | [] | список переменных окружения, которые будут использоваться функциями |
| helm-command | helm | команда helm (путь к исполняемому файлу) | |
| load-restrictor | LoadRestrictionsRootOnly | если установлено в 'LoadRestrictionsNone', локальные kustomization могут загружать файлы извне своего корня. Однако это нарушает переносимость kustomization. | |
| mount | [] | список параметров хранения, считываемых из файловой системы | |
| network | false | включить сетевой доступ для функций, которые его объявляют | |
| network-name | bridge | докеровская сеть для запуска контейнера | |
| output | o | Если указано, вывести результат в этот путь. | |
| reorder | legacy | Переупорядочить ресурсы перед выводом. Используйте 'legacy', чтобы применить старое переупорядочение (пространства имен сначала, веб-хуки в конце и т.д.). Используйте 'none', чтобы подавить окончательное переупорядочение. |
метка
Обновить pod 'foo' с меткой 'unhealthy' и значением 'true'
kubectl label pods foo unhealthy=true
Обновить pod 'foo' с меткой 'status' и значением 'unhealthy', перезаписывая любое существующее значение
kubectl label --overwrite pods foo status=unhealthy
Обновить все pods в пространстве имен
kubectl label pods --all status=unhealthy
Обновить pod, идентифицированный типом и именем в "pod.json"
kubectl label -f pod.json status=unhealthy
Обновить pod 'foo' только если ресурс не изменён с версии 1
kubectl label pods foo status=unhealthy --resource-version=1
Обновить pod 'foo', удалив метку с именем 'bar', если она существует # Не требует флага --overwrite
kubectl label pods foo bar-
Обновить метки ресурса.
- Ключ и значение метки должны начинаться с буквы или цифры и могут содержать буквы, цифры, дефисы, точки и нижние подчёркивания, до 63 символов каждый.
- Ключ может начинаться с префикса доменного имени и одиночного '/', например, example.com/my-app.
- Если --overwrite true, то существующие метки можно перезаписать, в противном случае попытка перезаписи метки приведёт к ошибке.
- Если указан --resource-version, то обновления будут использовать эту версию ресурса, в противном случае будет использоваться существующая версия ресурса.
Использование
$ kubectl label [--overwrite] (-f FILENAME | TYPE NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--resource-version=version]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all | false | Выбрать все ресурсы, включая неинициализированные, в пространстве имён указанных типов ресурсов | |
| all-namespaces | A | false | Если true, проверить указанное действие во всех пространствах имен. |
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если client стратегия, только вывести объект, который будет отправлен, не отправляя его. Если server стратегия, отправить запрос на сервер без сохранения ресурса. | |
| field-manager | kubectl-label | Имя менеджера, используемого для отслеживания владения полями. | |
| field-selector | Селектор (запрос по полю) для фильтрации, поддерживает '=', '==', и '!='.(например, --field-selector key1=value1,key2=value2). Сервер поддерживает только ограниченное число запросов по полям на тип. | ||
| filename | f | [] | Имя файла, директория или URL файлов, определяющих ресурс для обновления меток |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| list | false | Если true, отобразить метки для данного ресурса. | |
| local | false | Если true, метка НЕ обратится к api-серверу, а выполнится локально. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| overwrite | false | Если true, разрешить перезапись меток, в противном случае отказываться от обновлений меток, которые перезаписывают существующие метки. | |
| record | false | Записать текущую команду kubectl в аннотацию ресурса. Если false, не записывать команду. Если true, записать команду. Если не задано, по умолчанию обновить существующее значение аннотации только если оно уже существует. | |
| recursive | R | false | Обработать директорию, указанную в -f, --filename рекурсивно. Полезно при управлении связанными манифестами, организованными в одной директории. |
| resource-version | Если не пустое, обновление меток произойдёт только если это текущая версия ресурса для объекта. Действительно только при указании одного ресурса. | ||
| selector | l | Селектор (запрос по меткам) для фильтрации, не включая неинициализированные, поддерживает '=', '==', и '!='.(например, -l key1=value1,key2=value2). | |
| show-managed-fields | false | Если true, сохранить managedFields при печати объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. |
патч
Частично обновить узел с помощью стратегического объединяющего патча, указав патч в формате JSON
kubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}' Частично обновить узел с помощью стратегического объединяющего патча, указав патч в формате YAML
kubectl patch node k8s-node-1 -p $'spec:\n unschedulable: true'
Частично обновить узел, идентифицированный типом и именем, указанным в "node.json", с помощью стратегического объединяющего патча
kubectl patch -f node.json -p '{"spec":{"unschedulable":true}}' Обновить образ контейнера; spec.containers[*].name требуется, потому что это ключ слияния
kubectl patch pod valid-pod -p '{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}' Обновить образ контейнера с помощью JSON патча с позиционными массивами
kubectl patch pod valid-pod --type='json' -p='[{"op": "replace", "path": "/spec/containers/0/image", "value":"new image"}]' Обновить поля ресурса с помощью стратегического объединяющего патча, JSON объединяющего патча или JSON патча.
Принимаются форматы JSON и YAML.
Использование
$ kubectl patch (-f FILENAME | TYPE NAME) [-p PATCH|--patch-file FILE]
Флаги
| Имя | Сокращение | По умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть «none», «server» или «client». Если стратегия client, то выводить только объект, который был бы отправлен, без его отправки. Если стратегия server, отправлять запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-patch | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | Имя файла, директории или URL-адрес файлов, идентифицирующих ресурс для обновления |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| local | false | Если true, патч будет применяться к содержимому файла, а не к ресурсу на стороне сервера. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| patch | p | Патч, который будет применён к файлу JSON ресурса. | |
| patch-file | Файл, содержащий патч, который будет применён к ресурсу. | ||
| record | false | Записывать текущую команду kubectl в аннотацию ресурса. Если false, не записывать команду. Если true, записать команду. Если не задано, по умолчанию обновлять существующее значение аннотации только в том случае, если оно уже существует. | |
| recursive | R | false | Рекурсивно обработать директорию, используемую в -f, --filename. Полезно, когда необходимо управлять связанными манифестами, организованными в одной директории. |
| show-managed-fields | false | Если true, сохранить managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| type | strategic | Тип предоставляемого патча; один из [json merge strategic] |
замена
Заменить pod с данными из pod.json
kubectl replace -f ./pod.json
Заменить pod на основе JSON, переданного в стандартный ввод
cat pod.json | kubectl replace -f -
Обновить версию (тег) изображения одноконтейнерного pod до v4
kubectl get pod mypod -o yaml | sed 's/\(image: myimage\):.*$/\1:v4/' | kubectl replace -f -
Принудительная замена, удаление и затем повторное создание ресурса
kubectl replace --force -f ./pod.json
Замена ресурса по имени файла или стандартному вводу.
Принимаются форматы JSON и YAML. При замене существующего ресурса необходимо предоставить полную спецификацию ресурса. Это можно получить с помощью
$ kubectl get TYPE NAME -o yaml
Использование
$ kubectl replace -f FILENAME
Флаги
| Имя | Сокращение | По умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| cascade | background | Должно быть «background», «orphan» или «foreground». Выбирает стратегию каскадного удаления для зависимых объектов (например, Pods, созданных ReplicationController). По умолчанию background. | |
| dry-run | none | Должно быть «none», «server» или «client». Если стратегия client, то выводить только объект, который был бы отправлен, без его отправки. Если стратегия server, отправлять запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-replace | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | для замены ресурса. |
| force | false | Если true, немедленно удалить ресурсы из API и обойти плавное удаление. Обратите внимание, что немедленное удаление некоторых ресурсов может привести к несогласованности или потере данных и требует подтверждения. | |
| grace-period | -1 | Период времени в секундах, предоставляемый ресурсу для плавного завершения. Игнорируется, если отрицательный. Устанавливается в 1 для немедленного выключения. Может быть установлен только в 0, когда --force равно true (принудительное удаление). | |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| raw | Сырой URI для отправки PUT на сервер. Использует транспорт, указанный в файле kubeconfig. | ||
| recursive | R | false | Рекурсивно обработать директорию, используемую в -f, --filename. Полезно, когда необходимо управлять связанными манифестами, организованными в одной директории. |
| save-config | false | Если true, конфигурация текущего объекта будет сохранена в его аннотации. В противном случае аннотация не изменится. Этот флаг полезен, когда вы хотите выполнить kubectl apply для этого объекта в будущем. | |
| show-managed-fields | false | Если true, сохранить managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| timeout | 0s | Продолжительность ожидания перед отказом от удаления, ноль означает определение таймаута по размеру объекта | |
| validate | true | Если true, использовать схему для проверки ввода перед отправкой | |
| wait | false | Если true, ждать, пока ресурсы не исчезнут, прежде чем возвращаться. Это ожидает finalizers. |
развертывание
Откат к предыдущему развертыванию
kubectl rollout undo deployment/abc
Проверить статус развертывания daemonset
kubectl rollout status daemonset/foo
Управление развертыванием ресурса.
Допустимые типы ресурсов включают:
- deployments
- daemonsets
- statefulsets
Использование
$ kubectl rollout SUBCOMMAND
история
Просмотреть историю развертывания deployment
kubectl rollout history deployment/abc
Просмотреть детали ревизии daemonset 3
kubectl rollout history daemonset/abc --revision=3
Просмотр предыдущих ревизий и конфигураций развертывания.
Использование
$ kubectl rollout history (TYPE NAME | TYPE/NAME) [flags]
Флаги
| Имя | Сокращение | По умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| filename | f | [] | Имя файла, директории или URL-адрес файлов, идентифицирующих ресурс для получения с сервера. |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| recursive | R | false | Рекурсивно обработать директорию, используемую в -f, --filename. Полезно, когда необходимо управлять связанными манифестами, организованными в одной директории. |
| revision | 0 | Просмотреть детали, включая podTemplate, указанной ревизии | |
| show-managed-fields | false | Если true, сохранить managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. |
пауза
Отметить deployment nginx как приостановленный # Любое текущее состояние deployment продолжит свою функцию; новые обновления # deployment не будут иметь эффекта, пока deployment приостановлен
kubectl rollout pause deployment/nginx
Отметить предоставленный ресурс как приостановленный.
Приостановленные ресурсы не будут согласованы контроллером. Используйте «kubectl rollout resume» для возобновления приостановленного ресурса. В настоящее время только deployments поддерживают приостановку.
Использование
$ kubectl rollout pause RESOURCE
Флаги
| Имя | Сокращение | По умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| field-manager | kubectl-rollout | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | Имя файла, директории или URL-адрес файлов, идентифицирующих ресурс для получения с сервера. |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| recursive | R | false | Рекурсивно обработать директорию, используемую в -f, --filename. Полезно, когда необходимо управлять связанными манифестами, организованными в одной директории. |
| show-managed-fields | false | Если true, сохранить managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. |
restart
Перезапустить развертывание
kubectl rollout restart deployment/nginx
Перезапустить набор демонов
kubectl rollout restart daemonset/abc
Перезапустить ресурс.
Развертывание ресурса будет перезапущено.
Использование
$ kubectl rollout restart RESOURCE
Флаги
| Имя | Сокращение | По умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| field-manager | kubectl-rollout | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | Имя файла, директория или URL файла, определяющие ресурс для получения от сервера. |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| recursive | R | false | Рекурсивно обработать директорию, используемую в -f, --filename. Полезно, когда нужно управлять связанными манифестами, организованными в одной директории. |
| show-managed-fields | false | Если true, сохранить managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. |
resume
Возобновить уже приостановленное развертывание
kubectl rollout resume deployment/nginx
Возобновить приостановленный ресурс.
Приостановленные ресурсы не будут согласованы контроллером. Возобновление ресурса позволяет снова начать его согласование. В настоящее время возобновление поддерживается только для развертываний.
Использование
$ kubectl rollout resume RESOURCE
Флаги
| Имя | Сокращение | По умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| field-manager | kubectl-rollout | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | Имя файла, директория или URL файла, определяющие ресурс для получения от сервера. |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| recursive | R | false | Рекурсивно обработать директорию, используемую в -f, --filename. Полезно, когда нужно управлять связанными манифестами, организованными в одной директории. |
| show-managed-fields | false | Если true, сохранить managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. |
status
Просмотреть статус развертывания
kubectl rollout status deployment/nginx
Показать статус развертывания.
По умолчанию 'rollout status' будет следить за состоянием последнего развертывания, пока оно не завершится. Если вы не хотите ждать завершения развертывания, вы можете использовать --watch=false. Обратите внимание, что если между ними запускается новое развертывание, то 'rollout status' продолжит наблюдение за последней ревизией. Если вы хотите зафиксироваться на определенной ревизии и прерваться, если она будет перезаписана другой ревизией, используйте --revision=N, где N — ревизия, за которой нужно наблюдать.
Использование
$ kubectl rollout status (TYPE NAME | TYPE/NAME) [flags]
Флаги
| Имя | Сокращение | По умолчанию | Использование |
|---|---|---|---|
| filename | f | [] | Имя файла, директория или URL файла, определяющие ресурс для получения от сервера. |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| recursive | R | false | Рекурсивно обработать директорию, используемую в -f, --filename. Полезно, когда нужно управлять связанными манифестами, организованными в одной директории. |
| revision | 0 | Зафиксироваться на определенной ревизии для отображения её статуса. По умолчанию 0 (последняя ревизия). | |
| timeout | 0s | Длительность ожидания перед завершением наблюдения, ноль означает бесконечно. Любые другие значения должны содержать соответствующее временное значение (например, 1s, 2m, 3h). | |
| watch | w | true | Наблюдать за состоянием развертывания, пока оно не завершится. |
undo
Откатить к предыдущему развертыванию
kubectl rollout undo deployment/abc
Откатиться к ревизии 3 набора демонов
kubectl rollout undo daemonset/abc --to-revision=3
Откатиться к предыдущему развертыванию с режимом dry-run
kubectl rollout undo --dry-run=server deployment/abc
Откатиться к предыдущему развертыванию.
Использование
$ kubectl rollout undo (TYPE NAME | TYPE/NAME) [flags]
Флаги
| Имя | Сокращение | По умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то только вывести объект, который будет отправлен, без его отправки. Если стратегия server, отправить запрос на сервер без сохранения ресурса. | |
| filename | f | [] | Имя файла, директория или URL файла, определяющие ресурс для получения от сервера. |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| recursive | R | false | Рекурсивно обработать директорию, используемую в -f, --filename. Полезно, когда нужно управлять связанными манифестами, организованными в одной директории. |
| show-managed-fields | false | Если true, сохранить managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| to-revision | 0 | Ревизия для отката. По умолчанию 0 (последняя ревизия). |
scale
Изменить количество реплик для реплицированного набора 'foo' на 3
kubectl scale --replicas=3 rs/foo
Изменить количество реплик для ресурса, определенного по типу и имени в "foo.yaml", на 3
kubectl scale --replicas=3 -f foo.yaml
Если текущее количество реплик развертывания mysql равно 2, изменить количество реплик mysql на 3
kubectl scale --current-replicas=2 --replicas=3 deployment/mysql
Изменить количество реплик для нескольких контроллеров репликации
kubectl scale --replicas=5 rc/foo rc/bar rc/baz
Изменить количество реплик для StatefulSet 'web' на 3
kubectl scale --replicas=3 statefulset/web
Установить новое количество реплик для развертывания, реплицированного набора, контроллера репликации или StatefulSet.
Scale также позволяет пользователям задавать одно или несколько предварительных условий для действия масштабирования.
Если указаны --current-replicas или --resource-version, они проверяются перед попыткой масштабирования, и гарантируется, что предварительное условие выполняется, когда масштабирование отправляется на сервер.
Использование
$ kubectl scale [--resource-version=version] [--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all | false | Выбрать все ресурсы в пространстве имён указанных типов ресурсов | |
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| current-replicas | -1 | Предварительное условие для текущего размера. Требует, чтобы текущий размер ресурса соответствовал этому значению для масштабирования. -1 (по умолчанию) для отсутствия условия. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, только вывести объект, который был бы отправлен, не отправляя его. Если стратегия server, отправить запрос на стороне сервера без сохранения ресурса. | |
| filename | f | [] | Имя файла, директория или URL-адрес файлов, определяющих ресурс для установки нового размера |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| record | false | Записать текущую команду kubectl в аннотацию ресурса. Если false, не записывать команду. Если true, записать команду. Если не задано, по умолчанию обновлять существующее значение аннотации только в том случае, если оно уже существует. | |
| recursive | R | false | Обрабатывать директорию, используемую в -f, --filename рекурсивно. Полезно, когда вы хотите управлять связанными манифестами, организованными в одной директории. |
| replicas | 0 | Новое желаемое количество реплик. Требуется. | |
| resource-version | Предварительное условие для версии ресурса. Требуется, чтобы текущая версия ресурса соответствовала этому значению для масштабирования. | ||
| selector | l | Селектор (запрос по меткам) для фильтрации, поддерживает '=', '==', и '!=' (например, -l key1=value1,key2=value2). | |
| show-managed-fields | false | Если true, сохранить managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| timeout | 0s | Время ожидания завершения операции масштабирования, ноль означает, что ожидание не требуется. Любые другие значения должны содержать соответствующий временной интервал (например, 1s, 2m, 3h). |
set
Настройка ресурсов приложения.
Эти команды помогут вам внести изменения в существующие ресурсы приложения.
Использование
$ kubectl set SUBCOMMAND
env
Обновить деплоймент 'registry' с новой переменной окружения
kubectl set env deployment/registry STORAGE_DIR=/local
Вывести список переменных окружения, определённых для деплоймента 'sample-build'
kubectl set env deployment/sample-build --list
Вывести список переменных окружения, определённых для всех под
kubectl set env pods --all --list
Вывести изменённый деплоймент в формате YAML, не изменяя объект на сервере
kubectl set env deployment/sample-build STORAGE_DIR=/data -o yaml
Обновить все контейнеры во всех контроллерах репликации в проекте, чтобы ENV=prod
kubectl set env rc --all ENV=prod
Импортировать переменные окружения из секрета
kubectl set env --from=secret/mysecret deployment/myapp
Импортировать переменные окружения из конфиг-мапа с префиксом
kubectl set env --from=configmap/myconfigmap --prefix=MYSQL_ deployment/myapp
Импортировать определённые ключи из конфиг-мапа
kubectl set env --keys=my-example-key --from=configmap/myconfigmap deployment/myapp
Удалить переменную окружения ENV из контейнера 'c1' во всех деплойментах
kubectl set env deployments --all --containers="c1" ENV-
Удалить переменную окружения ENV из определения деплоймента на диске и обновить деплоймент на сервере
kubectl set env -f deploy.json ENV-
Установить некоторые переменные окружения локальной оболочки в конфигурацию деплоймента на сервере
env | grep RAILS_ | kubectl set env -e - deployment/registry
Обновить переменные окружения в шаблоне под.
Вывести определения переменных окружения в одном или нескольких под, шаблонах под. Добавить, обновить или удалить определения переменных окружения контейнера в одном или нескольких шаблонах под (внутри контроллеров репликации или конфигураций деплоймента). Просмотреть или изменить определения переменных окружения во всех контейнерах в указанных под или шаблонах под, или только тех, которые соответствуют подстановочному знаку.
Если передаётся "--env -", переменные окружения можно читать из стандартного ввода с использованием стандартного синтаксиса env.
Возможные ресурсы (регистр не учитывается):
под (po), контроллер репликации (rc), деплоймент (deploy), демона (ds), statefulset (sts), cronjob (cj), replicaset (rs)
Использование
$ kubectl set env RESOURCE/NAME KEY_1=VAL_1 ... KEY_N=VAL_N
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all | false | Если true, выбрать все ресурсы в пространстве имён указанных типов ресурсов | |
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| containers | c | * | Имена контейнеров в выбранных шаблонах под для изменения — можно использовать подстановочные знаки |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, только вывести объект, который был бы отправлен, не отправляя его. Если стратегия server, отправить запрос на стороне сервера без сохранения ресурса. | |
| env | e | [] | Указать пару ключ-значение для переменной окружения, которую нужно установить в каждый контейнер. |
| field-manager | kubectl-set | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | Имя файла, директория или URL-адрес файла, ресурса для обновления переменных окружения |
| from | Имя ресурса, из которого нужно импортировать переменные окружения | ||
| keys | [] | Список ключей через запятую для импорта из указанного ресурса | |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| list | false | Если true, отобразить переменные окружения и любые изменения в стандартном формате. Этот флаг будет удалён, когда у нас будет kubectl view env. | |
| local | false | Если true, set env не будет обращаться к api-серверу, а будет работать локально. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| overwrite | true | Если true, разрешить перезапись переменных окружения, иначе отклонить обновления, которые перезаписывают существующие переменные. | |
| prefix | Префикс, добавляемый к именам переменных | ||
| recursive | R | false | Обрабатывать директорию, используемую в -f, --filename рекурсивно. Полезно, когда вы хотите управлять связанными манифестами, организованными в одной директории. |
| resolve | false | Если true, показывать ссылки на секреты или конфиг-мапы при отображении переменных | |
| selector | l | Селектор (запрос по меткам) для фильтрации | |
| show-managed-fields | false | Если true, сохранить managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. |
image
Установить образ контейнера nginx деплоймента на 'nginx:1.9.1', а образ контейнера busybox на 'busybox'
kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1
Обновить образ контейнера nginx для всех деплойментов и rc на 'nginx:1.9.1'
kubectl set image deployments,rc nginx=nginx:1.9.1 --all
Обновить образ всех контейнеров демона abc на 'nginx:1.9.1'
kubectl set image daemonset abc *=nginx:1.9.1
Вывести результат (в формате yaml) обновления образа контейнера nginx из локального файла, не обращаясь к серверу
kubectl set image -f path/to/file.yaml nginx=nginx:1.9.1 --local -o yaml
Обновить существующие образы контейнера(ов) ресурсов.
Возможные ресурсы (регистр не учитывается):
под (po), контроллер репликации (rc), деплоймент (deploy), демона (ds), statefulset (sts), cronjob (cj), replicaset (rs)
Использование
$ kubectl set image (-f FILENAME | TYPE NAME) CONTAINER_NAME_1=CONTAINER_IMAGE_1 ... CONTAINER_NAME_N=CONTAINER_IMAGE_N
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all | false | Выбрать все ресурсы, включая неинициализированные, в пространстве имен указанных типов ресурсов | |
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда отсутствует поле или ключ карты в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то выводить только объект, который был бы отправлен, не отправляя его. Если стратегия server, то отправлять запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-set | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | Имя файла, директория или URL-адрес файлов, определяющих ресурс, который нужно получить с сервера. |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| local | false | Если true, установка ресурсов НЕ будет обращаться к api-серверу, а будет выполнена локально. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| record | false | Записывать текущую команду kubectl в аннотацию ресурса. Если false, не записывать команду. Если true, записывать команду. Если не задано, по умолчанию обновлять существующее значение аннотации только в том случае, если оно уже существует. | |
| recursive | R | false | Обрабатывать директорию, используемую в -f, --filename рекурсивно. Полезно, когда нужно управлять связанными манифестами, организованными в одной директории. |
| selector | l | Селектор (запрос по меткам) для фильтрации, не включая неинициализированные, поддерживает '=', '==', и '!=' (например, -l key1=value1,key2=value2). | |
| show-managed-fields | false | Если true, сохранять managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. |
ресурсы
Установить лимиты ЦП контейнера nginx развертывания для "200m", а память — "512Mi"
kubectl set resources deployment nginx -c=nginx --limits=cpu=200m,memory=512Mi
Установить требования к ресурсам и лимиты для всех контейнеров в nginx
kubectl set resources deployment nginx --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=256Mi
Удалить запросы ресурсов для ресурсов в контейнерах в nginx
kubectl set resources deployment nginx --limits=cpu=0,memory=0 --requests=cpu=0,memory=0
Вывести результат (в формате yaml) обновления лимитов контейнера nginx с локального сервера, не обращаясь к серверу
kubectl set resources -f path/to/file.yaml --limits=cpu=200m,memory=512Mi --local -o yaml
Укажите требования к ресурсам вычисления (ЦП, память) для любого ресурса, который определяет шаблон под. Если под успешно запланирован, гарантируется запрошенное количество ресурсов, но может выполняться до указанных лимитов.
Для каждого ресурса вычисления, если лимит указан, а запрос пропущен, запрос будет по умолчанию равен лимиту.
Возможные ресурсы (регистр не учитывается): Используйте "kubectl api-resources" для получения полного списка поддерживаемых ресурсов..
Использование
$ kubectl set resources (-f FILENAME | TYPE NAME) ([--limits=LIMITS & --requests=REQUESTS]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all | false | Выбрать все ресурсы, включая неинициализированные, в пространстве имен указанных типов ресурсов | |
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда отсутствует поле или ключ карты в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| containers | c | * | Имена контейнеров в выбранных шаблонах pod для изменения, все контейнеры выбираются по умолчанию — можно использовать подстановочные знаки |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то выводить только объект, который был бы отправлен, не отправляя его. Если стратегия server, то отправлять запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-set | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | Имя файла, директория или URL-адрес файлов, определяющих ресурс. |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| limits | Требования к ресурсам для этого контейнера. Например, 'cpu=100m,memory=256Mi'. Обратите внимание, что компоненты на стороне сервера могут назначать запросы в зависимости от конфигурации сервера, например, диапазонов лимитов. | ||
| local | false | Если true, установка ресурсов НЕ будет обращаться к api-серверу, а будет выполнена локально. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| record | false | Записывать текущую команду kubectl в аннотацию ресурса. Если false, не записывать команду. Если true, записывать команду. Если не задано, по умолчанию обновлять существующее значение аннотации только в том случае, если оно уже существует. | |
| recursive | R | false | Обрабатывать директорию, используемую в -f, --filename рекурсивно. Полезно, когда нужно управлять связанными манифестами, организованными в одной директории. |
| requests | Требования к ресурсам для этого контейнера. Например, 'cpu=100m,memory=256Mi'. Обратите внимание, что компоненты на стороне сервера могут назначать запросы в зависимости от конфигурации сервера, например, диапазонов лимитов. | ||
| selector | l | Селектор (запрос по меткам) для фильтрации, не включая неинициализированные, поддерживает '=', '==', и '!=' (например, -l key1=value1,key2=value2). | |
| show-managed-fields | false | Если true, сохранять managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. |
селектор
Установить метки и селектор перед созданием пары развертывания/сервиса
kubectl create service clusterip my-svc --clusterip="None" -o yaml --dry-run=client | kubectl set selector --local -f - 'environment=qa' -o yaml | kubectl create -f - kubectl create deployment my-dep -o yaml --dry-run=client | kubectl label --local -f - environment=qa -o yaml | kubectl create -f -
Установить селектор на ресурс. Обратите внимание, что новый селектор перепишет старый селектор, если у ресурса был селектор до вызова 'set selector'.
Селектор должен начинаться с буквы или цифры и может содержать буквы, цифры, дефисы, точки и подчеркивания, до 63 символов. Если указан --resource-version, обновления будут использовать эту версию ресурса, в противном случае будет использоваться существующая версия ресурса. Примечание: в настоящее время селекторы могут устанавливаться только для объектов Service.
Использование
$ kubectl set selector (-f FILENAME | TYPE NAME) EXPRESSIONS [--resource-version=version]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all | false | Выбрать все ресурсы в пространстве имен указанных типов ресурсов | |
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда отсутствует поле или ключ карты в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то выводить только объект, который был бы отправлен, не отправляя его. Если стратегия server, то отправлять запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-set | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | Идентифицирующие ресурс. |
| local | false | Если true, аннотация НЕ будет обращаться к api-серверу, а будет выполнена локально. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| record | false | Записывать текущую команду kubectl в аннотацию ресурса. Если false, не записывать команду. Если true, записывать команду. Если не задано, по умолчанию обновлять существующее значение аннотации только в том случае, если оно уже существует. | |
| recursive | R | true | Обрабатывать директорию, используемую в -f, --filename рекурсивно. Полезно, когда нужно управлять связанными манифестами, организованными в одной директории. |
| resource-version | Если не пусто, обновление селекторов будет успешным только в том случае, если это текущая версия ресурса для объекта. Действительно только при указании одного ресурса. | ||
| show-managed-fields | false | Если true, сохранять managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. |
Учетная запись сервиса
Установить учетную запись сервиса развертывания nginx-deployment на serviceaccount1
kubectl set serviceaccount deployment nginx-deployment serviceaccount1
Вывести результат (в формате YAML) обновления развертывания nginx с учетной записью сервиса из локального файла, не обращаясь к API-серверу
kubectl set sa -f nginx-deployment.yaml serviceaccount1 --local --dry-run=client -o yaml
Обновить учетную запись сервиса для ресурсов шаблонов pod.
Возможные ресурсы (регистр не учитывается):
replicationcontroller (rc), deployment (deploy), daemonset (ds), job, replicaset (rs), statefulset
Использование
$ kubectl set serviceaccount (-f FILENAME | TYPE NAME) SERVICE_ACCOUNT
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all | false | Выбрать все ресурсы, включая неинициализированные, в пространстве имён указанных типов ресурсов | |
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то только вывести объект, который был бы отправлен, но не отправлять его. Если стратегия server, отправить запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-set | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | Имя файла, директория или URL-адрес файлов, идентифицирующих ресурс для получения с сервера. |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| local | false | Если true, установка serviceaccount не будет обращаться к api-серверу, а будет выполнена локально. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| record | false | Записывать текущую команду kubectl в аннотацию ресурса. Если установлено в false, не записывать команду. Если установлено в true, записать команду. Если не установлено, по умолчанию обновлять существующее значение аннотации только в том случае, если оно уже существует. | |
| recursive | R | false | Обработать директорию, используемую в -f, --filename рекурсивно. Полезно, когда необходимо управлять связанными манифестами, организованными в одной директории. |
| show-managed-fields | false | Если true, сохранить managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. |
subject
Обновить привязку роли кластера для serviceaccount1
kubectl set subject clusterrolebinding admin --serviceaccount=namespace:serviceaccount1
Обновить привязку роли для user1, user2 и group1
kubectl set subject rolebinding admin --user=user1 --user=user2 --group=group1
Вывести результат (в формате YAML) обновления субъектов rolebinding из локального источника, не обращаясь к серверу
kubectl create rolebinding admin --role=admin --user=admin -o yaml --dry-run=client | kubectl set subject --local -f - --user=foo -o yaml
Обновить пользователя, группу или учётную запись службы в привязке роли или привязке роли кластера.
Использование
$ kubectl set subject (-f FILENAME | TYPE NAME) [--user=username] [--group=groupname] [--serviceaccount=namespace:serviceaccountname] [--dry-run=server|client|none]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all | false | Выбрать все ресурсы, включая неинициализированные, в пространстве имён указанных типов ресурсов | |
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то только вывести объект, который был бы отправлен, но не отправлять его. Если стратегия server, отправить запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-set | Имя менеджера, используемого для отслеживания владения полями. | |
| filename | f | [] | Имя файла, директория или URL-адрес файлов, содержащих ресурс для обновления субъектов |
| group | [] | Группы, которые нужно привязать к роли | |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| local | false | Если true, субъект не будет обращаться к api-серверу, а будет выполнен локально. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| recursive | R | false | Обработать директорию, используемую в -f, --filename рекурсивно. Полезно, когда необходимо управлять связанными манифестами, организованными в одной директории. |
| selector | l | Селектор (запрос по меткам) для фильтрации, не включая неинициализированные, поддерживает '=', '==', и '!=' (например, -l key1=value1,key2=value2) | |
| serviceaccount | [] | Учётные записи службы, которые нужно привязать к роли | |
| show-managed-fields | false | Если true, сохранить managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. |
wait
Подождать, пока pod "busybox1" будет содержать условие статуса типа "Ready"
kubectl wait --for=condition=Ready pod/busybox1
Значение условия статуса по умолчанию — true; можно установить в false
kubectl wait --for=condition=Ready=false pod/busybox1
Подождать удаления pod "busybox1" с таймаутом 60 сек после выполнения команды "delete"
kubectl delete pod/busybox1 kubectl wait --for=delete pod/busybox1 --timeout=60s
Экспериментально: Подождать выполнения определённого условия для одного или нескольких ресурсов.
Команда принимает несколько ресурсов и ждёт, пока указанное условие будет наблюдаться в поле Status каждого данного ресурса.
В качестве альтернативы, команда может подождать удаления заданного набора ресурсов, указав "delete" в качестве значения для флага --for.
Успешное сообщение будет выведено в стандартный вывод, показывая, когда указанное условие выполнено. Можно использовать опцию -o для изменения места вывода.
Использование
$ kubectl wait ([-f FILENAME] | resource.group/resource.name | resource.group [(-l label | --all)]) [--for=delete|--for condition=available]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all | false | Выбрать все ресурсы в пространстве имён указанных типов ресурсов | |
| all-namespaces | A | false | Если указано, вывести запрошенный(ые) объект(ы) по всем пространствам имён. Пространство имён в текущем контексте игнорируется, даже если указано с помощью --namespace. |
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| field-selector | Селектор (запрос по полям) для фильтрации, поддерживает '=', '==', и '!=' (например, --field-selector key1=value1,key2=value2). Сервер поддерживает ограниченное количество запросов по полям на тип. | ||
| filename | f | [] | Идентификация ресурса. |
| for | Условие ожидания: [delete|condition=имя-условия]. Значение условия статуса по умолчанию — true; можно установить в false с помощью condition=имя-условия=false | ||
| local | false | Если true, аннотация не будет обращаться к api-серверу, а будет выполнена локально. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| recursive | R | true | Обработать директорию, используемую в -f, --filename рекурсивно. Полезно, когда необходимо управлять связанными манифестами, организованными в одной директории. |
| selector | l | Селектор (запрос по меткам) для фильтрации, поддерживает '=', '==', и '!=' (например, -l key1=value1,key2=value2) | |
| show-managed-fields | false | Если true, сохранить managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| timeout | 30 сек | Время ожидания, прежде чем прекратить попытки. Ноль — проверка один раз без ожидания; отрицательное значение — ожидание неделю. |
РАБОТА С ПРИЛОЖЕНИЯМИ
В этом разделе содержатся команды для проверки и отладки ваших приложений.
-
logsбудет выводить логи из указанного pod + контейнера. -
execможно использовать для получения интерактивной оболочки в pod + контейнер. -
describeбудет выводить отладочную информацию об указанном ресурсе.
attach
Получить вывод от работающего pod mypod; использовать аннотацию 'kubectl.kubernetes.io/default-container' для выбора контейнера или будет выбран первый контейнер в pod
kubectl attach mypod
Получить вывод из ruby-container из pod mypod
kubectl attach mypod -c ruby-container
Переключиться в режим терминала; отправляет stdin в 'bash' в ruby-container из pod mypod # и отправляет stdout/stderr из 'bash' обратно на клиент
kubectl attach mypod -c ruby-container -i -t
Получить вывод из первого pod набора реплик под названием nginx
kubectl attach rs/nginx
Подключиться к процессу, уже запущенному внутри существующего контейнера.
Использование
$ kubectl attach (POD | TYPE/NAME) -c CONTAINER
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| container | c | Имя контейнера. Если опущено, используется аннотация kubectl.kubernetes.io/default-container для выбора контейнера или будет выбран первый контейнер в pod | |
| pod-running-timeout | 1 мин | Время ожидания (например, 5с, 2м или 3ч, больше нуля), до тех пор, пока не будет запущен хотя бы один pod | |
| quiet | q | false | Выводить только вывод из удалённой сессии |
| stdin | i | false | Передавать stdin в контейнер |
| tty | t | false | stdin — это TTY |
auth
Проверка авторизации
Использование
$ kubectl auth
can-i
Проверить возможность создания pod в любом namespace
kubectl auth can-i create pods --all-namespaces
Проверить возможность перечисления deployments в текущем namespace
kubectl auth can-i list deployments.apps
Проверить возможность выполнения всех операций в текущем namespace ("*" означает все)
kubectl auth can-i '*' '*'
Проверить возможность получения задания с именем "bar" в namespace "foo"
kubectl auth can-i list jobs.batch/bar -n foo
Проверить возможность чтения журналов pod
kubectl auth can-i get pods --subresource=log
Проверить доступ к URL /logs/
kubectl auth can-i get /logs/
Перечислить все разрешенные действия в namespace "foo"
kubectl auth can-i --list --namespace=foo
Проверить, разрешено ли действие.
VERB — это логический глагол API Kubernetes, такой как 'get', 'list', 'watch', 'delete' и т. д. TYPE — это ресурс Kubernetes. Псевдонимы и группы будут разрешены. NONRESOURCEURL — это частичный URL, начинающийся с "/". NAME — это имя конкретного ресурса Kubernetes.
Использование
$ kubectl auth can-i VERB [TYPE | TYPE/NAME | NONRESOURCEURL]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all-namespaces | A | false | Если true, проверяет указанное действие во всех пространствах имён. |
| list | false | Если true, выводит все разрешенные действия. | |
| no-headers | false | Если true, выводит разрешенные действия без заголовков | |
| quiet | q | false | Если true, подавляет вывод и возвращает только код выхода. |
| subresource | Подресурс, например pod/log или deployment/scale |
reconcile
Восстановить ресурсы RBAC из файла
kubectl auth reconcile -f my-rbac-rules.yaml
Восстанавливает правила для объектов RBAC role, role binding, cluster role и cluster role binding.
Отсутствующие объекты создаются, а содержащее пространство имён создаётся для объектов в пространстве имён, если это необходимо.
Существующие роли обновляются, чтобы включить разрешения в входных объектах, и удаляются лишние разрешения, если указан флаг --remove-extra-permissions.
Существующие привязки обновляются, чтобы включить субъекты в входных объектах, и удаляются лишние субъекты, если указан флаг --remove-extra-subjects.
Это предпочтительнее, чем 'apply' для ресурсов RBAC, чтобы обеспечить семантически осознанное объединение правил и субъектов.
Использование
$ kubectl auth reconcile -f FILENAME
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорирует любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, отображается только объект, который должен быть отправлен, без его отправки. Если стратегия server, отправляется запрос на стороне сервера без сохранения ресурса. | |
| filename | f | [] | Имя файла, каталог или URL файлов, определяющих ресурс для восстановления. |
| kustomize | k | Обработать каталог kustomization. Этот флаг не может использоваться совместно с -f или -R. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| recursive | R | false | Обработать каталог, используемый в -f, --filename рекурсивно. Полезно при управлении связанными манифестами, организованными в одном каталоге. |
| remove-extra-permissions | false | Если true, удаляет дополнительные разрешения, добавленные в роли. | |
| remove-extra-subjects | false | Если true, удаляет дополнительные субъекты, добавленные в привязки ролей. | |
| show-managed-fields | false | Если true, сохраняет managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. |
cp
!!!Важное примечание!!! # Требуется наличие двоичного файла 'tar' в вашем контейнере # image. Если 'tar' отсутствует, 'kubectl cp' завершится ошибкой. # # Для расширенных случаев использования, таких как символические ссылки, # подстановка по маске или сохранение режима файла, рассмотрите # использование 'kubectl exec'. # Скопировать локальный файл /tmp/foo в /tmp/bar в удалённый pod в namespace
tar cf - /tmp/foo | kubectl exec -i -n <some-namespace> <some-pod> -- tar xf - -C /tmp/bar
Скопировать /tmp/foo из удалённого pod в /tmp/bar локально
kubectl exec -n <some-namespace> <some-pod> -- tar cf - /tmp/foo | tar xf - -C /tmp/bar
Скопировать локальный каталог /tmp/foo_dir в /tmp/bar_dir в удалённый pod в пространстве имён по умолчанию
kubectl cp /tmp/foo_dir <some-pod>:/tmp/bar_dir
Скопировать локальный файл /tmp/foo в /tmp/bar в удалённый pod в определённом контейнере
kubectl cp /tmp/foo <some-pod>:/tmp/bar -c <specific-container>
Скопировать локальный файл /tmp/foo в /tmp/bar в удалённый pod в namespace
kubectl cp /tmp/foo <some-namespace>/<some-pod>:/tmp/bar
Скопировать /tmp/foo из удалённого pod в /tmp/bar локально
kubectl cp <some-namespace>/<some-pod>:/tmp/foo /tmp/bar
Копирование файлов и каталогов в контейнеры и из них.
Использование
$ kubectl cp <file-spec-src> <file-spec-dest>
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| container | c | Имя контейнера. Если опущено, используется аннотация kubectl.kubernetes.io/default-container для выбора контейнера для подключения, или будет выбран первый контейнер в pod. | |
| no-preserve | false | Владение и разрешения скопированного файла/каталога не сохраняются в контейнере |
describe
Описание узла
kubectl describe nodes kubernetes-node-emt8.c.myproject.internal
Описание pod
kubectl describe pods/nginx
Описание pod, определённого по типу и имени в "pod.json"
kubectl describe -f pod.json
Описание всех pod
kubectl describe pods
Описание pod по метке name=myLabel
kubectl describe po -l name=myLabel
Описание всех pod, управляемых контроллером репликации 'frontend' (созданные rc pod получают имя rc в качестве префикса в имени pod)
kubectl describe pods frontend
Отображение подробных данных о конкретном ресурсе или группе ресурсов.
Вывод подробного описания выбранных ресурсов, включая связанные ресурсы, такие как события или контроллеры. Вы можете выбрать один объект по имени, все объекты данного типа, указать префикс имени или селектор меток. Например:
$ kubectl describe TYPE NAME_PREFIX
сначала проверяется точное соответствие TYPE и NAME_PREFIX. Если такого ресурса нет, выводятся данные для каждого ресурса, имя которого начинается с NAME_PREFIX.
Используйте "kubectl api-resources" для получения полного списка поддерживаемых ресурсов.
Использование
$ kubectl describe (-f FILENAME | TYPE [NAME_PREFIX | -l label] | TYPE/NAME)
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all-namespaces | A | false | Если указано, список запрашиваемого объекта(ов) во всех пространствах имён. Пространство имён в текущем контексте игнорируется, даже если указано с помощью --namespace. |
| chunk-size | 500 | Возврат больших списков частями, а не все сразу. Передайте 0 для отключения. Этот флаг находится на стадии бета-тестирования и может быть изменён в будущем. | |
| filename | f | [] | Имя файла, каталог или URL-адрес файлов, содержащих ресурс для описания |
| kustomize | k | Обработать каталог kustomization. Этот флаг не может использоваться совместно с -f или -R. | |
| recursive | R | false | Обработать каталог, используемый в -f, --filename рекурсивно. Полезно при управлении связанными манифестами, организованными в одном каталоге. |
| selector | l | Селектор (запрос по меткам) для фильтрации, поддерживает '=', '==', и '!='.(например, -l key1=value1,key2=value2) | |
| show-events | true | Если true, отображает события, связанные с описываемым объектом. |
exec
Получить вывод от запуска команды 'date' из pod mypod, используя первый контейнер по умолчанию
kubectl exec mypod -- date
Получить вывод от запуска команды 'date' в контейнере ruby-container из pod mypod
kubectl exec mypod -c ruby-container -- date
Переключиться на режим терминала без буфера; отправляет stdin в 'bash' в контейнере ruby-container из pod mypod # и отправляет stdout/stderr из 'bash' обратно клиенту
kubectl exec mypod -c ruby-container -i -t -- bash -il
Перечислить содержимое /usr из первого контейнера pod mypod и отсортировать по времени изменения # Если у команды, которую вы хотите запустить в pod, есть общие флаги (например, -i), # вы должны использовать две дефисы (--) для разделения флагов/аргументов вашей команды # Также обратите внимание, не заключайте вашу команду и её флаги/аргументы в кавычки # если это не то, как вы её выполняете обычно (т.е. выполните ls -t /usr, а не "ls -t /usr")
kubectl exec mypod -i -t -- ls -t /usr
Получить вывод от запуска команды 'date' из первого pod развертывания mydeployment, используя первый контейнер по умолчанию
kubectl exec deploy/mydeployment -- date
Получить вывод от запуска команды 'date' из первого pod сервиса myservice, используя первый контейнер по умолчанию
kubectl exec svc/myservice -- date
Выполнение команды в контейнере.
Использование
$ kubectl exec (POD | TYPE/NAME) [-c CONTAINER] [flags] -- COMMAND [args...]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| container | c | Имя контейнера. Если опущено, используется аннотация kubectl.kubernetes.io/default-container для выбора контейнера для подключения, или выбирается первый контейнер в под. | |
| filename | f | [] | имя файла для выполнения exec в ресурс |
| pod-running-timeout | 1m0s | Время ожидания (например, 5с, 2м или 3ч, больше нуля), пока не запустится хотя бы один pod | |
| quiet | q | false | Выводить только вывод из удалённой сессии |
| stdin | i | false | Передать stdin контейнеру |
| tty | t | false | stdin — это TTY |
Журналы
Возвращает моментальный снимок логов из под nginx с одним контейнером
kubectl logs nginx
Возвращает моментальный снимок логов из под nginx с несколькими контейнерами
kubectl logs nginx --all-containers=true
Возвращает моментальный снимок логов из всех контейнеров в под, определённых меткой app=nginx
kubectl logs -l app=nginx --all-containers=true
Возвращает моментальный снимок логов завершённого контейнера ruby из под web-1
kubectl logs -p -c ruby web-1
Начинает потоковую передачу логов контейнера ruby в под web-1
kubectl logs -f -c ruby web-1
Начинает потоковую передачу логов из всех контейнеров в под, определённых меткой app=nginx
kubectl logs -f -l app=nginx --all-containers=true
Отображает только последние 20 строк вывода в под nginx
kubectl logs --tail=20 nginx
Отображает все логи из под nginx, созданные за последний час
kubectl logs --since=1h nginx
Отображает логи из kubelet с истекшим сертификатом обслуживания
kubectl logs --insecure-skip-tls-verify-backend nginx
Возвращает моментальный снимок логов из первого контейнера задания с именем hello
kubectl logs job/hello
Возвращает моментальный снимок логов из контейнера nginx-1 развертывания с именем nginx
kubectl logs deployment/nginx -c nginx-1
Выводит логи для контейнера в pod или указанном ресурсе. Если pod содержит только один контейнер, имя контейнера необязательно.
Использование
$ kubectl logs [-f] [-p] (POD | TYPE/NAME) [-c CONTAINER]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all-containers | false | Получить логи всех контейнеров в pod(ах). | |
| container | c | Вывести логи этого контейнера | |
| follow | f | false | Указать, должны ли логи передаваться в потоковом режиме. |
| ignore-errors | false | При просмотре/слежении за логами pod, разрешить любые возникающие ошибки как некритические | |
| insecure-skip-tls-verify-backend | false | Пропустить проверку подлинности kubelet, с которого запрашиваются логи. Теоретически, злоумышленник может вернуть неверный контент логов. Возможно, вам потребуется использовать это, если сертификаты обслуживания вашего kubelet истекли. | |
| limit-bytes | 0 | Максимальное количество байтов логов для возврата. По умолчанию без ограничения. | |
| max-log-requests | 5 | Указать максимальное количество одновременных логов для слежения при использовании селектора. По умолчанию 5. | |
| pod-running-timeout | 20s | Время ожидания (например, 5с, 2м или 3ч, больше нуля), пока не запустится хотя бы один pod | |
| prefix | false | Добавить префикс к каждой строке лога с источником лога (имя pod и имя контейнера) | |
| previous | p | false | Если true, выводит логи предыдущего экземпляра контейнера в pod, если он существует. |
| selector | l | Селектор (запрос по меткам) для фильтрации. | |
| since | 0s | Возвращать только логи, которые созданы позже заданной относительной длительности, например, 5с, 2м или 3ч. По умолчанию все логи. Можно использовать только один из since-time / since. | |
| since-time | Возвращать только логи после определённой даты (RFC3339). По умолчанию все логи. Можно использовать только один из since-time / since. | ||
| tail | -1 | Строки последнего файла журнала для отображения. По умолчанию -1 без селектора, показывая все строки логов, в противном случае 10, если задан селектор. | |
| timestamps | false | Включать отметки времени в каждой строке лога |
Перенаправление портов
Прослушивать порты 5000 и 6000 локально, перенаправляя данные к/от портов 5000 и 6000 в pod
kubectl port-forward pod/mypod 5000 6000
Прослушивать порты 5000 и 6000 локально, перенаправляя данные к/от портов 5000 и 6000 в под, выбранном по развертыванию
kubectl port-forward deployment/mydeployment 5000 6000
Прослушивать порт 8443 локально, перенаправляя к targetPort порта сервиса с именем "https" в pod, выбранном по сервису
kubectl port-forward service/myservice 8443:https
Прослушивать порт 8888 локально, перенаправляя к 5000 в pod
kubectl port-forward pod/mypod 8888:5000
Прослушивать порт 8888 на всех адресах, перенаправляя к 5000 в pod
kubectl port-forward --address 0.0.0.0 pod/mypod 8888:5000
Прослушивать порт 8888 на localhost и выбранном IP, перенаправляя к 5000 в pod
kubectl port-forward --address localhost,10.19.21.23 pod/mypod 8888:5000
Прослушивать случайный порт локально, перенаправляя к 5000 в pod
kubectl port-forward pod/mypod :5000
Перенаправлять один или несколько локальных портов в pod.
Используйте тип/имя ресурса, например, deployment/mydeployment, для выбора pod. Тип ресурса по умолчанию — 'pod', если он опушен.
Если найдено несколько pod, соответствующих критериям, pod будет выбран автоматически. Сессия перенаправления завершается при завершении выбранного pod, и для возобновления перенаправления требуется повторный запуск команды.
Использование
$ kubectl port-forward TYPE/NAME [options] [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| address | [localhost] | Адреса для прослушивания (через запятую). Принимает только IP-адреса или localhost. Если указан localhost, kubectl попытается привязаться как к 127.0.0.1, так и к ::1 и завершится неудачно, если ни один из этих адресов недоступен для привязки. | |
| pod-running-timeout | 1m0s | Время ожидания (например, 5с, 2м или 3ч, больше нуля), пока не запустится хотя бы один pod |
Прокси
Для проксирования всего API Kubernetes и ничего больше
kubectl proxy --api-prefix=/
Для проксирования только части API Kubernetes и также некоторых статических файлов # Вы можете получить информацию о под с помощью 'curl localhost:8001/api/v1/pods'
kubectl proxy --www=/my/files --www-prefix=/static/ --api-prefix=/api/
Для проксирования всего API Kubernetes по другому корню # Вы можете получить информацию о pod с помощью 'curl localhost:8001/custom/api/v1/pods'
kubectl proxy --api-prefix=/custom/
Запустить прокси к серверу API Kubernetes на порту 8011, обслуживая статический контент из ./local/www/
kubectl proxy --port=8011 --www=./local/www/
Запустить прокси к серверу API Kubernetes на произвольном локальном порту # Выбранный порт сервера будет выведен в стандартный вывод
kubectl proxy --port=0
Запустить прокси к серверу API Kubernetes, изменив префикс API на k8s-api # Это делает, например, API pods доступным по адресу localhost:8001/k8s-api/v1/pods/
kubectl proxy --api-prefix=/k8s-api
Создаёт прокси-сервер или шлюз прикладного уровня между localhost и сервером API Kubernetes. Также позволяет обслуживать статический контент по указанному пути HTTP. Все входящие данные поступают через один порт и передаются удалённому серверу API Kubernetes, за исключением пути, соответствующего пути статического контента.
Использование
$ kubectl proxy [--port=PORT] [--www=static-dir] [--www-prefix=prefix] [--api-prefix=prefix]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| accept-hosts | ^localhost$,^127.0.0.1$,^[::1]$ | Регулярное выражение для хостов, которые должен принимать прокси. | |
| accept-paths | ^.* | Регулярное выражение для путей, которые должен принимать прокси. | |
| address | 127.0.0.1 | IP-адрес, на котором будет обслуживаться прокси. | |
| api-prefix | / | Префикс для обслуживания проксируемого API. | |
| disable-filter | false | Если true, отключить фильтрацию запросов в прокси. Это опасно и может оставить вас уязвимыми к атакам XSRF, когда используется с доступным портом. | |
| keepalive | 0s | keepalive задаёт период ожидания keep-alive для активного сетевого соединения. Установите в 0, чтобы отключить keepalive. | |
| port | p | 8001 | Порт, на котором будет запущен прокси. Установите в 0, чтобы выбрать случайный порт. |
| reject-methods | ^$ | Регулярное выражение для HTTP-методов, которые прокси должен отклонять (пример --reject-methods='POST,PUT,PATCH'). | |
| reject-paths | ^/api/.*/pods/.*/exec,^/api/.*/pods/.*/attach | Регулярное выражение для путей, которые прокси должен отклонять. Указанные здесь пути будут отклоняться, даже если они принимаются --accept-paths. | |
| unix-socket | u | Unix-сокет, на котором будет запущен прокси. | |
| www | w | Также обслуживать статические файлы из указанной директории по указанному префиксу. | |
| www-prefix | P | /static/ | Префикс для обслуживания статических файлов, если указана директория статических файлов. |
top
Отображает использование ресурсов (CPU/память).
Команда top позволяет просмотреть потребление ресурсов для узлов или pod.
Для работы этой команды требуется, чтобы сервер был правильно настроен и работал Metrics Server.
Использование
$ kubectl top
узел
Показать метрики для всех узлов
kubectl top node
Показать метрики для данного узла
kubectl top node NODE_NAME
Отображает использование ресурсов (CPU/память) узлов.
Команда top-node позволяет просмотреть потребление ресурсов узлов.
Использование
$ kubectl top node [NAME | -l label]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| no-headers | false | Если присутствует, выводит вывод без заголовков | |
| selector | l | Селектор (запрос по меткам) для фильтрации, поддерживает '=', '==', и '!='.(например, -l key1=value1,key2=value2) | |
| sort-by | Если не пусто, сортирует список узлов по указанному полю. Поле может быть 'cpu' или 'memory'. | ||
| use-protocol-buffers | true | Включает использование protocol-buffers для доступа к API метрик. |
pod
Показать метрики для всех pod в пространстве имен по умолчанию
kubectl top pod
Показать метрики для всех pod в заданном пространстве имен
kubectl top pod --namespace=NAMESPACE
Показать метрики для заданного pod и его контейнеров
kubectl top pod POD_NAME --containers
Показать метрики для pod, определённых меткой name=myLabel
kubectl top pod -l name=myLabel
Отображение использования ресурсов (CPU/памяти) pod.
Команда 'top pod' позволяет увидеть потребление ресурсов pod.
Из-за задержки в обработке метрик, они могут быть недоступны в течение нескольких минут после создания pod.
Использование
$ kubectl top pod [NAME | -l label]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all-namespaces | A | false | Если присутствует, отображает запрашиваемые объекты во всех пространствах имён. Пространство имён в текущем контексте игнорируется, даже если указано с помощью --namespace. |
| containers | false | Если присутствует, выводит использование контейнеров внутри pod. | |
| field-selector | Селектор (поисковый запрос по полям) для фильтрации, поддерживает '=', '==', и '!='.(например, --field-selector key1=value1,key2=value2). Сервер поддерживает ограниченное количество поисковых запросов по полям для каждого типа. | ||
| no-headers | false | Если присутствует, выводит вывод без заголовков. | |
| selector | l | Селектор (запрос по меткам) для фильтрации, поддерживает '=', '==', и '!='.(например, -l key1=value1,key2=value2) | |
| sort-by | Если не пусто, сортирует список pod по указанному полю. Поле может быть 'cpu' или 'memory'. | ||
| use-protocol-buffers | true | Включает использование protocol-buffers для доступа к API метрик. |
УПРАВЛЕНИЕ КЛАСТЕРОМ
api-versions
Вывести поддерживаемые версии API
kubectl api-versions
Вывести поддерживаемые версии API на сервере в формате "группа/версия".
Использование
$ kubectl api-versions
certificate
Изменение ресурсов сертификатов.
Использование
$ kubectl certificate SUBCOMMAND
approve
Одобрить CSR 'csr-sqgzp'
kubectl certificate approve csr-sqgzp
Одобрить запрос на выдачу сертификата.
kubectl certificate approve позволяет администратору кластера одобрить запрос на выдачу сертификата (CSR). Это действие указывает контроллеру выдачи сертификатов на выдачу сертификата запросившему с атрибутами, указанными в CSR.
УВЕДОМЛЕНИЕ О БЕЗОПАСНОСТИ: В зависимости от запрашиваемых атрибутов, выданный сертификат может предоставить запросившему доступ к ресурсам кластера или аутентификацию как запрошенной личности. Перед одобрением CSR убедитесь, что вы понимаете, что может сделать подписанный сертификат.
Использование
$ kubectl certificate approve (-f FILENAME | NAME)
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствует в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| filename | f | [] | Имя файла, директория или URL файлов, идентифицирующих ресурс для обновления |
| force | false | Обновить CSR, даже если он уже одобрен. | |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| recursive | R | false | Рекурсивно обработать директорию, используемую в -f, --filename. Полезно при управлении связанными манифестами, организованными в одной директории. |
| show-managed-fields | false | Если true, сохранить managedFields при печати объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. |
deny
Отклонить CSR 'csr-sqgzp'
kubectl certificate deny csr-sqgzp
Отклонить запрос на выдачу сертификата.
kubectl certificate deny позволяет администратору кластера отклонить запрос на выдачу сертификата (CSR). Это действие указывает контроллеру выдачи сертификатов на отказ в выдаче сертификата запросившему.
Использование
$ kubectl certificate deny (-f FILENAME | NAME)
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствует в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| filename | f | [] | Имя файла, директория или URL файлов, идентифицирующих ресурс для обновления |
| force | false | Обновить CSR, даже если он уже отклонен. | |
| kustomize | k | Обработать директорию kustomization. Этот флаг нельзя использовать вместе с -f или -R. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| recursive | R | false | Рекурсивно обработать директорию, используемую в -f, --filename. Полезно при управлении связанными манифестами, организованными в одной директории. |
| show-managed-fields | false | Если true, сохранить managedFields при печати объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. |
cluster-info
Вывести адрес контрольной плоскости и сервисов кластера
kubectl cluster-info
Отобразить адреса контрольной плоскости и сервисов с меткой kubernetes.io/cluster-service=true. Для дальнейшей отладки и диагностики проблем с кластером используйте 'kubectl cluster-info dump'.
Использование
$ kubectl cluster-info
dump
Вывести текущее состояние кластера в стандартный вывод
kubectl cluster-info dump
Вывести текущее состояние кластера в /path/to/cluster-state
kubectl cluster-info dump --output-directory=/path/to/cluster-state
Вывести все пространства имён в стандартный вывод
kubectl cluster-info dump --all-namespaces
Вывести набор пространств имен в /path/to/cluster-state
kubectl cluster-info dump --namespaces default,kube-system --output-directory=/path/to/cluster-state
Выводит информацию о кластере, подходящую для отладки и диагностики проблем. По умолчанию, выводит всё в стандартный вывод. Вы можете указать директорию с помощью флага --output-directory. Если вы укажете директорию, Kubernetes создаст набор файлов в этой директории. По умолчанию выводится только информация из текущего пространства имён и пространства имён 'kube-system', но вы можете переключиться на другое пространство имён с помощью флага --namespaces или указать --all-namespaces для вывода всех пространств имен.
Команда также выводит логи всех pod в кластере; эти логи выводятся в разные директории, в зависимости от пространства имён и имени pod.
Использование
$ kubectl cluster-info dump
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all-namespaces | A | false | Если true, выводит все пространства имён. Если true, --namespaces игнорируется. |
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствует в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| namespaces | [] | Список пространств имён, разделённых запятыми, для вывода. | |
| output | o | json | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. |
| output-directory | Куда выводить файлы. Если пусто или '-', используется стандартный вывод, иначе создаёт иерархию директорий в этой директории. | ||
| pod-running-timeout | 20s | Время ожидания (например, 5s, 2m или 3h, больше нуля) до запуска хотя бы одного pod | |
| show-managed-fields | false | Если true, сохранить managedFields при печати объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. |
cordon
Отметить узел "foo" как нераспределяемый
kubectl cordon foo
Отметить узел как нераспределяемый.
Использование
$ kubectl cordon NODE
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то будет выведен только объект, который должен быть отправлен, без его отправки. Если стратегия server, то будет отправлен запрос на стороне сервера без сохранения ресурса. | |
| selector | l | Селектор (запрос по меткам) для фильтрации |
drain
Удаление узла "foo", даже если на нём есть поды, не управляемые контроллером репликации, набором реплик, заданием, набором демонов или набором состояний.
kubectl drain foo --force
Как выше, но прерывается, если есть поды, не управляемые контроллером репликации, набором реплик, заданием, набором демонов или набором состояний, и используется период благополучного завершения 15 минут.
kubectl drain foo --grace-period=900
Удаление узла в подготовке к техническому обслуживанию.
Указанный узел будет помечен как нераспределяемый, чтобы предотвратить появление новых подов. Команда 'drain' удаляет поды, если сервер API поддерживает https://kubernetes.io/docs/concepts/workloads/pods/disruptions/ . В противном случае будет использоваться обычное удаление DELETE. Команда 'drain' удаляет или вытесняет все поды, кроме зеркальных подов (которые не могут быть удалены через сервер API). Если существуют поды, управляемые набором демонов, drain не будет продолжаться без флага --ignore-daemonsets, и независимо от этого не удалит никакие поды, управляемые набором демонов, так как эти поды немедленно будут заменены контроллером набора демонов, который игнорирует пометки о нераспределяемости. Если есть какие-либо поды, которые не являются ни зеркальными, ни управляемыми контроллером репликации, набором реплик, набором демонов, набором состояний или заданием, то drain не будет удалять поды, если не использовать флаг --force. --force также позволит продолжить удаление, если управляющий ресурс одного или нескольких подов отсутствует.
'drain' ожидает благополучного завершения. Не следует работать с машиной до завершения команды.
Когда вы готовы вернуть узел в службу, используйте kubectl uncordon, который сделает узел снова распределяемым.
https://kubernetes.io/images/docs/kubectl_drain.svg
Использование
$ kubectl drain NODE
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| chunk-size | 500 | Возвращает большие списки частями, а не все сразу. Передайте 0, чтобы отключить. Этот флаг находится в стадии бета-тестирования и может быть изменён в будущем. | |
| delete-emptydir-data | false | Продолжает работу, даже если есть поды, использующие emptyDir (локальные данные, которые будут удалены при удалении узла). | |
| delete-local-data | false | Продолжает работу, даже если есть поды, использующие emptyDir (локальные данные, которые будут удалены при удалении узла). | |
| disable-eviction | false | Принудительно заставляет drain использовать удаление, даже если вытеснение поддерживается. Это обойдёт проверку PodDisruptionBudgets, используйте с осторожностью. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то будет выведен только объект, который должен быть отправлен, без его отправки. Если стратегия server, то будет отправлен запрос на стороне сервера без сохранения ресурса. | |
| force | false | Продолжает работу, даже если есть поды, не управляемые ReplicationController, ReplicaSet, Job, DaemonSet или StatefulSet. | |
| grace-period | -1 | Время в секундах, предоставляемое каждому поду для благополучного завершения. Если отрицательное, используется значение по умолчанию, указанное в поду. | |
| ignore-daemonsets | false | Игнорировать поды, управляемые DaemonSet. | |
| ignore-errors | false | Игнорировать ошибки, возникшие между удалением узлов в группе. | |
| pod-selector | Селектор меток для фильтрации подов на узле | ||
| selector | l | Селектор (запрос по меткам) для фильтрации | |
| skip-wait-for-delete-timeout | 0 | Если метка удаления подо старше N секунд, пропустить ожидание подо. Секунды должны быть больше 0 для пропуска. | |
| timeout | 0s | Время ожидания, прежде чем отказаться. Ноль означает бесконечно. |
taint
Обновить узел 'foo' с пометкой с ключом 'dedicated' и значением 'special-user' и эффектом 'NoSchedule' # Если пометка с таким ключом и эффектом уже существует, её значение заменяется, как указано.
kubectl taint nodes foo dedicated=special-user:NoSchedule
Удалить с узла 'foo' пометку с ключом 'dedicated' и эффектом 'NoSchedule', если она существует.
kubectl taint nodes foo dedicated:NoSchedule-
Удалить с узла 'foo' все пометки с ключом 'dedicated'.
kubectl taint nodes foo dedicated-
Добавить пометку с ключом 'dedicated' на узлы, имеющие метку mylabel=X.
kubectl taint node -l myLabel=X dedicated=foo:PreferNoSchedule
Добавить узлу 'foo' пометку с ключом 'bar' и без значения.
kubectl taint nodes foo bar:NoSchedule
Обновление пометок на одном или нескольких узлах.
- Пометка состоит из ключа, значения и эффекта. В качестве аргумента она выражается как key=value:effect.
- Ключ должен начинаться с буквы или цифры и может содержать буквы, цифры, дефисы, точки и подчёркивания, до 253 символов.
- Ключ может начинаться с префикса доменного имени и одиночного '/', например example.com/my-app.
- Значение необязательно. Если указано, оно должно начинаться с буквы или цифры и может содержать буквы, цифры, дефисы, точки и подчёркивания, до 63 символов.
- Эффект должен быть NoSchedule, PreferNoSchedule или NoExecute.
- В настоящее время пометки могут применяться только к узлам.
Использование
$ kubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| all | false | Выбрать все узлы в кластере | |
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда отсутствует поле или ключ карты в шаблоне. Применяется только к форматам вывода golang и jsonpath. | |
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то будет выведен только объект, который должен быть отправлен, без его отправки. Если стратегия server, то будет отправлен запрос на стороне сервера без сохранения ресурса. | |
| field-manager | kubectl-taint | Имя менеджера, используемого для отслеживания владения полями. | |
| output | o | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. | |
| overwrite | false | Если true, разрешить перезапись пометок, в противном случае отклонять обновления пометок, которые перезаписывают существующие пометки. | |
| selector | l | Селектор (запрос по меткам) для фильтрации, поддерживает '=', '==', и '!=' (например, -l key1=value1,key2=value2). | |
| show-managed-fields | false | Если true, сохранить managedFields при выводе объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. | ||
| validate | true | Если true, использовать схему для проверки входных данных перед отправкой |
uncordon
Пометить узел "foo" как распределяемый.
kubectl uncordon foo
Пометить узел как распределяемый.
Использование
$ kubectl uncordon NODE
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| dry-run | none | Должно быть "none", "server" или "client". Если стратегия client, то будет выведен только объект, который должен быть отправлен, без его отправки. Если стратегия server, то будет отправлен запрос на стороне сервера без сохранения ресурса. | |
| selector | l | Селектор (запрос по меткам) для фильтрации |
НАСТРОЙКИ И ИСПОЛЬЗОВАНИЕ KUBECTL
alpha
Эти команды соответствуют функциям альфа-версии, которые по умолчанию не включены в кластерах Kubernetes.
Использование
$ kubectl alpha
api-resources
Вывести поддерживаемые API-ресурсы.
kubectl api-resources
Вывести поддерживаемые API-ресурсы с дополнительной информацией.
kubectl api-resources -o wide
Вывести поддерживаемые API-ресурсы, отсортированные по столбцу.
kubectl api-resources --sort-by=name
Вывести поддерживаемые именованные ресурсы.
kubectl api-resources --namespaced=true
Вывести поддерживаемые неименованные ресурсы.
kubectl api-resources --namespaced=false
Вывести поддерживаемые API-ресурсы с указанным APIGroup.
kubectl api-resources --api-group=extensions
Выводит поддерживаемые API-ресурсы на сервере.
Использование
$ kubectl api-resources
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| api-group | Ограничение до ресурсов в указанной группе API. | ||
| cached | false | Использовать кэшированный список ресурсов, если он доступен. | |
| namespaced | true | Если false, будут возвращены неименованные ресурсы, в противном случае по умолчанию возвращаются именованные ресурсы. | |
| no-headers | false | При использовании формата вывода по умолчанию или пользовательского формата вывода, не выводить заголовки (по умолчанию выводить заголовки). | |
| output | o | Формат вывода. Один из: wide|name. | |
| sort-by | Если не пусто, сортировать список ресурсов по указанному полю. Поле может быть 'name' или 'kind'. | ||
| verbs | [] | Ограничение до ресурсов, поддерживающих указанные глаголы. |
completion
Установка bash-completion на macOS с помощью homebrew ## Если используется Bash 3.2, включенный в macOS
brew install bash-completion
или, если используется Bash 4.1+
brew install bash-completion@2
Если kubectl установлен через homebrew, это должно заработать сразу. ## Если вы установили его другими средствами, вам может потребоваться добавить завершение в ваш каталог завершения.
kubectl completion bash > $(brew --prefix)/etc/bash_completion.d/kubectl
Установка завершения bash на Linux ## Если bash-completion не установлен на Linux, установите пакет 'bash-completion' ## через менеджер пакетов вашей дистрибуции. ## Загрузите код завершения kubectl для bash в текущую оболочку.
source <(kubectl completion bash)
Запишите код завершения bash в файл и обратитесь к нему из .bash_profile
kubectl completion bash > ~/.kube/completion.bash.inc printf "
Завершение оболочки kubectl
source '$HOME/.kube/completion.bash.inc' " >> $HOME/.bash_profile source $HOME/.bash_profile
Загрузить код завершения kubectl для zsh[1] в текущую оболочку
source <(kubectl completion zsh)
Установите код завершения kubectl для zsh[1] для автоматической загрузки при запуске
kubectl completion zsh > "${fpath[1]}/_kubectl" Вывод кода завершения оболочки для указанной оболочки (bash или zsh). Код оболочки должен быть оценен для предоставления интерактивного завершения команд kubectl. Это можно сделать, обратившись к нему из .bash_profile.
Подробные инструкции по выполнению этого действия доступны здесь:
для macOS: https://kubernetes.io/docs/tasks/tools/install-kubectl-macos/#enable-shell-autocompletion
для Linux: https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/#enable-shell-autocompletion
для Windows: https://kubernetes.io/docs/tasks/tools/install-kubectl-windows/#enable-shell-autocompletion
Примечание для пользователей zsh: [1] Завершения zsh поддерживаются только в версиях zsh >= 5.2.
Использование
$ kubectl completion SHELL
config
Измените файлы kubeconfig с помощью подкоманд, таких как "kubectl config set current-context my-context"
Порядок загрузки подчиняется этим правилам:
- Если установлен флаг --kubeconfig, то загружается только этот файл. Флаг может быть установлен только один раз, и никакой слияния не происходит.
- Если установлена переменная окружения $KUBECONFIG, то она используется как список путей (обычные правила разграничения путей для вашей системы). Эти пути объединяются. Когда значение изменяется, оно изменяется в файле, который определяет строку. Когда значение создаётся, оно создаётся в первом файле, который существует. Если ни один файл в цепочке не существует, то он создаёт последний файл в списке.
- В противном случае используется ${HOME}/.kube/config, и никакого слияния не происходит.
Использование
$ kubectl config SUBCOMMAND
current-context
Отобразить текущий контекст
kubectl config current-context
Отобразить текущий контекст.
Использование
$ kubectl config current-context
delete-cluster
Удалить кластер minikube
kubectl config delete-cluster minikube
Удалить указанный кластер из kubeconfig.
Использование
$ kubectl config delete-cluster NAME
delete-context
Удалить контекст для кластера minikube
kubectl config delete-context minikube
Удалить указанный контекст из kubeconfig.
Использование
$ kubectl config delete-context NAME
delete-user
Удалить пользователя minikube
kubectl config delete-user minikube
Удалить указанного пользователя из kubeconfig.
Использование
$ kubectl config delete-user NAME
get-clusters
Список кластеров, о которых известно kubectl
kubectl config get-clusters
Отобразить кластеры, определённые в kubeconfig.
Использование
$ kubectl config get-clusters
get-contexts
Список всех контекстов в вашем файле kubeconfig
kubectl config get-contexts
Описание одного контекста в вашем файле kubeconfig
kubectl config get-contexts my-context
Отобразить один или несколько контекстов из файла kubeconfig.
Использование
$ kubectl config get-contexts [(-o|--output=)name)]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| no-headers | false | При использовании формата вывода по умолчанию или пользовательского формата столбцов, не выводить заголовки (по умолчанию выводить заголовки). | |
| output | o | Формат вывода. Один из: имя |
get-users
Список пользователей, о которых известно kubectl
kubectl config get-users
Отобразить пользователей, определённых в kubeconfig.
Использование
$ kubectl config get-users
rename-context
Переименовать контекст 'old-name' в 'new-name' в вашем файле kubeconfig
kubectl config rename-context old-name new-name
Переименовывает контекст из файла kubeconfig.
CONTEXT_NAME - это имя контекста, которое вы хотите изменить.
NEW_NAME - это новое имя, которое вы хотите установить.
Примечание: если переименовываемый контекст является текущим контекстом ('current-context'), это поле также будет обновлено.
Использование
$ kubectl config rename-context CONTEXT_NAME NEW_NAME
set
Установить поле server в кластере my-cluster на https://1.2.3.4
kubectl config set clusters.my-cluster.server https://1.2.3.4
Установить поле certificate-authority-data в кластере my-cluster
kubectl config set clusters.my-cluster.certificate-authority-data $(echo "cert_data_here" | base64 -i -)
Установить поле cluster в контексте my-context на my-cluster
kubectl config set contexts.my-context.cluster my-cluster
Установить поле client-key-data у пользователя cluster-admin с использованием опции --set-raw-bytes
kubectl config set users.cluster-admin.client-key-data cert_data_here --set-raw-bytes=true
Установить индивидуальное значение в файле kubeconfig.
PROPERTY_NAME - это имя с точкой, где каждый токен представляет либо имя атрибута, либо ключ карты. Ключи карт не могут содержать точки.
PROPERTY_VALUE - это новое значение, которое вы хотите установить. Бинарные поля, такие как 'certificate-authority-data', ожидают строку в кодировке base64, если не используется флаг --set-raw-bytes.
Указание имени атрибута, которое уже существует, объединит новые поля поверх существующих значений.
Использование
$ kubectl config set PROPERTY_NAME PROPERTY_VALUE
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| set-raw-bytes | false | При записи []байтового PROPERTY_VALUE, записывать заданную строку непосредственно без декодирования base64. |
set-cluster
Установить только поле server в записи кластера e2e без изменения других значений
kubectl config set-cluster e2e --server=https://1.2.3.4
Встроить данные сертификата авторизации для записи кластера e2e
kubectl config set-cluster e2e --embed-certs --certificate-authority=~/.kube/e2e/kubernetes.ca.crt
Отключить проверку сертификатов для записи кластера dev
kubectl config set-cluster e2e --insecure-skip-tls-verify=true
Установить пользовательское имя сервера TLS для валидации для записи кластера e2e
kubectl config set-cluster e2e --tls-server-name=my-cluster-name
Установить запись кластера в kubeconfig.
Указание имени, которое уже существует, объединит новые поля поверх существующих значений для этих полей.
Использование
$ kubectl config set-cluster NAME [--server=server] [--certificate-authority=path/to/certificate/authority] [--insecure-skip-tls-verify=true] [--tls-server-name=example.com]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| embed-certs | false | embed-certs для записи кластера в kubeconfig |
set-context
Установить поле user в записи контекста gce без изменения других значений
kubectl config set-context gce --user=cluster-admin
Установить запись контекста в kubeconfig.
Указание имени, которое уже существует, объединит новые поля поверх существующих значений для этих полей.
Использование
$ kubectl config set-context [NAME | --current] [--cluster=cluster_nickname] [--user=user_nickname] [--namespace=namespace]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| current | false | Изменить текущий контекст |
set-credentials
Установить только поле "client-key" в записи "cluster-admin" # без изменения других значений
kubectl config set-credentials cluster-admin --client-key=~/.kube/admin.key
Установить аутентификацию по базовым данным для записи "cluster-admin"
kubectl config set-credentials cluster-admin --username=admin --password=uXFGweU9l35qcif
Встроить данные клиентского сертификата в запись "cluster-admin"
kubectl config set-credentials cluster-admin --client-certificate=~/.kube/admin.crt --embed-certs=true
Включить поставщик аутентификации Google Compute Platform для записи "cluster-admin"
kubectl config set-credentials cluster-admin --auth-provider=gcp
Включить поставщик аутентификации OpenID Connect для записи "cluster-admin" с дополнительными аргументами
kubectl config set-credentials cluster-admin --auth-provider=oidc --auth-provider-arg=client-id=foo --auth-provider-arg=client-secret=bar
Удалить конфигурационное значение "client-secret" для поставщика аутентификации OpenID Connect для записи "cluster-admin"
kubectl config set-credentials cluster-admin --auth-provider=oidc --auth-provider-arg=client-secret-
Включить новый плагин аутентификации exec для записи "cluster-admin"
kubectl config set-credentials cluster-admin --exec-command=/path/to/the/executable --exec-api-version=client.authentication.k8s.io/v1beta1
Определить новые аргументы плагина аутентификации exec для записи "cluster-admin"
kubectl config set-credentials cluster-admin --exec-arg=arg1 --exec-arg=arg2
Создать или обновить переменные среды плагина аутентификации exec для записи "cluster-admin"
kubectl config set-credentials cluster-admin --exec-env=key1=val1 --exec-env=key2=val2
Удалить переменные среды плагина аутентификации exec для записи "cluster-admin"
kubectl config set-credentials cluster-admin --exec-env=var-to-remove-
Установить запись пользователя в kubeconfig.
Указание имени, которое уже существует, объединит новые поля поверх существующих значений.
Флаги клиентского сертификата: --client-certificate=certfile --client-key=keyfile
Флаги токена Bearer: --token=bearer_token
Флаги аутентификации по базовым данным: --username=basic_user --password=basic_password
Токен Bearer и аутентификация по базовым данным взаимоисключающие.
Использование
$ kubectl config set-credentials NAME [--client-certificate=path/to/certfile] [--client-key=path/to/keyfile] [--token=bearer_token] [--username=basic_user] [--password=basic_password] [--auth-provider=provider_name] [--auth-provider-arg=key=value] [--exec-command=exec_command] [--exec-api-version=exec_api_version] [--exec-arg=arg] [--exec-env=key=value]
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| auth-provider | Провайдер аутентификации для записи пользователя в kubeconfig | ||
| auth-provider-arg | [] | Аргументы 'ключ=значение' для провайдера аутентификации | |
| embed-certs | false | Встраивать сертификат/ключ клиента для записи пользователя в kubeconfig | |
| exec-api-version | Версия API плагина exec-credential для записи пользователя в kubeconfig | ||
| exec-arg | [] | Новые аргументы для команды плагина exec-credential для записи пользователя в kubeconfig | |
| exec-command | Команда для плагина exec-credential для записи пользователя в kubeconfig | ||
| exec-env | [] | Переменные окружения 'ключ=значение' для плагина exec-credential |
unset
Сбросить текущий контекст
kubectl config unset current-context
Сбросить пространство имен в контексте foo
kubectl config unset contexts.foo.namespace
Сбросить отдельное значение в файле kubeconfig.
Имя_СВОЙСТВА — это имя, разделенное точками, где каждый токен представляет либо имя атрибута, либо ключ карты. Ключи карт не могут содержать точки.
Использование
$ kubectl config unset PROPERTY_NAME
use-context
Использовать контекст для кластера minikube
kubectl config use-context minikube
Установить текущий контекст в файле kubeconfig.
Использование
$ kubectl config use-context CONTEXT_NAME
view
Показать объединённые настройки kubeconfig
kubectl config view
Показать объединённые настройки kubeconfig и необработанные данные сертификатов
kubectl config view --raw
Получить пароль для пользователя e2e
kubectl config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}' Отобразить объединённые настройки kubeconfig или указанный файл kubeconfig.
Можно использовать --output jsonpath={...} для извлечения определённых значений с помощью выражения jsonpath.
Использование
$ kubectl config view
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| allow-missing-template-keys | true | Если true, игнорировать любые ошибки в шаблонах, когда поле или ключ карты отсутствуют в шаблоне. Применимо только к форматам вывода golang и jsonpath. | |
| flatten | false | Распаковать результирующий файл kubeconfig в автономный вывод (полезно для создания переносимых файлов kubeconfig) | |
| merge | true | Объединить всю иерархию файлов kubeconfig | |
| minify | false | Удалить всю информацию, не используемую текущим контекстом, из вывода | |
| output | o | yaml | Формат вывода. Один из: json|yaml|name|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file. |
| raw | false | Отобразить необработанные данные байтов | |
| show-managed-fields | false | Если true, сохранить managedFields при печати объектов в формате JSON или YAML. | |
| template | Строка шаблона или путь к файлу шаблона для использования при -o=go-template, -o=go-template-file. Формат шаблона — шаблоны golang [http://golang.org/pkg/text/template/#pkg-overview]. |
explain
Получить документацию ресурса и его полей
kubectl explain pods
Получить документацию конкретного поля ресурса
kubectl explain pods.spec.containers
Отобразить поля для поддерживаемых ресурсов.
Эта команда описывает поля, связанные с каждым поддерживаемым API-ресурсом. Поля идентифицируются с помощью простого идентификатора JSONPath:
<тип>.<имя_поля>[.<имя_поля>]
Добавьте флаг --recursive, чтобы отобразить все поля сразу без описаний. Информация о каждом поле извлекается с сервера в формате OpenAPI.
Используйте "kubectl api-resources" для получения полного списка поддерживаемых ресурсов.
Использование
$ kubectl explain RESOURCE
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| api-version | Получить различные объяснения для конкретной версии API (группа/версия API) | ||
| recursive | false | Вывести поля полей (в настоящее время только на 1 уровень вглубь) |
options
Вывести флаги, унаследованные всеми командами
kubectl options
Вывести список флагов, унаследованных всеми командами
Использование
$ kubectl options
plugin
Предоставляет утилиты для взаимодействия с плагинами.
Плагины обеспечивают расширенную функциональность, которая не входит в основное распространение командной строки. Обратитесь к документации и примерам для получения дополнительной информации о написании собственных плагинов.
Самый простой способ обнаружить и установить плагины — через подпроект kubernetes krew. Чтобы установить krew, посетите https://krew.sigs.k8s.io/docs/user-guide/setup/install/
Использование
$ kubectl plugin [flags]
list
Отобразить все доступные файлы плагинов в PATH пользователя.
Доступные файлы плагинов — это те, которые: - исполняемые - находятся в любом месте в PATH пользователя - начинаются с "kubectl-"
Использование
$ kubectl plugin list
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| name-only | false | Если true, отображать только имя двоичного файла каждого плагина, а не полный путь |
version
Вывести версии клиента и сервера для текущего контекста
kubectl version
Вывести информацию о версии клиента и сервера для текущего контекста.
Использование
$ kubectl version
Флаги
| Имя | Сокращение | Значение по умолчанию | Использование |
|---|---|---|---|
| client | false | Если true, отобразить только версию клиента (сервер не требуется). | |
| output | o | Один из 'yaml' или 'json'. | |
| short | false | Если true, вывести только номер версии. |
© 2024 The Kubernetes Authors | Documentation Distributed under CC BY 4.0
Copyright © 2024 The Linux Foundation ®. All rights reserved.
https://kubernetes.io/docs/reference/generated/kubectl/kubectl-commands