# Керування обʼєктами Kubernetes за допомогою імперативних команд

LLMS index: [llms.txt](/llms.txt)

---

<!-- overview -->

Обʼєкти Kubernetes можна швидко створювати, оновлювати та видаляти безпосередньо за допомогою імперативних команд, вбудованих в інструмент командного рядка `kubectl`. Цей документ пояснює, як організовано ці команди та як їх використовувати для керування поточними обʼєктами.

## Перш ніж ви розпочнете

Встановіть [`kubectl`](/docs/tasks/tools/).

<p>Вам треба мати кластер Kubernetes, а також інструмент командного рядка kubectl має бути налаштований для роботи з вашим кластером. Рекомендується виконувати ці настанови у кластері, що має щонайменше два вузли, які не виконують роль вузлів управління. Якщо у вас немає кластера, ви можете створити його, за допомогою <a href="https://minikube.sigs.k8s.io/docs/tutorials/multi_node/">minikube</a> або використовувати одну з цих пісочниць:</p>
<ul>
<li><a href="https://labs.iximiuz.com/playgrounds?category=kubernetes&filter=all">iximiuz Labs</a></li>
<li><a href="https://killercoda.com/playgrounds/scenario/kubernetes">Killercoda</a></li>
<li><a href="https://kodekloud.com/public-playgrounds">KodeKloud</a></li>
</ul>
 
  <p>Для перевірки версії введіть  <code>kubectl version</code>.</p>


## Компроміси {#trade-offs}

Інструмент `kubectl` підтримує три види управління обʼєктами:

* Імперативні команди
* Імперативне конфігурування обʼєктів
* Декларативне конфігурування обʼєктів

Див. [Управління обʼєктами Kubernetes](/docs/concepts/overview/working-with-objects/object-management/) для обговорення переваг та недоліків кожного виду управління обʼєктами.

## Як створювати обʼєкти {#how-to-create-objects}

Інструмент `kubectl` підтримує команди, що базуються на дії, для створення деяких найпоширеніших типів обʼєктів. Команди названі так, щоб їх можна було впізнати користувачам, що не знайомі з типами обʼєктів Kubernetes.

* `run`: Створює новий Pod для запуску контейнера.
* `expose`: Створює новий обʼєкт Service для балансування трафіку між Pod.
* `autoscale`: Створює новий обʼєкт Autoscaler для автоматичного горизонтального масштабування контролера, наприклад, Deployment.

Інструмент `kubectl` також підтримує команди створення, що базуються на типі обʼєкта. Ці команди підтримують більше типів обʼєктів і більш явно вказують на їх наміри, але вимагають, щоб користувачі знали типи обʼєктів, які вони мають намір створити.

* `create <типобʼєкта> [<підтип>] <імʼяекземпляра>`

Деякі типи обʼєктів мають підтипи, які можна вказати в команді `create`. Наприклад, обʼєкт Service має кілька підтипів, включаючи ClusterIP, LoadBalancer та NodePort. Ось приклад створення Service з підтипом NodePort:

```shell
kubectl create service nodeport <myservicename>
```

У попередньому прикладі команда `create service nodeport` викликається як підкоманда команди `create service`.

Ви можете використовувати прапорець `-h`, щоб знайти аргументи та прапорці, які підтримуються підкомандою:

```shell
kubectl create service nodeport -h
```

## Як оновлювати обʼєкти {#how-to-update-objects}

Команда `kubectl` підтримує команди, що базуються на дії, для деяких загальних операцій оновлення. Ці команди названі так, щоб користувачі, які не знайомі з обʼєктами Kubernetes, могли виконувати оновлення, не знаючи конкретних полів, які потрібно встановити:

* `scale`: Горизонтально масштабувати контролер для додавання або видалення Podʼів шляхом оновлення кількості реплік контролера.
* `annotate`: Додати або видалити анотацію з обʼєкта.
* `label`: Додати або видалити мітку з обʼєкта.

Команда `kubectl` також підтримує команди оновлення, що базуються на аспекті обʼєкта. Встановлення цього аспекту може встановлювати різні поля для різних типів обʼєктів:

* `set` `<поле>`: Встановити аспект обʼєкта.


<div class="alert alert-info" role="note"><h4 class="alert-heading">Примітка:</h4>У версії Kubernetes 1.5 не кожна команда, що базується на дії, має повʼязану команду, що базується на аспекті.</div>


Інструмент `kubectl` підтримує ці додаткові способи оновлення поточного обʼєкта безпосередньо, однак вони вимагають кращого розуміння схеми обʼєктів Kubernetes.

* `edit`: Безпосередньо редагувати сирі конфігурації поточного обʼєкта, відкриваючи його конфігурацію в редакторі.
* `patch`: Безпосередньо модифікувати конкретні поля поточного обʼєкта, використовуючи рядок патча. Докладніше про рядки патча див. розділ патча в [Конвенціях API](https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#patch-operations).

## Як видаляти обʼєкти {#how-to-delete-objects}

Ви можете використовувати команду `delete`, щоб видалити обʼєкт з кластера:

* `delete <тип>/<імʼя>`


<div class="alert alert-info" role="note"><h4 class="alert-heading">Примітка:</h4>Ви можете використовувати <code>kubectl delete</code> як для імперативних команд, так і для імперативного конфігурування обʼєкта. Різниця полягає в аргументах, переданих команді. Щоб використовувати <code>kubectl delete</code> як імперативну команду, передайте обʼєкт для видалення як аргумент. Ось приклад, який передає обʼєкт Deployment з іменем nginx:</div>


```shell
kubectl delete deployment/nginx
```

## Як переглянути обʼєкт {#how-to-view-an-object}

Існують кілька команд для виведення інформації про обʼєкт:

* `get`: Виводить базову інформацію про відповідні обʼєкти. Використовуйте `get -h`, щоб побачити список опцій.
* `describe`: Виводить агреговану детальну інформацію про відповідні обʼєкти.
* `logs`: Виводить stdout та stderr для контейнера, що працює в Pod.

## Використання команд `set` для модифікації обʼєктів перед створенням {#using-set-commands-to-modify-objects-before-creation}

Є деякі поля обʼєктів, для яких не існує прапорця, який можна використовувати в команді `create`. У деяких з цих випадків ви можете використовувати комбінацію `set` та `create`, щоб вказати значення для поля перед створенням обʼєкта. Це робиться за допомогою перенаправлення виводу команди `create` на команду `set`, а потім назад на команду `create`. Ось приклад:

```sh
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 -
```

1. Команда `kubectl create service -o yaml --dry-run=client` створює конфігурацію для Service, але виводить її на stdout у форматі YAML замість надсилання до сервера API Kubernetes.
1. Команда `kubectl set selector --local -f - -o yaml` читає конфігурацію з stdin і записує оновлену конфігурацію на stdout у форматі YAML.
1. Команда `kubectl create -f -` створює обʼєкт, використовуючи надану конфігурацію через stdin.

## Використання `--edit` для модифікації обʼєктів перед створенням {#using-edit-to-modify-objects-before-creation}

Можна використовувати `kubectl create --edit`, щоб зробити довільні зміни обʼєкта перед його створенням. Ось приклад:

```sh
kubectl create service clusterip my-svc --clusterip="None" -o yaml --dry-run=client > /tmp/srv.yaml
kubectl create --edit -f /tmp/srv.yaml
```

1. Команда `kubectl create service` створює конфігурацію для Service та зберігає її у `/tmp/srv.yaml`.
1. Команда `kubectl create --edit` відкриває файл конфігурації для редагування перед створенням обʼєкта.

## Що далі

* [Імперативне керування обʼєктами Kubernetes за допомогою файлів конфігурації](/docs/tasks/manage-kubernetes-objects/imperative-config/)
* [Декларативне керування обʼєктами Kubernetes за допомогою файлів конфігурації](/docs/tasks/manage-kubernetes-objects/declarative-config/)
* [Довідник команд Kubectl](/docs/reference/generated/kubectl/kubectl-commands/)
* [Довідник API Kubernetes](/docs/reference/generated/kubernetes-api/v1.36/)
