Інструмент командного рядка kubectl підтримує кілька різних способів створення та управління обʼєктами Kubernetes. Цей документ надає огляд різних підходів. Для отримання деталей щодо управління обʼєктами за допомогою Kubectl читайте Книгу Kubectl.
| Техніка управління | Діє на | Рекомендоване середовище | Підтримувані інструменти | Крива навчання |
|---|---|---|---|---|
| Імперативні команди | Живі обʼєкти | Проєкти розробки | 1+ | Налегша |
| Імперативна конфігурація обʼєктів | Окремі файли | Продуктові проєкти | 1 | Середня |
| Декларативна конфігурація обʼєктів | Теки файлів | Продуктові проєкти | 1+ | Найскладніша |
При використанні імперативних команд користувач працює безпосередньо з живими обʼєктами в кластері. Користувач надає операції команді kubectl у вигляді аргументів чи прапорців.
Це рекомендований спосіб початку роботи або виконання одноразового завдання в кластері. Оскільки цей метод працює безпосередньо з живими обʼєктами, він не зберігає жодної історичної конфігурації.
Запустіть екземпляр контейнера nginx, створивши обʼєкт розгортання (Deployment):
kubectl create deployment nginx --image nginx
Переваги порівняно із конфігуруванням обʼєктів:
Недоліки порівняно із конфігуруванням обʼєктів:
У імперативній конфігурації обʼєктів команда kubectl вказує операцію (створити, замінити інше), необовʼязкові прапорці та принаймні одне імʼя файлу. Зазначений файл повинен містити повне визначення обʼєкта у форматі YAML або JSON.
Див. API-довідник для отримання докладніших відомостей щодо визначення обʼєктів.
replace замінює поточну специфікацію на нову, вилучаючи всі зміни обʼєкта, які відсутні в файлі конфігурації. Цей підхід не повинен використовуватися із типами ресурсів, специфікації яких оновлюються незалежно від файлу конфігурації. Наприклад, у служб типу LoadBalancer поле externalIPs оновлюється незалежно від конфігурації кластера.Створити обʼєкти, визначені у файлі конфігурації:
kubectl create -f nginx.yaml
Видалити обʼєкти, визначені у двох файлах конфігурації:
kubectl delete -f nginx.yaml -f redis.yaml
Оновити обʼєкти, визначені у файлі конфігурації, перезаписавши живу конфігурацію:
kubectl replace -f nginx.yaml
Переваги порівняно з імперативними командами:
Недоліки порівняно з імперативними командами:
Переваги порівняно із декларативною конфігурацією обʼєктів:
Недоліки порівняно із декларативною конфігурацією обʼєктів:
При використанні декларативної конфігурації обʼєктів користувач працює з конфігураційними файлами обʼєктів, збереженими локально, проте користувач не визначає операції, які слід виконати над файлами. Операції створення, оновлення та видалення автоматично визначаються для кожного обʼєкта за допомогою kubectl. Це дозволяє працювати з теками, де для різних обʼєктів можуть бути потрібні різні операції.
patch для запису тільки спостережуваних відмінностей, замість використання операції replace для заміни всього файлу конфігурації обʼєкта.Обробити всі файли конфігурації обʼєктів у теці configs та створити або внести патчі до живих обʼєктів. Спочатку ви можете використовувати diff, щоб побачити, які зміни будуть внесені, а потім застосовувати:
kubectl diff -f configs/
kubectl apply -f configs/
Рекурсивно обробити теки:
kubectl diff -R -f configs/
kubectl apply -R -f configs/
Переваги порівняно з імперативною конфігурацією обʼєктів:
Недоліки порівняно з імперативною конфігурацією обʼєктів: