Обʼєкти Kubernetes можна створювати, оновлювати й видаляти за допомогою інструмента командного рядка kubectl разом із файлом конфігурації обʼєкта у форматі YAML або JSON. У цьому документі пояснено, як визначати обʼєкти й керувати ними за допомогою файлів конфігурації.
Встановіть kubectl.
Вам треба мати кластер Kubernetes, а також інструмент командного рядка kubectl має бути налаштований для роботи з вашим кластером. Рекомендується виконувати ці настанови у кластері, що має щонайменше два вузли, які не виконують роль вузлів управління. Якщо у вас немає кластера, ви можете створити його, за допомогою minikube або використовувати одну з цих пісочниць:
Для перевірки версії введіть kubectl version.
Інструмент kubectl підтримує три види керування обʼєктами:
Переваги й недоліки кожного виду керування обʼєктами розглянуто в розділі Управління обʼєктами Kubernetes.
Ви можете використовувати kubectl create -f, щоб створити обʼєкт з файлу конфігурації. Докладніше дивіться в довіднику API Kubernetes.
kubectl create -f <filename|url>replace вилучає всі частини специфікації, не вказані у файлі конфігурації. Цю команду не слід використовувати з обʼєктами, чиї специфікації частково керуються кластером, наприклад із Services типу LoadBalancer, де поле externalIPs керується незалежно від файлу конфігурації. Поля, що керуються незалежно, потрібно скопіювати у файл конфігурації, щоб replace не вилучив їх.Ви можете використовувати kubectl replace -f, щоб оновити живий обʼєкт відповідно до файлу конфігурації.
kubectl replace -f <filename|url>Ви можете використовувати kubectl delete -f, щоб видалити обʼєкт, описаний у файлі конфігурації.
kubectl delete -f <filename|url>Якщо файл конфігурації задає поле generateName у розділі metadata замість поля name, ви не можете видалити обʼєкт за допомогою kubectl delete -f <filename|url>. Для видалення обʼєкта доведеться використати інші прапорці. Наприклад:
kubectl delete <type> <name>
kubectl delete <type> -l <label>
Ви можете використовувати kubectl get -f, щоб переглянути інформацію про обʼєкт, описаний у файлі конфігурації.
kubectl get -f <filename|url> -o yamlПрапорець -o yaml вказує, що треба вивести повну конфігурацію обʼєкта. Використайте kubectl get -h, щоб побачити список параметрів.
Команди create, replace і delete добре працюють, коли конфігурація кожного обʼєкта повністю визначена й записана в його файлі конфігурації. Однак якщо живий обʼєкт оновлено, а оновлення не внесено до його файлу конфігурації, вони будуть втрачені під час наступного виконання replace. Це може статися, якщо контролер, як-от HorizontalPodAutoscaler, вносить оновлення безпосередньо в живий обʼєкт. Ось приклад:
Якщо вам потрібна підтримка кількох записувачів для одного обʼєкта, можна використовувати kubectl apply для керування обʼєктом.
Припустимо, у вас є URL файлу конфігурації обʼєкта. Ви можете використати kubectl create --edit, щоб внести зміни до конфігурації перед створенням обʼєкта. Це особливо корисно для навчальних матеріалів і завдань, що вказують на файл конфігурації, який читач може змінити.
kubectl create -f <url> --edit
Міграція від імперативних команд до імперативного конфігурування обʼєктів складається з кількох кроків, які виконуються вручну.
Експортуйте живий обʼєкт у локальний файл конфігурації обʼєкта:
kubectl get <kind>/<name> -o yaml > <kind>_<name>.yaml
Вручну вилучіть поле status із файлу конфігурації обʼєкта.
Для подальшого керування обʼєктом використовуйте виключно replace.
kubectl replace -f <kind>_<name>.yaml
Рекомендований підхід — визначити одну незмінну мітку PodTemplate, яка використовується тільки селектором контролера без іншого семантичного значення.
Приклад мітки:
selector:
matchLabels:
controller-selector: "apps/v1/deployment/nginx"
template:
metadata:
labels:
controller-selector: "apps/v1/deployment/nginx"