Для надсилання викликів до API Kubernetes використовуючи одну з мов програмування ви можете використовувати клієнтські бібліотеки. Офіційно підтримуються наступні:
Список портів та протоколів, які повинні бути відкриті на вузлах панелі управління та робочих вузлах.
Конфігураційні API
Цей розділ містить документацію для "неопублікованих" API, які використовуються для налаштування компонентів або інструментів Kubernetes. Більшість з цих API не експонуються через API-сервер у стилі REST, хоча вони є важливими для користувача чи оператора для використання або управління кластером.
Цей розділ містить довідкову інформацію про API Kubernetes.
REST API є фундаментальною основою Kubernetes. Усі операції та комунікації між компонентами та зовнішніми командами користувачів є викликами REST API, які обробляє API-сервер. Внаслідок цього все в Kubernetes обробляється як обʼєкти API та має відповідний запис в API.
Для отримання загальної інформації, читайте API Kubernetes. Керування доступом до API Kubernetes описує, як клієнти можуть автентифікуватися до сервера API Kubernetes, та як їхні запити авторизуються.
Версіювання API
Схеми серіалізації JSON та Protobuf слідують однаковими принципами для змін схеми. Наступні описи стосуються обох форматів.
Версіювання API та версіювання програмного забезпечення непрямо повʼязані. Пропозиція з версіювання API та релізів описує відносини між версіюванням API та версіюванням програмного забезпечення.
Різні версії API вказують на різні рівні стабільності та підтримки. Докладнішу інформацію про критерії кожного рівня можна знайти в документації API Changes.
Ось короткий огляд кожного рівня:
Alpha:
Назви версій містять alpha (наприклад, v1alpha1).
Вбудовані версії API рівня alpha типово вимкнені та повинні бути явно увімкнені в конфігурації kube-apiserver для використання.
Програмне забезпечення може містити помилки. Увімкнення функції може виявити помилки.
Підтримка alpha API може бути відключена в будь-який момент без попередження.
API може змінитися несумісним чином у подальших версіях програмного забезпечення без попередження.
Рекомендується використовувати програмне забезпечення тільки в тестових кластерах для короткочасного тестування через збільшений ризик помилок та відсутність довгострокової підтримки.
Beta:
Назви версій містять beta (наприклад, v2beta3).
Вбудовані версії API рівня beta типово вимкнені та повинні бути явно увімкнені в конфігурації kube-apiserver для використання (за винятком бета-версій API, представлених до Kubernetes 1.22, які були типово увімкнені).
Вбудовані версії API рівня beta мають максимальний термін служби 9 місяців або 3 мінорні випуски (в залежності, що довше), починаючи від введення до застаріння, і 9 місяців або 3 мінорні випуски (в залежності, що довше) від застаріння до вилучення.
Програмне забезпечення добре протестоване. Увімкнення функції вважається безпечним.
Підтримка функції не буде відключена, хоча можуть змінитися деталі.
Схема та/або семантика обʼєктів може змінюватися несумісним чином у подальших версіях API рівня beta або стабільного. Коли це відбувається, надаються інструкції з міграції. Адаптація до наступної версії API рівня beta або стабільного може вимагати редагування чи повторного створення обʼєктів API, і це може бути не простим. Міграція може вимагати перерви у роботі застосунків, які покладаються на цю функцію.
Програмне забезпечення не рекомендується для використання в промисловій експлуатації. Подальші випуски можуть вносити несумісні зміни. Використання версій API рівня beta обовʼязкове для переходу до наступних версій API рівня beta або стабільного, якщо версія API рівня beta застаріє та більше не буде обслуговуватися.
Примітка:
Спробуйте бета-функції та надавайте відгуки. Після того, як функції вийдуть з бета, може бути непрактично вносити більше змін.
Stable:
Назва версії — vX, де X – це ціле число.
Стабільні версії API залишаються доступними для всіх майбутніх випусків в межах основної версії Kubernetes, і немає поточних планів щодо ревізії основної версії Kubernetes, що вилучає стабільні API.
Групи API
Групи API спрощують розширення API Kubernetes. Група API вказується в REST-шляху та в полі apiVersion серіалізованого обʼєкта.
У Kubernetes існує кілька груп API:
core (також називається legacy) група знаходиться за REST-шляхом /api/v1. Основна група не вказується як частина поля apiVersion, наприклад, apiVersion: v1.
Названі групи знаходяться за REST-шляхом /apis/$GROUP_NAME/$VERSION та використовують apiVersion: $GROUP_NAME/$VERSION (наприклад, apiVersion: batch/v1). Повний список підтримуваних груп API можна знайти в довіднику API Kubernetes.
Увімкнення чи вимкнення груп API
Деякі ресурси та групи API типово увімкнені. Ви можете увімкнути чи вимкнути їх, встановивши --runtime-config на API-сервері. Прапорець --runtime-config приймає розділені комами пари <key>[=<value>], що описують конфігурацію запуску API-сервера. Якщо частина =<value> пропущена, вона розглядається так, ніби вказано =true. Наприклад:
для вимкнення batch/v1 встановіть --runtime-config=batch/v1=false
для увімкнення batch/v2alpha1 встановіть --runtime-config=batch/v2alpha1
для увімкнення конкретної версії API, наприклад, storage.k8s.io/v1beta1/csistoragecapacities, встановіть --runtime-config=storage.k8s.io/v1beta1/csistoragecapacities
Примітка:
При увімкненні чи вимкненні груп, чи ресурсів потрібно перезапустити API-сервер та controller manager, щоб внести зміни до --runtime-config.
Збереження
Kubernetes зберігає свій серіалізований стан у термінах ресурсів API, записуючи їх в etcd.
API Kubernetes — це програмний інтерфейс на основі ресурсів (RESTful), який надається через HTTP. Він підтримує отримання, створення, оновлення та видалення основних ресурсів за допомогою стандартних HTTP-дієслів (POST, PUT, PATCH, DELETE, GET).
Для деяких ресурсів API включає додаткові субресурси, що дозволяють детальніше налаштовувати авторизацію (наприклад, окремі представлення для деталей Pod та отримання логів), і може приймати та надавати ці ресурси в різних форматах для зручності або ефективності.
Kubernetes підтримує ефективні сповіщення про зміни ресурсів за допомогою watches.
В API Kubernetes, watch це дієслово, яке використовується для відстеження змін обʼєкта в Kubernetes у вигляді потоку. Використовується для ефективного виявлення змін.
Kubernetes також забезпечує послідовні операції зі списками, щоб клієнти API могли ефективно кешувати, відстежувати та синхронізувати стан ресурсів.
Ви можете переглянути Довідник API онлайн або прочитати далі, щоб дізнатися про API загалом.
Терміни API Kubernetes
Kubernetes зазвичай використовує загальноприйняту термінологію RESTful для опису концепцій API:
Тип ресурсу — це назва, що використовується в URL (pods, namespaces, services)
Усі типи ресурсів мають конкретне представлення (їх схему обʼєкта), яке називається kind
Список екземплярів типу ресурсу називається колекцією
Окремий екземпляр типу ресурсу називається ресурсом і зазвичай представляє обʼєкт
Для деяких типів ресурсів API включає один або більше субресурсів, які представлені як URI-шляхи після назви ресурсу
Більшість типів ресурсів API Kubernetes є обʼєктами — вони представляють конкретний екземпляр концепції у кластері, як-от pod або namespace. Невелика кількість типів ресурсів API є віртуальними, оскільки вони часто представляють операції над обʼєктами, а не самі обʼєкти, такі як перевірка дозволів (використання POST із JSON-кодованим тілом SubjectAccessReview для ресурсу subjectaccessreviews), або субресурс eviction у Pod (використовується для запуску виселення, ініційованого API).
Імена обʼєктів
Усі обʼєкти, які ви можете створити через API, мають унікальне імʼя, що дозволяє ідемпотентне1 створення та отримання, за винятком віртуальних типів ресурсів, які можуть не мати унікальних імен, якщо вони не можуть бути отримані або не залежать від ідемпотентності. У межах простору імен може бути лише один обʼєкт з вказаним іменем для даного виду. Однак, якщо ви видалите обʼєкт, ви можете створити новий обʼєкт з тим самим іменем. Деякі обʼєкти не мають простору імен (наприклад: Nodes), тому їх імена повинні бути унікальними у всьому кластері.
Дієслова API
Майже всі типи ресурсів підтримують стандартні HTTP-дієслова — GET, POST, PUT, PATCH, та DELETE. Kubernetes також використовує власні дієслова, які часто пишуться малими літерами, щоб відрізняти їх від HTTP-дієслів.
Kubernetes використовує термін list для опису отримання колекції ресурсів, щоб відрізняти його від отримання одного ресурсу, яке зазвичай називається get. Якщо ви надішлете HTTP-запит GET із параметром ?watch, Kubernetes називає це watch, а не get (див.
Ефективне виявлення змін для деталей).
Для запитів PUT Kubernetes внутрішньо класифікує їх як create або update залежно від стану наявного обʼєкта. Update відрізняється від patch; HTTP-дієслово для patch - PATCH.
URI ресурсів
Усі типи ресурсів або належать кластеру (/apis/GROUP/VERSION/*), або простору імен (/apis/GROUP/VERSION/namespaces/NAMESPACE/*). Тип ресурсу, що належить простору імен, буде видалений при видаленні простору імен, і доступ до цього типу ресурсу контролюється перевірками авторизації в межах простору імен.
Примітка: основні ресурси використовують /api замість /apis і пропускають сегмент GROUP.
Ви також можете отримати доступ до колекцій ресурсів (наприклад, переліку усіх Nodes). Наступні шляхи використовуються для отримання колекцій та ресурсів:
Ресурси кластерного рівня:
GET /apis/GROUP/VERSION/RESOURCETYPE — повертає колекцію ресурсів вказаного типу ресурсу
GET /apis/GROUP/VERSION/RESOURCETYPE/NAME — повертає ресурс з імʼям NAME вказаного типу ресурсу
Ресурси рівня простору імен:
GET /apis/GROUP/VERSION/RESOURCETYPE — повертає колекцію всіх екземплярів вказаного типу ресурсу в усіх просторах імен
GET /apis/GROUP/VERSION/namespaces/NAMESPACE/RESOURCETYPE — повертає колекцію всіх екземплярів вказаного типу ресурсу в просторі імен NAMESPACE
GET /apis/GROUP/VERSION/namespaces/NAMESPACE/RESOURCETYPE/NAME — повертає екземпляр вказаного типу ресурсу з імʼям NAME в просторі імен NAMESPACE
Оскільки простір імен є ресурсом кластерного рівня, ви можете отримати перелік ("колекцію") всіх просторів імен за допомогою GET /api/v1/namespaces та деталі про конкретний простір імен за допомогою GET /api/v1/namespaces/NAME.
Субресурс кластерного рівня: GET /apis/GROUP/VERSION/RESOURCETYPE/NAME/SUBRESOURCE
Субресурс рівня простору імен: GET /apis/GROUP/VERSION/namespaces/NAMESPACE/RESOURCETYPE/NAME/SUBRESOURCE
Підтримувані дієслова для кожного субресурсу будуть відрізнятися залежно від обʼєкта — див. Довідник API для отримання додаткової інформації. Немає можливості отримати доступ до субресурсів через декілька ресурсів — зазвичай використовується новий віртуальний тип ресурсу, якщо це стає необхідним.
HTTP медіа-типи
Kubernetes підтримує кодування JSON та Protobuf для передачі даних по HTTP.
Стандартно, Kubernetes повертає серіалізовані об’єкти JSON, використовуючи медіа-тип application/json. Хоча JSON є стандартним типом, клієнти можуть запитувати відповідь у форматі YAML, або більш ефективне двійкове подання у вигляді Protobuf для кращої продуктивності.
Kubernetes API реалізує стандартне узгодження типів вмісту HTTP: передача заголовка Accept у запиті GET вказує серверу спробувати повернути відповідь у бажаному медіа-типі. Якщо ви хочете надіслати об’єкт у форматі Protobuf на сервер для запиту PUT або POST, вам необхідно відповідно встановити заголовок запиту Content-Type.
Якщо ви запитуєте доступні медіа-типи, API-сервер повертає відповідь з відповідним заголовком Content-Type; якщо жоден із запитаних медіа-типів не підтримується, API-сервер поверне повідомлення про помилку 406 Not acceptable. Усі вбудовані типи ресурсів підтримують медіа-тип application/json.
Кодування ресурсів у форматі JSON
API Kubernetes стандартно використовує JSON для кодування тіла HTTP повідомлень.
Наприклад:
Вивести список усіх Podʼів в кластері без вказування бажаного формату
GET /api/v1/pods
200 OK
Content-Type: application/json
… Колекція Pod, закодована у форматі JSON (обʼєкт PodList)
Створити Pod, відправивши JSON на сервер та запросивши відповідь у форматі JSON.
POST /api/v1/namespaces/test/pods
Content-Type: application/json
Accept: application/json
… Обʼєкт Pod, закодований у форматі JSON
Kubernetes також підтримує медіатип application/yaml для запитів та відповідей. YAML може використовуватись для визначення маніфестів Kubernetes та взаємодії з API.
Наприклад:
Отримати список усіх podʼів у кластері у форматі YAML
GET /api/v1/pods
Accept: application/yaml
200 OK
Content-Type: application/yaml
… YAML-кодована колекція Podʼів (обʼєкт PodList)
Створити pod, надіславши дані у форматі YAML на сервер і запросивши відповідь у форматі YAML:
POST /api/v1/namespaces/test/pods
Content-Type: application/yaml
Accept: application/yaml
… YAML-кодований об'єкт Pod
200 OK
Content-Type: application/yaml
apiVersion: v1
kind: Pod
metadata:
name: my-pod
…
Кодування Kubernetes Protobuf
Kubernetes використовує обгортку-конверт для кодування відповідей у форматі Protobuf. Ця обгортка починається з 4 байтів магічного числа, щоб допомогти ідентифікувати вміст на диску або в etcd як Protobuf (на відміну від JSON). Дані з магічним числом (4 байти) слідують за повідомленням, закодованим у форматі Protobuf, яке описує кодування та тип основного об’єкта. Усередині повідомлення Protobuf дані внутрішнього об’єкта записуються за допомогою поля raw Unknown (дивіться IDL для докладної інформації).
Наприклад:
Вивести список усіх Pod в кластері у форматі Protobuf.
GET /api/v1/pods
Accept: application/vnd.kubernetes.protobuf
200 OK
Content-Type: application/vnd.kubernetes.protobuf
… Колекція Pod, закодована у форматі JSON (об'єкт PodList)
Створити Pod, відправивши дані, закодовані у форматі Protobuf на сервер, але запросити відповідь у форматі JSON.
POST /api/v1/namespaces/test/pods
Content-Type: application/vnd.kubernetes.protobuf
Accept: application/json
… двійково закодований обʼєкт Pod
---
200 OK
Content-Type: application/json
{
"kind": "Pod",
"apiVersion": "v1",
...
}
Ви можете використовувати обидві техніки разом і взаємодіяти з API Kubernetes, яке підтримує кодування Protobuf, для читання та запису даних. Лише деякі типи ресурсів API є сумісними з Protobuf.
Як клієнт, якщо вам може знадобитися працювати з розширеними типами, слід вказати кілька типів контенту в заголовку Accept запиту для підтримки резервного переходу на JSON. Наприклад:
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.32 [alpha] (стандартно увімкнено: false)
З увімкненою функціональною можливістюCBORServingAndStorage тіла запитів і відповідей для всіх вбудованих типів ресурсів і всіх ресурсів, визначених CustomResourceDefinition, можуть бути закодовані у двійковий формат даних CBOR. CBOR також підтримується на рівні aggregation layer, якщо він увімкнений на окремих агрегованих серверах API.
Клієнти повинні вказувати медіа-тип IANA application/cbor в заголовку HTTP-запиту Content-Type, коли тіло запиту містить один CBOR закодований елемент даних, і в заголовку HTTP-запиту Accept, коли вони готові прийняти CBOR-кодований елемент даних у відповіді. Сервери API будуть використовувати application/cbor в заголовку Content-Type HTTP-відповіді, коли тіло відповіді містить об'єкт, закодований CBOR.
Якщо сервер API кодує свою відповідь на watch request за допомогою CBOR, тіло відповіді буде CBOR Sequence, а в заголовку Content-Type HTTP-відповіді буде використано медіа-тип IANA application/cbor-seq. Кожен елемент послідовності (якщо такий є) є окремою подією спостереження, закодованою CBOR.
На додаток до існуючого типу даних application/apply-patch+yaml для YAML-кодованих [конфігурацій додатків на стороні сервера] (#patch-and-apply), сервери API, які підтримують CBOR, прийматимуть тип даних application/apply-patch+cbor для конфігурацій додатків на стороні сервера, закодованих CBOR. Для application/json-patch+json або application/merge-patch+json, або application/strategic-merge-patch+json не підтримується еквівалент CBOR.
Ефективне виявлення змін
API Kubernetes дозволяє клієнтам зробити початковий запит на обʼєкт або колекцію, а потім відстежувати зміни з моменту цього запиту: це watch. Клієнти можуть відправити list або get і потім зробити наступний запит watch.
Для реалізації цього відстеження змін кожен обʼєкт Kubernetes має поле resourceVersion, яке представляє версію цього ресурсу, що зберігається в постійному шарі збереження. При отриманні колекції ресурсів (як простору імен, так і кластерного рівня), відповідь від сервера API містить значення resourceVersion. Клієнт може використовувати це значення resourceVersion для ініціювання watch проти сервера API.
Коли ви надсилаєте запит watch, сервер API відповідає потоком змін. Ці зміни перераховують результати операцій (таких як create, delete, та update), що відбулись після resourceVersion, значення якого було вказане як параметр до запиту watch. Загальний механізм watch дозволяє клієнту отримати поточний стан і потім підписатися на подальші зміни, не пропускаючи жодної події.
Якщо клієнт watch відʼєднується, тоді цей клієнт може розпочати новий сеанс watch з останнього повернутого resourceVersion; клієнт також може виконати новий запити get/list і розпочати знову. Див. Семантика версій ресурсів для отримання детальнішої інформації.
Наприклад:
Отримання списку всіх Podʼів у вказаному просторі імен.
GET /api/v1/namespaces/test/pods
---
200 OK
Content-Type: application/json
{
"kind": "PodList",
"apiVersion": "v1",
"metadata": {"resourceVersion":"10245"},
"items": [...]
}
Починаючи з версії ресурсу 10245, отримуйте сповіщення про будь-які операції API (такі як create, delete, patch або update), що впливають на Podʼи у просторі імен test. Кожне сповіщення про зміну — це документ JSON. Тіло відповіді HTTP (надається як application/json) складається із серії документів JSON.
Сервер Kubernetes буде зберігати історичний запис змін лише протягом обмеженого часу. Кластери, що використовують etcd 3, стандартно зберігають зміни за останні 5 хвилин. Коли запитувані операції watch не вдаються через недоступність історичної версії цього ресурсу, клієнти повинні обробляти цей випадок, розпізнаючи код статусу 410 Gone, очищаючи свій локальний кеш, виконуючи новий get або list запит, і починаючи watch з resourceVersion, яке було повернуто.
Для підписки на колекції бібліотеки клієнтів Kubernetes зазвичай пропонують певну форму стандартного інструменту для логіки list-потім-watch. (У бібліотеці клієнтів Go це називається Reflector і знаходиться в пакеті k8s.io/client-go/tools/cache).
Закладки для Watch
Щоб зменшити вплив короткого вікна історії, API Kubernetes надає подію спостереження під назвою BOOKMARK. Це особливий вид події, що позначає, що всі зміни до вказаної клієнтом resourceVersion вже були надіслані. Документ, що представляє подію BOOKMARK, має тип який отримується запитом, але включає лише поле .metadata.resourceVersion. Наприклад:
Як клієнт, ви можете запитувати події BOOKMARK, встановлюючи параметр запиту allowWatchBookmarks=true у запиті watch, але не слід припускати, що закладки будуть повертатися з певним інтервалом, і клієнти не можуть очікувати, що сервер API надішле будь-яку подію BOOKMARK, навіть якщо її було запитано.
Потокові списки
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.32 [beta] (стандартно увімкнено: true)
У великих кластерах отримання колекції деяких типів ресурсів може призвести до значного збільшення використання ресурсів (переважно RAM) панелі управління. Щоб зменшити вплив та спростити користування шаблоном list + watch у Kubernetes v1.32 переведено у бета-версію функцію, яка дозволяє запитувати початковий стан (який раніше запитувався за допомогою запиту list) як частину запиту watch.
На стороні клієнта початковий стан можна запросити, вказавши sendInitialEvents=true як параметр рядка запиту у запиті типу watch. Якщо встановлено, сервер API починає потік спостереження з синтетичних початкових подій (типу ADDED) для побудови всього стану всіх наявних обʼєктів, після чого йде подія BOOKMARK (якщо запитано через параметр allowWatchBookmarks=true). Подія закладки включає версію ресурсу, до якої його було синхронізовано. Після надсилання події закладки сервер API продовжує роботу як для будь-якого іншого запиту watch.
Коли ви встановлюєте sendInitialEvents=true у рядку запиту, Kubernetes також вимагає, щоб ви встановили resourceVersionMatch до значення NotOlderThan. Якщо ви вказали resourceVersion у рядку запиту без значення або не вказали його взагалі, це інтерпретується як запит на узгоджене читання (consistent read); подія закладки надсилається, коли стан синхронізовано щонайменше до моменту узгодженого читання з моменту, коли запит почав оброблятися. Якщо ви вказуєте resourceVersion (у рядку запиту), подія закладки надсилається, коли стан синхронізовано щонайменше до вказаної версії ресурсу.
Приклад
Приклад: ви хочете спостерігати за колекцією Podʼів. Для цієї колекції поточна версія ресурсу
становить 10245, і є два Podʼи: foo та bar. Надсилання наступного запиту (який явно запитує узгоджене читання, встановлюючи порожню версію ресурсу за допомогою resourceVersion=) може призвести до наступної послідовності подій:
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.16 [beta] (стандартно увімкнено: true)
Опція APIResponseCompression дозволяє серверу API стискати відповіді на запити get та list, зменшуючи використання мережевої пропускної здатності та покращуючи продуктивність у великих кластерах. Її стандартно увімкнено з Kubernetes 1.16 і її можна вимкнути додаванням APIResponseCompression=false у прапорець --feature-gates на сервері API.
Стиснення відповідей API може значно зменшити розмір відповіді, особливо для великих ресурсів або колекцій. Наприклад, запит list для Podʼів може повернути сотні кілобайт або навіть мегабайти даних, залежно від кількості Podʼів та їх атрибутів. Стиснення відповіді дозволяє зберегти мережеву пропускну здатність та зменшити затримки.
Щоб перевірити, чи працює APIResponseCompression, ви можете надіслати запит get або list на сервер API з заголовком Accept-Encoding та перевірити розмір відповіді та заголовки. Наприклад:
GET /api/v1/pods
Accept-Encoding: gzip
---
200 OK
Content-Type: application/json
content-encoding: gzip
...
Заголовок content-encoding вказує, що відповідь стиснута за допомогою gzip.
Отримання великих наборів результатів частинами
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.29 [stable] (стандартно увімкнено: true)
У великих кластерах отримання колекції деяких типів ресурсів може призвести до дуже великих відповідей, що може вплинути на сервер та клієнта. Наприклад, у кластері може бути десятки тисяч Podʼів, кожен з яких еквівалентний приблизно 2 КіБ у форматі JSON. Отримання всіх Podʼів через всі простори імен може призвести до дуже великої відповіді (10-20 МБ) та спожити багато ресурсів сервера.
Сервер API Kubernetes підтримує можливість розбиття одного великого запиту на колекцію на багато менших частин, зберігаючи при цьому узгодженість загального запиту. Кожна частина може бути повернута послідовно, що зменшує загальний розмір запиту і дозволяє клієнтам, орієнтованим на користувачів, показувати результати поетапно для покращення швидкості реагування.
Ви можете запитувати сервер API для обробки list запиту, використовуючи сторінки (які Kubernetes називає chunks). Щоб отримати одну колекцію частинами, підтримуються два параметри запиту limit та continue у запитах до колекцій, і поле відповіді continue повертається з усіх операцій list у полі metadata колекції. Клієнт повинен вказати максимальну кількість результатів, яку він бажає отримати у кожній частині за допомогою limit, і сервер поверне кількість ресурсів у результаті не більше limit та включить значення continue, якщо у колекції є більше ресурсів.
Як клієнт API, ви можете передати це значення continue серверу API у наступному запиті, щоб вказати серверу повернути наступну сторінку (chunk) результатів. Продовжуючи до тих пір, поки сервер не поверне порожнє значення continue, ви можете отримати всю колекцію.
Як і у випадку з операцією watch, токен continue закінчується через короткий проміжок часу (стандартно 5 хвилин) і повертає 410 Gone, якщо більше результатів не може бути повернуто. У цьому випадку клієнт повинен буде почати з початку або опустити параметр limit.
Наприклад, якщо у кластері є 1,253 Podʼів і ви хочете отримувати частини по 500 Podʼів за раз, запитуйте ці частини наступним чином:
Отримати всі Podʼи в кластері, отримуючи до 500 Podʼів за раз.
Продовжити попередній запит, отримуючи останні 253 Podʼів.
GET /api/v1/pods?limit=500&continue=ENCODED_CONTINUE_TOKEN_2
---
200 OK
Content-Type: application/json
{
"kind": "PodList",
"apiVersion": "v1",
"metadata": {
"resourceVersion":"10245",
"continue": "", // токен continue порожній, тому що ми досягли кінця списку
...
},
"items": [...] // повертає Podʼи 1001-1253
}
Зверніть увагу, що resourceVersion колекції залишається постійним в кожному запиті, що вказує на те, що сервер показує вам узгоджену копію Podʼів. Podʼи, що створюються, оновлюються або видаляються після версії 10245, не будуть показані, якщо ви не зробите окремий запит list без токена continue. Це дозволяє вам розбивати великі запити на менші частини, а потім виконувати операцію watch на повному наборі, не пропускаючи жодного оновлення.
Поле remainingItemCount вказує кількість наступних елементів у колекції, які не включені у цю відповідь. Якщо запит list містив мітки або поля селектори, тоді кількість залишкових елементів невідома, і сервер API не включає поле remainingItemCount у свою відповідь. Якщо list запит завершено (або тому, що він не розбивається на частини, або тому, що це остання частина), то більше немає залишкових елементів, і сервер API не включає поле remainingItemCount у свою відповідь. Очікуване використання `remainingItemCount — оцінка розміру колекції.
Колекції
У термінології Kubernetes відповідь, яку ви отримуєте за допомогою list, є колекцією. Однак Kubernetes визначає конкретні види для колекцій різних типів ресурсів. Колекції мають вид, названий на честь виду ресурсу, з доданим List.
Коли ви надсилаєте запит API для певного типу, всі елементи, повернуті цим запитом, є цього типу. Наприклад, коли ви надсилаєте list Services, відповідь колекції має kind, встановлений на ServiceList; кожен елемент у цій колекції представляє один Service. Наприклад:
Є десятки типів колекцій (таких як PodList, ServiceList та NodeList), визначених в API Kubernetes. Ви можете отримати більше інформації про кожен тип колекції з довідника Kubernetes API.
Деякі інструменти, такі як kubectl, представляють механізм колекцій Kubernetes трохи інакше, ніж сам API Kubernetes. Оскільки вихідні дані kubectl можуть включати відповідь з декількох операцій list на рівні API, kubectl представляє список елементів, використовуючи kind: List. Наприклад:
Памʼятайте, що API Kubernetes не має kind з іменем List.
kind: List є клієнтським внутрішнім деталям реалізації для обробки колекцій, які можуть бути різними типами обʼєктів. Уникайте залежності від kind: List в автоматизації або іншому коді.
Отримання ресурсів у вигляді таблиць
Коли ви запускаєте kubectl get, стандартний формат виводу є простою табличною репрезентацією одного або кількох екземплярів певного типу ресурсу. У минулому клієнти повинні були відтворювати табличний і описовий вивід, реалізований у kubectl, щоб виконувати прості списки обʼєктів. Деякі обмеження цього підходу включають нетривіальну логіку при роботі з певними обʼєктами. Крім того, типи, надані API агрегуванням або сторонніми ресурсами, не відомі під час компіляції. Це означає, що повинні бути реалізовані загальні механізми для типів, які не розпізнаються клієнтом.
Щоб уникнути можливих обмежень, описаних вище, клієнти можуть запитувати табличну репрезентацію обʼєктів, делегуючи серверу специфічні деталі виводу. API Kubernetes реалізує стандартні HTTP-узгодження щодо типу контенту: передача заголовка Accept, що містить значення application/json;as=Table;g=meta.k8s.io;v=v1 з запитом GET попросить сервер повернути обʼєкти у форматі таблиці.
Наприклад, список усіх Podʼів у кластері у форматі таблиці.
GET /api/v1/pods
Accept: application/json;as=Table;g=meta.k8s.io;v=v1
---
200 OK
Content-Type: application/json
{
"kind": "Table",
"apiVersion": "meta.k8s.io/v1",
...
"columnDefinitions": [
...
]
}
Для типів ресурсів API, які не мають табличного визначення, відомого панелі управління, сервер API повертає стандартну таблицю, яка складається з полів name та creationTimestamp ресурсу.
Не всі типи ресурсів API підтримують табличну відповідь; наприклад, CustomResourceDefinitions можуть не визначати відповідність полів таблиці, а APIService, що розширює основний API Kubernetes може взагалі не обслуговувати табличні відповіді. Якщо ви створюєте клієнта, що використовує інформацію з таблиці та який повинен працювати з усіма типами ресурсів, включаючи розширення, ви повинні робити запити, які вказують кілька типів контенту у заголовку Accept. Наприклад:
Коли клієнт вперше надсилає запит на видалення ресурсу, .metadata.deletionTimestamp встановлюється на поточний час. Після встановлення .metadata.deletionTimestamp, зовнішні контролери, які працюють з завершувачами (finalizers), можуть почати виконувати свою очистку в будь-який час, у будь-якому порядку.
Порядок не встановлюється примусово між завершувачами, оскільки це може призвести до значного ризику застрягання .metadata.finalizers.
Поле .metadata.finalizers є спільним: будь-який áктор з дозволом може змінювати його порядок.
Якби список завершувачів оброблявся по порядку, це могло б призвести до ситуації, коли компонент, відповідальний за перший завершувач у списку, чекає на якийсь сигнал (значення поля, зовнішню систему або інше), що створюється компонентом, відповідальним за завершувач пізніше у списку, що призводить до застярягання всього списку.
Без примусового впорядкування завершувачі можуть вільно визначати свій власний порядок і не є вразливими до змін у списку.
Після видалення останнього завершувача ресурс фактично видаляється з etcd.
Примусове видалення
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.32 [alpha] (стандартно увімкнено: false)
Увага:
Це може порушити робоче навантаження, повʼязане з примусовим видаленням ресурсу, якщо воно покладається на звичайний потік видалення, що може призвести до руйнування кластера.
Увімкнувши опцію видалення ignoreStoreReadErrorWithClusterBreakingPotential, користувач може виконати небезпечну операцію примусового видалення нерозшифрованого/пошкодженого ресурсу. Ця опція знаходиться за функціональною можоивістю ALPHA, і стандартно вона вимкнена. Щоб скористатися цією опцією, оператор кластера повинен увімкнути її за допомогою параметра командного рядка --feature-gates=AllowUnsafeMalformedObjectDeletion=true.
Примітка:
Користувач, який виконує операцію примусового видалення, повинен мати привілеї на виконання обох дієслів delete і unsafe-delete-ignore-read-errors на даному ресурсі.
Ресурс вважається пошкодженим, якщо він не може бути успішно вилучений зі сховища через а) помилку перетворення (наприклад, помилку розшифрування), або б) обʼєкт не вдалося декодувати. Сервер API спочатку намагається виконати звичайне видалення, і якщо це не вдається з помилкою corrupt resource, він запускає операцію примусового видалення. Операція примусового видалення є небезпечною, оскільки вона ігнорує обмеження фіналізатора і пропускає перевірку передумов.
Стандартне значення для цієї опції — false, це забезпечує зворотну сумісність. Для запиту delete з параметром ignoreStoreReadErrorWithClusterBreakingPotential, встановленим у значення true, поля dryRun, gracePeriodSeconds, orphanDependents, preconditions і propagationPolicy слід залишити не встановленими.
Примітка:
Якщо користувач надсилає запит delete зі значенням ignoreStoreReadErrorWithClusterBreakingPotential, встановленим у true для ресурсу, який інакше можна прочитати, сервер API перериває запит з помилкою.
API для одного ресурсу
API Kubernetes з дієсловами get, create, update, patch, delete та proxy підтримують тільки одиничні ресурси. Ці дієслова з підтримкою одиничного ресурсу не підтримують надсилання кількох ресурсів разом в упорядкованому або неупорядкованому списку чи транзакції.
Коли клієнти (включаючи kubectl) виконують дії з набором ресурсів, клієнт робить серію одиничних API запитів до ресурсу, а потім, за потреби, агрегує відповіді.
На відміну від цього, API Kubernetes з дієсловами list і watch дозволяють отримувати кілька ресурсів, а deletecollection дозволяє видаляти кілька ресурсів.
Валідація полів
Kubernetes завжди перевіряє тип полів. Наприклад, якщо поле в API визначене як число, ви не можете встановити це поле в текстове значення. Якщо поле визначене як масив рядків, ви можете надати тільки масив. Деякі поля можна пропустити, інші поля є обовʼязковими. Пропуск обовʼязкового поля у запиті API є помилкою.
Якщо ви зробите запит з додатковим полем, яке не розпізнається панеллю управління кластера, тоді поведінка сервера API є складнішою.
Типово, сервер API видаляє поля, які він не розпізнає, з вхідних даних, які він отримує (наприклад, тіло JSON запиту PUT).
Є дві ситуації, коли сервер API видаляє поля, які ви надали у HTTP-запиті.
Ці ситуації такі:
Поле не розпізнається, оскільки воно не входить до схеми OpenAPI ресурсу. (Одним винятком є CRDs, які явно обирають не обрізати невідомі поля через x-kubernetes-preserve-unknown-fields).
Поле дублюється в обʼєкті.
Валідація для нерозпізнаних або дубльованих полів
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.27 [stable] (стандартно увімкнено: true)
З версії 1.25 і далі, нерозпізнані або дубльовані поля в обʼєкті виявляються через валідацію на сервері при використанні HTTP-дієслів, які можуть надсилати дані (POST, PUT та PATCH). Можливі рівні валідації: Ignore, Warn (стандартно) та Strict.
Ignore
Сервер API успішно обробляє запит так, ніби у ньому немає неправильних полів, відкидаючи всі невідомі та дубльовані поля та не повідомляючи про це.
Warn
(Стандартно) Сервер API успішно обробляє запит і надсилає клієнту попередження. Попередження надсилається за допомогою заголовка відповіді Warning:, додаючи один елемент попередження для кожного невідомого або дубльованого поля. Для отримання додаткової інформації про попередження та API Kubernetes дивіться статтю блогу Warning: Helpful Warnings Ahead.
Strict
Сервер API відхиляє запит з помилкою 400 Bad Request, коли виявляє будь-які невідомі або дубльовані поля. Повідомлення відповіді від сервера API вказує всі невідомі або дубльовані поля, які сервер API виявив.
Рівень валідації полів встановлюється параметром запиту fieldValidation.
Примітка:
Якщо ви надсилаєте запит, що вказує на нерозпізнане поле, яке також є недійсним з іншої причини (наприклад, запит надає рядкове значення, де API очікує цілого числа для відомого поля), тоді сервер API відповідає з помилкою 400 Bad Request, але не надасть жодної інформації про невідомі або дубльовані поля (тільки про ту фатальну помилку, яку він виявив першою).
У цьому випадку ви завжди отримаєте відповідь про помилку, незалежно від того, який рівень валідації полів ви запросили.
Інструменти, які надсилають запити на сервер (такі як kubectl), можуть встановлювати свої власні типові значення, які відрізняються від рівня валідації Warn, що стандартно використовується сервером API.
Інструмент kubectl використовує прапорець --validate для встановлення рівня валідації полів. Він приймає значення ignore, warn та strict, а також приймає значення true (еквівалентно strict) і false (еквівалентно ignore). Станадртне налаштування валідації для kubectl — це --validate=true, що означає сувору валідацію полів на стороні сервера.
Коли kubectl не може підключитися до сервера API з валідацією полів (сервери API до Kubernetes 1.27), він повернеться до використання валідації на стороні клієнта. Валідація на стороні клієнта буде повністю видалена у майбутній версії kubectl.
Примітка:
До Kubernetes 1.25 прапорець kubectl --validate використовувався для перемикання валідації на стороні клієнта увімквимкання/вимиканнямнено булевого прапореця.
Dry-run
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.19 [stable] (стандартно увімкнено: true)
При використанні HTTP-дієслів, які можуть змінювати ресурси (POST, PUT, PATCH і DELETE), ви можете надіслати свій запит у режимі dry run. Режим dry run допомагає оцінити запит через типові етапи обробки запиту (ланцюг допумків, валідацію, конфлікти злиття) аж до збереження обʼєктів у сховищі. Тіло відповіді на запит є максимально наближеним до відповіді у режимі non-dry-run. Kubernetes гарантує, що dry-run запити не будуть збережені в сховищі і не матимуть жодних інших побічних ефектів.
Виконання dry-run запиту
Dry-run активується встановленням параметра запиту dryRun. Цей параметр є рядковим, діє як перерахування, і єдині прийнятні значення:
[без значення]
Дозволити побічні ефекти. Ви запитуєте це за допомогою рядка запиту типу ?dryRun або ?dryRun&pretty=true. Відповідь є остаточним обʼєктом, який був би збережений, або помилкою, якщо запит не може бути виконаний.
All
Кожен етап виконується як зазвичай, за винятком кінцевого етапу збереження, де побічні ефекти запобігаються.
Коли ви встановлюєте ?dryRun=All, усі відповідні контролерів допуску виконуються, перевіряючи запит після зміни, злиття виконується для PATCH, поля заповнюються станадартними значеннями, і проводиться валідація схеми. Зміни не зберігаються в базовому сховищі, але остаточний обʼєкт, який був би збережений, все ще повертається користувачеві разом із звичайним кодом статусу.
Якщо версія запиту без dry-run викликала б контролер доступу, який має побічні ефекти, запит буде відхилений, щоб уникнути небажаних побічних ефектів. Усі вбудовані втулки контролю доступу підтримують dry-run. Додатково, admission webhooks можуть оголосити у своїй конфігураційній моделі, що вони не мають побічних ефектів, встановивши поле sideEffects на None.
Примітка:
Якщо вебхук дійсно має побічні ефекти, то поле sideEffects має бути встановлено на "NoneOnDryRun". Ця зміна є доречною за умови, що вебхук також модифіковано щоб він розумів поле DryRun у AdmissionReview і для запобігання побічним ефектам на будь-який запит, позначений як dry run.
Приклад dry-run запиту, який використовує ?dryRun=All:
POST /api/v1/namespaces/test/pods?dryRun=All
Content-Type: application/json
Accept: application/json
Відповідь буде виглядати так само, як для запиту без dry-run, але значення деяких згенерованих полів можуть відрізнятися.
Згенеровані значення
Деякі значення обʼєкта зазвичай генеруються перед його збереженням. Важливо не покладатися на значення цих полів, встановлених dry-run запитом, оскільки ці значення, ймовірно, будуть відрізнятися в dry-run режимі від реального запиту. Деякі з цих полів:
name: якщо встановлено generateName, name матиме унікальне випадкове імʼя
creationTimestamp / deletionTimestamp: фіксує час створення/видалення
Для ресурсу Service: Порти або IP-адреси, які kube-apiserver надає обʼєктам Service
Авторизація dry-run
Авторизація для dry-run і non-dry-run запитів ідентична. Таким чином, щоб виконати dry-run запит, ви повинні мати дозвіл на виконання non-dry-run запиту.
Наприклад, щоб виконати dry-run patch для Deployment, ви повинні мати дозвіл на виконання цього patch. Ось приклад правила для Kubernetes RBAC, що дозволяє робити patch для Deployment:
Kubernetes надає декілька способів оновлення наявних обʼєктів. Ви можете прочитати вибір механізму оновлення, щоб дізнатися, який підхід найкраще підходить для вашого випадку.
Ви можете перезаписати (оновити) наявний ресурс, наприклад, ConfigMap, використовуючи HTTP PUT. Для запиту PUT відповідальність за вказання resourceVersion (отриманого з обʼєкта, що оновлюється) лежить на клієнті. Kubernetes використовує інформацію resourceVersion, щоб сервер API міг виявити втрачені оновлення і відхилити запити від клієнта, який не актуальний для кластера. У разі зміни ресурсу (коли resourceVersion, надана клієнтом, застаріла), сервер API повертає відповідь з помилкою 409 Conflict.
Замість надсилання запиту PUT клієнт може надіслати інструкцію серверу API для накладання патчу до наявного ресурсу. Патч зазвичай підходить, якщо зміна, яку клієнт хоче внести, не залежить від наявних даних. Клієнти, яким потрібне ефективне виявлення втрачених оновлень, повинні розглянути можливість зробити свій запит умовним до існуючого resourceVersion (або HTTP PUT, або HTTP PATCH), а потім обробити будь-які повтори, які можуть знадобитися у разі конфлікту.
API Kubernetes підтримує чотири різні операції PATCH, які визначаються відповідним заголовком HTTP Content-Type:
application/apply-patch+yaml
Серверне застосування YAML (специфічне розширення Kubernetes, засноване на YAML). Всі документи JSON є дійсними в YAML, тому ви також можете надавати JSON, використовуючи цей тип медіа. Дивіться серіалізація для серверного застосування для отримання додаткової інформації. Для Kubernetes це операція створення, якщо обʼєкт не існує, або операція накладання патчу, якщо обʼєкт вже існує.
application/json-patch+json
JSON Patch, як визначено в RFC6902. JSON патч — це послідовність операцій, які виконуються з ресурсом; наприклад, {"op": "add", "path": "/a/b/c", "value": [ "foo", "bar" ]}. Для Kubernetes це операція накладання патчу. Патч з використанням application/json-patch+json може включати умови для перевірки консистентності, дозволяючи операції зазнати невдачі, якщо ці умови не виконуються (наприклад, щоб уникнути втрати оновлення).
application/merge-patch+json
JSON Merge Patch, як визначено в RFC7386. JSON Merge Patch фактично є частковим представленням ресурсу. Поданий JSON комбінується з поточним ресурсом для створення нового, а потім новий зберігається. Для Kubernetes це операція накладання патчу.
application/strategic-merge-patch+json
Strategic Merge Patch (специфічне розширення Kubernetes на основі JSON). Strategic Merge Patch — це власна реалізація JSON Merge Patch. Ви можете використовувати Strategic Merge Patch лише з вбудованими API або з агрегованими серверами API, які мають спеціальну підтримку для цього. Ви не можете використовувати application/strategic-merge-patch+json з будь-яким API, визначеним за допомогою CustomResourceDefinition.
Примітка:
Механізм серверного застосування Kubernetes замінив Strategic Merge Patch.
Функція Серверного застосування Kubernetes дозволяє панелі управління відстежувати керовані поля для новостворених обʼєктів. SСерверне застосування забезпечує чітку схему для управління конфліктами полів, пропонує серверні операції apply і update, та замінює функціональність на стороні клієнта kubectl apply.
Для серверного застосування Kubernetes обробляє запит як створення, якщо обʼєкт ще не існує, і як патч в іншому випадку. Для інших запитів, які використовують PATCH на рівні HTTP, логічна операція Kubernetes завжди є патч.
Операція оновлення (HTTP PUT) проста у виконанні та гнучка, але має недоліки:
Потрібно вирішувати конфлікти, де resourceVersion обʼєкта змінюється між моментом його читання клієнтом і спробою записувати назад. Kubernetes завжди виявляє конфлікт, але вам як авторові клієнта потрібно реалізувати повторні спроби.
Ви можете випадково видаляти поля, якщо декодуєте обʼєкт локально (наприклад, використовуючи client-go, ви можете отримати поля, які ваш клієнт не вміє обробляти, і потім видаляти їх під час оновлення).
Якщо на обʼєкт накладається багато конкурентних операцій (навіть на поле або набір полів, які ви не намагаєтеся редагувати), ви можете мати проблеми з надсиланням оновлення. Проблема гостріша для великих обʼєктів та для обʼєктів з багатьма полями.
HTTP PATCH з використанням JSON Patch
Оновлення патчем корисне через такі причини:
Оскільки ви надсилаєте лише різницю, ви маєте менше даних для надсилання у запиті PATCH.
Ви можете робити зміни, які ґрунтуються на наявних значеннях, наприклад, копіювати значення певного поля в анотацію.
На відміну від оновлення (HTTP PUT), ваші зміни можуть відбуватися відразу навіть при частих змінах не повʼязаних полів: зазвичай вам не потрібно повторювати спроби.
Вам все ще може знадобитися вказати resourceVersion (щоб відповідати існуючому обʼєкту), якщо ви хочете бути особливо обережними, щоб уникнути втрати оновлень.
Все ж це хороша практика написати деяку логіку повторної спроби у випадку помилок.
Ви можете використовувати тестові умови для обережного створення конкретних умов оновлення. Наприклад, ви можете збільшити лічильник без його читання, якщо існуюче значення відповідає вашим очікуванням. Ви можете це зробити без ризику втрати оновлення, навіть якщо обʼєкт змінився іншим чином з моменту вашого останнього запису до нього. (Якщо тестова умова не виконається, ви можете використовувати поточне значення і потім записати змінене число).
Проте:
Вам потрібна більша локальна (клієнтська) логіка для створення патчу; дуже корисно мати реалізацію бібліотеки JSON Patch або навіть створення JSON Patch специально для Kubernetes.
Як автору клієнтського програмного забезпечення, вам потрібно бути обережним при створенні патчу (тіла запиту HTTP), щоб не видаляти поля (порядок операцій має значення).
HTTP PATCH з використанням Server-Side Apply
Серверне застосування має чіткі переваги:
Одноразовий прохід веред-назад: зазвичай спочатку не потребує виконання GET запиту.
і ви все ще можете виявляти конфлікти для неочікуваних змін
у вас є можливість примусово перезаписати конфлікт, якщо це доцільно
Реалізація клієнта легка для створення.
Ви отримуєте атомарну операцію створення або оновлення без додаткових зусиль (аналогічно UPSERT у деяких діалектах SQL).
Проте:
Серверне застосування зовсім не працює для змін полів, які залежать від поточного значення обʼєкта.
Ви можете застосовувати оновлення лише до обʼєктів. Деякі ресурси в HTTP API Kubernetes не є обʼєктами (вони не мають поля .metadata), а серверне застосування стосується лише обʼєктів Kubernetes.
Версії ресурсів
Версії ресурсів — це рядки, які ідентифікують внутрішню версію обʼєкта на сервері. Версії ресурсів можуть використовуватися клієнтами для визначення змін в обʼєктах або для зазначення вимог до консистентності даних при отриманні, переліку та перегляді ресурсів. Версії ресурсів повинні розглядатися клієнтами як непрозорі та передаватися без змін назад на сервер.
Не слід припускати, що версії ресурсів є числовими або можуть бути впорядковані. API-клієнти можуть порівнювати лише дві версії ресурсів на рівність (це означає, що ви не можете порівнювати версії ресурсів за відносними значеннями "більше" або "менше").
Поля resourceVersion в метаданих
Клієнти знаходять версії ресурсів в ресурсах, включаючи ресурси з потоку відповіді під час спостереження (watch) або при отримані переліку (list) ресурсів.
v1.meta/ObjectMeta — metadata.resourceVersion екземпляра ресурсу ідентифікує версію ресурсу, на якій останній раз він був змінений.
v1.meta/ListMeta — metadata.resourceVersion колекції ресурсів (відповідь на перелік (list)) ідентифікує версію ресурсу, на якій була створена колекція.
Параметри resourceVersion у рядках запитів
Операції отримання (get), переліку (list) та спостереження (watch) підтримують параметр resourceVersion. Починаючи з версії v1.19, сервери API Kubernetes також підтримують параметр resourceVersionMatch у запитах list.
Сервер API інтерпретує параметр resourceVersion по-різному, залежно від операції, яку ви запитуєте, та від значення resourceVersion. Якщо ви встановлюєте resourceVersionMatch, то це також впливає на спосіб порівняння.
Семантика для операцій get та list
Для операцій get та list, семантика параметра resourceVersion така:
get:
resourceVersion невстановлено
resourceVersion="0"
resourceVersion="{значення, відмінне від 0}"
Найновіший
Будь-яке
Не старше
list:
Починаючи з версії v1.19, сервери API Kubernetes підтримують параметр resourceVersionMatch у запитах list. Якщо ви встановлюєте як resourceVersion, так і resourceVersionMatch, то параметр resourceVersionMatch визначає, як сервер API інтерпретує resourceVersion.
Вам завжди слід встановлювати параметр resourceVersionMatch, коли ви встановлюєте resourceVersion у запиті list. Однак будьте готові обробляти випадок, де сервер API, що відповідає, не підтримує resourceVersionMatch та ігнорує його.
Крім випадків сильних вимог до консистентності, використання resourceVersionMatch=NotOlderThan та відомої resourceVersion є бажаним, оскільки це може забезпечити кращу продуктивність та масштабованість вашого кластеру, ніж залишати resourceVersion і resourceVersionMatch невстановленими, що вимагає отримання кворуму для обслуговування.
Встановлення параметра resourceVersionMatch без встановлення resourceVersion є недійсним.
Ця таблиця пояснює поведінку запитів list з різними комбінаціями resourceVersion та resourceVersionMatch:
Параметри resourceVersionMatch та розбиття на сторінки для list
Параметр resourceVersionMatch
Параметри розбиття на сторінки
resourceVersion не встановлено
resourceVersion="0"
resourceVersion="{значення, відмінне від 0}"
не встановлено
limit не встановлено
Найновіший
Any
Не старше
не встановлено
limit=<n>, continue не встановлено
Найновіший
Any
Точно
не встановлено
limit=<n>, continue=<токен>
Continue Token, Exact
Недійсний, розглядається як Continue Token, Exact
Недійсний, HTTP 400 Bad Request
resourceVersionMatch=Exact
limit не встановлено
Недійсний
Недійсний
Exact
resourceVersionMatch=Exact
limit=<n>, continue не встановлено
Недійсний
Недійсний
Exact
resourceVersionMatch=NotOlderThan
limit не встановлено
Недійсний
Any
NotOlderThan
resourceVersionMatch=NotOlderThan
limit=<n>, continue не встановлено
Недійсний
Any
NotOlderThan
Примітка:
Якщо сервер API вашого кластера не враховує параметр resourceVersionMatch, поведінка буде такою самою, як і якщо ви його не встановили.
Сенс семантики операцій get та list такий:
Any
Повернути дані на будь-якій версії ресурсу. Вибирається найновіша доступна версія ресурсу, але не потрібна сильна консистентність; дані на будь-якій версії ресурсу можуть бути обслуговані. Є можливість отримати дані на значно старішій версії ресурсу, яку клієнт раніше спостерігав, особливо в конфігураціях високої доступності через розділи або застарілі кеші. Клієнти, які не можуть терпіти це, не повинні використовувати цю семантику.
Найновіший
Повернути дані на найновішій версії ресурсу. Повернені дані повинні бути консистентними (детально: обслуговуються з etcd за допомогою кворумного читання). Для etcd версій v3.4.31+ та v3.5.13+ Kubernetes 1.32 обслуговує "найсвіжіші" читання з watch cache: внутрішнього, вбудованого в памʼять сховища всередині API сервера, що кешує та відображає стан даних, збережених у etcd. Kubernetes запитує сповіщення про прогрес, щоб підтримувати консистентність кешу з шаром збереження даних (persistence layer) у etcd. Версії Kubernetes з v1.28 до v1.30 також підтримували цю функцію, але як Alpha, вона не рекомендувалася для використання в операційному середовищі і не була стандартно увімкненою до випуску v1.31.
NotOlderThan
Повернути дані, які є принаймні так новими, як наданий resourceVersion. Вибирається найновіша доступна інформація, але будь-яка інформація, яка не старше наданої resourceVersion, може бути обслугована. Для запитів list до серверів, які підтримують параметр resourceVersionMatch, це гарантує, що .metadata.resourceVersion колекції не старше вказаної resourceVersion, але не надає гарантії щодо .metadata.resourceVersion будь-яких елементів у цій колекції.
Exact
Повернути дані на точній версії ресурсу, яка надана. Якщо надана resourceVersion недоступна, сервер відповідає HTTP 410 "Відсутній". Для запитів list до серверів, які підтримують параметр resourceVersionMatch, це гарантує, що .metadata.resourceVersion колекції співпадає з resourceVersion, яку ви запросили у рядку запиту. Ця гарантія не поширюється на .metadata.resourceVersion будь-яких елементів у цій колекції.
Continue Token, Exact
Повернути дані на версії ресурсу початкового виклику list розділеного на сторінки. Повернені продовження токенів відповідальні за відстеження початково наданої версії ресурсу для всіх викликів list розділених на сторінки після початкового виклику list.
Примітка:
Коли ви перелічцєте (list) ресурси та отримуєте відповідь у вигляді колекції, відповідь містить метадані списку колекції, а також метадані обʼєктів для кожного елемента у цій колекції. Для окремих обʼєктів, знайдених у відповіді колекції, .metadata.resourceVersion відстежує, коли цей обʼєкт був останній раз оновлений, а не те, наскільки актуальний обʼєкт, коли він обслуговується.
При використанні resourceVersionMatch=Не старше та встановленому ліміті клієнти мають обробляти відповіді HTTP 410 "Gone". Наприклад, клієнт може повторно спробувати з новішою resourceVersion або використовувати resourceVersion="".
При використанні resourceVersionMatch=Точно та не встановленому ліміті, клієнти мають перевірити, що .metadata.resourceVersion колекції співпадає з запитаною resourceVersion, і обробити випадок, коли це не так. Наприклад, клієнт може використовувати запит з встановленим лімітом.
Семантика для операції watch
Для операцій watch, семантика параметра resourceVersion така:
watch:
resourceVersion для watch
resourceVersion невстановлено
resourceVersion="0"
resourceVersion="{значення, відмінне від 0}"
Отримати стан і почати з найновішого
Отримати стан і почати з будь-якого
Почати точно з
Сенс цієї семантики для watch такий:
Отримати стан і почати з будь-якого
Увага:
Watch, ініційовані таким чином, можуть повернути довільно застарілі дані. Будь ласка, перегляньте цю семантику перед її використанням і за можливості віддавайте перевагу іншим семантикам.
Почати watch на будь-якій версії ресурсу; найбільш нова доступна версія є переважною, але не обовʼязковою. Дозволено будь-яку початкову версію ресурсу. Можливо, що watch почнеться на набагато старішій версії ресурсу, яку клієнт раніше спостерігав, особливо в конфігураціях високої доступності через розділи або застарілі кеші. Клієнти, які не можуть терпіти таке відмотування назад, не повинні починати watch з цією семантикою. Для встановлення початкового стану, watch починається з синтетичних подій "Added" для всіх екземплярів ресурсів, які існують на початковій версії ресурсу. Усі наступні події watch стосуються всіх змін, що сталися після початкової версії ресурсу, з якої почався watch.
Отримати стан і почати з найновішого
Почати watch на найбільш новій версії ресурсу, яка повинна бути консистентною (детально: обслуговується з etcd за допомогою отримання кворуму). Для встановлення початкового стану watch починається з синтетичних подій "Added" для всіх екземплярів ресурсів, які існують на початковій версії ресурсу. Усі наступні події watch стосуються всіх змін, що сталися після початкової версії ресурсу, з якої почався watch.
Почати точно з
Почати watch на точній версії ресурсу. Події watch стосуються всіх змін після наданої версії ресурсу. На відміну від "Отримати стан і почати з найновішого" та "Отримати стан і почати з будь-якого", watch не починається з синтетичних подій "Added" для наданої версії ресурсу. Вважається, що клієнт вже має початковий стан на стартовій версії ресурсу, оскільки клієнт надав цю версію ресурсу.
Відповіді "410 Gone"
Сервери не зобовʼязані зберігати всі старі версії ресурсів і можуть повернути код HTTP 410 (Gone), якщо клієнт запитує resourceVersion, який старіший, ніж версія, збережена сервером. Клієнти повинні бути готові обробляти відповіді 410 (Gone). Дивіться розділ Ефективне виявлення змін для отримання додаткової інформації про те, як обробляти відповіді 410 (Gone) при спостереженні за ресурсами.
Якщо ви запитуєте resourceVersion, який знаходиться за межами допустимого діапазону, то, залежно від того, чи обслуговується запит з кешу чи ні, API-сервер може відповісти HTTP-відповіддю 410 Gone.
Недоступні версії ресурсів
Сервери не зобовʼязані обслуговувати нерозпізнані версії ресурсів. Якщо ви запитуєте list або get для версії ресурсу, яку API-сервер не розпізнає, то API-сервер може або:
почекати трохи, поки версія ресурсу не стане доступною, а потім завершити з тайм-аутом і відповіддю 504 (Gateway Timeout), якщо надана версія ресурсу не стане доступною в розумний термін;
відповісти заголовком Retry-After, вказуючи, через скільки секунд клієнт повинен повторити запит.
Якщо ви запитуєте версію ресурсу, яку API-сервер не розпізнає, kube-apiserver додатково ідентифікує свої відповіді на помилки повідомленням "Too large resource version".
Якщо ви робите запит watch для нерозпізнаної версії ресурсу, API-сервер може чекати невизначений час (до тайм-ауту запиту), поки версія ресурсу не стане доступною.
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.22 [stable] (стандартно увімкнено: true)
Kubernetes підтримує співпрацю кількох аплікаторів для керування полями одного обʼєкта.
Server-Side Apply (Серверне застосування) надає необовʼязковий механізм для контролера вашого кластера, щоб відстежувати зміни в полях обʼєкта. На рівні конкретного ресурсу, Server-Side Apply записує та відстежує інформацію про контроль над полями цього обʼєкта.
Server-Side Apply допомагає користувачам та контролерам керувати своїми ресурсами за допомогою декларативної конфігурації. Клієнти можуть створювати та змінювати обʼєкти декларативно, подаючи їх повністю визначений намір.
Повністю визначений намір — це частковий обʼєкт, який містить лише ті поля та значення, щодо яких у користувача є чітке уявлення. Цей намір або створює новий обʼєкт (використовуючи стандартні значення для невизначених полів), або обʼєднується з наявним обʼєктом через API сервер.
Порівняння з Client-Side Apply пояснює, як Server-Side Apply відрізняється від початкової реалізації kubectl apply на стороні клієнта.
Управління полями
Kubernetes API сервер відстежує керовані поля для всіх новостворених обʼєктів.
При спробі застосувати обʼєкт, поля, які мають інше значення і належать іншому менеджеру, спричинять конфлікт. Це зроблено для того, щоб сигналізувати, що операція може скасувати зміни іншого спільника. Записи до обʼєктів з керованими полями можуть бути примусовими, в такому випадку значення будь-якого конфліктного поля буде перезаписане, а право власності передане.
Кожного разу, коли значення поля змінюється, право власності переходить від поточного менеджера до менеджера, що здійснює зміну.
Операція застосування перевіряє, чи є інші менеджери полів, які також володіють полем. Якщо поле не належить жодному іншому менеджеру полів, це поле встановлюється на стандартне значення (якщо таке є), або видаляється з обʼєкта. Те саме правило застосовується до полів, які є списками, асоціативними списками або map.
Для того, щоб користувач міг керувати полем в контексті Server-Side Apply, він повинен покладатися на те, що значення поля не зміниться. Користувач, який останнім висловив свою думку щодо значення поля, буде записаний як поточний менеджер поля. Це можна зробити, змінивши дані менеджера поля явним чином за допомогою HTTP POST (створення), PUT (оновлення), або не-застосувального PATCH (патч). Ви також можете оголосити та записати менеджера поля, включивши значення для цього поля в операції Server-Side Apply.
Запит на патч в контексті Server-Side Apply вимагає від клієнта вказати свою ідентичність як менеджера поля. При використанні Server-Side Apply спроба змінити поле, що контролюється іншим менеджером, призведе до відхилення запиту, якщо клієнт не виконає примусове перевизначення. Для деталей щодо примусових перевизначень дивіться Конфлікти.
Коли два або більше аплікатора встановлюють поле на однакове значення, вони спільно володіють цим полем. Будь-яка спроба змінити значення спільного поля будь-ким з аплікаторів призведе до конфлікту. Спільні власники поля можуть відмовитися від права власності на поле, здійснивши запит на патч в контексті Server-Side Apply, який не включає це поле.
Деталі управління полями зберігаються в полі managedFields, яке є частиною metadata обʼєкта.
Якщо ви видалите поле з маніфесту і застосуєте цей маніфест, Server-Side Apply перевірить, чи є інші менеджери полів, які також володіють цим полем. Якщо поле не належить жодному іншому менеджеру полів, воно буде або видалене з поточного обʼєкта, або скинуте до стандартного значення, якщо таке є. Те саме правило застосовується до елементів асоціативного списку або map.
У порівнянні з (застарілою) kubectl.kubernetes.io/last-applied-configuration анотацією, яка управляється kubectl, Server-Side Apply використовує більш декларативний підхід, який відстежує управління полями користувача (або клієнта), а не останній застосований стан користувача. Побічним ефектом використання Server-Side Apply є також доступність інформації про те, який менеджер поля управляє кожним полем в обʼєкті.
Приклад
Простий приклад обʼєкта, створеного за допомогою Server-Side Apply, може виглядати так:
Примітка:
kubectl get типово пропускає керовані поля. Додайте --show-managed-fields щоб показати managedFields у виводі в формаі json або yaml.
---apiVersion:v1kind:ConfigMapmetadata:name:test-cmnamespace:defaultlabels:test-label:testmanagedFields:- manager:kubectloperation: Apply # зверніть увагу на великі літери:"Apply"(або "Update")apiVersion:v1time:"2010-10-10T0:00:00Z"fieldsType:FieldsV1fieldsV1:f:metadata:f:labels:f:test-label:{}f:data:f:key:{}data:key:some value
Цей приклад обʼєкта ConfigMap містить один запис про управління полями в .metadata.managedFields. Запис управління полями складається з основної інформації про саму сутність, що виконує управління, а також з деталей про поля, якими управляють, та відповідну операцію (Apply або Update). Якщо запит, що останнім змінив це поле, був патчем Server-Side Apply, тоді значення operation буде Apply; в іншому випадку, це буде Update.
Є ще один можливий результат. Клієнт може подати недійсний запит. Якщо повністю зазначений намір не створює дійсний обʼєкт, запит не вдасться виконати.
Однак, можливо змінити .metadata.managedFields за допомогою операції оновлення або патчу, які не використовують Server-Side Apply. Це наполегливо не рекомендується, але може бути доцільно спробувати, якщо, наприклад, .metadata.managedFields потрапить у неконсистентний стан (що не повинно відбуватися при нормальній роботі).
Поле .metadata.managedFields керується API сервером. Ви повинні уникати його ручного оновлення.
Конфлікти
Конфлікт — це спеціальна помилка статусу, яка виникає, коли операція Apply намагається змінити поле, на яке інший менеджер також заявляє права на керування. Це запобігає ненавмисному перезапису значення, встановленого іншим користувачем. У разі конфлікту аплікатор має 3 варіанти для вирішення конфліктів:
Перезаписати значення, стати єдиним менеджером: Якщо перезапис значення був навмисним (або якщо аплікатор є автоматичним процесом, таким як контролер), аплікатор повинен встановити параметр запиту force в true (для kubectl apply використовується параметр командного рядка --force-conflicts) і повторити запит. Це змусить операцію завершитись успішно, змінить значення поля та видалить це поле з усіх інших записів менеджерів у managedFields.
Не перезаписувати значення, відмовитися від права управління: Якщо аплікатор більше не піклується про значення поля, він може видалити його зі своєї локальної моделі ресурсу і зробити новий запит, виключивши це конкретне поле. Це залишить значення незмінним і видалить поле із запису аплікатора у managedFields.
Не перезаписувати значення, стати спільним менеджером: Якщо аплікатор все ще піклується про значення поля, але не хоче його перезаписувати, він може змінити значення цього поля у своїй локальній моделі ресурсу, щоб відповідати значенню обʼєкта на сервері, а потім зробити новий запит, враховуючи це локальне оновлення. Це залишить значення незмінним і зробить це поле керованим спільно аплікатором та всіма іншими менеджерами, які вже заявили про керування ним.
Менеджери полів
Менеджери визначають окремі робочі процеси, які змінюють обʼєкт (особливо корисно при конфліктах!), і можуть бути вказані через параметр запиту fieldManager як частина запиту на зміни. Коли ви застосовуєте зміни до ресурсу, параметр fieldManager є обовʼязковим. Для інших оновлень сервер API визначає ідентифікатор менеджера поля з заголовка HTTP "User-Agent:" (якщо він присутній).
Коли ви використовуєте інструмент kubectl для виконання операції Server-Side Apply, kubectl типово встановлює ідентифікатор менеджера в "kubectl".
Серіалізація
На рівні протоколу Kubernetes представляє тіла повідомлень Server-Side Apply у форматі YAML, з медіа типом application/apply-patch+yaml.
Примітка:
Незалежно від того, чи ви подаєте дані у форматі JSON чи YAML, використовуйте application/apply-patch+yaml як значення заголовка Content-Type.
Усі документи JSON є дійсними документами YAML. Однак, у Kubernetes є помилка, яка полягає в тому, що він використовує парсер YAML, який не повністю реалізує специфікацію YAML. Деякі JSON екранування можуть не бути розпізнаними.
Серіалізація є такою ж, як для обʼєктів Kubernetes, за винятком того, що клієнти не зобовʼязані надсилати повний обʼєкт.
Ось приклад тіла повідомлення Server-Side Apply (повністю специфікований намір):
{
"apiVersion": "v1",
"kind": "ConfigMap"}
(це зробить оновлення без змін, за умови, що це було надіслано як тіло patch запиту до дійсного ресурсу v1/configmaps, з відповідним заголовком запиту Content-Type).
Операції з області управління полями
Операції API Kubernetes, де враховується управління полями, включають:
Server-Side Apply (HTTP PATCH, з типом контенту application/apply-patch+yaml)
Заміна наявного обʼєкта (update для Kubernetes; PUT на рівні HTTP)
Обидві операції оновлюють .metadata.managedFields, але поводяться трохи по-різному.
Якщо не вказано примусове перезаписування, операція apply, що зустрічає конфлікти на рівні полів, завжди зазнає невдачі; у противагу, якщо зміну здійснено за допомогою update, що впливає на кероване поле, конфлікт ніколи не призводить до невдачі операції.
Усі запити Server-Side Apply patch повинні ідентифікувати себе, надаючи параметр запиту fieldManager, тоді як цей параметр запиту є необовʼязковим для операцій update. Нарешті, при використанні операції Apply ви не можете визначати managedFields у тілі запиту, який ви надсилаєте.
Приклад обʼєкта з декількома менеджерами може виглядати так:
---apiVersion:v1kind:ConfigMapmetadata:name:test-cmnamespace:defaultlabels:test-label:testmanagedFields:- manager:kubectloperation:Applytime:'2019-03-30T15:00:00.000Z'apiVersion:v1fieldsType:FieldsV1fieldsV1:f:metadata:f:labels:f:test-label:{}- manager:kube-controller-manageroperation:UpdateapiVersion:v1time:'2019-03-30T16:00:00.000Z'fieldsType:FieldsV1fieldsV1:f:data:f:key:{}data:key:new value
У цьому прикладі друга операція була виконана як update менеджером з назвою kube-controller-manager. Запит на оновлення був успішним і змінив значення в полі даних, що призвело до зміни управління цим полем на kube-controller-manager.
Якби була спроба застосувати це оновлення за допомогою Server-Side Apply, запит зазнав би невдачі через конфлікт управління.
Стратегія злиття
Стратегія злиття, реалізована в Server-Side Apply, забезпечує більш стабільний життєвий цикл обʼєкта. Server-Side Apply намагається обʼєднати поля на основі того, хто ними керує, замість того, щоб замінювати їх значення. Таким чином, кілька акторів можуть оновлювати один і той самий обʼєкт без несподіваних перешкод.
Коли користувач надсилає обʼєкт із повністю специфікованим наміром на точку доступу Server-Side Apply, сервер зʼєднує його з поточним обʼєктом, надаючи перевагу значенню з тіла запиту, якщо воно вказане в обох місцях. Якщо набір елементів, присутніх у застосованій конфігурації, не є надмножиною елементів, застосованих тим самим користувачем минулого разу, кожен відсутній елемент, яким не керують інші аплікатори, видаляється. Для отримання додаткової інформації про те, як схема обʼєкта використовується для прийняття рішень під час злиття, дивіться sigs.k8s.io/structured-merge-diff.
API Kubernetes (та код Go, який реалізує це API для Kubernetes) дозволяє визначати маркери стратегії злиття. Ці маркери описують підтримувану стратегію злиття для полів в обʼєктах Kubernetes. Для CustomResourceDefinition, ви можете встановити ці маркери під час визначення власного ресурсу.
Маркер Golang
Розширення OpenAPI
Можливі значення
Опис
//+listType
x-kubernetes-list-type
atomic/set/map
Застосовується до списків. set застосовується до списків, які включають лише скалярні елементи. Ці елементи повинні бути унікальними. map застосовується до списків вкладених типів. Значення ключів (див. listMapKey) повинні бути унікальними в списку. atomic може застосовуватися до будь-якого списку. Якщо налаштовано як atomic, весь список замінюється під час злиття. У будь-який момент часу список належить одному менеджеру. Якщо set або map, різні менеджери можуть окремо керувати елементами.
//+listMapKey
x-kubernetes-list-map-keys
Список імен полів, наприклад, ["port", "protocol"]
Застосовується лише при +listType=map. Список імен полів, значення яких унікально ідентифікують елементи у списку. Хоча ключів може бути багато, listMapKey є одниною, тому що ключі потрібно вказувати індивідуально в типі Go. Поля ключів повинні бути скалярами.
//+mapType
x-kubernetes-map-type
atomic/granular
Застосовується до map. atomic означає, що map можна замінити повністю тільки одним менеджером. granular означає, що map підтримує окремих менеджерів, які оновлюють окремі поля.
//+structType
x-kubernetes-map-type
atomic/granular
Застосовується до структур; інакше те ж використання та анотація OpenAPI, як //+mapType.
Якщо listType відсутній, сервер API інтерпретує patchStrategy=merge як listType=map і відповідний маркер patchMergeKey як listMapKey.
Тип списку atomic є рекурсивним.
(У коді Go для Kubernetes, ці маркери вказуються як коментарі, і авторам коду не потрібно повторювати їх як теґи полів).
Власні ресурси та Серверне застосування
Стандартно, Server-Side Apply обробляє власні ресурси користувачів як неструктуровані дані. Усі ключі розглядаються як поля структури, а всі списки вважаються атомарними.
Якщо у визначенні CustomResourceDefinition міститься схема, яка містить анотації, визначені у попередньому розділі Стратегія злиття, ці анотації будуть використовуватись під час злиття обʼєктів цього типу.
Сумісність при зміні топології
У рідкісних випадках автор CustomResourceDefinition (CRD) або вбудованого ресурсу може захотіти змінити специфічну топологію поля у своєму ресурсі, не збільшуючи його версію API. Зміна топології типів шляхом оновлення кластера або CRD має різні наслідки при оновленні наявних обʼєктів. Є дві категорії змін: коли поле переходить від map/set/granular до atomic і навпаки.
Коли listType, mapType або structType змінюються з map/set/granular на atomic, весь список, map або структура наявних обʼєктів будуть в підсумку належати акторам, які володіли елементом цих типів. Це означає, що будь-яка подальша зміна цих обʼєктів призведе до конфлікту.
Коли listType, mapType або structType змінюються з atomic на map/set/granular, сервер API не може визначити нову власність цих полів. Через це конфлікти не виникатимуть під час оновлення обʼєктів із цими полями. Тому не рекомендується змінювати тип із atomic на map/set/granular.
Візьмемо, наприклад, власний ресурс користувача ресурс:
До того, як spec.data зміниться з atomic на granular, manager-one володіє полем spec.data і всіма полями в ньому (key1 та key2). Коли CRD змінюється, щоб зробити spec.datagranular, manager-one продовжує володіти полем верхнього рівня spec.data (що означає, що жоден інший менеджер не може видалити map data без конфлікту), але він більше не володіє key1 та key2, тому інший менеджер може змінити або видалити ці поля без конфлікту.
Використання Server-Side Apply в контролер
Як розробник контролера, ви можете використовувати Server-Side Apply як спосіб спростити логіку оновлення вашого контролера. Основні відмінності від кead-modify-write та/або patch наступні:
застосований обʼєкт повинен містити всі поля, які цікавлять контролер.
немає способу видалити поля, які не були застосовані контролером раніше (контролер все ще може надіслати patch або update для цих випадків використання).
обʼєкт не обовʼязково має бути прочитаним перед тим; resourceVersion не потрібно вказувати.
Для контролерів рекомендується завжди застосовувати конфлікти на обʼєктах, якими вони володіють і керують, оскільки вони можуть не мати можливості розвʼязати або подіяти на ці конфлікти.
Передача власності
Окрім контролю конкурентності, забезпеченого вирішенням конфліктів, Server-Side Apply надає можливості для виконання координованих переходів власності полів від користувачів до контролерів.
Це найкраще пояснюється на прикладі. Розглянемо, як безпечно перевести власність поля replicas від користувача до контролера, дозволяючи автоматичне горизонтальне масштабування для Deployment, використовуючи ресурс HorizontalPodAutoscaler та його супровідний контролер.
Скажімо, користувач визначив Deployment з replicas, встановленим на бажане значення:
Тепер користувач хоче видалити replicas з конфігурації, щоб вони випадково не конфліктували з HorizontalPodAutoscaler (HPA) та його контролером. Однак виникають перегони: може пройти деякий час, перш ніж HPA вирішить змінити .spec.replicas; якщо користувач видаляє .spec.replicas перед тим, як HPA запише в поле і стане його власником, тоді API-сервер встановить .spec.replicas на 1 (стандартна кількість реплік для Deployment). Це не те, що хоче користувач, ще й тимчасово — це може погіршити робоче навантаження.
Є два рішення:
(базовий) Залиште replicas в конфігурації; коли HPA нарешті запише в це поле, система сповістить користувачу про конфлікт при спробі зробити це. На цьому етапі безпечно видалити його з конфігурації.
(більш розширений) Однак, якщо користувач не хоче чекати, наприклад, через те що вони хочуть, щоб кластер був зрозумілим для їх колег, тоді вони можуть виконати наступні кроки, щоб зробити видалення replicas з їх конфігурації безпечним:
Спочатку користувач визначає новий маніфест, що містить лише поле replicas:
# Збережіть цей файл як 'nginx-deployment-replicas-only.yaml'.apiVersion:apps/v1kind:Deploymentmetadata:name:nginx-deploymentspec:replicas:3
Примітка:
Файл YAML для SSA у цьому випадку містить лише поля, які ви хочете змінити. Вам не слід надавати повністю сумісний з Deployment маніфест, якщо ви хочете змінити лише поле spec.replicas, використовуючи SSA.
Користувач застосовує цей маніфест, використовуючи приватне імʼя менеджера полів. У цьому прикладі користувач вибрав handover-to-hpa:
Якщо застосування призводить до конфлікту з контролером HPA, тоді нічого не робіть. Конфлікт вказує на те, що контролер вже вимагає поле на цьому етапі.
На цьому етапі користувач може видалити поле replicas з маніфесту:
Зауважте, що кожного разу, коли контролер HPA встановлює значення поля replicas на нове значення, тимчасовий менеджер полів більше не володіє жодними полями й буде автоматично видалений. Додаткового прибирання не потрібно.
Передача власності між менеджерами
Менеджери полів можуть передавати власність поля між собою, встановлюючи значення поля в тому самому значенні в обох їх застосованих конфігураціях, що призводить до того, що вони спільно володіють полем. Після цього менеджери можуть відмовитися від володіння полям та завершити передачу іншому менеджеру поля, видаливши поле з їх застосованої конфігурації.
Порівняння з Client-Side Apply
Server-Side Apply призначений як для заміни початкової реалізації команди kubectl apply на стороні клієнта, так і для забезпечення простого та ефективного механізму для контролерів, щоб впроваджувати свої зміни.
Порівняно з анотацією last-applied, якою керує kubectl, Server-Side Apply використовує більш декларативний підхід, що відстежує управління полями обʼєкта, а не останній стан, застосований користувачем. Це означає, що як побічний ефект використання Server-Side Apply, стає доступною інформація про те, який менеджер полів керує кожним полем в обʼєкті.
Наслідком виявлення та вирішення конфліктів, реалізованих у Server-Side Apply, є те, що аплікатор завжди має актуальні значення полів у своєму локальному стані. Якщо ні, то він отримає конфлікт під час наступного застосування. Будь-який з трьох варіантів розвʼязання конфліктів призводить до того, що застосована конфігурація стає актуальною підмножиною полів обʼєкта на сервері.
Це відрізняється від Client-Side Apply, де застарілі значення, які були перезаписані іншими користувачами, залишаються в локальній конфігурації аплікатора. Ці значення стають точними лише тоді, коли користувач оновлює конкретне поле, якщо взагалі оновлює, і аплікатор не має способу дізнатися, чи наступне застосування перезапише зміни інших користувачів.
Ще однією відмінністю є те, що аплікатор, використовуючи Client-Side Apply, не може змінити версію API, яку він використовує, тоді як Server-Side Apply підтримує цей випадок використання.
Міграція між client-side і server-side apply
Перехід з client-side apply на server-side apply
Користувачі client-side apply, які керують ресурсом за допомогою kubectl apply, можуть почати використовувати server-side apply з наступним прапорцем.
kubectl apply --server-side [--dry-run=server]
Стандартно, управління полями обʼєкта переходить з client-side apply на kubectl server-side apply без виникнення конфліктів.
Увага:
Тримайте анотацію last-applied-configuration в актуальному стані. Анотація визначає поля, якими керує client-side apply. Будь-які поля, якими не керує client-side apply, викликають конфлікти.
Наприклад, якщо ви використовували kubectl scale для оновлення поля replicas після client-side apply, тоді це поле не належить client-side apply і створює конфлікти при kubectl apply --server-side.
Ця поведінка стосується server-side apply з менеджером полів kubectl. Як виняток, ви можете відмовитися від цієї поведінки, вказавши іншого, не стандартного менеджера полів, як показано в наступному прикладі. Стандартним менеджером полів для kubectl server-side apply є kubectl.
Повернення з server-side apply на client-side apply
Якщо ви керуєте ресурсом за допомогою kubectl apply --server-side, ви можете перейти на client-side apply безпосередньо за допомогою kubectl apply.
Повернення працює тому, що kubectl Server-Side Apply тримає анотацію last-applied-configuration в актуальному стані, якщо ви використовуєте kubectl apply.
Ця поведінка стосується Server-Side Apply з менеджером полів kubectl. Як виняток, ви можете відмовитися від цієї поведінки, вказавши іншого, не стандартного менеджера полів, як показано в наступному прикладі. Стандартним менеджером полів для kubectl server-side apply є kubectl.
Дієслово PATCH для ресурсу, який підтримує Server-Side Apply, може приймати неофіційний тип контенту application/apply-patch+yaml. Користувачі Server-Side Apply можуть надіслати частково специфіковані обʼєкти у вигляді YAML як тіло запиту PATCH до URI ресурсу. При застосуванні конфігурації слід завжди включати всі поля, які є важливими для результату (наприклад, бажаний стан), який ви хочете визначити.
Усі повідомлення в форматі JSON є дійсним YAML. Деякі клієнти вказують запити Server-Side Apply, використовуючи тіла запитів у форматі YAML, які також є дійсним JSON.
Контроль доступу і дозволи
Оскільки Server-Side Apply є типом PATCH, субʼєкт (такий як Роль для Kubernetes RBAC) потребує дозволу patch для редагування наявних ресурсів, а також дозволу на дієслово create для створення нових ресурсів за допомогою Server-Side Apply.
Очищення managedFields
Можливо видалити всі managedFields з обʼєкта, переписавши їх за допомогою patch (JSON Merge Patch, Strategic Merge Patch, JSON Patch) або через update (HTTP PUT); іншими словами, через будь-яку операцію запису, окрім apply. Це можна зробити, переписавши поле managedFields порожнім записом. Два приклади:
Це перепише managedFields списком, що містить один порожній запис, що в результаті повністю видалить managedFields з обʼєкта. Зверніть увагу, що встановлення managedFields як порожнього списку не скине це поле. Це зроблено спеціально, щоб managedFields ніколи не видалялися клієнтами, які не знають про це поле.
У випадках, коли операція скидання комбінується зі змінами інших полів, крім managedFields, це призведе до того, що спочатку managedFields буде скинуто, а інші зміни будуть оброблені пізніше. У результаті аплікатор бере на себе відповідальність за будь-які поля, оновлені в тому ж запиті.
Примітка:
Server-Side Apply не правильно відстежує власність на субресурси, які не отримують тип обʼєкта ресурсу. Якщо ви використовуєте Server-Side Apply з таким субресурсом, змінені поля можуть не відслідковуватися.
Що далі
Ви можете прочитати про managedFields у довіднику API Kubernetes для верхнього рівня поля metadata.
2.3 - Бібліотеки клієнтів
Ця сторінка містить огляд бібліотек клієнтів для використання Kubernetes API різними мовами програмування.
Для написання застосунків, що використовують Kubernetes REST API, вам не потрібно самостійно реалізовувати виклики API та типи запитів/відповідей. Ви можете використовувати бібліотеку клієнтів для мови програмування, яку ви використовуєте.
Бібліотеки клієнтів часто виконують загальні завдання, такі як автентифікація. Більшість бібліотек клієнтів можуть знаходити та використовувати Kubernetes Service Account для автентифікації, якщо API клієнт працює всередині кластера Kubernetes, або можуть розуміти формат kubeconfig файлу для читання облікових даних та адреси API сервера.
Офіційно підтримувані бібліотеки клієнтів Kubernetes
Примітка: Цей розділ містить посилання на проєкти сторонніх розробників, які надають функціонал, необхідний для Kubernetes. Автори проєкту Kubernetes не несуть відповідальності за ці проєкти. Проєкти вказано в алфавітному порядку. Щоб додати проєкт до цього списку, ознайомтеся з посібником з контенту перед надсиланням змін. Докладніше.
Наступні бібліотеки клієнтів Kubernetes надаються і підтримуються їх авторами, а не командою Kubernetes.
Вирази CEL оцінюються безпосередньо на сервері API, що робить CEL зручним альтернативним рішенням для зовнішніх механізмів, таких як вебхуки, для багатьох випадків розширення функціональності. Ваші вирази CEL продовжують виконуватись, поки компонент сервера API у складі панелі управління залишається доступним.
Огляд мови
Мова CEL має простий синтаксис, який схожий на вирази в C, C++, Java, JavaScript і Go.
CEL була розроблена для вбудовування в застосунки. Кожна "програма" CEL — це один вираз, який обраховується до одного значення. Вирази CEL зазвичай короткі "одноразові", що добре вбудовуються в строкові поля ресурсів API Kubernetes.
Вхідні дані для програми CEL — це "змінні". Кожне поле API Kubernetes, яке містить CEL, декларує в документації API, які змінні доступні для використання для цього поля. Наприклад, у полі x-kubernetes-validations[i].rules у CustomResourceDefinitions доступні змінні self і oldSelf, що відносяться до попереднього та поточного стану даних власного ресурсу користувача, які потрібно перевірити за допомогою виразу CEL. Інші поля API Kubernetes можуть оголошувати різні змінні. Дивіться документацію API для полів API, щоб дізнатися, які змінні доступні для цього поля.
Функції CEL, особливості та налаштування мови підтримують відкат панелі управління Kubernetes. Наприклад, опційні значення CEL були введені у Kubernetes 1.29, і лише сервери API цієї версії або новіші прийматимуть запити на запис виразів CEL, які використовують опційні значення CEL. Однак, коли кластер відкочується до версії Kubernetes 1.28, вирази CEL, що використовують "опційні значення CEL", які вже збережені в ресурсах API, продовжуватимуть правильно оцінюватись.
Бібліотеки CEL Kubernetes
Крім спільнотних бібліотек CEL, Kubernetes включає бібліотеки CEL, які доступні у всіх місцях використання CEL в Kubernetes.
Бібліотека списків Kubernetes
Бібліотека списків включає indexOf та lastIndexOf, які працюють аналогічно функціям рядків з такими самими назвами. Ці функції повертають перший або останній індекс елемента у списку.
Бібліотека списків також включає min, max та sum. Сума підтримується для всіх типів чисел, а також для типу тривалості. Мінімум та максимум підтримуються для всіх типів, що можна порівняти.
Також надається функція isSorted для зручності та підтримується для всіх типів, які можна порівняти.
Приклади:
Приклади виразів CEL, що використовують функції бібліотеки списків
Вираз CEL
Призначення
names.isSorted()
Перевірити, що список імен зберігається в алфавітному порядку
items.map(x, x.weight).sum() == 1.0
Перевірити, що "ваги" списку обʼєктів дорівнюють 1.0
Крім функції matches, наданої стандартною бібліотекою CEL, бібліотека регулярних виразів надає функції find та findAll, що дозволяють виконувати ширший спектр операцій з регулярними виразами.
Приклади:
Приклади виразів CEL, що використовують функції бібліотеки регулярних виразів
Для спрощення та безпечної обробки URL надані наступні функції:
isURL(string) перевіряє, чи є рядок рядком дійсним URL з пакетом Go net/url. Рядок повинен бути абсолютним URL.
url(string) URL конвертує рядок в URL або викликає помилку, якщо рядок не є дійсним URL.
Після розбору за допомогою функції url, отриманий обʼєкт URL має наступні методи доступу: getScheme, getHost, getHostname, getPort, getEscapedPath та getQuery.
Приклади:
Приклади виразів CEL, що використовують функції бібліотеки URL
Вираз CEL
Призначення
url('https://example.com:80/').getHost()
Отримати частину хосту 'example.com:80' URL
url('https://example.com/path with spaces/').getEscapedPath()
Для виразів CEL в API, де доступна змінна типу Authorizer, авторизатор може використовуватися для виконання перевірок авторизації для принципала (автентифікованого користувача) запиту.
Перевірки ресурсів API виконуються наступним чином:
Вкажіть групу та ресурс для перевірки: Authorizer.group(string).resource(string) ResourceCheck.
Опційно викличте будь-яку комбінацію наступних функцій побудови для подальшого обмеження перевірки авторизації. Зверніть увагу, що ці функції повертають тип отримувача та можуть бути зʼєднані ланцюгом:
ResourceCheck.subresource(string) ResourceCheck
ResourceCheck.namespace(string) ResourceCheck
ResourceCheck.name(string) ResourceCheck
Викличте ResourceCheck.check(verb string) Decision, щоб виконати перевірку авторизації.
Викличте allowed() bool або reason() string, щоб переглянути результат перевірки авторизації.
Не-ресурсна авторизація виконується так:
Вкажіть лише шлях: Authorizer.path(string) PathCheck.
Викличте PathCheck.check(httpVerb string) Decision, щоб виконати перевірку авторизації.
Викличте allowed() bool або reason() string, щоб переглянути результат перевірки авторизації.
Для виконання перевірки авторизації для службового облікового запису:
Authorizer.serviceAccount(namespace string, name string) Authorizer
Приклади виразів CEL, що використовують функції бібліотеки авторизатора
quantity(string) Quantity конвертує рядок у кількість або викликає помилку, якщо рядок не є дійсною кількістю.
Після розбору за допомогою функції quantity, отриманий обʼєкт кількості має наступний набір методів:
Набір доступних методів для кількості
Метод
Повертає тип
Опис
isInteger()
bool
Повертає true, якщо asInteger може бути викликано без помилки.
asInteger()
int
Повертає представлення поточного значення як int64, якщо це можливо, або викликає помилку, якщо конвертація призводить до переповнення або втрати точності.
asApproximateFloat()
float
Повертає представлення кількості як float64, що може втратити точність.
sign()
int
Повертає 1, якщо кількість додатня, -1, якщо вона відʼємна, або 0, якщо вона нуль.
add(<Quantity>)
Quantity
Повертає суму двох кількостей.
add(<int>)
Quantity
Повертає суму кількості та цілого числа.
sub(<Quantity>)
Quantity
Повертає різницю між двома кількостями.
sub(<int>)
Quantity
Повертає різницю між кількістю та цілим числом.
isLessThan(<Quantity>)
bool
Повертає true, якщо отримувач менше операнта.
isGreaterThan(<Quantity>)
bool
Повертає true, якщо отримувач більше операнта.
compareTo(<Quantity>)
int
Порівнює отримувача з операндом та повертає 0, якщо вони рівні, 1, якщо отримувач більший або -1, якщо отримувач менший за операнд.
Приклади:
Приклади виразів CEL, що використовують функції бібліотеки кількості
Вираз CEL
Призначення
quantity("500000G").isInteger()
Перевірка, чи конвертація в ціле число викликає помилку.
Деякі поля API Kubernetes містять повністю перевірені типи CEL-виразів. Наприклад, Правила валідації власних ресурсів повністю перевірені за типом.
Деякі поля API Kubernetes містять частково перевірені типи CEL-виразів. Частково перевірений вираз — це вираз, в якому деякі змінні статично типізовані, а інші — динамічно типізовані. Наприклад, в CEL-виразах ValidatingAdmissionPolicies, змінна request має тип, але змінна object динамічно типізована. У звʼязку з цим вираз, що містить request.namex, не пройде перевірку типів, оскільки поле namex не визначене. Однак object.namex пройде перевірку типів навіть тоді, коли поле namex не визначене для типів ресурсів, на які посилається object, оскільки object динамічно типізований.
Макрос has() в CEL можна використовувати у виразах CEL для перевірки доступності поля динамічно типізованої змінної перед спробою доступу до значення поля. Наприклад:
Порівняння рівності для масивів з x-kubernetes-list-type типу set або map ігнорує порядок елементів. Наприклад, [1, 2] == [2, 1] якщо масиви представляють значення Kubernetes set.
Конкатенація для масивів з x-kubernetes-list-type використовує семантику типу списку:
set
X + Y виконує обʼєднання, де позиції елементів у X зберігаються, а не перетинаючі елементи у Y додаються, зберігаючи їх частковий порядок.
map
X + Y виконує обʼєднання, де позиції ключів у X зберігаються, але значення перезаписуються значеннями у Y, коли ключові множини X і Y перетинаються. Елементи у Y з неперетинаючими ключами додаються, зберігаючи їх частковий порядок.
Екранування
Тільки імена властивостей ресурсів Kubernetes форми [a-zA-Z_.-/][a-zA-Z0-9_.-/]* доступні з CEL. Доступні імена властивостей екрануються згідно з наступними правилами при доступі у виразі:
Коли ви екрануєте будь-яке з ЗАРЕЗЕРВОВАНИХ ключових слів CEL, збіг повинен точно відповідати імені властивості та використовувати екранування з підкресленням (наприклад, int у слові sprint не буде екрановано, і це не буде необхідно).
Приклади екранування:
Приклади екранованих ідентифікаторів CEL
імʼя властивості
правило з екранованим імʼям властивості
namespace
self.__namespace__ > 0
x-prop
self.x__dash__prop > 0
redact__d
self.redact__underscores__d > 0
string
self.startsWith('kube')
Обмеження ресурсів
CEL не є повноцінною мовою Тюрінга і пропонує різноманітні засоби безпеки для обмеження часу виконання. Функції обмеження ресурсів CEL забезпечують зворотний звʼязок розробникам щодо складності виразів та допомагають захистити сервер API від надмірного споживання ресурсів під час оцінювання. Ці функції використовуються для запобігання надмірного споживання ресурсів сервера API під час виконання CEL.
Ключовим елементом функцій обмеження ресурсів є одиниця вартості, яку CEL визначає як спосіб відстеження використання ЦП. Одиниці вартості незалежні від системного навантаження та апаратного забезпечення. Одиниці вартості також є детермінованими; для будь-якого заданого виразу CEL та вхідних даних, оцінка виразу інтерпретатором CEL завжди призведе до однакової вартості.
Багато з основних операцій CEL мають фіксовані витрати. Найпростіші операції, такі як порівняння (наприклад, <), мають вартість 1. Деякі мають вищу фіксовану вартість, наприклад, оголошення літералів списку мають фіксовану базову вартість 40 одиниць вартості.
Виклики функцій, реалізованих у рідному коді, оцінюються на основі часової складності операції. Наприклад, операції, що використовують регулярні вирази, такі як match та find, оцінюються з використанням приблизної вартості length(regexString)*length(inputString). Приблизна вартість відображає найгірший випадок часової складності реалізації RE2 в Go.
Бюджет вартості під час виконання
Усі вирази CEL, які оцінюються Kubernetes, обмежені бюджетом вартості під час виконання. Бюджет вартості під час виконання — це оцінка фактичного використання ЦП, що обчислюється шляхом інкрементування лічильника одиниць вартості під час інтерпретації виразу CEL. Якщо інтерпретатор CEL виконає занадто багато інструкцій, бюджет вартості під час виконання буде перевищено, виконання виразу буде зупинено і результатом стане помилка.
Деякі ресурси Kubernetes визначають додатковий бюджет вартості під час виконання, який обмежує виконання декількох виразів. Якщо загальна вартість виразів перевищує бюджет, виконання виразів буде зупинено і результатом стане помилка. Наприклад, валідація власного ресурсу користувача має бюджет вартості під час виконання за одну валідацію для всіх Правил Валідації, які оцінюються для валідації власного ресурсу.
Оцінювані обмеження вартості
Для деяких ресурсів Kubernetes, сервер API також може перевірити, чи не буде найгірший випадок оціненого часу виконання виразів CEL надто дорогим для виконання. Якщо так, сервер API запобігає записуванню виразу CEL у ресурсі API, відхиляючи операції створення або оновлення, що містять вираз CEL у ресурсі API. Ця функція пропонує сильнішу гарантію, що вирази CEL, записані у ресурс API, будуть оцінені під час виконання без перевищення бюджету вартості під час виконання.
2.5 - Політика застарівання Kubernetes
Цей документ описує політику застарівання для різних аспектів системи.
Kubernetes — це велика система з багатьма компонентами та багатьма учасниками. Як і в будь-якому такому програмному забезпеченні, набір функцій природно розвивається з часом, і іноді функцію може знадобитися видалити. Це може включати API, прапорець або навіть всю функцію. Щоб уникнути порушення роботи наявних користувачів, Kubernetes дотримується політики застарівання для аспектів системи, які підлягають видаленню.
Застарівання частин API
Оскільки Kubernetes є системою, що керується API, API еволюціонував з часом, віддзеркалюючи постійно змінюване розуміння проблемної області. API Kubernetes фактично є набором API, які називаються "групами API", і кожна група API має свою незалежну версію. Версії API поділяються на 3 основні треки, кожен з яких має різні політики застарівання:
Приклад
Трек
v1
GA (загальнодоступна, стабільна)
v1beta1
Beta (попередній випуск, перед GA)
v1alpha1
Alpha (експериментальна)
Конкретний випуск Kubernetes може підтримувати будь-яку кількість груп API та будь-яку кількість версій кожного з них.
Наступні правила регулюють застарівання елементів API. Це включає:
Ресурси REST (також відомі як обʼєкти API)
Поля ресурсів REST
Анотації на ресурсах REST, включаючи "бета" анотації, але не включаючи "альфа" анотації
Перелічувані або постійні значення
Структури конфігурації компонентів
Ці правила застосовуються між офіційними випусками, а не між довільними внесками коду в основну гілку або гілки випусків.
Правило №1: Елементи API можуть бути видалені лише шляхом інкрементування версії групи API.
Після того, як елемент API був доданий до групи API у певній версії, він не може бути видалений з цієї версії або суттєво змінений, незалежно від треку.
Примітка:
З історичних причин є 2 "монолітні" групи API — "core" (без назви групи) і "extensions". Ресурси будуть поступово переміщені з цих застарілих груп API до більш доменно-специфічних груп API.
Правило №2: Обʼєкти API повинні мати можливість переходу між версіями API в даному випуску без втрати інформації, за винятком випадків, коли цілі ресурси REST не існують у деяких версіях.
Наприклад, обʼєкт може бути записаний як v1, потім прочитаний як v2 і перетворений на v1, і отриманий ресурс v1 буде ідентичний оригіналу. Представлення у v2 може відрізнятися від v1, але система повинна вміти конвертувати між ними в обидва боки. Крім того, будь-яке нове поле, додане у v2, повинно мати можливість обміну на v1 і назад, що означає, що v1 можливо доведеться додати еквівалентне поле або представити його як анотацію.
Правило №3: Версія API в даному треку не може бути застарілою на користь менш стабільної версії API.
GA версії API можуть замінювати бета та альфа версії API.
Бета версії API можуть замінювати попередні бета та альфа версії API, але не можуть замінювати GA версії API.
Альфа версії API можуть замінювати попередні альфа версії API, але не можуть замінювати GA або бета версії API.
Правило №4а: Тривалість життя API визначається рівнем стабільності API
GA версії API можуть бути позначені як застарілі, але не можуть бути видалені в межах основної версії Kubernetes
Бета версії API застарівають не раніше ніж через 9 місяців або 3 мінорних випуски після впровадження (що довше), і більше не обслуговуються через 9 місяців або 3 мінорних випуски після застарівання (що довше)
Альфа версії API можуть бути видалені в будь-якому випуску без попереднього повідомлення про застарівання
Це гарантує, що підтримка бета API охоплює максимальний підтримуваний розрив версій у 2 випуски, і що API не застоюються на нестабільних бета версіях, накопичуючи продуктивне використання, яке буде порушене, коли підтримка бета API закінчиться.
Примітка:
Зараз немає планів щодо основної версії Kubernetes, що видаляє GA API.
Примітка:
До тих пір, поки #52185 не буде вирішено, жодні версії API, які були віднесені до зберігання, не можуть бути видалені. Обслуговування REST точок доступу для цих версій може бути відключено (відповідно до графіків застарівання в цьому документі), але API сервер повинен залишатися здатним декодувати/конвертувати раніше збережені дані зі сховища.
Правило №4б: "Бажана" версія API та "версія зберігання" для даної групи можуть не просуватися до того, як буде зроблено випуск, що підтримує як нову версію, так і попередню версію.
Користувачі повинні мати можливість оновитися до нової версії Kubernetes, а потім повернутися до попередньої версії, не конвертуючи нічого до нової версії API або уникаючи порушень (якщо вони явно не використовували функції, доступні лише в новішій версії). Це особливо очевидно у збереженому представленні обʼєктів.
Все це найкраще ілюструється прикладами. Уявіть собі випуск Kubernetes, версія X, який вводить нову групу API. Новий випуск Kubernetes виходить приблизно кожні 4 місяці (3 на рік). Наступна таблиця описує, які версії API підтримуються в ряді наступних випусків.
Випуск
Версії API
Бажана/Версія зберігання
Примітки
X
v1alpha1
v1alpha1
X+1
v1alpha2
v1alpha2
v1alpha1 видалено. Необхідні дії див. у примітках до випуску.
X+2
v1beta1
v1beta1
v1alpha2 видалено. Необхідні дії див. у примітках до випуску.
X+3
v1beta2, v1beta1 (застаріла)
v1beta1
v1beta1 застаріла. Необхідні дії див. у примітках до випуску.
X+4
v1beta2, v1beta1 (застаріла)
v1beta2
X+5
v1, v1beta1 (застаріла), v1beta2 (застаріла)
v1beta2
v1beta2 застаріла. Необхідні дії див. у примітках до випуску.
X+6
v1, v1beta2 (застаріла)
v1
v1beta1 видалено. Необхідні дії див. у примітках до випуску.
X+7
v1, v1beta2 (застаріла)
v1
X+8
v2alpha1, v1
v1
v1beta2 видалено. Необхідні дії див. у примітках до випуску.
X+9
v2alpha2, v1
v1
v2alpha1 видалено. Необхідні дії див. у примітках до випуску.
X+10
v2beta1, v1
v1
v2alpha2 видалено. Необхідні дії див. у примітках до випуску.
X+11
v2beta2, v2beta1 (застаріла), v1
v1
v2beta1 застаріла. Необхідні дії див. у примітках до випуску.
v2beta1 видалено. Необхідні дії див. у примітках до випуску.
X+15
v2, v1 (застаріла)
v2
v2beta2 видалено. Необхідні дії див. у примітках до випуску.
REST ресурси (або обʼєкти API)
Розглянемо гіпотетичний REST ресурс з назвою Widget, який був присутній у версії API v1 у наведеній вище хронології і який потрібно визнати застарілим. Ми документуємо та оголошуємо про його застарівання синхронно з випуском X+1. Ресурс Widget все ще існує у версії API v1 (застарілий), але не у v2alpha1. Ресурс Widget продовжує існувати та функціонувати у випусках до, та включно з, X+8. Лише у випуску X+9, коли API v1 виходить з використання, ресурс Widget перестає існувати та його віповідна поведінка видаляється.
Починаючи з Kubernetes v1.19, виконання запиту до застарілої точки доступу REST API:
Повертає заголовок Warning (як визначено у RFC7234, Розділ 5.5) у відповіді API.
Додає "k8s.io/deprecated":"true" анотацію до події аудиту, зареєстрованої для запиту.
Встановлює метрику apiserver_requested_deprecated_apis gauge у значення 1 у процесі kube-apiserver. Метрика має мітки group, version, resource, subresource, які можна поєднати з метрикою apiserver_request_total, і мітку removed_release, яка вказує випуск Kubernetes, в якому API більше не буде обслуговуватися. Наступний запит Prometheus повертає інформацію про запити, зроблені до застарілих API, які будуть видалені у версії v1.22:
Як і REST ресурси в цілому, так і окреме поле, яке було присутнє у версії API v1, має існувати та функціонувати до видалення API v1. На відміну від ресурсів в цілому, API v2 можуть вибрати інше представлення для поля, допоки є можливість виконувати перехід між версіями в обидва боки. Наприклад, поле v1 з назвою "magnitude", яке було застарілим, може називатися "deprecatedMagnitude" в API v2. Коли v1 врешті буде видалено, застаріле поле може бути видалене з v2.
Перераховані або константні значення
Як і для REST ресурсу в цілому, так і його полів, константне значення, яке підтримувалося в API v1, має існувати та функціонувати до видалення API v1.
Структури конфігурацій компонентів
Конфігурації компонентів версіонуються та керуються аналогічно до REST ресурсів.
Майбутні роботи
З часом Kubernetes запровадить більш детальні версії API, і тоді ці правила будуть скориговані за потреби.
Застарівання прапорця або CLI
Система Kubernetes складається з кількох різних програм, які співпрацюють між собою. Іноді випуск Kubernetes може видаляти прапорці або команди CLI (загалом "елементи CLI") у цих програмах. Програми природно діляться на дві основні групи — програми для користувачів і програми для адміністраторів, які трохи відрізняються своїми політиками застарівання. Якщо прапорець явно не позначено або задокументовано як "alpha" або "beta", він вважається стабільним (GA).
Елементи CLI фактично є частиною API до системи, але оскільки вони не версіонуються так само, як REST API, правила застарівання наступні:
Правило №5а: Елементи CLI компонентів для користувачів (наприклад, kubectl) повинні функціонувати після оголошення їх застарівання не менше ніж:
GA: 12 місяців або 2 випуски (залежно від того, що довше)
Beta: 3 місяці або 1 випуск (залежно від того, що довше)
Alpha: 0 випусків
Правило №5б: Елементи CLI компонентів для адміністраторів (наприклад, kubelet) повинні функціонувати після оголошення їх застарівання не менше ніж:
GA: 6 місяців або 1 випуск (залежно від того, що довше)
Beta: 3 місяці або 1 випуск (залежно від того, що довше)
Alpha: 0 випусків
Правило №5в: Елементи командного інтерфейсу (CLI) не можуть бути застарілими на користь менш стабільних елементів CLI.
Схоже на Правило №3 для API, якщо елемент інтерфейсу командного рядка замінюється альтернативною реалізацією, наприклад, перейменуванням наявного елемента або переходом на використання конфігурації, отриманої з файлу, замість аргументу командного рядка, ця рекомендована альтернатива повинна мати той самий або вищий рівень стабільності.
Правило №6: Застарілі елементи CLI повинні видавати попередження (можливо, такі, що відключаються) при використанні.
Застарівання функціонала або поведінки
Час від часу випуск Kubernetes потребує визнання застарілим певного функціонала або поведінки системи, яка не контролюється API або CLI. У цьому випадку правила застарівання такі:
Правило №7: Застарілі функції повинні функціонувати не менше 1 року після оголошеного застарівання.
Якщо функцію або поведінку замінює альтернативна реалізація, яка вимагає роботи для переходу, повинні бути зусилля спростити перехід, якщо це можливо. Якщо альтернативна реалізація контролюється організацією Kubernetes, застосовуються наступні правила:
Правило №8: Функцію або поведінку не можна визнати застарілою на користь альтернативної реалізації, яка менш стабільна.
Наприклад, загальнодоступну функцію не можна визнати застарілою на користь бета-заміщення. Проєкт Kubernetes, однак, закликає користувачів переходити на альтернативні реалізації навіть до досягнення ними того самого рівня зрілості. Це особливо важливо для дослідження нових використань функції або отримання раннього зворотного звʼязку щодо заміщення.
Альтернативні реалізації іноді можуть бути зовнішніми інструментами або продуктами, наприклад, функція може перейти від kubelet до середовища виконання контейнерів, яке не контролюється проєктом Kubernetes. У таких випадках правило не може бути застосоване, але повинні бути зусилля, щоб забезпечити наявність шляху переходу, який не компрометує рівень зрілості компонентів. У прикладі з середовищами виконання контейнерів, зусилля можуть включати спроби забезпечити те, що популярні середовища виконання контейнерів мають версії, які пропонують такий самий рівень стабільності під час впровадження цієї заміни.
Правила застарівання для функцій та поведінки не означають, що всі зміни в системі керуються цією політикою. Ці правила застосовуються тільки до значних, видимих для користувача поведінок, які впливають на правильність роботи програм, що працюють на Kubernetes або впливають на адміністрування кластерів Kubernetes, і які повністю видаляються.
Виняток з вищезазначеного правила — це функціональні можливості. Функціональні можливості — це пари ключ=значення, які дозволяють користувачам увімкнути/вимкнути експериментальні функції.
Функціональні можливості призначені для охоплення життєвого циклу розробки функції — вони не призначені для API, що мають існувати довгий час. Таким чином, очікується, що вони будуть застарілі та видалені після того, як функція стане GA або буде відкинута.
Під час руху функції через стадії, повʼязані функціональні можливості, змінюються. Життєвий цикл функції, збігається з їх відповідними функціональними можливостями, такий:
Alpha: функціональні можливості стандартно вимкнені та можуть бути увімкнені користувачем.
Beta: функціональні можливості стандартно увімкнені та можуть бути вимкнені користувачем.
GA: функціональні можливості застарілі (див. "Застарівання") і стають нечинними.
GA, вікно застарівання завершено: функціональні можливості видаляються, і виклики до них більше не приймаються.
Застарівання
Функції можуть бути видалені на будь-якому етапі життєвого циклу до GA. Коли функції видаляються перед виходом GA, їхні повʼязані функціональні можливості також застарівають.
Якщо виконується спроба вимкнути нечинні функціональні можливості, виклик не вдається, щоб уникнути непідтримуваних сценаріїв, які в іншому випадку можуть працювати мовчки.
У деяких випадках видалення функцій до виходу GA вимагає значного часу. Функціональні можливості можуть залишатися чинними до тих пір, поки повʼязана з ними функція не буде повністю видалена, після чого самі функціональні можливості можуть бути визнані застарілими.
Коли видалення функціональних можливостей для GA-функції також вимагає значного часу, виклики до функціональних можливостей можуть залишатися чинними, якщо функціональні можливості не впливають на функцію і не викликають помилок.
Функції, які мають бути вимкнені користувачами, повинні включати механізм для вимкнення функції в повʼязаних функціональних можливостях.
Версіонування для функціональних можливостей відрізняється від раніше обговорених компонентів, тому правила застарівання такі:
Правило №9: Функціональні можливості повинні бути визнані застарілими, коли відповідна функція, якою вони керують, переходить на етап життєвого циклу наступним чином. Функціональні можливості повинні функціонувати не менше ніж:
Від бета-функції до GA: 6 місяців або 2 випуски (залежно від того, що довше)
Від бета-функції до EOL: 3 місяці або 1 випуск (залежно від того, що довше)
Від альфа-функції до EOL: 0 випусків
Правило №10: Застарілі функціональні можливості повинні відповідати попередженням при використанні. Коли функціональні можливості застарівають, вони повинні бути задокументовані як в примітках про випуски, так і в відповідній довідці CLI. Як попередження, так і документація повинні вказувати, чи є функціональні можливості нечинними.
Застарівання метрики
Кожен компонент панелі управління Kubernetes використовує метрики (зазвичай за допомогою точки доступу /metrics), які зазвичай обробляються адміністраторами кластера. Не всі метрики однакові: деякі метрики широко використовуються як показники рівня сервісу (SLI) або для визначення SLO, тому вони мають більшу важливість. Інші метрики мають більш експериментальний характер або використовуються переважно у процесі розробки Kubernetes.
Відповідно, метрики поділяються на три класи стабільності (ALPHA, BETA, STABLE); це впливає на видалення метрики під час випуску Kubernetes. Ці класи визначаються важливістю метрики. Правила для застарівання та видалення метрики такі:
Правило №11а: Метрики для відповідного класу стабільності повинні функціонувати не менше ніж:
STABLE: 4 випуски або 12 місяців (що довше)
BETA: 2 випуски або 8 місяців (що довше)
ALPHA: 0 випусків
Правило №11б: Метрики, після їх оголошеного застарівання, повинні функціонувати не менше ніж:
STABLE: 3 випуски або 9 місяців (що довше)
BETA: 1 випуск або 4 місяці (що довше)
ALPHA: 0 випусків
Застарілі метрики будуть мати текст опису, у якому буде префікс з повідомленням про застарівання '(Застаріло з x.y)', і під час реєстрації метрики буде запис в лог з попередженням. Подібно до їх стабільних незастарілих аналогів, застарілі метрики будуть автоматично зареєстровані в точці доступу метрик і, отже, будуть видимими.
У наступному випуску (коли deprecatedVersion метрики дорівнює current_kubernetes_version - 3), застаріла метрика стане прихованою метрикою. На відміну від їх застарілих аналогів, приховані метрики більше не будуть автоматично реєструватися в точці доступу метрик (таким чином, вони будуть приховані). Однак їх можна буде явно увімкнути через прапорець командного рядка (--show-hidden-metrics-for-version=). Це надає адміністраторам кластера можливість виходу зі складностей з міграцією від застарілої метрики, якщо вони не змогли відреагувати на раніше надані попередження щодо застарівання. Приховані метрики повинні бути видалені після одного випуску.
Винятки
Жодна політика не може охопити кожну можливу ситуацію. Ця політика є живим документом і буде розвиватися з часом. На практиці будуть ситуації, які не підпадають під цю політику чітко або для яких ця політика стає серйозною перешкодою. Такі ситуації слід обговорювати з SIGs та керівниками проєкту, щоб знайти найкращі рішення для конкретних випадків, завжди памʼятаючи, що Kubernetes прагне бути стабільною системою, яка, наскільки це можливо, ніколи не підводить користувачів. Винятки завжди будуть оголошені в усіх відповідних повідомленням про випуски.
2.6 - Посібник з міграції від застарілих API
Під час еволюції API Kubernetes періодично переглядаються або оновлюються. Коли API розвиваються, старий API стає застарілим і, зрештою, вилучається. Ця сторінка містить інформацію, яку вам потрібно знати у випадку міграції від застарілих версій API на новіші та стабільніші версії API.
Вилучені API в розрізі версій
v1.32
У випуску v1.32 перестануть обслуговуватися наступні застарілі версії API:
Ресурси контролю потоку
Версія API flowcontrol.apiserver.k8s.io/v1beta3 FlowSchema та PriorityLevelConfiguration більше не буде обслуговуватися у v1.32.
Перенесіть маніфести та клієнти API на використання версії API flowcontrol.apiserver.k8s.io/v1, доступної з версії v1.29.
Усі наявні збережені обʼєкти доступні через новий API
Значні зміни у flowcontrol.apiserver.k8s.io/v1:
Поле spec.limited.nominalConcurrencyShares PriorityLevelConfiguration має стандартне значення 30, коли не вказане, і явне значення 0 не змінюється на 30.
v1.29
У випуску v1.29 перестали обслуговуватися наступні застарілі версії API:
Ресурси контролю потоку
Версія API flowcontrol.apiserver.k8s.io/v1beta2 FlowSchema та PriorityLevelConfiguration більше не обслуговується з версії v1.29.
Перенесіть маніфести та клієнти API на використання версії API flowcontrol.apiserver.k8s.io/v1, доступної з версії v1.29, або версії API flowcontrol.apiserver.k8s.io/v1beta3, доступної з версії v1.26.
Усі наявні збережені обʼєкти доступні через новий API
Значні зміни в flowcontrol.apiserver.k8s.io/v1:
Поле spec.limited.assuredConcurrencyShares PriorityLevelConfiguration перейменоване на spec.limited.nominalConcurrencyShares і має стандартне значення 30, коли не вказане, і явне значення 0 не змінюється на 30.
Значні зміни в flowcontrol.apiserver.k8s.io/v1beta3:
Поле spec.limited.assuredConcurrencyShares PriorityLevelConfiguration перейменоване на spec.limited.nominalConcurrencyShares
v1.27
Випуск v1.27 припинив обслуговування наступних застарілих версій API:
CSIStorageCapacity
Версія API CSIStorageCapacity storage.k8s.io/v1beta1 більше не обслуговується з версії v1.27.
Перенесіть маніфести та клієнти API на версію API storage.k8s.io/v1, доступну з версії v1.24.
Усі наявні обʼєкти, які зберігаються, доступні через новий API
Немає помітних змін
v1.26
Випуск v1.26 припинив обслуговування наступних застарілих версій API:
Ресурси керування потоком
Версія API FlowSchema та PriorityLevelConfiguration flowcontrol.apiserver.k8s.io/v1beta1 більше не обслуговується з версії v1.26.
Перенесіть маніфести та клієнти API на версію API flowcontrol.apiserver.k8s.io/v1beta2.
Усі наявні обʼєкти, які зберігаються, доступні через новий API
Немає помітних змін
HorizontalPodAutoscaler
Версія API HorizontalPodAutoscaler autoscaling/v2beta2 більше не обслуговується з версії v1.26.
Перенесіть маніфести та клієнти API на версію API autoscaling/v2, доступну з версії v1.23.
Усі наявні обʼєкти, які зберігаються, доступні через новий API
Випуск v1.25 припинив обслуговування наступних застарілих версій API:
CronJob
Версія API CronJob batch/v1beta1 більше не обслуговується з версії v1.25.
Перенесіть маніфести та клієнти API на версію API batch/v1, доступну з версії v1.21.
Усі наявні обʼєкти, які зберігаються, доступні через новий API
Немає помітних змін
EndpointSlice
Версія API EndpointSlice discovery.k8s.io/v1beta1 більше не обслуговується з версії v1.25.
Перенесіть маніфести та клієнти API на версію API discovery.k8s.io/v1, доступну з версії v1.21.
Усі наявні обʼєкти, які зберігаються, доступні через новий API
Помітні зміни в discovery.k8s.io/v1:
використовуйте поле nodeName для кожного Endpoint замість застарілого поля topology["kubernetes.io/hostname"]
використовуйте поле zone для кожного Endpoint замість застарілого поля topology["topology.kubernetes.io/zone"]
topology замінено полем deprecatedTopology, яке не доступне для запису у v1
Event
Версія API Event events.k8s.io/v1beta1 більше не обслуговується з версії v1.25.
Перенесіть маніфести та клієнти API на версію API events.k8s.io/v1, доступну з версії v1.19.
Усі наявні обʼєкти, які зберігаються, доступні через новий API
Помітні зміни в events.k8s.io/v1:
type обмежено до Normal та Warning
involvedObject перейменовано в regarding
action, reason, reportingController та reportingInstance є обовʼязковими при створенні нових events.k8s.io/v1 Events
використовуйте eventTime замість застарілого поля firstTimestamp (яке перейменовано в deprecatedFirstTimestamp та не допускається в нових events.k8s.io/v1 Events)
використовуйте series.lastObservedTime замість застарілого поля lastTimestamp (яке перейменовано в deprecatedLastTimestamp та не допускається в нових **events.k8ерсіях API events.k8s.io/v1 Events)
використовуйте series.count замість застарілого поля count (яке перейменовано в deprecatedCount та не допускається в нових events.k8s.io/v1 Events)
використовуйте reportingController замість застарілого поля source.component (яке перейменовано в deprecatedSource.component та не допускається в нових events.k8s.io/v1 Events)
використовуйте reportingInstance замість застарілого поля source.host (яке перейменовано в deprecatedSource.host та не допускається в нових events.k8s.io/v1 Events)
HorizontalPodAutoscaler
Версія API HorizontalPodAutoscaler autoscaling/v2beta1 більше не обслуговується з версії v1.25.
Перенесіть маніфести та клієнти API на версію API autoscaling/v2, доступну з версії v1.23.
Усі наявні обʼєкти, які зберігаються, доступні через новий API
Версія API PodDisruptionBudget policy/v1beta1 більше не обслуговується з версії v1.25.
Перенесіть маніфести та клієнти API на версію API policy/v1, доступну з версії v1.21.
Усі наявні обʼєкти, які зберігаються, доступні через новий API
Помітні зміни в policy/v1:
пустий spec.selector ({}), записаний до policy/v1 PodDisruptionBudget, вибирає всі теки в просторі імен (у policy/v1beta1 пустий spec.selector не вибирав жодні теки). Неустановлений spec.selector вибирає жодні теки в обох версіях API.
PodSecurityPolicy
PodSecurityPolicy в версії API policy/v1beta1 більше не обслуговується з версії v1.25, і контролер допуску PodSecurityPolicy буде видалено.
RuntimeClass в версії API node.k8s.io/v1beta1 більше не обслуговується з версії v1.25.
Перенесіть маніфести та клієнти API на версію API node.k8s.io/v1, доступну з версії v1.20.
Усі наявні обʼєкти, які зберігаються, доступні через новий API
Немає помітних змін
v1.22
Випуск v1.22 припинив обслуговування наступних застарілих версій API:
Ресурси вебхуків
Версія API admissionregistration.k8s.io/v1beta1 для MutatingWebhookConfiguration та ValidatingWebhookConfiguration більше не обслуговується з версії v1.22.
Перенесіть маніфести та клієнти API на версію API admissionregistration.k8s.io/v1, доступну з версії v1.16.
Усі наявні обʼєкти, які зберігаються, доступні через нові API
Помітні зміни:
стандартно webhooks[*].failurePolicy змінено з Ignore на Fail для v1
стандартно webhooks[*].matchPolicy змінено з Exact на Equivalent для v1
стандартно webhooks[*].timeoutSeconds змінено з 30s на 10s для v1
поле webhooks[*].sideEffects стандартно видалено, і тепер воно обовʼязкове,
і дозволяється лише None та NoneOnDryRun для v1
стандартно видалено значення поля webhooks[*].admissionReviewVersions та робиться обовʼязковим для v1 (підтримувані версії для AdmissionReview - v1 та v1beta1)
поле webhooks[*].name повинно бути унікальним в списку для обʼєктів, створених через admissionregistration.k8s.io/v1
CustomResourceDefinition
Версія API apiextensions.k8s.io/v1beta1 для CustomResourceDefinition більше не обслуговується з версії v1.22.
Перенесіть маніфести та клієнти API на версію API apiextensions.k8s.io/v1, доступну з версії v1.16.
Усі наявні обʼєкти, які зберігаються, доступні через новий API
Помітні зміни:
поле spec.scope тепер не має станадртного значення Namespaced і повинно бути явно вказано
поле spec.version вилучено в v1; використовуйте замість цього spec.versions
поле spec.validation вилучено в v1; використовуйте замість цього spec.versions[*].schema
поле spec.subresources вилучено в v1; використовуйте замість цього spec.versions[*].subresources
поле spec.additionalPrinterColumns вилучено в v1; використовуйте замість цього spec.versions[*].additionalPrinterColumns
spec.conversion.webhookClientConfig переміщено в spec.conversion.webhook.clientConfig в v1
spec.conversion.conversionReviewVersions переміщено в spec.conversion.webhook.conversionReviewVersions в v1
поле spec.versions[*].schema.openAPIV3Schema тепер обовʼязкове при створенні обʼєктів CustomResourceDefinition для v1, і повинно бути структурною схемою
spec.preserveUnknownFields: true заборонено при створенні обʼєктів CustomResourceDefinition для v1; воно повинно бути вказано у визначеннях схем як x-kubernetes-preserve-unknown-fields: true
В елементах additionalPrinterColumns поле JSONPath перейменовано в jsonPath в v1
(виправлення #66531)
APIService
Версія API apiregistration.k8s.io/v1beta1 для APIService більше не обслуговується з версії v1.22.
Перенесіть маніфести та клієнти API на версію API apiregistration.k8s.io/v1, доступну з версії v1.10.
Усі наявні обʼєкти, які зберігаються, доступні через новий API
Немає помітних змін
TokenReview
Версія API authentication.k8s.io/v1beta1 для TokenReview більше не обслуговується з версії v1.22.
Перенесіть маніфести та клієнти API на версію API authentication.k8s.io/v1, доступну з версії v1.6.
Немає помітних змін
Ресурси SubjectAccessReview
Версія API authorization.k8s.io/v1beta1 для LocalSubjectAccessReview, SelfSubjectAccessReview, SubjectAccessReview та SelfSubjectRulesReview більше не обслуговується з версії v1.22.
Перенесіть маніфести та клієнти API на версію API authorization.k8s.io/v1, доступну з версії v1.6.
Помітні зміни:
Поле spec.group перейменовано на spec.groups в v1 (виправляє #32709)
CertificateSigningRequest
Версія API certificates.k8s.io/v1beta1 для CertificateSigningRequest більше не обслуговується з версії v1.22.
Перенесіть маніфести та клієнти API на версію API certificates.k8s.io/v1, доступну з версії v1.19.
Усі наявні обʼєкти, які зберігаються, доступні через новий API
Помітні зміни в certificates.k8s.io/v1:
Для API-клієнтів, що запитують сертифікати:
Поле spec.signerName тепер обовʼязкове
(див. відомі підписувачи Kubernetes), і запити на kubernetes.io/legacy-unknown не дозволяються бути створеними через API certificates.k8s.io/v1
Поле spec.usages тепер обовʼязкове, не може містити дубльованих значень та повинно містити лише відомі використання
Для API-клієнтів, що схвалюють або підписують сертифікати:
status.conditions не може містити дублюються типи
status.conditions[*].status тепер обовʼязкове
status.certificate повинно бути в кодуванні PEM та містити лише блоки CERTIFICATE
Lease
Версія API coordination.k8s.io/v1beta1 для Lease більше не обслуговується з версії v1.22.
Перенесіть маніфести та клієнти API на версію API coordination.k8s.io/v1, доступну з версії v1.14.
Усі наявні обʼєкти, які зберігаються, доступні через новий API
Немає помітних змін
Ingress
Версії API extensions/v1beta1 та networking.k8s.io/v1beta1 для Ingress більше не обслуговуються з версії v1.22.
Перенесіть маніфести та клієнти API на версію API networking.k8s.io/v1, доступну з версії v1.19.
Усі наявні обʼєкти, які зберігаються, доступні через новий API
Помітні зміни:
Поле spec.backend перейменовано на spec.defaultBackend
Поле serviceName бекенду перейменовано на service.name
Числові поля servicePort бекенду перейменовані на service.port.number
Рядкові поля servicePort бекенду перейменовані на service.port.name
pathType тепер обовʼязковий для кожного вказаного шляху. Варіанти — Prefix, Exact, та ImplementationSpecific. Для відповідності невизначеній поведінці v1beta1 використовуйте ImplementationSpecific.
IngressClass
Версія API networking.k8s.io/v1beta1 для IngressClass більше не обслуговується з версії v1.22.
Перенесіть маніфести та клієнти API на версію API networking.k8s.io/v1, доступну з версії v1.19.
Усі наявні обʼєкти, які зберігаються, доступні через новий API
Немає помітних змін
Ресурси RBAC
Версія API rbac.authorization.k8s.io/v1beta1 для ClusterRole, ClusterRoleBinding,
Role та RoleBinding більше не обслуговується з версії v1.22.
Перенесіть маніфести та клієнти API на версію API rbac.authorization.k8s.io/v1, доступну з версії v1.8.
Усі наявні обʼєкти, які зберігаються, доступні через нові API
Немає помітних змін
PriorityClass
Версія API scheduling.k8s.io/v1beta1 для PriorityClass більше не обслуговується з версії v1.22.
Перенесіть маніфести та клієнти API на версію API scheduling.k8s.io/v1, доступну з версії v1.14.
Усі наявні обʼєкти, які зберігаються, доступні через новий API.
Немає помітних змін.
Ресурси зберігання
Версія API storage.k8s.io/v1beta1 для CSIDriver, CSINode, StorageClass та VolumeAttachment більше не обслуговується з версії v1.22.
Перенесіть маніфести та клієнти API на версію API storage.k8s.io/v1
CSIDriver доступний у storage.k8s.io/v1 починаючи з версії v1.19.
CSINode доступний у storage.k8s.io/v1 починаючи з версії v1.17.
StorageClass доступний у storage.k8s.io/v1 починаючи з версії v1.6.
VolumeAttachment доступний у storage.k8s.io/v1 з версії v1.13.
Усі наявні обʼєкти, які зберігаються, доступні через нові API.
Немає помітних змін.
v1.16
Випуск v1.16 припинив обслуговування наступних застарілих версій API:
Мережева політика
Версія API extensions/v1beta1 для NetworkPolicy більше не обслуговується з версії v1.16.
Перенесіть маніфести та клієнти API на версію API networking.k8s.io/v1, доступну з версії v1.8.
Усі наявні обʼєкти, які зберігаються, доступні через новий API.
DaemonSet
Версії API extensions/v1beta1 та apps/v1beta2 для DaemonSet більше не обслуговуються з версії v1.16.
Перенесіть маніфести та клієнти API на версію API apps/v1, доступну з версії v1.9.
Усі наявні обʼєкти, які зберігаються, доступні через новий API.
Помітні зміни:
spec.templateGeneration видалено.
spec.selector тепер є обовʼязковим і незмінним після створення; використовуйте наявні мітки шаблону як селектор для безшовного оновлення.
spec.updateStrategy.type тепер стандартно встановлено на RollingUpdate
(стандартно в extensions/v1beta1 було OnDelete).
Deployment
Версії API extensions/v1beta1, apps/v1beta1 та apps/v1beta2 для Deployment більше не обслуговуються з версії v1.16.
Перенесіть маніфести та клієнти API на версію API apps/v1, доступну з версії v1.9.
Усі наявні обʼєкти, які зберігаються, доступні через новий API.
Помітні зміни:
spec.rollbackTo видалено.
spec.selector тепер є обовʼязковим і незмінним після створення; використовуйте наявні мітки шаблону як селектор для безшовного оновлення.
spec.progressDeadlineSeconds тепер стандартно встановлено на 600 секунд
(стандартно в extensions/v1beta1 було без крайнього терміну).
spec.revisionHistoryLimit тепер стандартно встановлено на 10
(стандартно в apps/v1beta1 було 2, стандартно в extensions/v1beta1 було зберігати всі).
maxSurge та maxUnavailable тепер стандартно встановлено на 25%
(стандартно в extensions/v1beta1 було 1).
StatefulSet
Версії API apps/v1beta1 та apps/v1beta2 для StatefulSet більше не обслуговуються з версії v1.16.
Перенесіть маніфести та клієнти API на версію API apps/v1, доступну з версії v1.9.
Усі наявні обʼєкти, які зберігаються, доступні через новий API.
Помітні зміни:
spec.selector тепер є обовʼязковим і незмінним після створення; використовуйте наявні мітки шаблону як селектор для безшовного оновлення.
spec.updateStrategy.type тепер за замовчуванням встановлено на RollingUpdate
(стандартно в apps/v1beta1 було OnDelete).
ReplicaSet
Версії API extensions/v1beta1, apps/v1beta1 та apps/v1beta2 для ReplicaSet більше не обслуговуються з версії v1.16.
Перенесіть маніфести та клієнти API на версію API apps/v1, доступну з версії v1.9.
Усі наявні обʼєкти, які зберігаються, доступні через новий API.
Помітні зміни:
spec.selector тепер є обовʼязковим і незмінним після створення; використовуйте наявні мітки шаблону як селектор для безшовного оновлення.
PodSecurityPolicy
Версія API extensions/v1beta1 для PodSecurityPolicy більше не обслуговується з версії v1.16.
Перенесіть маніфести та клієнти API на версію API policy/v1beta1, доступну з версії v1.10.
Зауважте, що версія API policy/v1beta1 для PodSecurityPolicy буде видалена у версії v1.25.
Що робити
Тестування з вимкненими застарілими API
Ви можете протестувати свої кластери, запустивши API сервер зі конкретними вимкненими версіями API, щоб змоделювати майбутні видалення. Додайте наступний прапорець до аргументів запуску API сервера:
Це перетворення може використовувати не ідеальні стандартні значення. Щоб дізнатися більше про конкретний ресурс, зверніться до довідника API Kubernetes.
Примітка:
Інструмент kubectl convert не стандартно встановлюється, хоча раніше він був частиною самого kubectl. Для отримання додаткової інформації ви можете прочитати питання про застарілість та видалення для вбудованої підкоманди.
Щоб дізнатися, як налаштувати kubectl convert на вашому компʼютері, відвідайте сторінку, яка відповідає вашій операційній системі:
Linux,
macOS або
Windows.
2.7 - Точки доступу для моніторингу стану API Kubernetes
API сервер Kubernetes надає точки доступу API для індикації поточного стану API сервера. Ця сторінка описує ці точки доступу API та пояснює, як ви можете їх використовувати.
Точки доступу API для моніторингу стану
API сервер Kubernetes надає 3 точки доступу API (healthz, livez і readyz) для індикації поточного стану API сервера. Точка доступу healthz є застарілою (з Kubernetes v1.16), і ви повинні використовувати більш конкретні точки доступу livez та readyz. Точку доступу livez можна використовувати з прапорцем--livez-grace-period, щоб вказати тривалість запуску. Для належного завершення роботи ви можете вказати прапорець--shutdown-delay-duration з точкою доступу /readyz. Машини, що перевіряють healthz/livez/readyz API сервера, повинні покладатися на HTTP-код статусу. Код статусу 200 вказує, що API сервер є healthy/live/ready, залежно від викликаної точки доступу. Більш докладні опції, показані нижче, призначені для використання людьми-операторами для налагодження їх кластера або розуміння стану API сервера.
Наступні приклади покажуть, як ви можете взаємодіяти з точками доступу моніторингу стану API.
Для всіх точок доступу ви можете використовувати параметр verbose, щоб вивести перевірки та їхній стан. Це може бути корисно для оператора-людини для налагодження поточного стану API сервера, це не призначено для використання машинами:
curl -k https://localhost:6443/livez?verbose
або з віддаленого хосту з автентифікацією:
kubectl get --raw='/readyz?verbose'
Вивід буде виглядати наступним чином:
[+]ping ok
[+]log ok
[+]etcd ok
[+]poststarthook/start-kube-apiserver-admission-initializer ok
[+]poststarthook/generic-apiserver-start-informers ok
[+]poststarthook/start-apiextensions-informers ok
[+]poststarthook/start-apiextensions-controllers ok
[+]poststarthook/crd-informer-synced ok
[+]poststarthook/bootstrap-controller ok
[+]poststarthook/rbac/bootstrap-roles ok
[+]poststarthook/scheduling/bootstrap-system-priority-classes ok
[+]poststarthook/start-cluster-authentication-info-controller ok
[+]poststarthook/start-kube-aggregator-informers ok
[+]poststarthook/apiservice-registration-controller ok
[+]poststarthook/apiservice-status-available-controller ok
[+]poststarthook/kube-apiserver-autoregistration ok
[+]autoregister-completion ok
[+]poststarthook/apiservice-openapi-controller ok
healthz check passed
API сервер Kubernetes також підтримує виключення конкретних перевірок. Параметри запиту також можна комбінувати, як у цьому прикладі:
[+]ping ok
[+]log ok
[+]etcd excluded: ok
[+]poststarthook/start-kube-apiserver-admission-initializer ok
[+]poststarthook/generic-apiserver-start-informers ok
[+]poststarthook/start-apiextensions-informers ok
[+]poststarthook/start-apiextensions-controllers ok
[+]poststarthook/crd-informer-synced ok
[+]poststarthook/bootstrap-controller ok
[+]poststarthook/rbac/bootstrap-roles ok
[+]poststarthook/scheduling/bootstrap-system-priority-classes ok
[+]poststarthook/start-cluster-authentication-info-controller ok
[+]poststarthook/start-kube-aggregator-informers ok
[+]poststarthook/apiservice-registration-controller ok
[+]poststarthook/apiservice-status-available-controller ok
[+]poststarthook/kube-apiserver-autoregistration ok
[+]autoregister-completion ok
[+]poststarthook/apiservice-openapi-controller ok
[+]shutdown ok
healthz check passed
Індивідуальні перевірки стану
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.32 [alpha]
Кожна індивідуальна перевірка стану надає HTTP точку доступу і може бути перевірена індивідуально. Схема для індивідуальних перевірок стану — /livez/<healthcheck-name> або /readyz/<healthcheck-name>, де livez і readyz можуть бути використані для індикації, чи ви хочете перевірити liveness або readiness API сервера відповідно. Шлях <healthcheck-name> можна знайти, використовуючи прапорець verbose вище та шлях між [+] та ok. Ці індивідуальні перевірки стану не повинні використовуватися машинами, але можуть бути корисні для оператора-людини для налагодження системи:
У всіх кластерах Kubernetes є дві категорії користувачів: службові облікові записи, які керуються Kubernetes, і звичайні користувачі.
Припускається, що незалежна від кластера служба керує звичайними користувачами наступними способами:
адміністратор розповсюджує приватні ключі
сховище користувачів, таке як Keystone або Google Accounts
файл зі списком імен користувачів та паролів
У цьому відношенні Kubernetes не має обʼєктів, які представляють звичайні облікові записи користувачів. Звичайні користувачі не можуть бути додані до кластера через API виклик.
Хоча звичайного користувача не можна додати через API виклик, будь-який користувач, який предʼявляє дійсний сертифікат, підписаний центром сертифікації (CA) кластера, вважається автентифікованим. У цій конфігурації Kubernetes визначає імʼя користувача з поля загального імені (CN) у сертифікаті (наприклад, "/CN=bob"). Після цього підсистема контролю доступу на основі ролей (RBAC) визначає, чи авторизований користувач для виконання певної операції з ресурсом. Детальніше про це можна прочитати у темі про звичайних користувачів у запиті сертифікатів.
На відміну від цього, службові облікові записи є користувачами, якими керує Kubernetes API. Вони привʼязані до певних просторів імен і створюються автоматично API сервером або вручну через API виклики. Службові облікові записи привʼязані до набору облікових даних, збережених як Secrets, які монтуються в Podʼи, що дозволяє процесам всередині кластера взаємодіяти з Kubernetes API.
API запити привʼязані або до звичайного користувача, або до службово облікового запису, або обробляються як анонімні запити. Це означає, що кожен процес всередині або поза кластером, від користувача, який вводить kubectl на робочій станції, до kubelets на вузлах, до членів панелі управління, повинен автентифікуватися при виконанні запитів до API сервера, або бути обробленим як анонімний користувач.
Стратегії автентифікації
Kubernetes використовує клієнтські сертифікати, токени на предʼявника (bearer tokens) або проксі для автентифікації (authenticating proxy) для автентифікації API запитів через втулки автентифікації. Під час виконання HTTP запитів до API сервера втулки намагаються асоціювати наступні атрибути із запитом:
Імʼя користувача: рядок, який ідентифікує кінцевого користувача. Загальноприйняті значення можуть бути kube-admin або jane@example.com.
UID: рядок, який ідентифікує кінцевого користувача та намагається бути більш стабільним і унікальним, ніж імʼя користувача.
Групи: набір рядків, кожен з яких вказує на членство користувача в певній логічній групі користувачів. Загальноприйняті значення можуть бути system:masters або devops-team.
Додаткові поля: елемент map рядків для отримання переліку рядків, що містить додаткову інформацію, яку авторизатори можуть вважати корисною.
Усі значення є непрозорими для системи автентифікації та мають значення лише при інтерпретації авторизатором.
Ви можете одночасно ввімкнути кілька методів автентифікації. Зазвичай вам слід використовувати принаймні два методи:
токени службових облікових записів
принаймні один інший метод для автентифікації користувачів.
Коли увімкнено кілька модулів автентифікаторів, перший модуль, який успішно автентифікує запит, перериває подальшу оцінку. API сервер не гарантує порядок виконання автентифікаторів.
Група system:authenticated включена до списку груп для всіх автентифікованих користувачів.
Інтеграції з іншими протоколами автентифікації (LDAP, SAML, Kerberos, альтернативні схеми x509 тощо) можуть бути здійснені за допомогою проксі автентифікації або вебхука автентифікації.
X509 клієнтські сертифікати
Автентифікація за допомогою клієнтських сертифікатів увімкнена шляхом передачі опції --client-ca-file=SOMEFILE до API сервера. Вказаний файл повинен містити один або більше центрів сертифікації для використання у валідації клієнтських сертифікатів, представлених API серверу. Якщо представлено клієнтський сертифікат і він підтверджений, загальне імʼя субʼєкта використовується як імʼя користувача для запиту. Починаючи з Kubernetes 1.4, клієнтські сертифікати також можуть вказувати на членство користувача в групах, використовуючи поля організації сертифіката. Щоб включити кілька членств у групах для користувача, включіть кілька полів організації в сертифікат.
Наприклад, використовуючи командний рядок openssl для генерації запиту на підпис сертифіката:
Це створить CSR для імені користувача "jbeda", який належить до двох груп, "app1" і "app2".
Дивіться Керування сертифікатами для отримання інформації про те, як створити клієнтський сертифікат.
Статичний файл токенів
API сервер читає токени на предʼявника (bearer tokens) з файлу при використанні опції --token-auth-file=SOMEFILE у командному рядку. Наразі токени діють безстроково, і список токенів не можна змінити без перезавантаження API сервера.
Файл токенів є csv-файлом з мінімум 3 стовпцями: токен, імʼя користувача, uid користувача, а також необовʼязкові імена груп.
Примітка:
Якщо у вас є більше однієї групи, стовпець має бути взятий у подвійні лапки, наприклад:
token,user,uid,"group1,group2,group3"
Використання токена на предʼявника у запиті
При використанні автентифікації за допомогою токенів з HTTP клієнта, API сервер очікує заголовок Authorization зі значенням Bearer <token>. Маркер має бути послідовністю символів, яку можна помістити в значення HTTP заголовка, використовуючи лише можливості кодування та цитування HTTP. Наприклад, якщо токен — 31ada4fd-adec-460c-809a-9e56ceb75269, тоді він буде виглядати у заголовку HTTP, як показано нижче.
Для спрощення початкового налаштування нових кластерів, Kubernetes включає тип токена на предʼявника (bearer token), який керується динамічно, так званий Bootstrap Token. Ці токени зберігаються як Secrets у просторі імен kube-system, де ними можна динамічно керувати та створювати. Менеджер контролерів містить контролер TokenCleaner, який видаляє bootstrap токени в міру їх завершення.
Токени мають форму [a-z0-9]{6}.[a-z0-9]{16}. Перший компонент є ID токена, а другий компонент є Secret токена. Ви вказуєте токен у HTTP заголовку наступним чином:
Authorization: Bearer 781292.db7bc3a58fc5f07e
Ви повинні увімкнути Bootstrap Token Authenticator з прапорцем --enable-bootstrap-token-auth на API сервері. Ви повинні увімкнути контролер TokenCleaner за допомогою прапорця --controllers у Controller Manager. Це робиться за допомогою чогось типу --controllers=*,tokencleaner. kubeadm зробить це за вас, якщо ви використовуєте його для початкового налаштування кластера.
Автентифікатор автентифікує як system:bootstrap:<Token ID>. Він включений у групу system:bootstrappers. Імена користувачів та групи навмисно обмежені, щоб перешкоджати користувачам використовувати ці токени після початкового налаштування. Імена користувачів та групи можна використовувати (і використовуються kubeadm) для створення відповідних політик авторизації для підтримки початкового налаштування кластера.
Детальнішу інформацію про автентифікатор Bootstrap Token та контролери, а також про керування цими токенами за допомогою kubeadm, дивіться у Bootstrap Tokens.
Токени службових облікових записів
Службовий обліковий запис є автоматично увімкненим автентифікатором, який використовує підписані токени на предʼявника (bearer tokens) для перевірки запитів. Втулок приймає два необовʼязкові прапорці:
--service-account-key-file Файл, що містить PEM-кодовані x509 RSA або ECDSA приватні або публічні ключі, що використовуються для перевірки токенів службових облікових записів. Вказаний файл може містити кілька ключів, і прапорець може бути вказаний кілька разів з різними файлами. Якщо не вказано, використовується --tls-private-key-file.
--service-account-lookup Якщо увімкнено, токени, які видаляються з API, будуть відкликані.
Службові облікові записи зазвичай створюються автоматично API сервером та асоціюються з Podʼами, які працюють у кластері через ServiceAccountКонтролер допуску. Токени на предʼявника (bearer tokens) монтуються в Podʼи у відомих місцях, що дозволяє процесам всередині кластера взаємодіяти з API сервером. Облікові записи можуть бути явно асоційовані з Podʼами, використовуючи поле serviceAccountName у PodSpec.
Примітка:
serviceAccountName зазвичай опускається, оскільки це робиться автоматично.
apiVersion:apps/v1# ця apiVersion актуальна станом з Kubernetes 1.9kind:Deploymentmetadata:name:nginx-deploymentnamespace:defaultspec:replicas:3template:metadata:# ...spec:serviceAccountName:bob-the-botcontainers:- name:nginximage:nginx:1.14.2
Токени на предʼявника службових облікових записів (bearer tokens) є цілком дійсними для використання за межами кластера і можуть бути використані для створення ідентичностей для тривалих завдань, які бажають взаємодіяти з API Kubernetes. Щоб вручну створити службовий обліковий запис, використовуйте команду kubectl create serviceaccount (NAME). Це створює службовий обліковий запис у поточному просторі імен.
kubectl create serviceaccount jenkins
serviceaccount/jenkins created
Створіть асоційований токен:
kubectl create token jenkins
eyJhbGciOiJSUzI1NiIsImtp...
Створений токен є підписаним JSON Web Token (JWT).
Підписаний JWT може бути використаний як токен на предʼявника (bearer token) для автентифікації як вказаний службовий обліковий запис. Дивіться вище для інформації про те, як токен включається у запит. Зазвичай ці токени монтуються в Podʼи для доступу до API сервера всередині кластера, але можуть бути використані й ззовні кластера.
Службові облікові записи автентифікуються з імʼям користувача system:serviceaccount:(NAMESPACE):(SERVICEACCOUNT), і належать групам system:serviceaccounts та system:serviceaccounts:(NAMESPACE).
Попередження:
Оскільки токени службових облікових записів також можуть зберігатися в обʼєктах Secret API, будь-який користувач з правами на запис до Secrets може запитати токен, і будь-який користувач з правами на читання до тих Secrets може автентифікуватися як службовий обліковий запис. Будьте обережні при наданні дозволів на службові облікові записи та можливості читання або запису для Secrets.
Токени OpenID Connect
OpenID Connect — це варіант OAuth2, підтримуваний деякими провайдерами OAuth2, зокрема Microsoft Entra ID, Salesforce та Google. Головне розширення протоколу OAuth2 полягає в додатковому полі, яке повертається разом із токеном доступу, називається ID Token. Цей токен є JSON Web Token (JWT) з добре відомими полями, такими як електронна пошта користувача, підписаними сервером.
Для ідентифікації користувача автентифікатор використовує id_token (а не access_token) з відповіді токена OAuth2 як токен носія. Дивіться вище для того, як токен включається у запит.
Увійдіть до свого провайдера ідентичності.
Ваш провайдер ідентичності надасть вам access_token, id_token та refresh_token.
Використовуючи kubectl, використовуйте свій id_token із прапорцем --token або додайте його безпосередньо до вашого kubeconfig.
kubectl надсилає ваш id_token у заголовку Authorization до сервера API.
Сервер API перевіряє, чи є підпис JWT дійсним.
Перевіряє, чи не минув термін дії id_token.
Виконує перевірку вимог та/або користувача, якщо з AuthenticationConfiguration налаштовані вирази CEL.
Переконується, що користувач авторизований.
Після авторизації сервер API повертає відповідь kubectl.
kubectl надає зворотній звʼязок користувачу.
Оскільки всі дані, необхідні для верифікації вашої особи, містяться в id_token, Kubernetes не потрібно "дзвонити додому" до провайдера ідентичності. У моделі, де кожен запит є stateless, це забезпечує дуже масштабоване рішення для автентифікації. Це має кілька викликів:
Kubernetes не має "вебінтерфейсу" для ініціювання процесу автентифікації. Немає оглядача або інтерфейсу для збору облікових даних, тому вам потрібно спочатку автентифікуватися у свого провайдера ідентичності.
id_token не можна відкликати, він схожий на сертифікат, тому він повинен бути короткостроковим (лише кілька хвилин), що може бути дуже незручним, оскільки потрібно отримувати новий токен кожні кілька хвилин.
Для автентифікації в панелі управління Kubernetes, ви повинні використовувати команду kubectl proxy або зворотний проксі, який вставляє id_token.
Налаштування сервера API
Використання прапорців
Щоб увімкнути втулок, налаштуйте наступні прапорці на сервері API:
Параметр
Опис
Приклад
Обовʼязковий
--oidc-issuer-url
URL провайдера, який дозволяє серверу API знаходити публічні ключі підпису. Приймаються лише URL-адреси, що використовують схему https://. Це зазвичай URL виявлення провайдера, змінений на порожній шлях
Якщо URL виявлення OIDC провайдера https://accounts.provider.example/.well-known/openid-configuration, значення повинно бути https://accounts.provider.example
Так
--oidc-client-id
Ідентифікатор клієнта, для якого мають бути видані всі токени.
kubernetes
Так
--oidc-username-claim
JWT вимога для використання як імені користувача. Стандартно sub, яке очікується що має бути унікальним ідентифікатором кінцевого користувача. Адміністратори можуть вибрати інші вимоги, такі як email або name, залежно від свого провайдера. Однак, вимоги, відмінні від email, будуть мати префікс URL провайдера, щоб уникнути зіткнень назв з іншими втулками.
sub
Ні
--oidc-username-prefix
Префікс, доданий до вимог імені користувача, щоб уникнути зіткнень з наявними іменами (наприклад, користувачами system:). Наприклад, значення oidc: створить імена користувачів, такі як oidc:jane.doe. Якщо цей прапорець не вказано, і значення --oidc-username-claim відрізняється від email, стандартний префікс ( Issuer URL )#, де ( Issuer URL ) — це значення --oidc-issuer-url. Значення - можна використовувати для відключення всіх префіксів.
oidc:
Ні
--oidc-groups-claim
JWT вимога для використання як групи користувача. Якщо вимога присутня, вона повинна бути масивом рядків.
groups
Ні
--oidc-groups-prefix
Префікс, доданий до вимог груп, щоб уникнути зіткнень з наявними назвами (наприклад, групами system:). Наприклад, значення oidc: створить назви груп, такі як oidc:engineering та oidc:infra.
oidc:
Ні
--oidc-required-claim
Пара ключ=значення, яка описує обовʼязкову вимогу в ID Token. Якщо встановлено, вимога перевіряється на наявність в ID Token з відповідним значенням. Повторіть цей прапорець, щоб вказати кілька вимог.
claim=value
Ні
--oidc-ca-file
Шлях до сертифіката для ЦС, який підписав вебсертифікат вашого провайдера ідентичності. Стандартно використовується кореневий ЦС хосту.
/etc/kubernetes/ssl/kc-ca.pem
Ні
--oidc-signing-algs
Прийняті алгоритми підпису. Стандартно "RS256".
RS512
Ні
Налаштування автентифікації з файлу
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.30 [beta] (стандартно увімкнено: true)
JWT Автентифікатор є автентифікатором для автентифікації користувачів Kubernetes за допомогою токенів, що відповідають стандарту JWT. Автентифікатор спробує розібрати необроблений ID токен, перевірити, чи він підписаний налаштованим видавцем. Публічний ключ для перевірки підпису перевіряється на публічній точці доступу видавця за допомогою OIDC discovery.
Мінімальний допустимий JWT повинен містити наступні твердження:
{
"iss": "https://example.com", // має збігатися з issuer.url
"aud": ["my-app"], // принаймні один з елементів в issuer.audiences повинен збігатися з твердженням "aud" в наданих JWT.
"exp": 1234567890, // закінчення терміну дії токена у вигляді часу Unix (кількість секунд, що минули з 1 січня 1970 року UTC)
"<username-claim>": "user"// це твердження для імені користувача, налаштоване в claimMappings.username.claim або claimMappings.username.expression
}
Підхід з використанням конфігураційного файлу дозволяє налаштовувати декілька JWT автентифікаторів, кожен з унікальними issuer.url та issuer.discoveryURL. Конфігураційний файл навіть дозволяє використовувати CEL вирази для зіставлення тверджень на атрибути користувача, а також для перевірки тверджень та інформації про користувача. API сервер також автоматично перезавантажує автентифікатори при зміні конфігураційного файлу. Ви можете використовувати метрику apiserver_authentication_config_controller_automatic_reload_last_timestamp_seconds для моніторингу часу останнього перезавантаження конфігурації сервером API.
Необхідно вказати шлях до конфігураційного файлу автентифікації за допомогою прапорця --authentication-config на сервері API. Якщо ви хочете використовувати командні прапорці замість конфігураційного файлу, вони продовжать працювати як раніше. Щоб отримати нові можливості, такі як налаштування декількох автентифікаторів, встановлення декількох аудиторій для одного видавця, перейдіть на використання конфігураційного файлу.
Для Kubernetes версії v1.32, формат файлу структурованої конфігурації автентифікації є на рівні бета-версії, і механізм використання цієї конфігурації також є на рівні бета-версії. За умови, що ви не вимкнули спеціально функційну можливістьStructuredAuthenticationConfiguration для вашого кластера, ви можете увімкнути структуровану автентифікацію, вказавши аргумент командного рядка --authentication-config для kube-apiserver. Приклад файлу конфігурації структурованої автентифікації наведено нижче.
Примітка:
Якщо ви вкажете --authentication-config разом з будь-якими аргументами командного рядка --oidc-*, це є некоректною конфігурацією. У цій ситуації сервер API повідомить про помилку й одразу завершить роботу. Якщо ви хочете перейти на використання структурованої конфігурації автентифікації, вам потрібно видалити аргументи командного рядка --oidc-* і використовувати конфігураційний файл замість них.
---## УВАГА: це приклад конфігурації.# Не використовуйте це для вашого кластера!#apiVersion:apiserver.config.k8s.io/v1beta1kind:AuthenticationConfiguration# список автентифікаторів для автентифікації користувачів Kubernetes за допомогою токенів, що відповідають стандарту JWT.# максимальна кількість дозволених автентифікаторів – 64.jwt:- issuer:# URL має бути унікальним для всіх автентифікаторів.# URL не повинен конфліктувати з видавцем, налаштованим у --service-account-issuer.url:https://example.com# Те ж саме, що і --oidc-issuer-url.# discoveryURL, якщо вказано, замінює URL, що використовується для отримання інформації про виявлення,# замість використання "{url}/.well-known/openid-configuration".# Точно вказане значення використовується, тому "/.well-known/openid-configuration"# має бути включено у discoveryURL, якщо це потрібно.## Поле "issuer" у отриманій інформації про виявлення має збігатися з полем "issuer.url"# в AuthenticationConfiguration і буде використовуватися для перевірки твердження "iss" у наданих JWT.# Це для сценаріїв, коли точки доступу well-known та jwks розміщені в іншому# місці, ніж видавець (наприклад, локально в кластері).# discoveryURL має відрізнятися від URL, якщо вказано, і має бути унікальним для всіх автентифікаторів.discoveryURL:https://discovery.example.com/.well-known/openid-configuration# PEM-кодовані сертифікати CA, які використовуються для перевірки підключення при отриманні# інформації про виявлення. Якщо не вказано, буде використовуватися системний перевіряючий.# Те саме значення, що і вміст файлу, на який посилається прапорець --oidc-ca-file.certificateAuthority:<PEM-кодовані сертифікати CA># audiences – це набір прийнятних аудиторій, для яких повинен бути виданий JWT.# Принаймні один з елементів повинен збігатися з твердженням "aud" у наданих JWT.audiences:- my-app# Те ж саме, що і --oidc-client-id.- my-other-app# це повинно бути встановлено на "MatchAny", коли вказано кілька аудиторій.audienceMatchPolicy:MatchAny# правила, що застосовуються для перевірки тверджень токена для автентифікації користувачів.claimValidationRules:# Те ж саме, що і --oidc-required-claim key=value.- claim:hdrequiredValue:example.com# Замість claim та requiredValue, ви можете використовувати expression для перевірки твердження.# expression – це вираз CEL, який оцінюється до булевого значення.# всі вирази повинні бути true для успішної перевірки.- expression:'claims.hd == "example.com"'# Повідомлення налаштовує повідомлення про помилку, яке відображається в логах сервера API, коли перевірка не вдається.message:твердження hd повинно бути встановлено у example.com- expression:'claims.exp - claims.nbf <= 86400'message:загальний час життя токена не повинен перевищувати 24 годиниclaimMappings:# username представляє опцію для атрибута імені користувача.# Це єдиний обовʼязковий атрибут.username:# Те ж саме, що і --oidc-username-claim. Взаємовиключно з username.expression.claim:"sub"# Те ж саме, що і --oidc-username-prefix. Взаємовиключно з username.expression.# якщо username.claim встановлено, username.prefix обовʼязково має бути встановлено.# Встановіть значення "" явно, якщо префікс не потрібен.prefix:""# Взаємовиключно з username.claim і username.prefix.# expression – це вираз CEL, який оцінюється як рядок.## 1. Якщо у виразі username.expression використовується 'claims.email', то 'claims.email_verified' має бути використано у# username.expression або extra[*].valueExpression або claimValidationRules[*].expression.# Приклад виразу правила валідації заявки, який автоматично збігається з валідацією# застосовується, коли username.claim має значення 'email' - 'claims.?email_verified.orValue(true)'.# 2. Якщо імʼя користувача, що оцінюється на основі виразу username.expression, є порожнім рядком, запит на автентифікацію# запит не буде виконано.expression:'claims.username + ":external-user"'# groups представляє опцію для атрибута групи.groups:# Те ж саме, що і --oidc-groups-claim. Взаємовиключно з groups.expression.claim:"sub"# Те ж саме, що і --oidc-groups-prefix. Взаємовиключно з groups.expression.# якщо groups.claim встановлено, groups.prefix обовʼязково має бути встановлено.# Встановіть значення "" явно, якщо префікс не потрібен.prefix:""# Взаємовиключно з groups.claim і groups.prefix.# expression – це вираз CEL, який оцінюється як рядок або список рядків.expression:'claims.roles.split(",")'# uid представляє опцію для атрибута унікального ідентифікатора.uid:# Взаємовиключно з uid.expression.claim:"sub"# Взаємовиключно з uid.claim.# expression – це вираз CEL, який оцінюється як рядок.expression:'claims.uid'# екстра атрибути для додавання до обʼєктв UserInfo. Ключі мають бути у вигляді шляху з префіксом домену та бути унікальними.extra:- key:"example.com/tenant"# valueExpression – це вираз CEL, який оцінюється як рядок або список рядків.valueExpression:'claims.tenant'# правила валідації, що застосовуються до фінального обʼєкта користувача.userValidationRules:# expression – це вираз CEL, який оцінюється до булевого значення.# всі вирази повинні бути true для успішної перевірки.- expression:"!user.username.startsWith('system:')"# message налаштовує повідомлення про помилку, яке відображається в логах сервера API, коли перевірка не вдається.message:'неможна використовувате це імʼя користувача, зарезервовано префіксом system:'- expression:"user.groups.all(group, !group.startsWith('system:'))"message:'неможна використовувате цю назву групи, зарезервовано префіксом system:'
Вираз правил валідації твердження (claim)
jwt.claimValidationRules[i].expression представляє вираз, який буде оцінений CEL. Вирази CEL мають доступ до вмісту корисного навантаження токена, організованого у змінну CEL claims.
claims - це карта імен тверджень (як рядків) до значень тверджень (будь-якого типу).
Вираз правила валідації користувача
jwt.userValidationRules[i].expression представляє вираз, який буде оцінений CEL. Вирази CEL мають доступ до вмісту userInfo, організованого у змінну CEL user. Зверніться до UserInfo API документації для отримання схеми user.
Вираз зіставлення твердження
jwt.claimMappings.username.expression, jwt.claimMappings.groups.expression, jwt.claimMappings.uid.expressionjwt.claimMappings.extra[i].valueExpression представляє вираз, який буде оцінений CEL. Вирази CEL мають доступ до вмісту корисного навантаження токена, організованого у змінну CEL claims. claims — зіствлення імен тверджень (як рядків) до значень тверджень (будь-якого типу).
apiVersion:apiserver.config.k8s.io/v1beta1kind:AuthenticationConfigurationjwt:- issuer:url:https://example.comaudiences:- my-appclaimMappings:username:expression:'claims.username + ":external-user"'groups:expression:'claims.roles.split(",")'uid:expression:'claims.sub'extra:# key - рядок, який буде використано як додатковий атрибут key.# key має бути шляхом з префіксом домену (наприклад, example.org/foo). Всі символи перед першим "/" повинні бути дійсними# субдомену, як визначено в RFC 1123. Всі символи після першого "/" повинні# бути дійсними символами HTTP-шляху, як визначено в RFC 3986.# k8s.io, kubernetes.io та їх субдомени зарезервовані для використання в Kubernetes і не можуть бути використані.# ключ має бути рядковим та унікальним для всіх додаткових атрибутів.- key:'example.com/tenant'valueExpression:'claims.tenant'userValidationRules:- expression:"!user.username.startsWith('system:')"# вибарз буде оцінений як true, тоож валідація пройде успішно.message: 'username cannot used reserved system:prefix'
apiVersion:apiserver.config.k8s.io/v1beta1kind:AuthenticationConfigurationjwt:- issuer:url:https://example.comaudiences:- my-appclaimValidationRules:- expression:'claims.hd == "example.com"'# маркер нижче не має цього твердження, тому перевірка не вдасться.message:the hd claim must be set to example.comclaimMappings:username:expression:'claims.username + ":external-user"'groups:expression:'claims.roles.split(",")'uid:expression:'claims.sub'extra:- key:'example.com/tenant'valueExpression:'claims.tenant'userValidationRules:- expression:"!user.username.startsWith('system:')"# tвибарз буде оцінений як true, тоож валідація пройде успішно.message: 'username cannot used reserved system:prefix'
Токен із зазначеною вище AuthenticationConfiguration не зможе автентифікуватись, оскільки твердження hd не має значення example.com. Сервер API поверне помилку 401 Unauthorized.
apiVersion:apiserver.config.k8s.io/v1beta1kind:AuthenticationConfigurationjwt:- issuer:url:https://example.comaudiences:- my-appclaimValidationRules:- expression:'claims.hd == "example.com"'message:the hd claim must be set to example.comclaimMappings:username:expression:'"system:" + claims.username'# це призведе до додавання префіксу "system:" до імені користувача і не пройде перевірку.groups:expression:'claims.roles.split(",")'uid:expression:'claims.sub'extra:- key:'example.com/tenant'valueExpression:'claims.tenant'userValidationRules:- expression:"!user.username.startsWith('system:')"# імʼя користувача буде system:foo, а вираз матиме значення false, тому перевірка не вдасться.message: 'username cannot used reserved system:prefix'
який не пройде перевірку користувача, оскільки ім’я користувача починається з system:. Сервер API поверне помилку 401 Unauthorized.
Обмеження
Розподілені твердження не працюють через вирази CEL.
Конфігурація селектора вихідного трафіку не підтримується для викликів до issuer.url та issuer.discoveryURL.
Kubernetes не надає провайдера ідентифікації OpenID Connect. Ви можете використовувати наявного публічного провайдера ідентифікації OpenID Connect (наприклад, Google або інші). Або ж ви можете запустити власного провайдера ідентифікації, такого як dex,
Keycloak, CloudFoundry UAA, або Tremolo Security's OpenUnison.
Для того, щоб провайдер ідентифікації працював з Kubernetes, він повинен:
Публічний ключ для перевірки підпису отримується з публічної точки доступу видавця за допомогою OIDC discovery. Якщо ви використовуєте файл конфігурації автентифікації, провайдер ідентифікації не обовʼязково має публічно відкривати точку доступу discovery. Ви можете розмістити точку доступу discovery в іншому місці, ніж видавець (наприклад, локально в кластері) і вказати issuer.discoveryURL у файлі конфігурації.
Працювати через TLS з не застарілими шифрами
Мати сертифікат, підписаний ЦС (навіть якщо ЦС не комерційний або самопідписаний)
Примітка щодо вимоги №3 вище, що потреби в сертифікаті, підписаного ЦС. Якщо ви розгортаєте власного провайдера ідентифікації (на відміну від одного з хмарних провайдерів, таких як Google або Microsoft), ви ПОВИІННІ мати сертифікат вебсервера провайдера ідентифікації, підписаний сертифікатом з прапорцем CA, встановленим на TRUE, навіть якщо він самопідписаний. Це повʼязано з тим, що реалізація клієнта TLS в GoLang дуже сувора до стандартів перевірки сертифікатів. Якщо у вас немає під рукою ЦС, ви можете використовувати скрипт gencert від команди Dex для створення простого ЦС і пари підписаного сертифіката та ключа. Або ви можете використовувати цей подібний скрипт, який генерує сертифікати SHA256 з довшим терміном дії та більшим розміром ключа.
Перший варіант — використання автентифікатора kubectl oidc, який встановлює id_token як токен на предʼявника для всіх запитів і оновлює токен після закінчення його терміну дії. Після того, як ви увійшли до свого провайдера, використовуйте kubectl, щоб додати ваші id_token, refresh_token, client_id та client_secret для налаштування втулка.
Провайдери, які не повертають id_token як частину відповіді на оновлення токена, не підтримуються цим втулком і повинні використовувати "Варіант 2" нижче.
kubectl config set-credentials USER_NAME \
--auth-provider=oidc \
--auth-provider-arg=idp-issuer-url=( issuer url )\
--auth-provider-arg=client-id=( your client id )\
--auth-provider-arg=client-secret=( your client secret )\
--auth-provider-arg=refresh-token=( your refresh token )\
--auth-provider-arg=idp-certificate-authority=( path to your ca certificate )\
--auth-provider-arg=id-token=( your id_token )
Як приклад, запустіть наведену нижче команду після автентифікації у постачальника ідентифікаційної інформації:
Після закінчення терміну дії вашого id_tokenkubectl спробує оновити ваш id_token за допомогою ваших refresh_token і client_secret, зберігаючи нові значення для refresh_token і id_token у вашому .kube/config.
Варіант 2 — Використання опції --token
Команда kubectl дозволяє передати токен за допомогою параметра --token. Скопіюйте та вставте id_token у цей параметр:
kubectl --token=eyJhbGciOiJSUzI1NiJ9.eyJpc3MiOiJodHRwczovL21sYi50cmVtb2xvLmxhbjo4MDQzL2F1dGgvaWRwL29pZGMiLCJhdWQiOiJrdWJlcm5ldGVzIiwiZXhwIjoxNDc0NTk2NjY5LCJqdGkiOiI2RDUzNXoxUEpFNjJOR3QxaWVyYm9RIiwiaWF0IjoxNDc0NTk2MzY5LCJuYmYiOjE0NzQ1OTYyNDksInN1YiI6Im13aW5kdSIsInVzZXJfcm9sZSI6WyJ1c2VycyIsIm5ldy1uYW1lc3BhY2Utdmlld2VyIl0sImVtYWlsIjoibXdpbmR1QG5vbW9yZWplZGkuY29tIn0.f2As579n9VNoaKzoF-dOQGmXkFKf1FMyNV0-va_B63jn-_n9LGSCca_6IVMP8pO-Zb4KvRqGyTP0r3HkHxYy5c81AnIh8ijarruczl-TK_yF5akjSTHFZD-0gRzlevBDiH8Q79NAr-ky0P4iIXS8lY9Vnjch5MF74Zx0c3alKJHJUnnpjIACByfF2SCaYzbWFMUNat-K1PaUk5-ujMBG7yYnr95xD-63n8CO8teGUAAEMx6zRjzfhnhbzX-ajwZLGwGUBT4WqjMs70-6a7_8gZmLZb2az1cZynkFRj2BaCkVT3A2RrjeEwZEtGXlMqKJ1_I2ulrOVsYx01_yD35-rw get nodes
Автентифікація за допомогою вебхука
Автентифікація за допомогою вебхука — це механізм перевірки маркерів носіїв.
--authentication-token-webhook-config-file — файл конфігурації, який описує, як отримати доступ до віддаленого сервісу вебхука.
--authentication-token-webhook-cache-ttl — як довго кешувати рішення щодо автентифікації. Стандартно дві хвилини.
--authentication-token-webhook-version визначає, чи використовувати authentication.k8s.io/v1beta1 або authentication.k8s.io/v1
обʼєкти TokenReview для надсилання/отримання інформації від вебхука. Стандартно v1beta1.
Файл конфігурації використовує формат файлу kubeconfig. У файлі clusters посилається на віддалений сервіс, а
users посилається на вебхук API-сервера. Приклад:
# Версія API KubernetesapiVersion:v1# Тип обʼєкта APIkind:Config# clusters посилається на віддалений сервіс.clusters:- name:name-of-remote-authn-servicecluster:certificate-authority:/path/to/ca.pem # ЦС для перевірки віддаленого сервісу.server:https://authn.example.com/authenticate# URL віддаленого сервісу для запиту. 'https' рекомендовано для промислового застосування.# users посилається на конфігурацію вебхука API-сервера.users:- name:name-of-api-serveruser:client-certificate:/path/to/cert.pem# сертифікат для використання втулком вебхукаclient-key:/path/to/key.pem # ключ, що відповідає сертифікату# файли kubeconfig потребують контексту. Надати один для API-сервера.current-context:webhookcontexts:- context:cluster:name-of-remote-authn-serviceuser:name-of-api-servername:webhook
Коли клієнт намагається автентифікуватись на API-сервері за допомогою токена на предʼявника, як розглядалось вище, вебхук автентифікації надсилає POST-запит з JSON-серіалізованим обʼєктом TokenReview, що містить токен для віддаленого сервісу.
Зверніть увагу, що обʼєкти API вебхука підпадають під ті ж правила сумісності версій, що й інші обʼєкти API Kubernetes. Виконавці повинні перевірити поле apiVersion запиту, щоб забезпечити правильну десеріалізацію, і повинні відповідати обʼєктом TokenReview тієї ж версії, що й запит.
API-сервер Kubernetes типово надсилає запити authentication.k8s.io/v1beta1 для зворотної сумісності. Щоб отримувати запити authentication.k8s.io/v1, API-сервер повинен бути запущений з параметром --authentication-token-webhook-version=v1.
{"apiVersion": "authentication.k8s.io/v1","kind": "TokenReview","spec": {# Непрозорий токен на прежʼявника носія, надісланий на API-сервер"token": "014fbff9a07c...",# Необовʼязковий список ідентифікаторів аудиторії для сервера, якому був представлений токен.# Автентифікатори токенів, що враховують аудиторію (наприклад, OIDC автентифікатори токенів)# повинні перевірити, що токен був призначений для принаймні однієї з аудиторій у цьому списку,# і повернути перетин цього списку та дійсних аудиторій для токена в статусі відповіді.# Це гарантує, що токен дійсний для автентифікації на сервері, якому він був представлений.# Якщо аудиторії не надані, токен повинен бути перевірений для автентифікації на API-сервері Kubernetes."audiences": ["https://myserver.example.com","https://myserver.internal.example.com"]}}
{"apiVersion": "authentication.k8s.io/v1beta1","kind": "TokenReview","spec": {# Непрозорий токен на предʼявника, надісланий на API-сервер"token": "014fbff9a07c...",# Необовʼязковий список ідентифікаторів аудиторії для сервера, якому був представлений токен.# Автентифікатори токенів, що враховують аудиторію (наприклад, OIDC автентифікатори токенів)# повинні перевірити, що токен був призначений для принаймні однієї з аудиторій у цьому списку,# і повернути перетин цього списку та дійсних аудиторій для токена в статусі відповіді.# Це гарантує, що токен дійсний для автентифікації на сервері, якому він був представлений.# Якщо аудиторії не надані, токен повинен бути перевірений для автентифікації на API-сервері Kubernetes."audiences": ["https://myserver.example.com","https://myserver.internal.example.com"]}}
Віддалений сервіс повинен заповнити поле status запиту, щоб вказати на успішність входу. Поле spec тіла відповіді ігнорується та може бути опущене. Віддалений сервіс повинен повернути відповідь, використовуючи ту ж версію API TokenReview, яку він отримав. Успішна перевірка маркера носія буде виглядати так:
{"apiVersion": "authentication.k8s.io/v1","kind": "TokenReview","status": {"authenticated": true,"user": {# Обовʼязково"username": "janedoe@example.com",# Необовʼязково"uid": "42",# Необовʼязкові членства у групах"groups": ["developers","qa"],# Необовʼязкова додаткова інформація, надана автентифікатором.# Це не повинно містити конфіденційних даних, оскільки це може бути записано в логах# або обʼєктах API та доступно для вебхуків допуску."extra": {"extrafield1": ["extravalue1","extravalue2"]}},# Необовʼязковий список, який можуть повернути автентифікатори токенів, що враховують аудиторію,# містить аудиторії зі списку `spec.audiences`, для яких токен був дійсним.# Якщо це опущено, токен вважається дійсним для автентифікації на API-сервері Kubernetes."audiences": ["https://myserver.example.com"]}}
{"apiVersion": "authentication.k8s.io/v1beta1","kind": "TokenReview","status": {"authenticated": true,"user": {# Обовʼязково"username": "janedoe@example.com",# Необовʼязково"uid": "42",# Необовʼязкові членства у групах"groups": ["developers","qa"],# Необовʼязкова додаткова інформація, надана автентифікатором.# Це не повинно містити конфіденційних даних, оскільки це може бути записано в логах# або обʼєктах API та доступно для вебхуків допуску."extra": {"extrafield1": ["extravalue1","extravalue2"]}},# Необовʼязковий список, який можуть повернути автентифікатори токенів, що враховують аудиторію,# містить аудиторії зі списку `spec.audiences`, для яких токен був дійсним.# Якщо це опущено, токен вважається дійсним для автентифікації на API-сервері Kubernetes."audiences": ["https://myserver.example.com"]}}
{"apiVersion": "authentication.k8s.io/v1","kind": "TokenReview","status": {"authenticated": false,# Необовʼязково включати деталі, чому автентифікація не вдалася.# Якщо помилка не вказана, API поверне загальне повідомлення Unauthorized.# Поле error ігнорується, коли authenticated=true."error": "Credentials are expired"}}
{"apiVersion": "authentication.k8s.io/v1beta1","kind": "TokenReview","status": {"authenticated": false,# Необовʼязково включати деталі, чому автентифікація не вдалася.# Якщо помилка не вказана, API поверне загальне повідомлення Unauthorized.# Поле error ігнорується, коли authenticated=true."error": "Credentials are expired"}}
Проксі автентифікації
API-сервер може бути налаштований для ідентифікації користувачів на основі значень заголовків запиту, таких як X-Remote-User. Цей механізм призначений для використання в комбінації з проксі-сервером автентифікації, який встановлює значення заголовка запиту.
--requestheader-username-headers Обовʼязково, нечутливий до регістру. Імена заголовків для перевірки, у порядку, для ідентифікації користувача. Перший заголовок, який містить значення, використовується як імʼя користувача.
--requestheader-group-headers Версія 1.6+. Необовʼязково, нечутливий до регістру. Пропонується використовувати "X-Remote-Group". Імена заголовків для перевірки, у порядку, для визначення груп користувача. Усі значення в усіх зазначених заголовках використовуються як імена груп.
--requestheader-extra-headers-prefix Версія 1.6+. Необовʼязково, нечутливий до регістру. Пропонується використовувати "X-Remote-Extra-". Префікси заголовків для перевірки додаткової інформації про користувача (зазвичай використовується налаштованим втулком авторизації). У всіх заголовків, які починаються з будь-якого з зазначених префіксів, префікси вилучаються. Решта імені заголовка перетворюється на нижній регістр і декодується у відповідності з RFC 3986, і стає додатковим ключем, а значення заголовка — додатковим значенням.
Для запобігання підробці заголовків, проксі-сервер автентифікації повинен представити дійсний клієнтський сертифікат на API-сервер для перевірки за допомогою вказаного CA перед тим, як заголовки запиту будуть перевірені. ПОПЕРЕДЖЕННЯ: не використовуйте CA, який використовується в іншому контексті, якщо ви не розумієте ризики та механізми захисту використання CA.
--requestheader-client-ca-file Обовʼязково. Файл з сертифікатами у форматі PEM. Дійсний клієнтський сертифікат повинен бути представлений і перевірений за допомогою сертифікатів у вказаному файлі перед перевіркою заголовків запиту для імен користувачів.
--requestheader-allowed-names Необовʼязково. Список значень Common Name (CN). Якщо встановлено, дійсний клієнтський сертифікат з CN з вказаного списку повинен бути представлений перед перевіркою заголовків запиту для імен користувачів. Якщо порожній, дозволений будь-який CN.
Анонімні запити
Коли увімкнено, запити, які не відхиляються іншими налаштованими методами автентифікації, розглядаються як анонімні запити та отримують імʼя користувача system:anonymous і групу system:unauthenticated.
Наприклад, на сервері з налаштованою автентифікацією за допомогою токенів та увімкненим анонімним доступом, запит із недійсним токеном автентифікації отримає помилку 401 Unauthorized. Запит без токена автентифікації буде розглядатися як анонімний запит.
У версіях 1.5.1-1.5.x анонімний доступ типово вимкнено і може бути увімкнено шляхом додавання опції --anonymous-auth=true до API-сервера.
У версіях 1.6+ анонімний доступ типово увімкнено, якщо використовується режим авторизації, відмінний від AlwaysAllow, і може бути вимкнено шляхом додавання опції --anonymous-auth=false до API-сервера. Починаючи з версії 1.6, авторизатори ABAC і RBAC вимагають явної авторизації користувача system:anonymous або групи system:unauthenticated, тому застарілі правила політики, які надають доступ користувачеві * або групі *, не включають анонімних користувачів.
Налаштування анонімної автентифікації
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.32 [beta] (стандартно увімкнено: true)
AuthenticationConfiguration можна використовувати для налаштування анонімного автентифікатора. Якщо ви встановили поле anonymous у файлі AuthenticationConfiguration, ви не можете встановити прапорець --anonymous-auth.
Основна перевага налаштування анонімного автентифікатора за допомогою конфігураційного файлу автентифікації полягає в тому, що, крім увімкнення та вимкнення анонімної автентифікації, ви також можете налаштувати, які точки доступу що підтримують анонімну автентифікацію.
Ось приклад конфігураційного файлу автентифікації:
---## УВАГА: це приклад конфігурації.# Не використовуйте його для вашого власного кластера!#apiVersion:apiserver.config.k8s.io/v1beta1kind:AuthenticationConfigurationanonymous:enabled:trueconditions:- path:/livez- path:/readyz- path:/healthz
У наведеній конфігурації лише точки доступу /livez, /readyz і /healthz доступні для анонімних запитів. Будь-які інші точки доступу будуть недоступні, навіть якщо це дозволено конфігурацією RBAC.
Імперсонізація користувачів
Користувач може діяти від імені іншого користувача через заголовки імперсонізації. Це дозволяє вручну перевизначити інформацію про користувача, який виконує запит. Наприклад, адміністратор може використовувати цю функцію для налагодження політики авторизації, тимчасово імперсонуючи іншого користувача та перевіряючи, чи запит відхилено.
Запити з імперсонізацією спочатку автентифікуються як запити від імені запитувача, потім переключаються на імперсоновану інформацію про користувача.
Користувач робить API-запит зі своїми обліковими даними і заголовками імперсонізації.
API-сервер автентифікує користувача.
API-сервер переконується, що автентифіковані користувачі мають права імперсонізації.
Інформація про користувача замінюється значеннями імперсонізації.
Запит оцінюється, авторизація діє на основі імперсонованої інформації про користувача.
Для здійснення запиту на імперсонізацію можна використовувати такі заголовки HTTP:
Impersonate-User: Імʼя користувача, від імені якого потрібно діяти.
Impersonate-Group: Імʼя групи, від імені якої потрібно діяти. Може надаватися кілька разів для встановлення кількох груп. Опціонально. Потрібен Impersonate-User.
Impersonate-Extra-( extra name ): Динамічний заголовок для звʼязування додаткових полів з користувачем. Опціонально. Потрібен Impersonate-User. Для збереження послідовності ( extra name ) повинно бути малими літерами, а будь-які символи, які не є допустимими в HTTP-заголовках, МАЮТЬ бути у форматі utf8 та процентно-кодовані.
Impersonate-Uid: Унікальний ідентифікатор, який представляє імперсонованого користувача. Опціонально. Потрібен Impersonate-User. Kubernetes не накладає жодних вимог щодо формату цього рядка.
Примітка:
До версії 1.11.3 (та 1.10.7, 1.9.11), ( extra name ) міг містити лише символи, які були допустимими в HTTP-заголовках.
Примітка:
Impersonate-Uid доступний лише у версіях 1.22.0 і вище.
Приклад заголовків імперсонізації при імперсонуванні користувача з групами:
Для використання kubectl встановіть прапорець --as для налаштування заголовка Impersonate-User, встановіть прапорець --as-group для налаштування заголовка Impersonate-Group.
kubectl drain mynode
Error from server (Forbidden): User "clark" cannot get nodes at the cluster scope. (get nodes mynode)
kubectl не може імперсонувати додаткові поля або UID.
Для імперсонізації користувача, групи, ідентифікатора користувача (UID) або додаткових полів, користувач, який виконує імперсонізацію, повинен мати можливість виконувати дію "impersonate" з типом атрибута, який імперсонується ("user", "group", "uid" і т.д.). Для кластерів, що використовують втулок авторизації RBAC, наступна роль ClusterRole охоплює правила, необхідні для налаштування заголовків імперсонізації користувачів і груп:
Для імперсонізації, додаткові поля та імперсоновані UID належать до групи apiGroup "authentication.k8s.io". Додаткові поля оцінюються як субресурси ресурсу "userextras". Щоб дозволити користувачеві використовувати заголовки імперсонізації для додаткового поля "scopes" та для UID, користувачеві слід надати таку роль:
apiVersion:rbac.authorization.k8s.io/v1kind:ClusterRolemetadata:name:scopes-and-uid-impersonatorrules:# Може встановлювати заголовок "Impersonate-Extra-scopes" та заголовок "Impersonate-Uid".- apiGroups:["authentication.k8s.io"]resources:["userextras/scopes","uids"]verbs:["impersonate"]
Значення заголовків імперсонізації також можна обмежити, обмеживши набір resourceNames, які ресурс може приймати.
apiVersion:rbac.authorization.k8s.io/v1kind:ClusterRolemetadata:name:limited-impersonatorrules:# Може імперсонувати користувача "jane.doe@example.com"- apiGroups:[""]resources:["users"]verbs:["impersonate"]resourceNames:["jane.doe@example.com"]# Може імперсонувати групи "developers" та "admins"- apiGroups:[""]resources:["groups"]verbs:["impersonate"]resourceNames:["developers","admins"]# Може імперсонувати додаткове поле "scopes" зі значеннями "view" і "development"- apiGroups:["authentication.k8s.io"]resources:["userextras/scopes"]verbs:["impersonate"]resourceNames:["view","development"]# Може імперсонувати UID "06f6ce97-e2c5-4ab8-7ba5-7654dd08d52b"- apiGroups:["authentication.k8s.io"]resources:["uids"]verbs:["impersonate"]resourceNames:["06f6ce97-e2c5-4ab8-7ba5-7654dd08d52b"]
Примітка:
Імперсонізація користувача або групи дозволяє вам виконувати будь-які дії, якби ви були цим користувачем або групою; з цієї причини імперсонізація не є обмеженою областю.
Якщо ви хочете дозволити імперсонізацію за допомогою Kubernetes RBAC, це вимагає використання ClusterRole та ClusterRoleBinding, а не Role та RoleBinding.
Втулки облікових даних client-go
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.22 [stable]
k8s.io/client-go та інструменти, які використовують його, такі як kubectl та kubelet, можуть виконувати зовнішню команду для отримання облікових даних користувача.
Ця функція призначена для клієнтських інтеграцій з протоколами автентифікації, які не підтримуються на рівні k8s.io/client-go (LDAP, Kerberos, OAuth2, SAML та ін.). Вутулок реалізує логіку, специфічну для протоколу, а потім повертає непрозорі облікові дані для використання. Майже всі випадки використання втулків автентифікації потребують наявності компоненту на стороні сервера з підтримкою автентифікації токенів webhook, щоб інтерпретувати формат облікових даних, який генерується клієнтським втулком.
Примітка:
У попередніх версіях kubectl вбудовано підтримувалися автентифікація в AKS та GKE, але це більше не актуально.
Приклад використання
У гіпотетичному сценарії використання організація запускає зовнішню службу, яка обмінює облікові дані LDAP на підписані токени, специфічні для користувача. Служба також може відповідати на запити автентифікатора токенів webhook, щоб перевірити токени. Користувачам буде потрібно встановити втулок автентифікації на своїй робочій станції.
Для автентифікації в API:
Користувач видає команду kubectl.
Вутулок облікових даних запитує користувача облікові дані LDAP, обмінює облікові дані зовнішньою службою на токен.
Вутулок облікових даних повертає токен client-go, який використовує його як токен власника на сервері API.
apiVersion:v1kind:Configusers:- name:my-useruser:exec:# Команда для виконання. Обовʼязково.command:"example-client-go-exec-plugin"# Версія API, яку слід використовувати при декодуванні ресурсу ExecCredentials. Обовʼязково.## Версія API, що повертається втулком, ПОВИННА відповідати версії, вказаній тут.## Щоб інтегруватися з інструментами, які підтримують кілька версій (наприклад, client.authentication.k8s.io/v1beta1),# встановіть змінну середовища, передайте аргумент інструменту, що вказує, яку версію очікує втулка виконання,# або прочитайте версію з обʼєкта ExecCredential у змінній середовища KUBERNETES_EXEC_INFO.apiVersion:"client.authentication.k8s.io/v1"# Змінні середовища, що встановлюються під час виконання втулку. Необовʼязково.env:- name:"FOO"value:"bar"# Аргументи, які передаються під час виконання втулку. Необовʼязково.args:- "arg1"- "arg2"# Текст, який показуєтсья користувачу, коли виконуваний файл не знайдено. Необовʼязково.installHint:| example-client-go-exec-plugin потрібно для автентифікації
в поточному кластері. Його можна встановити:
На macOS: brew install example-client-go-exec-plugin
На Ubuntu: apt-get install example-client-go-exec-plugin
На Fedora: dnf install example-client-go-exec-plugin
...# Чи надавати інформацію про кластер, яка може містити# дуже великі дані сертифікату CA, цьому втулка виконання як частину KUBERNETES_EXEC_INFO# змінної середовища.provideClusterInfo:true# Угода між втулком виконання та стандартним введенням/виведенням. Якщо# угода не може бути виконана, цей втулок виконання не буде запущено, та буде# повернено помилку. Допустимі значення: "Never" (цей втулок виконання ніколи не використовує стандартний ввід),# "IfAvailable" (цей втулок виконання хоче використовувати стандартний ввід, якщо він доступний),# або "Always" (цей втулок виконання вимагає стандартний ввід для роботи). Обовʼязково.interactiveMode:Neverclusters:- name:my-clustercluster:server:"https://172.17.4.100:6443"certificate-authority:"/etc/kubernetes/ca.pem"extensions:- name:client.authentication.k8s.io/exec# зарезервоване імʼя розширення для кожної конфігурації виконання кластераextension:arbitrary:configthis:може бути надано через змінну середовища KUBERNETES_EXEC_INFO при встановленні provideClusterInfoyou:["можете","покласти","будь-що","тут"]contexts:- name:my-clustercontext:cluster:my-clusteruser:my-usercurrent-context:my-cluster
apiVersion:v1kind:Configusers:- name:my-useruser:exec:# Команда для виконання. Обовʼязково.command:"example-client-go-exec-plugin"# Версія API, яку слід використовувати при декодуванні ресурсу ExecCredentials. Обовʼязково.## Версія API, повернута втулком, ПОВИННА відповідати версії, вказаній тут.## Щоб інтегруватися з інструментами, які підтримують кілька версій (наприклад, client.authentication.k8s.io/v1),# встановіть змінну середовища, перед ```yamlapiVersion:"client.authentication.k8s.io/v1beta1"# Змінні середовища, що встановлюються під час виконання втулку. Необовʼязково.env:- name:"FOO"value:"bar"# Аргументи, які передаються під час виконання втулку. Необовʼязково.args:- "arg1"- "arg2"# Текст, який показується користувачу, коли виконуваний файл не знайдено. Необовʼязково.installHint:| example-client-go-exec-plugin потрібно для автентифікації
в поточному кластері. Його можна встановити:
На macOS: brew install example-client-go-exec-plugin
На Ubuntu: apt-get install example-client-go-exec-plugin
На Fedora: dnf install example-client-go-exec-plugin
...# Чи надавати інформацію про кластер, яка може містити# дуже великі дані сертифікату CA, цьому втулку виконання як частину KUBERNETES_EXEC_INFO# змінної середовища.provideClusterInfo:true# Угода між втулком виконання та стандартним введенням/виведенням. Якщо# угода не може бути виконана, цей втулок виконання не буде запущено, а буде# повернено помилку. Допустимі значення: "Never" (цей втулок виконання ніколи не використовує стандартний ввід),# "IfAvailable" (цей втулок виконання хоче використовувати стандартний ввід, якщо він доступний),# або "Always" (цей втулок виконання вимагає стандартний ввід для роботи). Необовʼязково.# За замовчуванням - "IfAvailable".interactiveMode:Neverclusters:- name:my-clustercluster:server:"https://172.17.4.100:6443"certificate-authority:"/etc/kubernetes/ca.pem"extensions:- name:client.authentication.k8s.io/exec# зарезервоване імʼя розширення для кожної конфігурації виконання кластераextension:arbitrary:configthis:може бути надано через змінну середовища KUBERNETES_EXEC_INFO при встановленні provideClusterInfoyou:["можете","покласти","будь-що","тут"]contexts:- name:my-clustercontext:cluster:my-clusteruser:my-usercurrent-context:my-cluster
Відносні шляхи до команд інтерпретуються відносно теки файлу конфігурації. Якщо KUBECONFIG встановлено на /home/jane/kubeconfig, а команда виконання — ./bin/example-client-go-exec-plugin, то виконується бінарний файл /home/jane/bin/example-client-go-exec-plugin.
- name:my-useruser:exec:# Шлях відносно теки kubeconfigcommand:"./bin/example-client-go-exec-plugin"apiVersion:"client.authentication.k8s.io/v1"interactiveMode:Never
Формати вводу та виводу
Виконана команда виводить обʼєкт ExecCredential у stdout. k8s.io/client-go автентифікується в Kubernetes API, використовуючи отримані облікові дані в status. Виконана команда отримує обʼєкт ExecCredential на вхід через змінну середовища KUBERNETES_EXEC_INFO. Цей вхід містить корисну інформацію, таку як очікувана версія API поверненого обʼєкта ExecCredential та чи може втулок використовувати stdin для взаємодії з користувачем.
Під час запуску з інтерактивної сесії (тобто термінал), stdin може бути наданий прямо втулку. Втулки повинні використовувати поле spec.interactive вхідного обʼєкта ExecCredential зі змінної середовища KUBERNETES_EXEC_INFO для визначення, чи був наданий stdin. Вимоги втулка до stdin (тобто чи stdin є необовʼязковим, строго обовʼязковим або ніколи не використовується для успішного запуску втулка) вказується за допомогою поля user.exec.interactiveMode у kubeconfig (див. таблицю нижче для дійсних значень). Поле user.exec.interactiveMode є необовʼязковим у client.authentication.k8s.io/v1beta1 і обовʼязковим у client.authentication.k8s.io/v1.
Значення interactiveMode
Значення interactiveMode
Значення
Never
Цей втулок виконання ніколи не потребує використання стандартного вводу, і тому втулок виконання буде запущений незалежно від того, чи доступний стандартний ввід для введення користувача.
IfAvailable
Цей втулок виконання хоче використовувати стандартний ввід, якщо він доступний, але може працювати, якщо стандартний ввід недоступний. Тому втулок виконання буде запущений незалежно від наявності введення з стандартного вводу. Якщо стандартний ввід доступний для введення користувача, він буде наданий цьому втулку виконання.
Always
Цей втулок виконання потребує стандартний ввід для роботи, і тому втулок виконання буде запущений лише тоді, коли стандартний ввід доступний для введення користувача. Якщо стандартний ввід недоступний для введення користувача, втулок виконання не буде запущений, і виконавець втулку поверне помилку.
Для використання облікових даних токена власника, втулок повертає токен у статусі ExecCredential
Альтративно, можна повернути PEM-кодований сертифікат клієнта та ключ для використання TLS-автентифікації клієнта. Якщо втулок повертає різний сертифікат та ключ при наступному виклику, k8s.io/client-go закриє існуючі зʼєднання з сервером, щоб змусити новий TLS-обмін.
Якщо вказано, що clientKeyData та clientCertificateData повинні бути присутніми.
clientCertificateData може містити додаткові проміжні сертифікати для відправки на сервер.
Додатково відповідь може включати термін дії облікового запису, форматований як
RFC 3339 мітка часу.
Наявність або відсутність терміну дії має такий вплив:
Якщо термін дії включений, токен власника та TLS-облікові дані кешуються до
моменту закінчення строку дії, або якщо сервер відповідає з кодом стану HTTP 401,
або при завершенні процесу.
Якщо термін дії відсутній, токен власника та TLS-облікові дані кешуються до
моменту, коли сервер відповідає з кодом стану HTTP 401 або до моменту завершення процесу.
Щоб дозволити втулку виконання отримувати інформацію, що специфічна для кластера, встановіть provideClusterInfo у поле user.exec в kubeconfig. Втулок потім отримає цю інформацію, специфічну для кластера, у змінній середовища KUBERNETES_EXEC_INFO. Інформацію з цієї змінної середовища можна використовувати для виконання логіки отримання облікових даних, специфічних для кластера. Наступний маніфест ExecCredential описує зразок інформації для кластера.
{
"apiVersion": "client.authentication.k8s.io/v1",
"kind": "ExecCredential",
"spec": {
"cluster": {
"server": "https://172.17.4.100:6443",
"certificate-authority-data": "LS0t...",
"config": {
"arbitrary": "config",
"this": "can be provided via the KUBERNETES_EXEC_INFO environment variable upon setting provideClusterInfo",
"you": ["can", "put", "anything here"]
},
"interactive": true }
}
{
"apiVersion": "client.authentication.k8s.io/v1beta1",
"kind": "ExecCredential",
"spec": {
"cluster": {
"server": "https://172.17.4.100:6443",
"certificate-authority-data": "LS0t...",
"config": {
"arbitrary": "config",
"this": "can be provided via the KUBERNETES_EXEC_INFO environment variable upon setting provideClusterInfo",
"you": ["can", "put", "anything", "here"]
}
},
"interactive": true }
}
Доступ API до інформації про автентифікацію для клієнта
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.28 [stable]
Якщо ваш кластер має включений API, ви можете використовувати API SelfSubjectReview, щоб дізнатися, як ваш кластер Kubernetes показує вашу інформацію про автентифікацію, щоб ідентифікувати вас як клієнта. Це працює незалежно від того, чи автентифікуєтеся ви як користувач (зазвичай представляючи реальну особу), чи як обліковий запис ServiceAccount.
Обʼєкти SelfSubjectReview не мають полів, які конфігуруються. При отриманні запиту API-сервер Kubernetes заповнює статус атрибутами користувача та повертає його користувачеві.
Приклад запиту (тіло буде SelfSubjectReview):
POST /apis/authentication.k8s.io/v1/selfsubjectreviews
Для зручності доступний також запит kubectl auth whoami. Виконання цієї команди призведе до
наступного виводу (але різні атрибути користувача будуть показані):
Простий приклад виводу
ATTRIBUTE VALUE
Username jane.doe
Groups [system:authenticated]
Складний приклад, який включає додаткові атрибути
ATTRIBUTE VALUE
Username jane.doe
UID b79dbf30-0c6a-11ed-861d-0242ac120002
Groups [students teachers system:authenticated]
Extra: skills [reading learning]
Extra: subjects [math sports]
За допомогою прапорця виводу також можна надрукувати JSON- або YAML-представлення результату:
API-сервер Kubernetes заповнює userInfo після застосування всіх механізмів автентифікації,
включаючи імперсонізаацію. Якщо ви, або автентифікаційний проксі, робите SelfSubjectReview за допомогою імперсонізації, ви побачите деталі та властивості користувача, який був імперсонований.
Стандартно всі автентифіковані користувачі можуть створювати обʼєкти SelfSubjectReview, коли функція APISelfSubjectReview включена. Це дозволено за допомогою кластерної ролі system:basic-user.
Примітка:
Ви можете робити запити SelfSubjectReview тільки якщо:
включено функціоналAPISelfSubjectReview для вашого кластера (не потрібно для Kubernetes 1.32, але більш старі версії Kubernetes можуть не надавати цю функцію або за стандартно вимикати її)
(якщо ви запускаєте версію Kubernetes старішу за v1.28) API-сервер для вашого кластера має увімкнений API-групи authentication.k8s.io/v1alpha1 або authentication.k8s.io/v1beta1.
3.2 - Автентифікація за допомогою Bootstrap-токенів
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.18 [stable]
Bootstrap-токени — це простий токен на предʼявника, який призначений для використання під час створення нових кластерів або приєднання нових вузлів до наявного кластера. Він був створений для підтримки kubeadm, але може використовуватися в інших контекстах для користувачів, які бажають створювати кластери без kubeadm. Також він призначений для роботи, через політику RBAC, з kubelet TLS Bootstrapping.
Огляд Bootstrap-токенів
Bootstrap-токени визначені як певний тип secretʼів (bootstrap.kubernetes.io/token), що знаходяться в просторі імен kube-system. Ці secret читаються Bootstrap Authenticator з API Server. Протерміновані токени видаляються контролером TokenCleaner у Controller Manager. Токени також використовуються для створення підпису для конкретного ConfigMap, який використовується у процесі "виявлення" через контролер BootstrapSigner.
Формат токена
Bootstrap-токени мають форму abcdef.0123456789abcdef. Більш формально, вони повинні відповідати регулярному виразу [a-z0-9]{6}\.[a-z0-9]{16}.
Перша частина токена — це "ID токена" і вважається публічною інформацією. Вона використовується, коли потрібно посилатися на токен без розкриття секретної частини, яка використовується для автентифікації. Друга частина — це "Секрет токена" і нею треба ділитися тільки з довіреними сторонами.
Увімкнення автентифікації за допомогою Bootstrap-токенів
Автентифікатор Bootstrap Token можна увімкнути за допомогою наступного прапорця на API-сервері:
--enable-bootstrap-token-auth
Після увімкнення, токени для завантаження можуть використовуватися як облікові дані токена на предʼявника для автентифікації запитів до API-сервера.
Authorization: Bearer 07401b.f395accd246ae52d
Токени автентифікуються як імʼя користувача system:bootstrap:<token id> і є членами групи system:bootstrappers. Додаткові групи можуть бути вказані в секреті токена.
Протерміновані токени можуть бути автоматично видалені шляхом увімкнення контролера tokencleaner у Controller Manager.
--controllers=*,tokencleaner
Формат Secretʼу Bootstrap-токена
Кожен дійсний токен підтримується секретом у просторі імен kube-system. Повний документ проєктування можна знайти тут.
Ось як виглядає цей Secret.
apiVersion:v1kind:Secretmetadata:# Назва МАЄ бути у формі "bootstrap-token-<token id>"name:bootstrap-token-07401bnamespace:kube-system# Тип МАЄ бути 'bootstrap.kubernetes.io/token'type:bootstrap.kubernetes.io/tokenstringData:# Опис, зрозумілий людині. Необовʼязково.description:"Стандартний bootstrap-токен, згенерований 'kubeadm init'."# ID та секрет токена. Обовʼязково.token-id:07401btoken-secret:f395accd246ae52d# Термін дії. Необовʼязково.expiration:2017-03-10T03:22:11Z# Дозволені використання.usage-bootstrap-authentication:"true"usage-bootstrap-signing:"true"# Додаткові групи для автентифікації токена. Мають починатися з "system:bootstrappers:"auth-extra-groups:system:bootstrappers:worker,system:bootstrappers:ingress
Тип секрету має бути bootstrap.kubernetes.io/token, а назва має бути bootstrap-token-<token id>. Він також повинен знаходитися в просторі імен kube-system.
Члени usage-bootstrap-* вказують, для чого цей секрет призначений. Значення має бути встановлено в true, щоб увімкнути відповідне використання.
usage-bootstrap-authentication вказує, що токен може використовуватися для автентифікації до API-сервера як токен-носій.
usage-bootstrap-signing вказує, що токен може використовуватися для підпису ConfigMap cluster-info, як описано нижче.
Поле expiration контролює термін дії токена. Протерміновані токени відхиляються при спробі автентифікації та ігноруються під час підпису ConfigMap. Значення терміну дії кодується як абсолютний UTC-час за стандартом RFC3339. Увімкніть контролер tokencleaner, щоб автоматично видаляти протерміновані токени.
Управління токенами за допомогою kubeadm
Ви можете використовувати інструмент kubeadm для управління токенами на запущеному кластері. Деталі дивіться в документації kubeadm token.
Підпис ConfigMap
Окрім автентифікації, токени можуть використовуватися для підпису ConfigMap. Це використовується на ранніх етапах процесу завантаження кластера до того, як клієнт довіряє API-серверу. Підписаний ConfigMap може бути автентифікований спільним токеном.
Увімкніть підпис ConfigMap, увімкнувши контролер bootstrapsigner у Controller Manager.
--controllers=*,bootstrapsigner
ConfigMap, який підписується, це cluster-info у просторі імен kube-public. Типовий процес полягає в тому, що клієнт читає цей ConfigMap без автентифікації та ігноруючи помилки TLS. Потім він перевіряє коректність ConfigMap, переглядаючи підпис, вбудований у ConfigMap.
Елемент kubeconfig у ConfigMap є конфігураційним файлом, який містить лише інформацію про кластер. Ключовим моментом, що передається, є certificate-authority-data. Це може бути розширено в майбутньому.
Підпис є підписом JWS, що використовує "відокремлений" режим. Щоб перевірити підпис, користувач має закодувати вміст kubeconfig відповідно до правил JWS (закодовано base64, відкидаючи будь-які кінцеві =). Цей закодований вміст потім використовується для формування повного JWS шляхом вставки його між 2 крапками. Ви можете перевірити JWS, використовуючи схему HS256 (HMAC-SHA256) з повним токеном (наприклад, 07401b.f395accd246ae52d) як спільний секрет. Користувачі повинні перевірити, що використовується HS256.
Попередження:
Будь-яка сторона з токеном завантаження може створити дійсний підпис для цього токена. Коли використовується підпис ConfigMap, не рекомендується ділитися одним токеном з багатьма клієнтами, оскільки скомпрометований клієнт може потенційно провести атаку "людина посередині" на іншого клієнта, який покладається на підпис для завантаження довіри TLS.
Деталі механізмів авторизації Kubernetes і підтримувані режими авторизації.
Авторизація в Kubernetes відбувається після автентифікації. Зазвичай клієнт, що робить запит, має бути автентифікований (увійти в систему), перш ніж його запит може бути дозволений; однак, Kubernetes також дозволяє анонімні запити за деяких обставин.
Авторизація запитів до API в Kubernetes відбувається всередині API-сервера. API-сервер оцінює всі атрибути запиту щодо всіх політик, потенційно також звертаючись до зовнішніх сервісів, і потім дозволяє або відхиляє запит.
Усі частини запиту до API повинні бути дозволені деяким механізмом авторизації, щоб він міг продовжити виконання. Іншими словами: стандартно доступ заборонений.
Примітка:
Контроль доступу і політики, що залежать від конкретних полів конкретних видів обʼєктів, обробляються контролерами допуску.
Контроль допуску в Kubernetes відбувається після завершення авторизації (і, отже, тільки коли рішення про авторизацію було дозволити запит).
Коли налаштовано кілька модулів авторизації, кожен перевіряється по черзі. Якщо будь-який авторизатор схвалює або відхиляє запит, це рішення негайно повертається і жоден інший авторизатор не перевіряється. Якщо всі модулі не мають думки щодо запиту, то запит відхиляється. Загальний вердикт "відхилено" означає, що API-сервер відхиляє запит і відповідає зі статусом HTTP 403 (Forbidden).
Атрибути запиту, що використовуються для авторизації
Kubernetes розглядає тільки наступні атрибути запиту до API:
user — Рядок user, наданий під час автентифікації.
group — Список імен груп, до яких належить автентифікований користувач.
extra — Map довільних рядкових ключів з рядковими значеннями, надана шаром автентифікації.
API — Вказує, чи є запит запитом на ресурс API.
Request path — Шлях до різних нересурсних точок доступу, таких як /api або /healthz.
API request verb — Дієслова API, такі як get, list, create, update, patch, watch, delete і deletecollection, використовуються для запитів до ресурсів. Щоб визначити дієслово запиту для точки доступу API ресурсу, дивіться дієслова запитів та авторизація.
HTTP request verb — Методи HTTP в нижньому регістрі, такі як get, post, put і delete, використовуються для нересурсних запитів.
Resource — Ідентифікатор або імʼя ресурсу, до якого здійснюється доступ (тільки для запитів до ресурсів). Для запитів до ресурсів, що використовують дієслова get, update, patch і delete, ви повинні надати імʼя ресурсу.
Subresource — Субесурс, до якого здійснюється доступ (тільки для запитів до ресурсів).
Namespace — Простір імен обʼєкта, до якого здійснюється доступ (тільки для запитів до ресурсів у просторі імен).
API group — Група API, до якої здійснюється доступ (тільки для запитів до ресурсів). Порожній рядок позначає основнугрупу API.
Дієслова запиту та авторизація
Нересурсні запити
Запити до точок доступу, відмінних від /api/v1/... або /apis/<group>/<version>/..., вважаються нересурсними запитами та використовують метод HTTP як дієслово в нижньому регістрі. Наприклад, виконання запиту GET за допомогою HTTP до точок доступу, таких як /api або /healthz, буде використовувати get як дієслово.
Ресурсні запити
Щоб визначити дієслово запиту для точки доступу API ресурсу, Kubernetes показує використаний HTTP метод і розглядає, чи діє запит на індивідуальний ресурс чи на колекцію ресурсів:
HTTP метод
дієслово запиту
POST
create
GET, HEAD
get (для індивідуальних ресурсів), list (для колекцій, включаючи повний вміст обʼєктів), watch (для спостереження за індивідуальним ресурсом або колекцією ресурсів)
PUT
update
PATCH
patch
DELETE
delete (для індивідуальних ресурсів), deletecollection (для колекцій)
Увага:
Дієслова get, list та watch можуть повертати повні деталі ресурсу. В плані доступу до повернених даних вони є еквівалентними. Наприклад, list для secrets розкриє атрибути data будь-яких повернених ресурсів.
Іноді Kubernetes перевіряє авторизацію для додаткових дозволів, використовуючи спеціалізовані дієслова. Наприклад:
Дієслова bind та escalate для ресурсів roles та clusterroles у групі API rbac.authorization.k8s.io.
Контекст авторизації
Kubernetes очікує атрибути, які є загальними для запитів до REST API. Це означає, що авторизація в Kubernetes працює з наявними системами контролю доступу на рівні організації або
хмарного провайдера, які можуть обробляти інші API крім Kubernetes API.
Режими авторизації
API-сервер Kubernetes може авторизувати запит, використовуючи один з декількох режимів авторизації:
AlwaysAllow
Цей режим дозволяє всі запити, що несе ризики для безпеки. Використовуйте цей режим авторизації тільки якщо вам не потрібна авторизація для ваших запитів до API (наприклад, для тестування).
AlwaysDeny
Цей режим блокує всі запити. Використовуйте цей режим авторизації тільки для тестування.
Режим ABAC в Kubernetes визначає парадигму управління доступом, згідно з якою права доступу надаються користувачам за допомогою політик, які обʼєднують атрибути разом. Політики можуть використовувати будь-який тип атрибутів (атрибути користувача, атрибути ресурсу, обʼєкта, середовища тощо).
Kubernetes RBAC — це метод регулювання доступу до компʼютерних або мережевих ресурсів на основі ролей окремих користувачів в організації. У цьому контексті доступ — це можливість окремого користувача виконувати певне завдання, наприклад, переглядати, створювати або змінювати файл. В цьому режимі Kubernetes використовує групу API rbac.authorization.k8s.io для прийняття рішень щодо авторизації, що дозволяє вам динамічно налаштовувати політики дозволів через API Kubernetes.
Node
Спеціальний режим авторизації, який надає дозволи для kubeletʼів на основі запланованих до запуску Podʼів. Щоб дізнатися більше про режим авторизації вузла, див. Авторизація вузла.
Webhook
Kubernetes режим webhook для авторизації робить синхронний HTTP-виклик, блокуючи запит до тих пір, поки віддалений HTTP-сервіс не відповість на нього. Ви можете написати власне програмне забезпечення для обробки виклику або використовувати рішення з екосистеми.
Ви не повинні використовувати режим AlwaysAllow на кластері Kubernetes, де API сервер доступний публічно з інтернету.
Група system:masters
Група system:masters є вбудованою групою Kubernetes, яка надає необмежений доступ до сервера API. Будь-який користувач, призначений до цієї групи, має повні привілеї адміністратора кластера, обходячи будь-які обмеження авторизації, що накладаються механізмами RBAC або Webhook. Не додавайте користувачів до цієї групи. Якщо вам потрібно надати користувачеві права cluster-admin, ви можете створити ClusterRoleBinding до вбудованої cluster-admin ClusterRole.
Ви повинні вибрати один з двох підходів до конфігурації: задати обидва шляхи --authorization-config і налаштувати вебхук авторизації за допомогою аргументів командного рядка --authorization-mode та --authorization-webhook-* не допускається. Якщо ви спробуєте це зробити, API сервер повідомить про помилку під час запуску та одразу завершить роботу.
Ви вказуєте шлях до конфігурації авторизації за допомогою аргументу командного рядка --authorization-config.
Якщо ви хочете використовувати параметри командного рядка замість конфігураційного файлу, це також є дійсним і підтримуваним підходом. Деякі можливості авторизації (наприклад: кілька вебхуків, політика відмови вебхука та правила попередньої фільтрації) доступні тільки при використанні конфігураційного файлу авторизації.
Приклад конфігурації
---## НЕ ВИКОРИСТОВУЙТЕ КОНФІГУРАЦІЮ ТАК, ЯК ВОНА Є. ЦЕ ПРИКЛАД.#apiVersion:apiserver.config.k8s.io/v1kind:AuthorizationConfigurationauthorizers:* type:Webhook# Назва, що використовується для опису авторизатора# Це явно використовується в механізмі моніторингу для метрик# Примітка:# - Перевірка цього поля схожа на перевірку міток K8s на сьогодні.# Обовʼязково, немає стандартного значенняname:webhookwebhook:# Тривалість кешування відповідей 'authorized' від вебхука# авторизатора.# Те саме, що і встановлення прапорця `--authorization-webhook-cache-authorized-ttl`.# Стандартно: 5m0sauthorizedTTL:30s# Тривалість кешування відповідей 'unauthorized' від вебхука# авторизатора.# Те саме, що і встановлення прапорця `--authorization-webhook-cache-unauthorized-ttl`.# Стандартно: 30 сunauthorizedTTL:30s# Тайм-аут для запиту вебхука# Максимально допустимий: 30 с# Обовʼязково, немає стандартного значенняtimeout:3s# Версія API для SubjectAccessReview в authorization.k8s.io, яка# надсилається до вебхука та очікується від нього.# Те саме, що і встановлення прапорця `--authorization-webhook-version`.# Обовʼязково, немає стандартного значення# Допустимі значення: v1beta1, v1subjectAccessReviewVersion:v1# MatchConditionSubjectAccessReviewVersion визначає версію SubjectAccessReview# за якою оцінюються вирази CEL# Допустимі значення: v1# Обовʼязково, немає стандартного значенняmatchConditionSubjectAccessReviewVersion:v1# Керує рішенням авторизації, коли запит вебхука не вдалося# виконати або отримано некоректну відповідь або помилки під час оцінки# виразів matchConditions.# Допустимі значення:# - NoOpinion: продовжувати до наступних авторизаторів, щоб перевірити, чи дозволяє один з них запит# - Deny: відхиляти запит без консультації з наступними авторизаторами# Обовʼязково, немає стандартного значенняfailurePolicy:DenyconnectionInfo:# Керує тим, як вебхук повинен спілкуватися з сервером.# Допустимі значення:# - KubeConfigFile: використовуйте файл, вказаний у kubeConfigFile для пошуку сервера.# - InClusterConfig: використовуйте конфігурацію внутрішнього кластера для виклику API SubjectAccessReview,# що розміщується kube-apiserver. Цей режим не дозволяється для kube-apiserver.type:KubeConfigFile# Шлях до файлу KubeConfigFile для інформації про підключення# Обовʼязково, якщо connectionInfo.Type є KubeConfigFilekubeConfigFile:/kube-system-authz-webhook.yaml# matchConditions - це список умов, які повинні бути виконані для того, щоб запит було відправлено на цей# вебхук. Порожній список matchConditions підходить для всіх запитів.# Є максимально допустимі 64 умови відповідності.## Логіка точного порівняння така (в порядку):# 1. Якщо принаймні одна matchCondition оцінюється як FALSE, тоді вебхук пропускається.# 2. Якщо ВСІ matchConditions оцінюються як TRUE, тоді вебхук викликається.# 3. Якщо принаймні одна matchCondition оцінюється як помилка (але ні одна не є FALSE):# - Якщо failurePolicy=Deny, тоді вебхук відхиляє запит.# - Якщо failurePolicy=NoOpinion, тоді помилка ігнорується, а вебхук пропускається.matchConditions:# expression - це вираз CEL, який оцінюється для кожного запиту. Повертає булеве значення.# CEL вираз має доступ до вмісту SubjectAccessReview у версії v1.# Якщо версія у SubjectAccessReview в запиті змінної є v1beta1,# вміст буде конвертовано у v1 перед оцінкою виразу CEL.## Документація CEL: https://kubernetes.io/docs/reference/using-api/cel/## лише надсилати запити ресурсівв до вебхука* expression:has(request.resourceAttributes)# лише перехоплювати запити до kube-system* expression:request.resourceAttributes.namespace == 'kube-system'# не перехоплювати запити від облікових записів служб kube-system* expression:"!('system:serviceaccounts:kube-system' in request.user.groups)"* type:Nodename:node* type:RBACname:rbac* type:Webhookname:in-cluster-authorizerwebhook:authorizedTTL:5хвunauthorizedTTL:30сtimeout:3сsubjectAccessReviewVersion:v1failurePolicy:NoOpinionconnectionInfo:type:InClusterConfig
Під час налаштування ланцюжка авторизації за допомогою файлу конфігурації переконайтеся, що всі вузли панелі управління мають однаковий вміст файлу. Зверніть увагу на конфігурацію API сервера при оновленні / зниженні версії вашого кластера. Наприклад, якщо ви оновлюєтеся з Kubernetes 1.31 до Kubernetes 1.32, вам потрібно переконатися, що файл конфігурації має формат, який розуміє Kubernetes 1.32, перш ніж ви оновите кластер. Якщо ви знижуєте версію до 1.31, вам потрібно відповідно налаштувати конфігурацію.
Конфігурація авторизації та перезавантаження
Kubernetes перезавантажує файл конфігурації авторизації, коли API сервер виявляє зміну у файлі, а також за 60-секундним графіком, якщо події змін не спостерігаються.
Примітка:
Ви повинні забезпечити, щоб всі типи авторизаторів, крім вебхука, залишалися незмінними у файлі під час перезавантаження.
Перезавантаження не повинно додавати або видаляти авторизаторів вузла або RBAC (їх можна перевпорядкувати, але не можна додавати або видаляти).
Конфігурація режиму авторизації через командний рядок
Ви можете використовувати наступні режими:
--authorization-mode=ABAC (режим контролю доступу на основі атрибутів)
--authorization-mode=RBAC (режим контролю доступу на основі ролей)
Ви можете вибрати більше одного режиму авторизації; наприклад: --authorization-mode=Node,Webhook
Kubernetes перевіряє модулі авторизації на основі порядку, який ви вказуєте в командному рядку API сервера, тому раніше зазначений модуль має вищий пріоритет для дозволу або відмови в запиті.
Для отримання додаткової інформації про аргументи командного рядка для API сервера, читайте довідник по kube-apiserver.
Підвищення привілеїв через створення або редагування робочих навантажень
Користувачі, які можуть створювати/редагувати Podʼи в просторі імен, або безпосередньо, або через обʼєкт, що дозволяє опосередковане управління робочими навантаженнями, можуть мати можливість підвищити свої привілеї в цьому просторі імен. Потенційні шляхи до підвищення привілеїв включають розширення API Kubernetes та повʼязані з ними контролери.
Увага:
Як адміністратор кластера, будьте обережні, надаючи доступ до створення або редагування робочих навантажень. Деякі деталі того, як вони можуть бути використані не за призначенням, задокументовані в шляхах підвищення привілеїв.
Шляхи підвищення привілеїв
Існують різні способи, за якими зловмисник або ненадійний користувач може отримати додаткові привілеї в межах простору імен, якщо ви дозволяєте їм запускати довільні Podʼи в цьому просторі імен:
Монтування довільних Secretʼів в цьому просторі імен
Може бути використано для доступу до конфіденційної інформації, призначеної для інших робочих навантажень
Може бути використано для отримання токена службового облікового запису більш привілейованого ServiceAccount
Використання довільних службових облікових записів в цьому просторі імен
Може виконувати дії Kubernetes API як інше робоче навантаження (імперсонізація)
Може виконувати будь-які привілейовані дії, які має цей ServiceAccount
Монтування або використання ConfigMaps, призначених для інших робочих навантажень в цьому просторі імен
Може бути використано для отримання інформації, призначеної для інших робочих навантажень, таких як імена хостів баз даних.
Монтування томів, призначених для інших робочих навантажень в цьому просторі імен
Може бути використано для отримання інформації, призначеної для інших робочих навантажень, та її зміни.
Увага:
Як системному адміністратору, вам слід бути обережними при впровадженні власних визначень ресурсів, що дозволяють користувачам вносити зміни у вищезазначених областях. Це може відкрити шляхи до підвищення привілеїв. Розгляньте наслідки цього виду змін при виборі контролю за авторизацією.
Перевірка доступу до API
kubectl надає підкоманду auth can-i для швидкого запиту до рівня авторизації API. Команда використовує API SelfSubjectAccessReview, щоб визначити, чи може поточний користувач виконати
вказану дію, і працює незалежно від режиму авторизації, який використовується.
kubectl auth can-i create deployments --namespace dev
SelfSubjectAccessReview є частиною групи API authorization.k8s.io, яка викладає авторизацію сервера API для зовнішніх служб. Інші ресурси у цій групі включають:
SubjectAccessReview
Перегляд доступу для будь-якого користувача, не лише поточного. Корисно для делегування рішень про авторизацію серверу API. Наприклад, kubelet та API розширень сервери використовують це для визначення доступу користувача до своїх власних API.
LocalSubjectAccessReview
Подібно до SubjectAccessReview, але обмежено для конкретного простору імен.
SelfSubjectRulesReview
Перегляд, який повертає набір дій, які користувач може виконати в межах простору імен. Корисно для користувачів для швидкого узагальнення їх власного доступу, або для інтерфейсів користувача для приховування/відображення дій.
Ці API можна опитати, створивши звичайні ресурси Kubernetes, де поле відповіді status
поверненого обʼєкта є результатом запиту. Наприклад:
Контроль доступу на основі ролей (RBAC) — це метод регулювання доступу до компʼютерних або мережевих ресурсів на основі ролей окремих користувачів у вашій організації.
RBAC авторизація використовує групу API rbac.authorization.k8s.ioгрупа API для прийняття рішень щодо авторизації, дозволяючи вам динамічно налаштовувати політики через Kubernetes API.
Щоб увімкнути RBAC, запустіть API сервер з прапорцем --authorization-config, встановленим на список, розділений комами, що включає RBAC; наприклад:
RBAC API визначає чотири типи обʼєктів Kubernetes: Role, ClusterRole, RoleBinding та ClusterRoleBinding. Ви можете описувати або змінювати обʼєкти RBAC за допомогою таких інструментів, як kubectl, так само як і будь-який інший обʼєкт Kubernetes.
Увага:
Ці обʼєкти за своєю конструкцією накладають обмеження на доступ. Якщо ви вносите зміни до кластера під час навчання, перегляньте розділ запобігання підвищенню привілеїв та початкове налаштування, щоб зрозуміти, як ці обмеження можуть завадити вам вносити деякі зміни.
Role та ClusterRole
RBAC Role або ClusterRole містять правила, які представляють набір дозволів. Дозволи є виключно адитивними (немає правил "заборони").
Role завжди встановлює дозволи в межах певного простору імен; коли ви створюєте Role, ви повинні вказати простір імен, до якого вона належить.
ClusterRole, на відміну, є ресурсом, який не належить до простору імен. Ресурси мають різні назви (Role і ClusterRole), оскільки обʼєкт Kubernetes завжди повинен бути або привʼязаним до простору імен, або не привʼязаним до простору імен; він не може бути одночасно і тим, і іншим.
ClusterRole мають кілька використань. Ви можете використовувати ClusterRole для:
визначення дозволів на ресурси, що належать до простору імен, і надання доступу в межах окремих просторів імен
визначення дозволів на ресурси, що належать до простору імен, і надання доступу до всіх просторів імен
визначення дозволів на ресурси, що належать до кластера
Якщо ви хочете визначити роль в межах простору імен, використовуйте Role; якщо ви хочете визначити роль для всього кластера, використовуйте ClusterRole.
Приклад Role
Ось приклад Role в просторі імен "default", яку можна використовувати для надання доступу на читання до Podʼів:
apiVersion:rbac.authorization.k8s.io/v1kind:Rolemetadata:namespace:defaultname:pod-readerrules:- apiGroups:[""]# "" означає основну групу APIresources:["pods"]verbs:["get","watch","list"]
Приклад ClusterRole
ClusterRole може бути використана для надання тих самих дозволів, що й Role. Оскільки ClusterRole стосуються всього кластера, ви також можете використовувати їх для надання доступу до:
ресурсів, що належать до кластера (наприклад, вузли)
точок доступу, що не є ресурсами (наприклад, /healthz)
ресурсів, що належать до простору імен (наприклад, контейнерів), в усіх просторах імен
Наприклад: ви можете використовувати ClusterRole для дозволу конкретному користувачу виконувати kubectl get pods --all-namespaces.
Ось приклад ClusterRole, яку можна використовувати для надання доступу на читання Secretʼів в будь-якому просторі імен або в усіх просторах імен (залежно від того, як вона звʼязана):
apiVersion:rbac.authorization.k8s.io/v1kind:ClusterRolemetadata:# "namespace" пропущено, оскільки ClusterRole не привʼязані до простору іменname:secret-readerrules:- apiGroups:[""]## на рівні HTTP, назва ресурсу для доступу до обʼєктів Secret# це "secrets"resources:["secrets"]verbs:["get","watch","list"]
RoleBinding надає дозволи, визначені в ролі, користувачу або групі користувачів та містить список субʼєктів (користувачів, груп або облікових записів сервісів) і посилання на роль, що надається. RoleBinding надає дозволи в межах конкретного простору імен, тоді як ClusterRoleBinding надає доступ на рівні всього кластера.
RoleBinding може посилатися на будь-яку Role в тому ж просторі імен. Альтернативно, RoleBinding може посилатися на ClusterRole і звʼязувати цю ClusterRole з простором імен RoleBinding. Якщо ви хочете звʼязати ClusterRole з усіма просторами імен у вашому кластері, використовуйте ClusterRoleBinding.
Назва обʼєкта RoleBinding або ClusterRoleBinding повинна бути дійсною назвою сегмента шляху.
Приклади RoleBinding
Ось приклад RoleBinding, який надає роль "pod-reader" користувачу "jane" в межах простору імен "default". Це дозволяє "jane" читати Podʼи в просторі імен "default".
apiVersion:rbac.authorization.k8s.io/v1# Це рольове звʼязування дозволяє "jane" читати Podʼи в просторі імен "default".# Ви повинні вже мати роль з назвою "pod-reader" в цьому просторі імен.kind:RoleBindingmetadata:name:read-podsnamespace:defaultsubjects:# Ви можете вказати більше одного "субʼєкта"- kind:Username:jane# "name" чутливе до регіструapiGroup:rbac.authorization.k8s.ioroleRef:# "roleRef" вказує на звʼязування з Role / ClusterRolekind:Role# має бути Role або ClusterRolename:pod-reader# має збігатися з назвою Role або ClusterRole, з якою ви хочете звʼязатиapiGroup:rbac.authorization.k8s.io
RoleBinding також може посилатися на ClusterRole для надання дозволів, визначених у цій ClusterRole, на ресурси в межах простору імен RoleBinding. Такий вид посилання дозволяє визначати набір загальних ролей для всього вашого кластера, а потім використовувати їх у декількох просторах імен.
Наприклад, хоча наступний RoleBinding посилається на ClusterRole, "dave" (субʼєкт, чутливий до регістру) зможе читати Secretʼи лише в просторі імен "development", оскільки простір імен RoleBinding (у його метаданих) — "development".
apiVersion:rbac.authorization.k8s.io/v1# Це рольове звʼязування дозволяє "dave" читати Secretʼи в просторі імен "development".# Ви повинні вже мати ClusterRole з назвою "secret-reader".kind:RoleBindingmetadata:name:read-secrets## Простір імен RoleBinding визначає, де надаються дозволи.# Це надає дозволи лише в просторі імен "development".namespace:developmentsubjects:- kind:Username:dave# Name чутливе до регіструapiGroup:rbac.authorization.k8s.ioroleRef:kind:ClusterRolename:secret-readerapiGroup:rbac.authorization.k8s.io
Приклад ClusterRoleBinding
Щоб надати дозволи на рівні всього кластера, ви можете використовувати ClusterRoleBinding. Наступний ClusterRoleBinding дозволяє будь-якому користувачу з групи "manager" читати Secretʼи в будь-якому просторі імен.
apiVersion:rbac.authorization.k8s.io/v1# Це звʼязування кластерної ролі дозволяє будь-якому користувачу з групи "manager" читати Secretʼи в будь-якому просторі імен.kind:ClusterRoleBindingmetadata:name:read-secrets-globalsubjects:- kind:Groupname:manager# Name чутливе до регіструapiGroup:rbac.authorization.k8s.ioroleRef:kind:ClusterRolename:secret-readerapiGroup:rbac.authorization.k8s.io
Після створення звʼязування ви не можете змінити Role або ClusterRole, на які вони посилаються. Якщо ви спробуєте змінити roleRef звʼязування, ви отримаєте помилку валідації. Якщо ви дійсно хочете змінити roleRef для звʼязування, вам потрібно видалити обʼєкт звʼязування і створити новий.
Існує дві причини для цього обмеження:
Роблячи roleRef незмінним, можна надати комусь дозвіл update на наявний обʼєкт звʼязування, щоб він міг керувати списком субʼєктів, без можливості змінити роль, яка надається цим субʼєктам.
Звʼязування з іншою роллю є принципово іншим звʼязуванням. Вимога видалення/створення нового звʼязування для зміни roleRef гарантує, що весь список субʼєктів у звʼязуванні має намір отримати нову роль (на відміну від можливості випадково змінити лише roleRef без перевірки того, чи всі наявні субʼєкти повинні отримати дозволи нової ролі).
Команда kubectl auth reconcile створює або оновлює файл маніфесту, що містить обʼєкти RBAC, і обробляє видалення та відновлення обʼєктів звʼязування, якщо необхідно змінити роль, на яку вони посилаються. Дивіться використання команд та приклади для отримання додаткової інформації.
Посилання на ресурси
У Kubernetes API більшість ресурсів представлені та доступні за допомогою рядкового представлення їхнього імені обʼєкта, наприклад, pods для Pod. RBAC посилається на ресурси, використовуючи точно таку ж назву, яка зʼявляється в URL для відповідної точки доступу API. Деякі Kubernetes API включають субресурс, такий як логи для Pod. Запит на логи Pod виглядає так:
GET /api/v1/namespaces/{namespace}/pods/{name}/log
У цьому випадку pods є ресурсом простору імен для Pod, а log є субресурсом pods. Щоб представити це в ролі RBAC, використовуйте слеш (/) для розділення ресурсу та субресурсу. Щоб дозволити субʼєкту читати pods і також отримувати доступ до субресурсу log для кожного з цих Pod, напишіть:
Ви також можете посилатися на ресурси за назвою для певних запитів через список resourceNames. Коли зазначено, запити можуть бути обмежені окремими екземплярами ресурсу. Ось приклад, що обмежує субʼєкт лише до get або updateConfigMap з назвою my-configmap:
apiVersion:rbac.authorization.k8s.io/v1kind:Rolemetadata:namespace:defaultname:configmap-updaterrules:- apiGroups:[""]## на рівні HTTP, назва ресурсу для доступу до обʼєктів ConfigMap є "configmaps"resources:["configmaps"]resourceNames:["my-configmap"]verbs:["update","get"]
Примітка:
Ви не можете обмежити запити create або deletecollection за назвою ресурсу. Для create це обмеження виникає через те, що назва нового обʼєкта може бути невідомою на момент авторизації. Якщо ви обмежуєте list або watch за resourceName, клієнти повинні включати селектор поля metadata.name у свої запити list або watch, що відповідає зазначеному resourceName, щоб отримати авторизацію. Наприклад, kubectl get configmaps --field-selector=metadata.name=my-configmap
Замість того, щоб посилатися на окремі resources, apiGroups і verbs, ви можете використовувати символ підстановки *, щоб посилатися на всі такі обʼєкти. Для nonResourceURLs ви можете використовувати символ підстановки * як суфікс для глобального збігу. Для resourceNames порожній набір означає, що все дозволено. Ось приклад, що дозволяє виконувати будь-яку поточну і майбутню дію для всіх поточних та майбутніх ресурсів в API групі example.com. Це схоже на вбудовану роль cluster-admin.
apiVersion:rbac.authorization.k8s.io/v1kind:Rolemetadata:namespace:defaultname:example.com-superuser# НЕ ВИКОРИСТОВУЙТЕ ЦЮ РОЛЬ, ЦЕ ЛИШЕ ПРИКЛАДrules:- apiGroups:["example.com"]resources:["*"]verbs:["*"]
Увага:
Використання символів підстановки в записах ресурсів і дій може призвести до надмірно широкого доступу до чутливих ресурсів. Наприклад, якщо додано новий тип ресурсу або новий субресурс, або перевірено нову спеціальну дію, запис символу підстановки автоматично надає доступ, що може бути небажаним. Слід застосовувати принцип мінімальних привілеїв, використовуючи конкретні ресурси та дії, щоб забезпечити лише ті дозволи, які необхідні для правильного функціонування робочого навантаження.
Агреговані ClusterRole
Ви можете агрегувати декілька ClusterRole в одну комбіновану ClusterRole. Контролер, який працює як частина панелі управління кластера, слідкує за обʼєктами ClusterRole з встановленим aggregationRule. aggregationRule визначає мітку селектора, яку використовує контролер для вибору інших обʼєктів ClusterRole, що мають бути обʼєднані у поле rules цього обʼєкта.
Увага:
Панель управління перезаписує будь-які значення, які ви вручну вказуєте в полі rules агрегованої ClusterRole. Якщо ви хочете змінити або додати правила, робіть це в обʼєктах ClusterRole, вибраних за допомогою aggregationRule.
Ось приклад агрегованої ClusterRole:
apiVersion:rbac.authorization.k8s.io/v1kind:ClusterRolemetadata:name:monitoringaggregationRule:clusterRoleSelectors:- matchLabels:rbac.example.com/aggregate-to-monitoring:"true"rules:[]# Панель управління автоматично заповнює правила
Якщо ви створюєте нову ClusterRole, що відповідає селектору міток поточної агрегованої ClusterRole, це зміна ініціює додавання нових правил до агрегованої ClusterRole. Ось приклад, що додає правила до ClusterRole "monitoring" шляхом створення іншої ClusterRole з міткою rbac.example.com/aggregate-to-monitoring: true.
apiVersion:rbac.authorization.k8s.io/v1kind:ClusterRolemetadata:name:monitoring-endpointslabels:rbac.example.com/aggregate-to-monitoring:"true"# При створенні ClusterRole "monitoring-endpoints",# правила нижче будуть додані до ClusterRole "monitoring".rules:- apiGroups:[""]resources:["services","endpointslices","pods"]verbs:["get","list","watch"]
Стандартні ролі для користувачів використовують агрегацію ClusterRole. Це дозволяє вам, як адміністратору кластера, включати правила для спеціальних ресурсів, таких як ті, що надаються CustomResourceDefinitions або агрегованими API серверами, щоб розширити стандартні ролі.
Наприклад: наступні ClusterRole дозволяють стандартним ролям "admin" і "edit" керувати спеціальним ресурсом з назвою CronTab, тоді як роль "view" може виконувати лише читання ресурсів CronTab. Ви можете припустити, що обʼєкти CronTab називаються "crontabs" в URL, як це бачить API сервер.
apiVersion:rbac.authorization.k8s.io/v1kind:ClusterRolemetadata:name:aggregate-cron-tabs-editlabels:# Додайте ці дозволи до стандартних ролей "admin" і "edit".rbac.authorization.k8s.io/aggregate-to-admin:"true"rbac.authorization.k8s.io/aggregate-to-edit:"true"rules:- apiGroups:["stable.example.com"]resources:["crontabs"]verbs:["get","list","watch","create","update","patch","delete"]---kind:ClusterRoleapiVersion:rbac.authorization.k8s.io/v1metadata:name:aggregate-cron-tabs-viewlabels:# Додайте ці дозволи до стандартної ролі "view".rbac.authorization.k8s.io/aggregate-to-view:"true"rules:- apiGroups:["stable.example.com"]resources:["crontabs"]verbs:["get","list","watch"]
Приклади ролей
Наступні приклади є фрагментами обʼєктів Role або ClusterRole, що показують лише секцію rules.
Дозволити читання ресурсів "pods" у базовій API Group:
rules:- apiGroups:[""]## на рівні HTTP, назва ресурсу для доступу до обʼєктів Pod# є "pods"resources:["pods"]verbs:["get","list","watch"]
Дозволити читання/запис обʼєктів Deployment (на рівні HTTP: обʼєкти з "deployments" у частині ресурсу їх URL) в групах API "apps":
rules:- apiGroups:["apps"]## на рівні HTTP, назва ресурсу для доступу до обʼєктів Deployment# є "deployments"resources:["deployments"]verbs:["get","list","watch","create","update","patch","delete"]
Дозволити читання Podʼів у базовій групі API, а також читання або запис ресурсів Job у групі API "batch":
rules:- apiGroups:[""]## на рівні HTTP, назва ресурсу для доступу до обʼєктів Pod# є "pods"resources:["pods"]verbs:["get","list","watch"]- apiGroups:["batch"]## на рівні HTTP, назва ресурсу для доступу до обʼєктів Job# є "jobs"resources:["jobs"]verbs:["get","list","watch","create","update","patch","delete"]
Дозволити читання ConfigMap з назвою "my-config" (повинно бути повʼязано з RoleBinding, щоб обмежити до одного ConfigMap в одному просторі імен):
rules:- apiGroups:[""]## на рівні HTTP, назва ресурсу для доступу до обʼєктів ConfigMap# є "configmaps"resources:["configmaps"]resourceNames:["my-config"]verbs:["get"]
Дозволити читання ресурсу "nodes" у базовій групі (оскільки Node є кластерним ресурсом, це повинно бути у ClusterRole, повʼязаної з ClusterRoleBinding, щоб бути ефективним):
rules:- apiGroups:[""]## на рівні HTTP, назва ресурсу для доступу до обʼєктів Node# є "nodes"resources:["nodes"]verbs:["get","list","watch"]
Дозволити GET і POST запити до не-ресурсної точки доступу /healthz та всіх субшляхів (повинно бути в ClusterRole, повʼязаній з ClusterRoleBinding, щоб бути ефективним):
rules:- nonResourceURLs:["/healthz","/healthz/*"]# '*' у nonResourceURL є суфіксом для глобального збігуverbs:["get","post"]
Посилання на субʼєктів
RoleBinding або ClusterRoleBinding привʼязує роль до субʼєктів. Субʼєктами можуть бути групи, користувачі або ServiceAccounts.
Kubernetes представляє імена користувачів у вигляді рядків. Це можуть бути: звичайні імена, такі як "alice"; імена в стилі електронної пошти, як "bob@example.com"; або числові ідентифікатори користувачів, представлені у вигляді рядків. Вам, як адміністратору кластера, належить налаштувати модулі автентифікації, щоб автентифікація генерувала імена користувачів у бажаному форматі.
Увага:
Префікс system: зарезервований для використання системою Kubernetes, тому переконайтеся, що випадково не маєте користувачів або груп з іменами, що починаються з system:. Окрім цього спеціального префікса, система авторизації RBAC не вимагає жодного формату для імен користувачів.
У Kubernetes модулі Автентифікатора надають інформацію про групи. Групи, як і користувачі, представлені у вигляді рядків, і цей рядок не має жодних вимог до формату, крім того, що префікс system: зарезервований.
ServiceAccounts мають імена з префіксом system:serviceaccount:, і належать до груп, що мають імена з префіксом system:serviceaccounts:.
Примітка:
system:serviceaccount: (однина) є префіксом для імен користувачів службових облікових записів.
system:serviceaccounts: (множина) є префіксом для імен груп службових облікових записів.
Приклади RoleBinding
Наступні приклади є фрагментами RoleBinding, що показують лише секцію subjects.
API-сервери створюють набір стандартних обʼєктів ClusterRole і ClusterRoleBinding. Багато з них мають префікс system:, що вказує на те, що ресурс безпосередньо керується панеллю управління кластера. Усі стандартні ролі та привʼязки ролей мають мітку kubernetes.io/bootstrapping=rbac-defaults.
Увага:
Будьте обережні при зміні ClusterRole і ClusterRoleBinding з іменами, що мають префікс system:. Зміни цих ресурсів можуть призвести до несправних кластерів.
Автоматичне узгодження
При кожному запуску API-сервер оновлює стандартні ролі кластера, додаючи будь-які відсутні дозволи, та оновлює стандартні привʼязки ролей, додаючи будь-які відсутні субʼєкти. Це дозволяє кластеру виправляти випадкові зміни та допомагає підтримувати ролі та привʼязки ролей в актуальному стані, оскільки дозволи та субʼєкти змінюються у нових випусках Kubernetes.
Щоб відмовитися від цього узгодження, встановіть анотацію rbac.authorization.kubernetes.io/autoupdate на стандартній кластерній ролі або стандартній RoleBinding у значення false. Зверніть увагу, що відсутність стандартних дозволів та субʼєктів може призвести до несправних кластерів.
Автоматичне узгодження стандартно увімкнено, якщо авторизатор RBAC активний.
Ролі виявлення API
Стандартні кластерні привʼязки ролей дозволяють неавторизованим і авторизованим користувачам читати інформацію про API, яка вважається безпечною для публічного доступу (включаючи CustomResourceDefinitions). Щоб вимкнути анонімний неавторизований доступ, додайте прапорець --anonymous-auth=false до конфігурації API-сервера.
Щоб переглянути конфігурацію цих ролей через kubectl, запустіть:
kubectl get clusterroles system:discovery -o yaml
Примітка:
Якщо ви зміните цю ClusterRole, ваші зміни будуть перезаписані при перезапуску API-сервера через Автоматичне узгодження. Щоб уникнути цього перезапису, або не редагуйте роль вручну, або вимкніть Автоматичне узгодження.
Ролі виявлення API Kubernetes RBAC
Стандартна ClusterRole
Стандартна ClusterRoleBinding
Опис
system:basic-user
Група system:authenticated
Дозволяє користувачеві доступ лише для читання базової інформації про себе. До v1.14 ця роль також була стандартно повʼязана з system:unauthenticated.
system:discovery
Група system:authenticated
Дозволяє доступ лише для читання точок доступу виявлення API, необхідних для виявлення та узгодження рівня API. До v1.14 ця роль також була стандартно повʼязана з system:unauthenticated.
system:public-info-viewer
Групи system:authenticated і system:unauthenticated
Дозволяє доступ лише для читання несекретної інформації про кластер. Представлено у Kubernetes v1.14.
Ролі для користувачів
Деякі зі стандартних ClusterRoles не мають префікса system:. Вони включають ролі суперкористувача (cluster-admin), ролі, призначені для надання у всьому кластері за допомогою ClusterRoleBindings, а також ролі, призначені для надання у певних просторах імен простору імен за допомогою RoleBindings (admin, edit, view).
Ролі для користувачів використовують агрегацію ClusterRole, щоб дозволити адміністраторам включати правила для спеціальних ресурсів у ці ClusterRole. Щоб додати правила до ролей admin, edit або view, створіть ClusterRole з однією або кількома з наступних міток:
Дозволяє доступ суперкористувача для виконання будь-якої дії на будь-якому ресурсі. При використанні в ClusterRoleBinding, надає повний контроль над кожним ресурсом у кластері та у всіх просторах імен. При використанні в RoleBinding, надає повний контроль над кожним ресурсом у просторі імен, включаючи сам простір імен.
admin
Немає
Дозволяє доступ адміністратора, призначений для надання в межах простору імен за допомогою RoleBinding.
Якщо використовується в RoleBinding, дозволяє доступ для читання/запису до більшості ресурсів у просторі імен, включаючи можливість створювати ролі та привʼязки ролей у просторі імен. Ця роль не дозволяє доступу для запису до квоти ресурсів або до самого простору імен. Ця роль також не дозволяє доступу для запису до EndpointSlices (або Endpoints) у кластерах, створених за допомогою Kubernetes v1.22+. Більше інформації доступно у розділі
"Достпу на запису у EndpointSlices та Endpoints".
edit
Немає
Дозволяє доступ для читання/запису до більшості обʼєктів у просторі імен.
Ця роль не дозволяє переглядати або змінювати ролі або привʼязки ролей. Однак ця роль дозволяє доступ до Secretʼів і запуску Podʼів як будь-який ServiceAccount у просторі імен, тому вона може бути використана для отримання рівня доступу API будь-якого ServiceAccount у просторі імен. Ця роль також не дозволяє доступу для запису до EndpointSlices (або Endpoints) у кластерах, створених за допомогою Kubernetes v1.22+. Більше інформації доступно у розділі "Достпу на запису у EndpointSlices та Endpoints".
view
Немає
Дозволяє доступ лише для читання до більшості обʼєктів у просторі імен. Ця роль не дозволяє переглядати ролі або привʼязки ролей. Ця роль не дозволяє переглядати Secretʼи, оскільки читання вмісту секретів дозволяє доступ до облікових даних ServiceAccount у просторі імен, що дозволило б доступ до API як будь-який ServiceAccount у просторі імен (форма ескалації привілеїв).
Ролі основних компонентів
Стандартна ClusterRole
Стандартна ClusterRoleBinding
Опис
system:kube-scheduler
system:kube-scheduler користувач
Дозволяє доступ до ресурсів, необхідних компоненту планувальника.
system:volume-scheduler
system:kube-scheduler користувач
Дозволяє доступ до ресурсів обʼєму, необхідних компоненту kube-scheduler.
Дозволяє доступ до ресурсів, необхідних для kubelet, включаючи доступ на читання до всіх секретів та доступ на запис до всіх обʼєктів стану Podʼів.
Ви повинні використовувати Node authorizer та втулок допуску NodeRestriction замість ролі system:node та дозволяти надання доступу до API для kubelet на основі Podʼів, які заплановано для запуску на них.
Роль system:node існує лише для сумісності з кластерами Kubernetes, оновленими з версій до v1.8.
system:node-proxier
system:kube-proxy користувач
Дозволяє доступ до ресурсів, необхідних компоненту kube-proxy.
Ролі інших компонентів
Стандартна ClusterRole
Стандартна ClusterRoleBinding
Опис
system:auth-delegator
Немає
Дозволяє делеговані перевірки автентифікації та авторизації. Це зазвичай використовується серверами надбудов API для уніфікованої автентифікації та авторизації.
Дозволяє доступ на читання до точок доступу моніторингу панелі управління (тобто kube-apiserver точки доступу придатності та готовності (/healthz, /livez, /readyz), індивідуальні точки доступу перевірки стану (/healthz/*, /livez/*, /readyz/*) та /metrics). Зверніть увагу, що індивідуальні точки доступу перевірки стану та точка доступу метрик можуть розкривати конфіденційну інформацію.
Ролі для вбудованих контролерів
Менеджер контролерів Kubernetes запускає контролери, які вбудовані в панель управління Kubernetes. Коли його викликають з --use-service-account-credentials, kube-controller-manager запускає кожен контролер використовуючи окремий службовий обліковий запис. Для кожного вбудованого контролера існують відповідні ролі з префіксом system:controller:. Якщо менеджер контролерів не запускається з --use-service-account-credentials, він виконує всі контрольні цикли використовуючи власні облікові дані, які повинні мати всі відповідні ролі. Ці ролі включають:
Запобігання ескалації привілеїв і початкове налаштування
API RBAC запобігає ескалації привілеїв користувачами шляхом редагування ролей або привʼязок ролей. Оскільки це реалізується на рівні API, це застосовується навіть коли авторизатор RBAC не використовується.
Обмеження на створення або оновлення ролей
Ви можете створити/оновити роль, тільки якщо виконується хоча б одна з наступних умов:
Ви вже маєте всі дозволи, що містяться в ролі, в тій же області, що й обʼєкт, який модифікується (кластерний рівень для ClusterRole, у тому ж просторі імен або кластерний рівень для Role).
Вам надано явний дозвіл виконувати дієслово escalate для ресурсу roles або clusterroles в групі API rbac.authorization.k8s.io.
Наприклад, якщо user-1 не має можливості отриамння переліку Secrets на кластерному рівні, він не може створити ClusterRole, що містить цей дозвіл. Щоб дозволити користувачу створювати/оновлювати ролі:
Надайте йому роль, що дозволяє створювати/оновлювати обʼєкти Role або ClusterRole, те що треба.
Надати йому дозвіл включати конкретні дозволи в ролі, які він створює/оновлює:
неявно, надаючи йому ці дозволи (якщо він спробує створити або модифікувати Role або ClusterRole з дозволами, які йому самому не надані, запит до API буде заборонений)
або явно дозволити вказувати будь-які дозволи в Role або ClusterRole, надаючи йому дозвіл виконувати дієслово escalate для ресурсів roles або clusterroles в групі API rbac.authorization.k8s.io.
Обмеження на створення або оновлення привʼязок ролей
Ви можете створити/оновити привʼязку ролі, тільки якщо вже маєте всі дозволи, що містяться в згаданій ролі (в тій же області, що й привʼязка ролі) або якщо вам надано дозвіл виконувати дієслово bind для згаданої ролі. Наприклад, якщо user-1 не має можливості отримувати перелік Secrets на кластерному рівні, він не може створити ClusterRoleBinding для ролі, яка надає цей дозвіл. Щоб дозволити користувачу створювати/оновлювати привʼязки ролей:
Надати йому роль, що дозволяє створювати/оновлювати обʼєкти RoleBinding або ClusterRoleBinding, як необхідно.
Надати йому дозволи, необхідні для привʼязки певної ролі:
неявно, надаючи йому дозволи, що м стяться в ролі.
явно, надаючи йому дозвіл виконувати дієслово bind для певної Role (або ClusterRole).
Наприклад, цей ClusterRole і RoleBinding дозволять user-1 надавати іншим користувачам ролі admin, edit і view у просторі імен user-1-namespace:
apiVersion:rbac.authorization.k8s.io/v1kind:ClusterRolemetadata:name:role-grantorrules:- apiGroups:["rbac.authorization.k8s.io"]resources:["rolebindings"]verbs:["create"]- apiGroups:["rbac.authorization.k8s.io"]resources:["clusterroles"]verbs:["bind"]# пропустіть resourceNames, щоб дозволити привʼязку будь-якої ClusterRoleresourceNames:["admin","edit","view"]---apiVersion:rbac.authorization.k8s.io/v1kind:RoleBindingmetadata:name:role-grantor-bindingnamespace:user-1-namespaceroleRef:apiGroup:rbac.authorization.k8s.iokind:ClusterRolename:role-grantorsubjects:- apiGroup:rbac.authorization.k8s.iokind:Username:user-1
Коли початково налаштовуються перші ролі та привʼязки ролей, необхідно, щоб початковий користувач надав дозволи, які він ще не має. Щоб початково налаштувати ролі та привʼязки ролей:
Використовуйте облікові дані з групою "system:masters", яка стандартно привʼязана до ролі суперкористувача "cluster-admin".
Утиліти командного рядка
kubectl create role
Створює обʼєкт Role, що визначає дозволи в межах одного простору імен. Приклади:
Створити Role з назвою "pod-reader", яка дозволяє користувачам виконувати get, watch і list для pods:
kubectl create role pod-reader --verb=get --verb=list --verb=watch --resource=pods
Створити Role з назвою "pod-reader" зі специфікованими resourceNames:
kubectl create role pod-reader --verb=get --resource=pods --resource-name=readablepod --resource-name=anotherpod
Створити Role з назвою "foo" зі специфікованими apiGroups:
kubectl create role foo --verb=get,list,watch --resource=replicasets.apps
Створити Role з назвою "foo" з дозволами на субресурси:
kubectl create role foo --verb=get,list,watch --resource=pods,pods/status
Створити Role з назвою "my-component-lease-holder" з дозволами на отримання/оновлення ресурсу зі специфічною назвою:
kubectl create role my-component-lease-holder --verb=get,list,watch,update --resource=lease --resource-name=my-component
kubectl create clusterrole
Створює ClusterRole. Приклади:
Створити ClusterRole з назвою "pod-reader", яка дозволяє користувачам виконувати get, watch і list для pods:
Типові політики RBAC надають обмежені права компонентам панелі управління, вузлам і контролерам, але не надають жодних дозволів службовим обліковим записам за межами простору імен kube-system (поза межами дозволів, наданих ролями виявлення API).
Це дозволяє надавати конкретні ролі конкретним ServiceAccounts за необхідності. Тонке налаштування привʼязок ролей забезпечує більшу безпеку, але вимагає більше зусиль для адміністрування. Ширші привʼязки можуть надати зайвий (і потенційно ескалуючий) доступ до API ServiceAccounts, але їх легше адмініструвати.
Підходи від найбезпечніших до найменш безпечних:
Надання ролі для службового облікового запису для конкретного застосунку (найкращий варіант)
Це вимагає від застосунку зазначення serviceAccountName в його специфікації Pod, і створення службового облікового запису (через API, маніфест програми, kubectl create serviceaccount, тощо).
Наприклад, надати права лише на читання в межах "my-namespace" службовому обліковому запису "my-sa":
Багато надбудов працюють від імені службового облікового запису "default" у просторі імен kube-system. Щоб дозволити цим надбудовам працювати з правами суперкористувача, надайте права cluster-admin службовому обліковому запису "default" у просторі імен kube-system.
Увага:
Включення цього означає, що в просторі імен kube-system знаходяться Secretʼи, які надають доступ суперкористувача до API вашого кластера.
Надання ролі всім службовим обліковим записам у просторі імен
Якщо ви хочете, щоб усі програми в просторі імен мали роль, незалежно від того, який службовий обліковий запис вони використовують, ви можете надати роль групі службових облікових записів для цього простору імен.
Наприклад, надати права лише на читання в межах "my-namespace" усім службовим обліковим записам у цьому просторі імен:
Надання прав суперкористувача всім службовим обліковим записам у кластері (категорично не рекомендується)
Якщо вам не важливо розподіляти дозволи взагалі, ви можете надати права суперкористувача всім службовим обліковим записам.
Попередження:
Це надає будь-якому застосунку повний доступ до вашого кластера, а також надає будь-якому користувачеві з правами читання Secretʼів (або здатності створювати будь-які Pod) повний доступ до вашого кластера.
Кластери Kubernetes, створені до версії Kubernetes v1.22, включають права запису для EndpointSlices (і Endpoints) у ролях "edit" і "admin". У рамках помʼякшення наслідків CVE-2021-25740, цей доступ не є частиною агрегованих ролей у кластерах, створених із використанням Kubernetes v1.22 або пізніших версій.
Кластери, які були оновлені до Kubernetes v1.22, не підпадають під цю зміну. Оголошення CVE включає вказівки щодо обмеження цього доступу в поточних кластерах.
Якщо ви хочете, щоб нові кластери зберігали цей рівень доступу в агрегованих ролях, ви можете створити наступну ClusterRole:
apiVersion:rbac.authorization.k8s.io/v1kind:ClusterRolemetadata:annotations:kubernetes.io/description:|- Add endpoints write permissions to the edit and admin roles. This was
removed by default in 1.22 because of CVE-2021-25740. See
https://issue.k8s.io/103675. This can allow writers to direct LoadBalancer
or Ingress implementations to expose backend IPs that would not otherwise
be accessible, and can circumvent network policies or security controls
intended to prevent/isolate access to those backends.
EndpointSlices were never included in the edit or admin roles, so there
is nothing to restore for the EndpointSlice API.labels:rbac.authorization.k8s.io/aggregate-to-edit:"true"name:custom:aggregate-to-edit:endpoints# виможете змінити це поле, за бажаннямrules:- apiGroups:[""]resources:["endpoints"]verbs:["create","delete","deletecollection","patch","update"]
Оновлення з ABAC
Кластери, що спочатку працювали на старіших версіях Kubernetes, часто використовували дозвільні політики ABAC, включаючи надання повного доступу до API всім службовим обліковим записам.
Типові політики RBAC надають обмежені права компонентам панелі управління, вузлам і контролерам, але не надають жодних дозволів службовим обліковим записам за межами простору імен kube-system (поза межами дозволів, наданих ролями виявлення API).
Хоча це набагато безпечніше, це може бути руйнівним для поточних робочих навантажень, які очікують автоматичного отримання дозволів API. Ось два підходи для управління цим переходом:
Паралельні авторизатори
Запускайте як RBAC, так і ABAC авторизатори, і вкажіть файл політики, що містить стару політику ABAC:
Щоб детально пояснити цей перший параметр командного рядка: якщо раніші авторизатори, такі як Node, відхиляють запит, тоді авторизатор RBAC намагається авторизувати запит до API. Якщо RBAC також відхиляє цей запит до API, тоді запускається авторизатор ABAC. Це означає, що будь-який запит, дозволений будь-якою політикою RBAC або ABAC, буде дозволений.
Коли kube-apiserver запускається з рівнем логування 5 або вище для компонента RBAC (--vmodule=rbac*=5 або --v=5), ви можете побачити відмови RBAC у лозі сервера API (позначені як RBAC). Ви можете використовувати цю інформацію для визначення, які ролі потрібно надати яким користувачам, групам або службовим обліковим записам.
Після того, як ви надали ролі службовим обліковим записам і робочі навантаження працюють без повідомлень про відмову RBAC у логах сервера, ви можете видалити авторизатор ABAC.
Дозвільні права RBAC
Ви можете відтворити дозвільну політику ABAC, використовуючи привʼязки ролей RBAC.
Попередження:
Наступна політика дозволяє ВСІМ службовим обліковим записам діяти як адміністратори кластера. Будь-який застосунок, що працює в контейнері, автоматично отримує облікові дані службового облікового запису і може виконувати будь-яку дію з API, включаючи перегляд секретів і зміну дозволів. Це не рекомендована політика.
Після переходу на використання RBAC, ви повинні налаштувати контроль доступу для вашого кластера, щоб забезпечити відповідність вашим інформаційним вимогам безпеки.
3.5 - Використання авторизації вузлів
Авторизація вузлів — це режим авторизації спеціального призначення, який спеціально авторизує запити API, зроблені kubelet-ами.
Огляд
Авторизатор вузлів дозволяє kubelet-ам виконувати операції з API. Це включає:
Операції читання:
services
endpoints
nodes
pods
secrets, configmaps, persistent volume claims та persistent volumes, що стосуються Podʼів, привʼязаних до вузла kubelet-а
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.32 [beta] (стандартно увімкнено: true)
Коли функціональну можливість AuthorizeNodeWithSelectors увімкнено (разом із передумовою AuthorizeWithSelectors), kubelets можуть читати лише власні обʼєкти Node і можуть читати лише Podʼи, привʼязані до їхнього вузла.
Операції запису:
вузли та статус вузлів (увімкніть втулок допуску NodeRestriction, щоб обмежити
kubelet у зміні свого власного вузла)
поди та статус подів (увімкніть втулок допуску NodeRestriction, щоб обмежити
kubelet у зміні подів, привʼязаних до себе)
можливість створювати TokenReview та SubjectAccessReview для делегованої
автентифікації/авторизації
У майбутніх випусках авторизатор вузлів може додавати або видаляти дозволи, щоб забезпечити kubelet-и мінімальним набором дозволів, необхідних для правильної роботи.
Для того, щоб бути авторизованими авторизатором вузлів, kubelet-и повинні використовувати облікові дані, які ідентифікують їх як членів групи system:nodes, з іменем користувача system:node:<nodeName>. Цей формат групи та імені користувача відповідає ідентичності, створеній для кожного kubelet-а в рамках TLS початкового запуску kubelet-а.
Значення <nodeName>має точно відповідати імені вузла, як зареєстровано kubelet-ом. Стандартно це імʼя хосту, надане hostname, або замінене за допомогою опції kubelet--hostname-override. Однак, при використанні опції kubelet --cloud-provider, конкретне імʼя хосту може бути визначено постачальником хмарних послуг, ігноруючи локальний hostname та опцію --hostname-override. Для деталей щодо визначення імені хосту kubelet-ом, дивіться довідник з опцій kubelet.
Щоб увімкнути авторизатор вузла, запустіть API server з прапорцем --authorization-config, встановленим у файлі, який містить авторизатор Node; наприклад:
Щоб обмежити обʼєкти API, які можуть писати kubelet-и, увімкніть втулок допуску NodeRestriction шляхом запуску apiserver з --enable-admission-plugins=...,NodeRestriction,....
Міркування щодо міграції
Kubelet-и поза групою system:nodes
Kubelet-и, що знаходяться поза групою system:nodes, не будуть авторизовані режимом авторизації Node, і їм потрібно буде продовжувати авторизацію через механізм, який їх наразі авторизує. Вутлок допуску вузлів не буде обмежувати запити від цих kubelet-ів.
Kubelet-и з недиференційованими іменами користувачів
У деяких розгортаннях kubelet-и мають облікові дані, що розміщують їх у групі system:nodes, але не ідентифікують конкретний вузол, з яким вони повʼязані, оскільки вони не мають імені користувача у форматі system:node:.... Ці kubelet-и не будуть авторизовані режимом авторизації Node, і їм потрібно буде продовжувати авторизацію через механізм, який їх наразі авторизує.
Втулок допуску NodeRestriction буде ігнорувати запити від цих kubelet-ів, оскільки стандартна реалізація ідентифікатора вузла не вважатиме це ідентичністю вузла.
3.6 - Режим Webhook
Webhook — це зворотний виклик HTTP: HTTP POST, який відбувається, коли щось стається; просте сповіщення про подію через HTTP POST. Вебзастосунок, що реалізує Webhook, буде надсилати POST повідомлення на URL, коли відбуваються певні події.
Коли вказано режим Webhook, Kubernetes звертається до зовнішнього REST сервісу для визначення привілеїв користувача.
Формат файлу конфігурації
Режим Webhook потребує файл для HTTP конфігурації, що вказується за допомогою прапорця --authorization-webhook-config-file=SOME_FILENAME.
Файл конфігурації використовує формат файлу kubeconfig. У файлі "users" стосується конфігурації webhook API сервера, а "clusters" — до віддаленого сервісу.
Приклад конфігурації, що використовує клієнтську автентифікацію HTTPS:
# Версія Kubernetes APIapiVersion:v1# тип API обʼєктаkind:Config# кластери відносяться до віддаленого сервісуclusters:- name:name-of-remote-authz-servicecluster:# CA для перевірки віддаленого сервісуcertificate-authority:/path/to/ca.pem# URL віддаленого сервісу для запитів. Має використовувати 'https'. Не може включати параметри.server:https://authz.example.com/authorize# користувачі відносяться до конфігурації webhook API сервераusers:- name:name-of-api-serveruser:client-certificate:/path/to/cert.pem# сертифікат для використання webhook втулкомclient-key:/path/to/key.pem # ключ, що відповідає сертифікату# файли kubeconfig вимагають контекст. Вкажіть один для API сервера.current-context:webhookcontexts:- context:cluster:name-of-remote-authz-serviceuser:name-of-api-servername:webhook
Запити корисного навантаження
При ухваленні рішення про авторизацію, API сервер надсилає JSON- серіалізований обʼєкт authorization.k8s.io/v1beta1SubjectAccessReview, що описує дію. Цей обʼєкт містить поля, що описують користувача, який намагається зробити запит, та деталі про ресурс, до якого здійснюється доступ, або атрибути запиту.
Зверніть увагу, що обʼєкти API webhook підлягають тим самим правилам сумісності версій, що й інші обʼєкти API Kubernetes. Імплементатори повинні бути обізнані з менш суворими обіцянками сумісності для бета-обʼєктів і перевіряти поле "apiVersion" запиту для забезпечення правильної десеріалізації. Додатково, API сервер повинен увімкнути групу розширень API authorization.k8s.io/v1beta1 (--runtime-config=authorization.k8s.io/v1beta1=true).
Віддалений сервіс має заповнити поле status запиту і відповісти, дозволяючи або забороняючи доступ. Поле spec у відповіді ігнорується і може бути пропущене. Дозвільна відповідь виглядатиме так:
Перший метод є кращим у більшості випадків і вказує, що webhook авторизації не дозволяє або не має "думки" ("no opinion") щодо запиту, але якщо інші авторизатори налаштовані, вони отримують шанс дозволити запит. Якщо немає інших авторизаторів або жоден з них не дозволяє запит, запит забороняється. Webhook поверне:
{
"apiVersion": "authorization.k8s.io/v1beta1",
"kind": "SubjectAccessReview",
"status": {
"allowed": false,
"reason": "user does not have read access to the namespace" }
}
Другий метод негайно відмовляє, перериваючи оцінку іншими налаштованими авторизаторами. Це слід використовувати лише вебхуками, які мають детальні знання про повну конфігурацію авторизатора кластера. Webhook поверне:
{
"apiVersion": "authorization.k8s.io/v1beta1",
"kind": "SubjectAccessReview",
"status": {
"allowed": false,
"denied": true,
"reason": "user does not have read access to the namespace" }
}
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.32 [beta] (стандартно увімкнено: true)
З увімкненою функцією AuthorizeWithSelectors поля та мітки селекторів у запиті передаються до вебхуку авторизації. Вебхук може приймати рішення про авторизацію, орієнтуючися на обмежені селектори полів і міток, якщо бажає.
Документація API SubjectAccessReview надає вказівки щодо того, як ці поля мають інтерпретуватися і оброблятися вебхуками авторизації, зокрема використанням розібраних вимог замість сирих рядків селекторів та як безпечно обробляти невідомі оператори.
Нересурсні шляхи включають: /api, /apis, /metrics, /logs, /debug, /healthz, /livez, /openapi/v2, /readyz та /version. Клієнти потребують доступу до /api, /api/*, /apis, /apis/*, та /version для визначення, які ресурси та версії присутні на сервері. Доступ до інших нересурсних шляхів може бути заборонений без обмеження доступу до REST API.
Авторизація на основі атрибутів (ABAC) визначає парадигму контролю доступу, за якою права доступу надаються користувачам за допомогою політик, які комбінують атрибути.
Формат файлу політики
Для увімкнення режиму ABAC вказуйте --authorization-policy-file=SOME_FILENAME та --authorization-mode=ABAC при запуску.
Формат файлу — один обʼєкт JSON на рядок. Не повинно бути жодного вкладеного списку або map, тільки один map на рядок.
Кожний рядок — "обʼєкт політики", де такий обʼєкт є map із такими властивостями:
Властивості версіювання:
apiVersion, типу string; допустимі значення "abac.authorization.kubernetes.io/v1beta1". Дозволяє версіювання та конвертацію формату політики.
kind, типу string: допустимі значення "Policy". Дозволяє версіювання та конвертацію формату політики.
Властивість spec встановлена на мапу з такими властивостями:
Властивості зіставлення субʼєкта:
user, типу string; рядок користувача з --token-auth-file. Якщо ви вказуєте user, він повинен збігатися з імʼям користувача автентифікованого користувача.
group, типу string; якщо ви вказуєте group, він повинен збігатися з однією з груп автентифікованого користувача. system:authenticated збігається з усіма автентифікованими запитами. system:unauthenticated збігається з усіма неавтентифікованими запитами.
Властивості зіставлення ресурсу:
apiGroup, типу string; група API.
Наприклад: apps, networking.k8s.io
Маска: * збігається з усіма групами API.
namespace, типу string; простір імен.
Наприклад: kube-system
Маска: * збігається з усіма запитами ресурсів.
resource, типу string; тип ресурсу
Наприклад: pods, deployments
Маска: * збігається з усіма запитами ресурсів.
Властивості зіставлення нересурсів:
nonResourcePath, типу string; шляхи запитів нересурсів.
Наприклад: /version або /apis
Маска:
* збігається з усіма запитами нересурсів.
/foo/* збігається з усіма підшляхами /foo/.
readonly, типу boolean, якщо true, означає, що політика, що зіставляється з ресурсом, застосовується тільки до операцій get, list, та watch, а політика, що зіставляється з нересурсами, застосовується тільки до операції get.
Примітка:
Невстановлена властивість є такою самою, як властивість, що встановлена на нульове значення для свого типу (наприклад, порожній рядок, 0, false). Проте невстановлена властивість має перевагу для зручності читання.
У майбутньому політики можна буде виражати у форматі JSON і керувати ними через REST-інтерфейс.
Алгоритм авторизації
У запиту є атрибути, які відповідають властивостям обʼєкта політики.
Коли отримано запит, визначаються атрибути. Невідомі атрибути встановлюються на нульове значення свого типу (наприклад, порожній рядок, 0, false).
Властивість, встановлена на "*", буде збігатися з будь-яким значенням відповідного атрибута.
Кортеж атрибутів перевіряється на відповідність кожній політиці в файлі політики. Якщо принаймні один рядок відповідає атрибутам запиту, тоді запит авторизований (але може зазнати невдачі під час подальшої перевірки).
Щоб дозволити будь-якому автентифікованому користувачеві зробити щось, створіть політику з властивістю group, встановленою на "system:authenticated".
Щоб дозволити будь-якому неавтентифікованому користувачеві зробити щось, створіть політику з властивістю group, встановленою на "system:unauthenticated".
Щоб дозволити користувачеві зробити все, створіть політику з властивостями apiGroup, namespace, resource та nonResourcePath, встановленими на "*".
Kubectl
Kubectl використовує точки доступу /api та /apis apiserver для виявлення сервісів, які обслуговують типи ресурсів, і перевіряє обʼєкти, надіслані до API за допомогою операцій create/update, використовуючи інформацію про схему, розташовану в /openapi/v2.
При використанні авторизації на основі атрибутів, ці спеціальні ресурси мають бути явно відкриті за допомогою властивості nonResourcePath в політиці (див. приклади нижче):
/api, /api/*, /apis та /apis/* для вибору версії API.
/version для отримання версії сервера через kubectl version.
/swaggerapi/* для операцій create/update.
Щоб перевірити HTTP-виклики, повʼязані з певною операцією kubectl, ви можете збільшити рівень деталізації:
Кожен службовий обліковий запис має відповідне імʼя користувача ABAC, і імʼя цього службового облікового запису генерується згідно з конвенцією щодо найменування:
Створюючи новий простір імен, створюється новий службовий обліковий запис у наступному форматі:
system:serviceaccount:<namespace>:default
Наприклад, якщо ви хочете надати стандартному службовому обліковому запису (у просторі імен kube-system) повні привілеї в API за допомогою ABAC, ви додаєте цей рядок до файлу політики:
apiserver повинен бути перезапущений, щоб використати нові рядки.
3.8 - Контролери допуску в Kubernetes
Ця сторінка надає огляд контролерів допуску.
Контролер допуску — це фрагмент коду, який перехоплює запити до сервера API Kubernetes перед збереженням обʼєкта, але після того, як запит був автентифікований та авторизований.
Кілька важливих функцій Kubernetes вимагають увімкнення контролера допуску, щоб належним чином підтримувати функцію. Як наслідок, сервер API Kubernetes, який не налаштований належним чином з правильним набором контролерів допуску, є неповноцінним сервером, який не буде підтримувати всі функції, які ви очікуєте.
Що це таке?
Контролери допуску є кодов в API server Kubernetes, який перевіряє дані, що надходять на запит на зміну ресурсів.
Контролери допуску застосовуються до запитів на створення, видалення, зміну обʼєктів. Контролери допуску також можуть блокувати нестандартні дієслова, такі як запити на підключення до Podʼа через проксі сервера API. Контролери допуску не блокують (і не можуть) запити на читання (get, watch або list) обʼєктів, оскільки читання оминає шар контролю допуску.
Механізми управління доступом можуть бути валідаційними, модифікуючими або і тими, і іншими. Модифікуючі контролери можуть змінювати дані для ресурсу, який модифікується; валідаційні контролери не можуть.
Контролери допуску в Kubernetes 1.32 складаються зі списку нижче, вбудовані у двійковий файл kube-apiserver і можуть бути налаштовані тільки адміністратором кластера.
Ви можете використовувати ці три контролери допуску, щоб налаштувати поведінку кластера під час допуску.
Етапи контролю допуску
Процес контролю допуску проходить у два етапи. На першому етапі виконуються модифікуючі контролери допуску. На другому етапі виконуються валідаційні контролери допуску. Знову ж таки, деякі контролери є обома.
Якщо будь-який з контролерів на будь-якому етапі відхиляє запит, весь запит негайно відхиляється, і користувачу повертається помилка.
Нарешті, окрім іноді модифікації обʼєкта, про який йдеться, контролери допуску можуть іноді мати побічні ефекти, тобто змінювати повʼязані ресурси в процесі обробки запиту. Збільшення використання квоти є класичним прикладом того, чому це необхідно. Будь-який такий побічний ефект потребує відповідного процесу рекламації або узгодження, оскільки даний контролер допуску не знає напевно, що даний запит пройде через всі інші контролери допуску.
Як увімкнути контролер допуску?
Прапорець сервера API Kubernetes enable-admission-plugins приймає через кому список втулків контролю допуску, які слід викликати перед зміною обʼєктів у кластері. Наприклад, наступна команда увімкне втулки контролю допуску NamespaceLifecycle та LimitRanger:
Залежно від того, як ваш кластер Kubernetes розгорнутий і як запускається сервер API, вам може знадобитися застосувати налаштування різними способами. Наприклад, вам може знадобитися змінити файл системного блоку systemd, якщо сервер API розгорнуто як службу systemd ви можете змінити файл маніфесту для сервера API, якщо Kubernetes розгорнуто як самостійний хостинг.
Як вимкнути контролер допуску?
Прапорець сервера API Kubernetes disable-admission-plugins приймає через кому список втулків контролю допуску, які слід вимкнути, навіть якщо вони є у списку втулків, що є стандартно увімкненими.
Цей контролер допуску дозволяє запуск всіх Podʼів в кластер. Він застарілий, оскільки його поведінка така ж, якби не було ніякого контролера допуску взагалі.
AlwaysDeny
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.13 [deprecated]
Тип: Валідаційний.
Відхиляє всі запити. AlwaysDeny застарілий, оскільки не має реального значення.
AlwaysPullImages
Тип: Модифікуючий та Валідаційний.
Цей контролер допуску модифікує кожен новий Pod, щоб примусити використовувати політику завантаження образів Always. Це корисно в багатокористувацькому кластері, щоб користувачі могли бути впевнені, що їхні приватні образи можуть використовувати лише ті, хто має відповідні облікові дані для їх завантаження. Без цього контролера допуску, після того, як образи було завантажено на вузол, будь-який Pod будь-якого користувача може використовувати його, знаючи імʼя образу (за умови, що Pod розміщений на правильному вузлі), без жодної перевірки вторизації для образу. Коли цей контролер допуску увімкнений, образи завжди завантажуються перед запуском контейнерів, що означає, що потрібні дійсні облікові дані.
CertificateApproval
Тип: Валідаційний.
Цей контролер допуску спостерігає за запитами на затвердження ресурсів CertificateSigningRequest і виконує додаткові перевірки авторизації, щоб переконатися, що користувач, який затверджує, має дозвіл на затвердження запитів сертифікатів із запитаним spec.signerName у ресурсі CertificateSigningRequest.
Дивіться Запити на підписання сертифікатів для отримання додаткової інформації про дозволи, необхідні для виконання різних дій з ресурсами CertificateSigningRequest.
CertificateSigning
Тип: Валідаційний.
Цей контролер допуску спостерігає за оновленнями поля status.certificate ресурсів CertificateSigningRequest і виконує додаткові перевірки авторизації, щоб переконатися, що користувач, який підписує, має дозвіл на підписання запитів сертифікатів із запитаним spec.signerName у ресурсі CertificateSigningRequest.
Дивіться Запити на підписання сертифікатів для отримання додаткової інформації про дозволи, необхідні для виконання різних дій з ресурсами CertificateSigningRequest.
CertificateSubjectRestriction
Тип: Валідаційний.
Цей контролер допуску спостерігає за створенням ресурсів CertificateSigningRequest, які мають spec.signerName значення kubernetes.io/kube-apiserver-client. Він відхиляє будь-який запит, який вказує групу (або атрибут організації) system:masters.
DefaultIngressClass
Тип: Модифікуючий.
Цей контролер допуску спостерігає за створенням обʼєктів Ingress, які не запитують жодного конкретного класу ingress, і автоматично додає до них стандартний клас ingress. Таким чином, користувачі, які не запитують жодного спеціального класу ingress, не повинні про це турбуватися та отримають стандартний клас.
Цей контролер допуску нічого не робить, коли не налаштований жоден стандартний клас ingress. Коли більше одного класу ingress позначено як стандартний клас, він відхиляє будь-яке створення Ingress з помилкою, і адміністратор повинен переглянути свої обʼєкти IngressClass та позначити лише один як стандартний клас (з анотацією "ingressclass.kubernetes.io/is-default-class"). Цей контролер допуску ігнорує будь-які оновлення Ingress; він діє тільки при створенні.
Дивіться документацію Ingress для отримання додаткової інформації про класи ingress і як позначити один як стандартний клас.
DefaultStorageClass
Тип: Модифікуючий.
Цей контролер допуску спостерігає за створенням обʼєктів PersistentVolumeClaim, які не запитують жодного конкретного класу зберігання, і автоматично додає до них стандартний клас зберігання. Таким чином, користувачі, які не запитують жодного спеціального класу зберігання, не повинні про це турбуватися та отримають стандартний клас.
Цей контролер допуску нічого не робить, коли не налаштований жоден стандартний клас зберігання. Коли більше одного класу зберігання позначено як стандартний клас, він відхиляє будь-яке створення PersistentVolumeClaim з помилкою, і адміністратор повинен переглянути свої обʼєкти StorageClass і позначити лише один як стандартний клас. Цей контролер допуску ігнорує будь-які оновлення PersistentVolumeClaim; він діє тільки при створенні.
Дивіться документацію постійних томів про persistent volume claims та класи зберігання, а також як позначити клас зберігання як стандартний клас.
DefaultTolerationSeconds
Тип: Модифікуючий.
Цей контролер допуску встановлює стандартне значення толерантності для Podʼів, щоб терпіти taints notready:NoExecute та unreachable:NoExecute на основі параметрів введення k8s-apiserver default-not-ready-toleration-seconds та default-unreachable-toleration-seconds, якщо Podʼи ще не мають толерантності до taints node.kubernetes.io/not-ready:NoExecute або node.kubernetes.io/unreachable:NoExecute. Стандартне значення для default-not-ready-toleration-seconds та default-unreachable-toleration-seconds становить 5 хвилин.
DenyServiceExternalIPs
Тип: Валідаційний.
Цей контролер допуску відхиляє всі нові використання поля externalIPs у Service. Ця функція дуже потужна (дозволяє перехоплення мережевого трафіку) і не контролюється належним чином політиками. Коли цей контролер увімкнено, користувачі кластера не можуть створювати нові Serviceʼи, які використовують externalIPs, і не можуть додавати нові значення до externalIPs в поточних обʼєктах Service. Поточні використання externalIPs не зачіпаються, і користувачі можуть видаляти значення з externalIPs в наявних обʼєктах Service.
Більшість користувачів взагалі не потребує цієї функції, і адміністратори кластера повинні розглянути можливість її вимкнення. Кластери, які потребують цієї функції, повинні розглянути можливість використання власних політик для керування її використанням.
Цей контролер допуску стандартно вимкнено.
EventRateLimit
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.13 [alpha]
Тип: Валідаційний.
Цей контролер допуску зменшує проблему, коли API-сервер переповнюється запитами на зберігання нових подій (Events). Адміністратор кластера може вказати обмеження швидкості подій, виконавши такі кроки:
Увімкнути контролер допуску EventRateLimit;
Посилатися на конфігураційний файл EventRateLimit з файлу, наданого у командному рядку API-сервера з прапорцем --admission-control-config-file:
Цей втулок полегшує створення виділених вузлів з розширеними ресурсами. Якщо оператори хочуть створити виділені вузли з розширеними ресурсами (наприклад, GPU, FPGA тощо), вони повинні накладати taint на вузол з іменем розширеного ресурсу як ключем. Цей контролер допуску, якщо він увімкнений, автоматично додає толерантності до таких taint у Podʼи, які запитують розширені ресурси, тому користувачам не потрібно вручну додавати ці толерантності.
Цей контролер допуску стандартно вимкнено.
ImagePolicyWebhook
Тип: Валідаційний.
Контролер допуску ImagePolicyWebhook дозволяє бекенд-вебхуку приймати рішення про допуск.
Цей контролер допуску стандартно вимкнено.
Формат конфігураційного файлу
ImagePolicyWebhook використовує конфігураційний файл для налаштування поведінки бекенду. Цей файл може бути у форматі JSON або YAML і має наступний формат:
imagePolicy:kubeConfigFile:/path/to/kubeconfig/for/backend# час у секундах для кешування дозволуallowTTL:50# час у секундах для кешування відмовиdenyTTL:50# час у мілісекундах між спробами повторуretryBackoff:500# визначає поведінку у разі відмови бекенда вебхукаdefaultAllow:true
Посилання на конфігураційний файл ImagePolicyWebhook повинно бути зазначене у файлі, який передається прапорцю командного рядка API-сервера --admission-control-config-file:
Конфігураційний файл ImagePolicyWebhook повинен посилатися на файл у форматі kubeconfig, який налаштовує зʼєднання з бекендом. Бекенд повинен здійснювати комунікацію через TLS.
Поле cluster у файлі kubeconfig має посилатися на віддалений сервіс, а поле user повинно містити дані авторизації.
# clusters посилається на віддалений сервіс.clusters:- name:name-of-remote-imagepolicy-servicecluster:certificate-authority:/path/to/ca.pem # CA для верифікації віддаленого сервісу.server:https://images.example.com/policy# URL віддаленого сервісу для запитів. Повинен використовувати 'https'.# users посилається на конфігурацію вебхука API-сервера.users:- name:name-of-api-serveruser:client-certificate:/path/to/cert.pem# сертифікат для використання контролером допуску вебхукаclient-key:/path/to/key.pem # ключ, що відповідає сертифікату
Для додаткової конфігурації HTTP дивіться документацію kubeconfig.
Вміст запитів
Під час прийняття рішення про допуск, API-сервер надсилає POST-запит з серіалізованим у форматі JSON обʼєктом imagepolicy.k8s.io/v1alpha1ImageReview, що описує дію. Цей обʼєкт містить поля, що описують контейнери, які підлягають допуску, а також будь-які анотації Podʼа, що відповідають *.image-policy.k8s.io/*.
Примітка:
Обʼєкти API вебхуків підлягають тим самим правилам сумісності версій, що й інші обʼєкти API Kubernetes. Імплементатори повинні знати про менш жорсткі обіцянки сумісності для альфа-обʼєктів і перевіряти поле apiVersion запиту для забезпечення правильної десеріалізації. Крім того, API-сервер повинен увімкнути групу розширень API imagepolicy.k8s.io/v1alpha1 (--runtime-config=imagepolicy.k8s.io/v1alpha1=true).
Віддалений сервіс повинен заповнити поле status запиту і відповісти з дозволом або відмовою доступу. Поле spec тіла відповіді ігнорується, і його можна не включати. Відповідь, яка дозволяє доступ, виглядатиме так:
Усі анотації на Podʼі, що відповідають *.image-policy.k8s.io/*, надсилаються до вебхука. Надсилання анотацій дозволяє користувачам, які знають про бекенд політики образів, надсилати додаткову інформацію до нього, а також дозволяє реалізаціям різних бекендів приймати різну інформацію.
Приклади інформації, яку ви можете тут розмістити:
запит на "пробиття" для обходу політики у разі надзвичайної ситуації;
номер квитка з системи квитків, що документує запит на "пробиття";
підказка серверу політики щодо imageID наданого образу для економії часу на пошук.
У будь-якому випадку, анотації надаються користувачем і не перевіряються Kubernetes будь-яким чином.
LimitPodHardAntiAffinityTopology
Тип: Валідаційний.
Цей контролер допуску забороняє будь-який Pod, який визначає ключ топології AntiAffinity відмінний від kubernetes.io/hostname у requiredDuringSchedulingRequiredDuringExecution.
Цей контролер допуску стандартно вимкнено.
LimitRanger
Тип: Модифікуючий та Валідаційний.
Цей контролер допуску спостерігає за вхідним запитом та забезпечує, щоб він не порушував жодних обмежень, перерахованих в обʼєкті LimitRange в Namespace. Якщо ви використовуєте обʼєкти LimitRange у своєму розгортанні Kubernetes, ви МАЄТЕ використовувати цей контролер допуску для забезпечення дотримання цих обмежень. LimitRanger також може використовуватися для застосування стандартних ресурсних запитів до Pod, які їх не вказують; наразі стандартний LimitRanger застосовує вимогу до 0.1 CPU до всіх Pod у default namespace.
Цей контролер допуску викликає будь-які модифікуючі вебхуки, які відповідають запиту. Відповідні вебхуки викликаються послідовно; кожен з них може змінити обʼєкт, якщо це необхідно.
Цей контролер допуску (як випливає з назви) працює лише на етапі модифікації.
Якщо вебхук, викликаний цим контролером, має побічні ефекти (наприклад, зменшення квоти), він повинен мати систему узгодження, оскільки не гарантується, що наступні вебхуки або контролери допуску дозволять завершити запит.
Якщо ви вимкнете MutatingAdmissionWebhook, ви також повинні вимкнути обʼєкт MutatingWebhookConfiguration у групі/версії admissionregistration.k8s.io/v1 за допомогою прапорця --runtime-config, обидва стандартно увімкнені.
Будьте обережні при створенні та встановленні модифікуючих вебхуків
Користувачі можуть бути спантеличені, коли обʼєкти, які вони намагаються створити, відрізняються від того, що вони отримують назад.
Вбудовані контрольні цикли можуть зламатися, коли обʼєкти, які вони намагаються створити, відрізняються при зворотному читанні.
Встановлення спочатку незаданих полів менш ймовірно викличе проблеми, ніж переписування полів, встановлених у початковому запиті. Уникайте останнього.
Майбутні зміни в контрольних циклах для вбудованих або сторонніх ресурсів можуть зламати вебхуки, які добре працюють сьогодні. Навіть коли API вебхука для установки буде фіналізовано, не всі можливі поведінки вебхука будуть гарантовано підтримуватися нескінченно.
NamespaceAutoProvision
Тип: Модифікуючий.
Цей контролер допуску перевіряє всі вхідні запити на ресурси, що належать до namespace, і перевіряє чи існує зазначений namespace. Він створює namespace, якщо його не знайдено. Цей контролер допуску корисний у розгортаннях, які не хочуть обмежувати створення namespace до його використання.
NamespaceExists
Тип: Валідаційний.
Цей контролер допуску перевіряє всі запити на ресурси, що належать до namespace, крім самого Namespace. Якщо namespace, на який посилається запит, не існує, запит відхиляється.
NamespaceLifecycle
Тип: Валідаційний.
Цей контролер допуску забезпечує, що Namespace, який знаходиться в процесі завершення, не може мати нові обʼєкти, створені в ньому, і забезпечує відхилення запитів у неіснуючому Namespace. Цей контролер допуску також запобігає видаленню трьох системно зарезервованих namespaces: default, kube-system, kube-public.
Видалення Namespace запускає послідовність операцій, які видаляють усі обʼєкти (Pod, Service, тощо) у цьому namespace. Для забезпечення цілісності цього процесу, ми наполегливо рекомендуємо використовувати цей контролер допуску.
NodeRestriction
Тип: Валідаційний.
Цей контролер допуску обмежує обʼєкти Node і Pod, які kubelet може змінювати. Для того, щоб бути обмеженим цим контролером допуску, kubelets повинні використовувати облікові дані у групі system:nodes, з іменем користувача у формі system:node:<nodeName>. Такі kubelets будуть мати дозвіл лише змінювати свої власні обʼєкти API Node, і лише змінювати обʼєкти API Pod, які привʼязані до їх вузла. kubelets не мають права оновлювати або видаляти taint зі свого обʼєкта API Node.
Втулок допуску NodeRestriction перешкоджає kubelets видаляти їх обʼєкт API Node, і забезпечує оновлення kubeletʼом міток з префіксами kubernetes.io/ або k8s.io/ наступним чином:
Перешкоджає kubelets додавання/видалення/оновлення міток з префіксом node-restriction.kubernetes.io/. Цей префікс міток зарезервовано для адміністраторів для позначення мітками своїх обʼєктів Node з метою ізоляції робочих навантажень, і kubelets не буде дозволено змінювати мітки з цим префіксом.
Дозволяє kubelets додавати/видаляти/оновлювати ці мітки та префікси міток:
Використання будь-яких інших міток під префіксами kubernetes.io або k8s.io kubelets зарезервовано, і може бути заборонено або дозволено втулком допуску NodeRestriction у майбутньому.
Майбутні версії можуть додати додаткові обмеження для забезпечення того, щоб kubelets мали мінімальний набір дозволів, необхідних для правильної роботи.
OwnerReferencesPermissionEnforcement
Тип: Валідаційний.
Цей контролер допуску захищає доступ до metadata.ownerReferences обʼєкта, так що тільки користувачі з правами delete у обʼєкта можуть його змінювати. Цей контролер допуску також захищає доступ до metadata.ownerReferences[x].blockOwnerDeletion обʼєкта, так що тільки користувачі з правами update у субресурсу finalizers посилального власника можуть його змінювати.
PersistentVolumeClaimResize
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.24 [stable]
Тип: Валідаційний.
Цей контролер допуску реалізує додаткові перевірки для перевірки вхідних запитів на зміну розміру PersistentVolumeClaim.
Рекомендується увімкнути контролер допуску PersistentVolumeClaimResize. Цей контролер допуску запобігає зміні розміру всіх вимог за замовчуванням, якщо тільки StorageClass вимоги явно не дозволяє зміну розміру, встановлюючи allowVolumeExpansion на true.
Наприклад: всі PersistentVolumeClaim, створені з наступного StorageClass, підтримують розширення тому:
Для отримання додаткової інформації про persistent volume claims, дивіться PersistentVolumeClaims.
PodNodeSelector
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.5 [alpha]
Тип: Валідаційний.
Цей контролер допуску задає та обмежує, які селектори вузлів можуть використовуватися в межах namespace, шляхом читання анотації namespace та глобальної конфігурації.
Цей контролер допуску стандартно вимкнено.
Формат конфігураційного файлу
PodNodeSelector використовує конфігураційний файл для налаштування параметрів поведінки бекенду. Зверніть увагу, що формат конфігураційного файлу буде змінено на версійований файл у майбутньому випуску. Цей файл може бути у форматі json або yaml і має наступний формат:
Якщо Namespace має анотацію з ключем scheduler.alpha.kubernetes.io/node-selector, використовуйте її значення як селектор вузлів.
Якщо namespace не має такої анотації, використовуйте clusterDefaultNodeSelector, визначений у конфігураційному файлі втулка PodNodeSelector, як селектор вузлів.
Оцініть селектор вузлів Podʼа щодо селектора вузлів namespace на предмет конфліктів. Конфлікти призводять до відхилення.
Оцініть селектор вузлів Podʼа щодо дозволеного селектора, визначеного у конфігураційному файлі плагіну для конкретного namespace. Конфлікти призводять до відхилення.
Примітка:
PodNodeSelector дозволяє змусити Podʼи працювати на вузлах зі спеціальними мітками. Дивіться також втулок допуску PodTolerationRestriction, який дозволяє запобігти запуску Podʼів на вузлах зі спеціальними taintʼами.
PodSecurity
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.25 [stable]
Тип: Валідаційний.
Контролер допуску PodSecurity перевіряє нові Podʼи перед їх допуском і визначає, чи варто їх допускати на основі запитуваного контексту безпеки та обмежень щодо дозволених Стандартів безпеки для Podʼів для namespace, в якому буде знаходитися Pod.
PodSecurity замінив старіший контролер допуску під назвою PodSecurityPolicy.
PodTolerationRestriction
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.7 [alpha]
Тип: Модифікуючий та Валідаційний.
Контролер допуску PodTolerationRestriction перевіряє конфлікти між толерантностями Podʼа та толерантностями його namespace. Він відхиляє запит Podʼа у разі конфлікту. Потім він обʼєднує толерантності, анотовані на namespace, з толерантностями Podʼа. Отримані толерантності перевіряються щодо списку дозволених толерантностей, анотованих на namespace. Якщо перевірка пройде успішно, запит Podʼа допускається, інакше він відхиляється.
Якщо namespace Podʼа не має повʼязаних з ним стандартних толерантностей або дозволених толерантностей, анотованих, використовуються стандартні толерантності на рівні кластера або список дозволених толерантностей на рівні кластера, якщо вони зазначені.
Толерантності призначаються namespace за допомогою ключа анотації scheduler.alpha.kubernetes.io/defaultTolerations. Список дозволених толерантностей можна додати за допомогою ключа анотації scheduler.alpha.kubernetes.io/tolerationsWhitelist.
Контролер допуску Priority використовує поле priorityClassName і заповнює ціле значення пріоритету. Якщо клас пріоритету не знайдено, Pod відхиляється.
ResourceQuota
Тип: Валідаційний.
Цей контролер допуску спостерігає за вхідним запитом і гарантує, що він не порушує жодних обмежень, перерахованих у обʼєкті ResourceQuota у Namespace. Якщо ви використовуєте обʼєкти ResourceQuota у вашому розгортанні Kubernetes, ви МАЄТЕ використовувати цей контролер допуску для забезпечення дотримання квот.
Якщо ви визначаєте RuntimeClass з налаштованими накладними витратами, повʼязаними з роботою Podʼів, цей контролер допуску перевіряє вхідні Podʼи. При увімкненні, цей контролер допуску відхиляє будь-які запити на створення Podʼів, які вже мають встановлений overhead. Для Podʼів, які мають налаштований і обраний у своєму .spec RuntimeClass, цей контролер допуску встановлює .spec.overhead у Pod на основі значення, визначеного у відповідному RuntimeClass.
Цей контролер допуску реалізує автоматизацію для службових облікових записів. Проєкт Kubernetes наполегливо рекомендує увімкнути цей контролер допуску. Вам слід увімкнути цей контролер допуску, якщо ви маєте намір використовувати обʼєкти ServiceAccount в Kubernetes.
Щоб посилити заходи безпеки навколо Secrets, використовуйте окремі простори імен для ізоляції доступу до змонтованих секретів.
StorageObjectInUseProtection
Тип: Модифікуючий.
Втулок StorageObjectInUseProtection додає завершувачі kubernetes.io/pvc-protection або kubernetes.io/pv-protection до новостворених Persistent Volume Claims (PVC) або Persistent Volumes (PV). У випадку видалення користувача PVC або PV PVC або PV не видаляється, поки завершувач не буде видалений з PVC або PV за допомогою контролера захисту PVC або PV.
Дивіться Захист обʼєктів зберігання які використовуються для отримання детальнішої інформації.
TaintNodesByCondition
Тип: Модифікуючий.
Цей контролер допуску додає taint до новостворених вузлів таких як NotReady та NoSchedule. Це позначення доволє уникнути стану перегонів, який може призвести до того, що Podʼи будуть заплановані на нових вузлах до того, як їх taint будуть оновлені для точної відповідності їх звітніх умов.
ValidatingAdmissionPolicy
Тип: Валідаційний.
Цей контролер допуску реалізує перевірку CEL для вхідних запитів, що збігаються. Він увімкнений, коли увімкнені як функціональна можливість validatingadmissionpolicy, так і група/версія admissionregistration.k8s.io/v1alpha1. Якщо будь-яка з політик ValidatingAdmissionPolicy не вдасться, запит не вдасться.
ValidatingAdmissionWebhook
Тип: Валідаційний.
Цей контролер допуску викликає будь-які валідуючі вебхуки, які відповідають запиту. Валідуючі вебхуки викликаються паралельно; якщо будь-який з них відхиляє запит, запит не вдається. Цей контролер допуску працює лише на етапі валідації; вебхуки, які він викликає, не можуть змінювати обʼєкт, на відміну від вебхуків, які викликаються контролером допуску MutatingAdmissionWebhook.
Якщо вебхук який викликається цим контролером, має побічні ефекти (наприклад, зменшення квоти), то обовʼязково має бути система реконсіляції, оскільки не гарантується, що подальші вебхуки або інші валідаційні контролери допуску дозволять закінчити запит.
Якщо ви вимкнете ValidatingAdmissionWebhook, вам також слід вимкнути обʼєкт ValidatingWebhookConfiguration у групі/версії admissionregistration.k8s.io/v1 за допомогою прапорця --runtime-config.
Чи існує рекомендований набір контролерів допуску для використання?
Так. Рекомендовані контролери допуску стандартно увімкнені (дивіться тут), тому вам не потрібно явно вказувати їх. Ви можете увімкнути додаткові контролери допуску поза стандартним набором за допомогою прапорця --enable-admission-plugins (порядок не має значення).
3.9 - Динамічне керування допуском
Окрім вбудованих втулків допуску, втулки допуску можуть бути розроблені як розширення і виконуватися як вебхуки, налаштовані під час роботи. Ця сторінка описує, як будувати, налаштовувати, використовувати та контролювати вебхуки допуску.
Що таке вебхуки допуску?
Вебхуки допуску — це зворотні виклики HTTP, які отримують запити на допуск та роблять з ними щось. Ви можете визначити два типи вебхуків допуску, валідаційний вебхук допуску та модифікуючий вебхук допуску. Модифікуючі вебхуки допуску викликаються першими та можуть змінювати обʼєкти, які надсилаються на сервер API, щоб застосовувати власні стандартні значення. Після завершення всіх модифікацій обʼєктів і після того, як вхідний обʼєкт перевірений сервером API, викликаються валідаційні вебхуки допуску та можуть відхиляти запити для застосування власних політик.
Примітка:
Вебхуки допуску, які потребують гарантії того, що вони бачать кінцевий стан обʼєкта, щоб застосувати політику, повинні використовувати валідаційний вебхук допуску, оскільки обʼєкти можуть бути змінені після того, як їх оглянули модифікуючі вебхуки.
Експерименти з вебхуками допуску
Вебхуки допуску фактично є частиною панелі управління кластера. Ви повинні писати та розгортати їх з великою обережністю. Будь ласка, прочитайте посібники користувача для інструкцій, якщо ви маєте намір писати/розгортати вебхуки допуску промислового рівня. Нижче ми описуємо, як швидко експериментувати з вебхуками допуску.
Передумови
Переконайтеся, що контролери допуску MutatingAdmissionWebhook та ValidatingAdmissionWebhook
увімкнені. Тут є рекомендований набір контролерів допуску для загального увімкнення.
Переконайтеся, що API admissionregistration.k8s.io/v1 увімкнено.
Написання сервера вебхуків допуску
Будь ласка, зверніться до реалізації сервера вебхуків допуску, який перевірено в е2е-тесті Kubernetes. Сервер вебхуків обробляє запити AdmissionReview, надіслані серверами API, і повертає своє рішення як обʼєкт AdmissionReview в тій же версії, що й отримав.
Дивіться розділ запиту вебхуку для деталей щодо даних, надісланих до вебхуків.
Дивіться розділ відповіді вебхуку для деталей щодо даних, які очікуються від вебхуків.
Приклад сервера вебхуків допуску залишає поле ClientAuthпорожнім, що типово дорівнює NoClientCert. Це означає, що сервер вебхуків не автентифікує ідентичність клієнтів, які, припускається, є серверами API. Якщо вам потрібен взаємний TLS або інші способи автентифікації клієнтів, дивіться як автентифікувати сервери API.
Розгортання служби вебхуків допуску
Сервер вебхуків у е2е-тесті розгортається в кластері Kubernetes за допомогою API deployment. Тест також створює службу як фронтенд сервера вебхуків. Дивіться код.
Ви також можете розгортати свої вебхуки поза кластером. Вам потрібно буде оновити відповідно ваші конфігурації вебхуків.
Приклад ValidatingWebhookConfiguration, конфігурація модифікуючого вебхуку подібна. Дивіться розділ конфігурації вебхуку для деталей про кожне поле конфігурації.
Ви повинні замінити <CA_BUNDLE> у вищезазначеному прикладі на дійсний пакунок CA це PEM-кодований (значення поля закодовано у Base64) пакунок CA для перевірки вебсервера сертифіката.
Поле scope вказує, чи тільки ресурси з області кластера ("Cluster") або з області простору імен ("Namespaced") будуть відповідати цьому правилу. "∗" означає, що обмежень області немає.
Примітка:
При використанні clientConfig.service, сертифікат сервера повинен бути дійсним для
<svc_name>.<svc_namespace>.svc.
Примітка:
Стандартний тайм-авт вебхуку — 10 секунд, ви можете встановити timeout, і рекомендується використовувати короткий тайм-авт для вебхуків. Якщо виклик вебхуку перевищує тайм-авт, запит обробляється відповідно до політики відмови вебхуку.
Коли сервер API отримує запит, що відповідає одному з rules, сервер API надсилає запит admissionReview до вебхуку, як зазначено в clientConfig.
Після створення конфігурації вебхуку, системі знадобиться кілька секунд, щоб визнати нову конфігурацію.
Автентифікація серверів API
Якщо вашим вебхукам для допуску потрібна автентифікація, ви можете налаштувати сервери API для використання базової автентифікації, токенів на предʼявника (bearer token) або сертифікатів для автентифікації себе у вебхуках. Налаштування складається з трьох кроків.
Під час запуску сервера API вкажіть розташування файлу конфігурації керування допуском за допомогою прапорця --admission-control-config-file.
У файлі конфігурації керування допуском вкажіть, де контролери MutatingAdmissionWebhook та ValidatingAdmissionWebhook повинні читати облікові дані. Облікові дані зберігаються у файлах kubeConfig (так, це та сама схема, що використовується kubectl), тому назва поля — kubeConfigFile. Ось приклад файлу конфігурації керування допуском:
# Застаріло у v1.17 на користь apiserver.config.k8s.io/v1apiVersion:apiserver.k8s.io/v1alpha1kind:AdmissionConfigurationplugins:- name:ValidatingAdmissionWebhookconfiguration:# Застаріло у v1.17 на користь apiserver.config.k8s.io/v1, kind=WebhookAdmissionConfigurationapiVersion:apiserver.config.k8s.io/v1alpha1kind:WebhookAdmissionkubeConfigFile:"<path-to-kubeconfig-file>"- name:MutatingAdmissionWebhookconfiguration:# Застаріло у v1.17 на користь apiserver.config.k8s.io/v1, kind=WebhookAdmissionConfigurationapiVersion:apiserver.config.k8s.io/v1alpha1kind:WebhookAdmissionkubeConfigFile:"<path-to-kubeconfig-file>"
apiVersion:v1kind:Configusers:# name повинно бути встановлено на DNS-імʼя служби або хост (включаючи порт) URL-адреси, з якою налаштовано взаємодію вебхуку.# Якщо для служб використовується порт, відмінний від 443, його необхідно включити до імені під час налаштування серверів API версії 1.16+.## Для вебхуку, налаштованого для взаємодії зі службою настандартному порті (443), вкажіть DNS-імʼя служби:# - name: webhook1.ns1.svc# user: ...## Для вебхуку, налаштованого для взаємодії зі службою на нестандартному порту (наприклад, 8443), вкажіть DNS-імʼя та порт служби у версії 1.16+:# - name: webhook1.ns1.svc:8443# user: ...# і, за бажанням, створіть другу секцію, використовуючи лише DNS-імʼя служби для сумісності з серверами API версії 1.15:# - name: webhook1.ns1.svc# user: ...## Для вебхуків, налаштованих для взаємодії з URL-адресою, вкажіть хост (і порт), вказані в URL-адресі вебхуку. Приклади:# Вебхук з `url: https://www.example.com`:# - name: www.example.com# user: ...## Вебхук з `url: https://www.example.com:443`:# - name: www.example.com:443# user: ...## Вебхук з `url: https://www.example.com:8443`:# - name: www.example.com:8443# user: ...#- name:'webhook1.ns1.svc'user:client-certificate-data:"<pem encoded certificate>"client-key-data:"<pem encoded key>"# Поле `name` підтримує використання * для підстановки сегментів префікса.- name:'*.webhook-company.org'user:password:"<password>"username:"<name>"# '*' є стандартним збігом.- name:'*'user:token:"<token>"
Звичайно, вам потрібно налаштувати сервер вебхуків для обробки цих запитів на автентифікацію.
Запит і відповідь вебхука
Запит
Вебхуки надсилаються як POST-запити з Content-Type: application/json, з об’єктом API AdmissionReview в API-групі admission.k8s.io, серіалізованим у JSON як тіло запиту.
Вебхуки можуть вказувати, які версії об’єктів AdmissionReview вони приймають, використовуючи поле admissionReviewVersions у своїй конфігурації:
admissionReviewVersions є обов’язковим полем при створенні конфігурацій вебхуків. Вебхуки повинні підтримувати принаймні одну версію AdmissionReview, яка зрозуміла поточному та попередньому API-серверу.
API-сервери надсилають першу версію AdmissionReview зі списку admissionReviewVersions, яку вони підтримують. Якщо жодна з версій у списку не підтримується API-сервером, створення конфігурації не буде дозволено. Якщо API-сервер виявляє конфігурацію вебхука, яка була створена раніше і не підтримує жодної з версій AdmissionReview, які API-сервер може надсилати, спроби виклику вебхука будуть невдалими та підлягатимуть політиці відмови.
Цей приклад показує дані, що містяться в об’єкті AdmissionReview для запиту на оновлення субресурсу scale для Deployment з групи apps/v1:
apiVersion:admission.k8s.io/v1kind:AdmissionReviewrequest:# Випадковий uid, що унікально ідентифікує цей виклик підтвердженняuid:705ab4f5-6393-11e8-b7cc-42010a800002# Повністю кваліфікована група/версія/тип вхідного об’єктаkind:group:autoscalingversion:v1kind:Scale# Повністю кваліфікована група/версія/тип ресурсу, що змінюєтьсяresource:group:appsversion:v1resource:deployments# субресурс, якщо запит стосується субресурсуsubResource:scale# Повністю кваліфікована група/версія/тип вхідного об’єкта в початковому запиті до API-сервера.# Це відрізняється від `kind`, лише якщо вебхук вказав `matchPolicy: Equivalent` і початковий запит до API-сервера був конвертований у версію, для якої зареєстровано вебхук.requestKind:group:autoscalingversion:v1kind:Scale# Повністю кваліфікована група/версія/тип ресурсу, що змінюється в початковому запиті до API-сервера.# Це відрізняється від `resource`, лише якщо вебхук вказав `matchPolicy: Equivalent` і початковий запит до API-сервера був конвертований у версію, для якої зареєстровано вебхук.requestResource:group:appsversion:v1resource:deployments# субресурс, якщо запит стосується субресурсу# Це відрізняється від `subResource`, лише якщо вебхук вказав `matchPolicy: Equivalent` і початковий запит до API-сервера був конвертований у версію, для якої зареєстровано вебхук.requestSubResource:scale# Ім’я ресурсу, що змінюєтьсяname:my-deployment# Простір імен ресурсу, що змінюється, якщо ресурс має простір імен (або є об’єктом Namespace)namespace:my-namespace# операція може бути CREATE, UPDATE, DELETE або CONNECToperation:UPDATEuserInfo:# Ім’я користувача автентифікованого користувача, що робить запит до API-сервераusername:admin# UID автентифікованого користувача, що робить запит до API-сервераuid:014fbff9a07c# Групові членства автентифікованого користувача, що робить запит до API-сервераgroups:- system:authenticated- my-admin-group# Додаткова довільна інформація, пов’язана з користувачем, що робить запит до API-сервера.# Це заповнюється шаром автентифікації API-сервера і повинно бути включено,# якщо будь-які перевірки SubjectAccessReview виконуються вебхуком.extra:some-key:- some-value1- some-value2# object є новим об’єктом, що підлягає допуску.# Це null для операцій DELETE.object:apiVersion:autoscaling/v1kind:Scale# oldObject є існуючим об’єктом.# Це null для операцій CREATE та CONNECT.oldObject:apiVersion:autoscaling/v1kind:Scale# options містить параметри операції, що підлягає допуску, як-от meta.k8s.io/v1 CreateOptions, UpdateOptions або DeleteOptions.# Це null для операцій CONNECT.options:apiVersion:meta.k8s.io/v1kind:UpdateOptions# dryRun вказує, що API-запит виконується в режимі dry run і не буде збережений.# Вебхуки з побічними ефектами повинні уникати здійснення цих побічних ефектів, коли dryRun дорівнює true.# Див. http://k8s.io/docs/reference/using-api/api-concepts/#make-a-dry-run-request для додаткової інформації.dryRun:False
Відповідь
Вебхуки відповідають зі статус-кодом HTTP 200, Content-Type: application/json та тілом, що містить об’єкт AdmissionReview (у тій же версії, що була надіслана), з заповненою секцією response, серіалізованою у JSON.
Мінімум, секція response повинна містити такі поля:
uid, скопійований з request.uid, що був надісланий до вебхука
allowed, встановлений або в true, або в false
Приклад мінімальної відповіді від вебхука для дозволу запиту:
При відхиленні запиту вебхук може налаштувати HTTP-код та повідомлення, яке повертається користувачеві, використовуючи поле status. Вказаний об’єкт статусу повертається користувачеві. Див. Довідник API для деталей про тип status. Приклад відповіді для заборони запиту з налаштуванням HTTP-коду та повідомлення, яке буде представлено користувачеві:
{
"apiVersion": "admission.k8s.io/v1",
"kind": "AdmissionReview",
"response": {
"uid": "<значення з request.uid>",
"allowed": false,
"status": {
"code": 403,
"message": "Ви не можете це зробити, тому що сьогодні вівторок і ваше ім’я починається з літери А" }
}
}
При дозволі запиту, модифікуючий вебхук допуску може за бажанням модифікувати вхідний об’єкт. Це робиться за допомогою полів patch та patchType у відповіді. Єдиний підтримуваний тип patchType наразі — JSONPatch. Див. документацію JSON patch для додаткової інформації. Для patchType: JSONPatch, поле patch містить base64-кодований масив операцій JSON patch.
Як приклад, єдина операція patch, яка встановить spec.replicas, виглядає так: [{"op": "add", "path": "/spec/replicas", "value": 3}]
Base64-кодована, вона виглядатиме так: W3sib3AiOiAiYWRkIiwgInBhdGgiOiAiL3NwZWMvcmVwbGljYXMiLCAidmFsdWUiOiAzfV0=
Отже, відповідь вебхука для додавання цієї мітки буде такою:
Вебхуки допуску можуть за бажанням повертати попереджувальні повідомлення, які повертаються клієнту, що зробив запит, у HTTP-заголовках Warning з кодом попередження 299. Попередження можуть бути надіслані з дозволеними або відхиленими відповідями на допуск.
Якщо ви реалізуєте вебхук, що повертає попередження:
Не включайте префікс "Warning:" у повідомлення
Використовуйте попереджувальні повідомлення для опису проблем, які клієнт, що робить API-запит, має виправити або про які має знати
За можливості, обмежуйте попередження до 120 символів
Увага:
Індивідуальні попереджувальні повідомлення довжиною понад 256 символів можуть бути скорочені API-сервером перед поверненням клієнтам. Якщо додано більше 4096 символів попереджувальних повідомлень (від усіх джерел), додаткові попередження ігноруються.
{
"apiVersion": "admission.k8s.io/v1",
"kind": "AdmissionReview",
"response": {
"uid": "<значення з request.uid>",
"allowed": true,
"warnings": [
"зазначено дублюючі записи envvar з іменем MY_ENV",
"запит на пам’ять менший за 4 МБ зазначено для контейнера mycontainer, який не запуститься успішно" ]
}
}
Конфігурація вебхука
Для реєстрації вебхуків допуску створіть об’єкти API MutatingWebhookConfiguration або ValidatingWebhookConfiguration. Назва об’єкта MutatingWebhookConfiguration або ValidatingWebhookConfiguration має бути дійсним DNS-імʼям субдомену.
Кожна конфігурація може містити один або кілька вебхуків. Якщо в одній конфігурації вказано кілька вебхуків, кожен з них повинен мати унікальну назву. Це необхідно для полегшення відповідності логів аудиту та метрик активних конфігурацій.
Кожен вебхук визначає наступні параметри.
Відповідність запитів: правила
Кожен вебхук має вказувати список правил, що використовуються для визначення, чи повинен запит до API-сервера бути надісланий до вебхука. Кожне правило вказує одну або кілька операцій, груп API, версій API та ресурсів, а також область ресурсу:
operations отримує перелік з однієї або кількох операцій для порівняння. Можливі значення: "CREATE", "UPDATE", "DELETE", "CONNECT" або "*" для збігу зі всіма операціям.
apiGroups отримує перелік з однієї або кількох груп API для порівняння. "" означає ядро групи API. "*" відповідає всім групам API.
apiVersions отримує перелік з однієї або кількох версій API для порівняння. "*" відповідає всім версіям API.
resources отримує перелік з одного або кількох ресурсів для порівняння.
"*" відповідає всім ресурсам, але не субресурсам.
"*/*" відповідає всім ресурсам і субресурсам.
"pods/*" відповідає всім субресурсам Podʼів.
"*/status" відповідає всім субресурсам статусу.
scope вказує область для порівняння. Допустимі значення: "Cluster", "Namespaced" та "*". Субресурси відповідають області їх батьківського ресурсу. Стандартно "*".
"Cluster" означає, що тільки ресурси з кластерною областю відповідатимуть цьому правилу (об’єкти Namespace мають кластерну область).
"Namespaced" означає, що тільки ресурси з простору імен відповідатимуть цьому правилу.
"*" означає, що немає обмежень щодо області.
Якщо вхідний запит відповідає одному з: operations, apiGroups, apiVersions, resources та scope для будь-якого з правил вебхука, запит надсилається до вебхука.
Ось інші приклади правил, які можуть бути використані для визначення, які ресурси слід перехоплювати.
Відповідність запитам CREATE або UPDATE до apps/v1 та apps/v1beta1deployments і replicasets:
Вебхуки можуть за бажанням обмежувати, які запити перехоплюються, на основі міток обʼєктів, до яких вони будуть надіслані, вказуючи objectSelector. Якщо вказано, objectSelector оцінюється як для обʼєкта, так і для старого обʼєкта, які будуть надіслані до вебхука, і вважається відповідним, якщо будь-який з обʼєктів відповідає селектору.
Обʼєкт, що дорівнює null (oldObject у випадку створення або newObject у випадку видалення), або обʼєкт, який не може мати міток (наприклад, обʼєкт DeploymentRollback або PodProxyOptions), не вважається відповідним.
Використовуйте селектор обʼєктів тільки якщо вебхук є опціональним, тому що кінцеві користувачі можуть обійти вебхук допуску, встановлюючи мітки.
Цей приклад показує модифікуючий вебхук, який відповідатиме CREATE для будь-якого ресурсу (але не субресурсів) з міткою foo: bar:
Див. концепцію міток для більшої кількості прикладів селекторів міток.
Відповідність запитів: namespaceSelector
Вебхуки можуть за бажанням обмежувати, які запити на ресурси в межах простору імен перехоплюються, на основі міток простору імен, до якого вони належать, вказуючи namespaceSelector.
namespaceSelector вирішує, чи слід запускати вебхук для запиту на ресурс у межах простору імен (або обʼєкт Namespace), на основі того, чи відповідають мітки простору імен селектору. Якщо обʼєкт сам є простором імен, відповідність виконується за object.metadata.labels. Якщо обʼєкт є кластерним ресурсом, відмінним від Namespace, namespaceSelector не впливає.
Цей приклад показує модифікуючий вебхук, який відповідає CREATE для будь-якого ресурсу в межах простору імен, який не має мітки "runlevel" зі значенням "0" або "1":
Цей приклад показує валідаційний вебхук, який відповідає CREATE для будь-якого ресурсу в межах простору імен, асоційованого з "environment" зі значенням "prod" або "staging":
Див. концепцію міток для більшої кількості прикладів селекторів міток.
Відповідність запитів: matchPolicy
API сервери можуть робити обʼєкти доступними через кілька API груп або версій.
Наприклад, якщо вебхук визначає правило для певних API груп/версій (наприклад, apiGroups:["apps"], apiVersions:["v1","v1beta1"]), і запит робиться для зміни ресурсу через іншу API групу/версію (наприклад, extensions/v1beta1), запит не буде надіслано до вебхука.
matchPolicy дозволяє вебхуку визначити, як його rules використовуються для відповідності вхідним запитам. Допустимі значення — Exact або Equivalent.
Exact означає, що запит повинен бути перехоплений тільки в тому випадку, якщо він точно відповідає зазначеному правилу.
Equivalent означає, що запит повинен бути перехоплений, якщо він модифікує ресурс, зазначений в rules, навіть через іншу API групу або версію.
У наведеному вище прикладі, вебхук, зареєстрований тільки для apps/v1, може використовувати matchPolicy:
matchPolicy: Exact означає, що запит extensions/v1beta1 не буде надіслано до вебхука.
matchPolicy: Equivalent означає, що запит extensions/v1beta1 буде надіслано до вебхука (з обʼєктами, конвертованими до версії, яку вебхук визначив: apps/v1).
Вказування Equivalent рекомендовано і забезпечує, що вебхуки продовжують перехоплювати очікувані ресурси, коли оновлення включають нові версії ресурсу в API сервері.
Коли ресурс перестає обслуговуватись API сервером, він більше не вважається еквівалентним іншим версіям цього ресурсу, які все ще обслуговуються. Наприклад, extensions/v1beta1 розгортання були спочатку визнані застарілими, а потім видалені (у Kubernetes v1.16).
З моменту цього видалення, вебхук з правилом apiGroups:["extensions"], apiVersions:["v1beta1"], resources:["deployments"] не перехоплює розгортання, створені через API apps/v1. З цієї причини, вебхуки повинні віддавати перевагу реєстрації для стабільних версій ресурсів.
Цей приклад показує валідаційний вебхук, який перехоплює модифікації розгортань (незалежно від API групи або версії) і завжди отримує обʼєкт Deployment версії apps/v1:
matchPolicy для вебхуків допуску за замовчуванням дорівнює Equivalent.
Відповідність запитів: matchConditions
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.30 [stable] (стандартно увімкнено: true)
Ви можете визначити умови відповідності для вебхуків, якщо вам потрібна точніша фільтрація запитів. Ці умови корисні, якщо правила відповідності, objectSelectors та namespaceSelectors не надають необхідної фільтрації при викликах по HTTP. Умови відповідності є CEL виразами. Всі умови відповідності повинні оцінюватися як true для виклику вебхука.
Ось приклад, що ілюструє декілька різних способів використання умов відповідності:
apiVersion:admissionregistration.k8s.io/v1kind:ValidatingWebhookConfigurationwebhooks:- name:my-webhook.example.commatchPolicy:Equivalentrules:- operations:['CREATE','UPDATE']apiGroups:['*']apiVersions:['*']resources:['*']failurePolicy:'Ignore'# Fail-open (опційно)sideEffects:NoneclientConfig:service:namespace:my-namespacename:my-webhookcaBundle:'<omitted>'# Ви можете мати до 64 умов відповідності на вебхукmatchConditions:- name:'exclude-leases'# Кожна умова відповідності повинна мати унікальне імʼяexpression:'!(request.resource.group == "coordination.k8s.io" && request.resource.resource == "leases")'# Відповідність ресурсам, які не є lease.- name:'exclude-kubelet-requests'expression:'!("system:nodes" in request.userInfo.groups)'# Відповідність запитам, зробленим не користувачами вузлів.- name:'rbac'# Пропуск запитів RBAC, які обробляються другим вебхуком.expression:'request.resource.group != "rbac.authorization.k8s.io"'# Цей приклад ілюструє використання 'authorizer'. Перевірка авторизації дорожча за простий вираз, тому в цьому прикладі вона обмежена лише запитами RBAC, використовуючи другий вебхук. Обидва вебхуки можуть обслуговуватись одним кінцевим пунктом.- name:rbac.my-webhook.example.commatchPolicy:Equivalentrules:- operations:['CREATE','UPDATE']apiGroups:['rbac.authorization.k8s.io']apiVersions:['*']resources:['*']failurePolicy:'Fail'# Fail-closed (стандартно)sideEffects:NoneclientConfig:service:namespace:my-namespacename:my-webhookcaBundle:'<omitted>'# Ви можете мати до 64 умов відповідності на вебхукmatchConditions:- name:'breakglass'# Пропуск запитів, зроблених користувачами, авторизованими для 'breakglass' на цьому вебхуку.# Дієслово API 'breakglass' не повинно існувати за межами цієї перевірки.expression:'!authorizer.group("admissionregistration.k8s.io").resource("validatingwebhookconfigurations").name("my-webhook.example.com").check("breakglass").allowed()'
Примітка:
Ви можете визначити до 64 елементів у полі matchConditions для кожного вебхука.
Умови відповідності мають доступ до наступних CEL змінних:
object — Обʼєкт з вхідного запиту. Значення є null для DELETE запитів. Версія обʼєкта може бути конвертована на основі matchPolicy.
oldObject — Наявний обʼєкт. Значення є null для CREATE запитів.
request — Частина запиту AdmissionReview, виключаючи object та oldObject.
authorizer — CEL Authorizer. Може використовуватись для виконання перевірок авторизації для головного облікового запису (автентифікованого користувача) запиту. Дивіться Authz у документації бібліотеки Kubernetes CEL для додаткової інформації.
authorizer.requestResource — Скорочення для перевірки авторизації, налаштованої на ресурс запиту (група, ресурс, (субресурс), простір імен, імʼя).
Коли сервер API визначає, що запит повинен бути надісланий до вебхука, йому потрібно знати, як звʼязатися з вебхуком. Це визначається в розділі clientConfig конфігурації вебхука.
Вебхуки можуть викликатися через URL або посилання на сервіс, і можуть за бажанням включати власний набір CA для використання для перевірки TLS-зʼєднання.
URL
Поле url вказує місцезнаходження вебхука у стандартній формі URL (scheme://host:port/path).
Поле host не повинно вказувати на сервіс, що працює в кластері; використовуйте посилання на сервіс, вказуючи поле service. Хост може бути вирішений через зовнішній DNS на деяких серверах API (наприклад, kube-apiserver не може вирішувати DNS всередині кластера, оскільки це буде порушенням шарів). host також може бути IP-адресою.
Зверніть увагу, що використання localhost або 127.0.0.1 як host є ризикованим, якщо ви не забезпечите запуск цього вебхука на всіх хостах, які запускають сервер API, який може потребувати викликів до цього вебхука. Такі інсталяції, ймовірно, будуть непереносними або не будуть легко запускатися в новому кластері.
Схема повинна бути "https"; URL повинен починатися з "https://".
Спроба використання користувача або базової автентифікації (наприклад, user:password@) не дозволена. Фрагменти (#...) та параметри запиту (?...) також не дозволені.
Ось приклад конфігурації модифікуючого вебхука для виклику URL (і очікується, що TLS-сертифікат буде перевірено за допомогою системних коренів довіри, тому не вказується caBundle):
Розділ service всередині clientConfig є посиланням на сервіс для цього вебхука. Якщо вебхук працює всередині кластера, вам слід використовувати service замість url. Необхідно вказати простір імен та імʼя сервісу. Порт є необовʼязковим і стандартно дорівнює 443. Шлях є необовʼязковим і стандартно дорівнює "/".
Ось приклад конфігурації модифікуючого вебхука для виклику сервісу на порту "1234" за підшляхом "/my-path", і для перевірки TLS-зʼєднання проти ServerName my-service-name.my-service-namespace.svc з використанням власного набору CA:
Ви повинні замінити <CA_BUNDLE> у наведеному вище прикладі на дійсний набір CA, який є PEM-кодованим набором CA для перевірки сертифіката сервера вебхука.
Побічні ефекти
Вебхуки зазвичай працюють тільки з вмістом AdmissionReview, надісланого їм. Однак деякі вебхуки здійснюють зміни поза межами під час обробки запитів на допуск.
Вебхуки, які здійснюють зміни поза межами ("побічні ефекти"), повинні також мати механізм узгодження (наприклад, контролер), який періодично визначає фактичний стан системи та коригує дані поза межами, змінені вебхуком допуску, щоб відобразити реальність. Це тому, що виклик до вебхука допуску не гарантує, що прийнятий обʼєкт буде збережений таким, яким він є, або взагалі. Пізніші вебхуки можуть змінити вміст обʼєкта, може виникнути конфлікт під час запису в сховище, або сервер може вимкнутися до збереження обʼєкта.
Крім того, вебхуки з побічними ефектами повинні пропускати ці побічні ефекти, коли обробляються запити допуску з dryRun: true. Вебхук повинен явно вказати, що він не матиме побічних ефектів при запуску з dryRun, інакше запит dry-run не буде надіслано до вебхука, і API-запит замість цього не вдасться.
Вебхуки вказують, чи мають вони побічні ефекти, за допомогою поля sideEffects у конфігурації вебхука:
None: виклик вебхука не матиме побічних ефектів.
NoneOnDryRun: виклик вебхука може мати побічні ефекти, але якщо до вебхука надіслано запит з dryRun: true, вебхук придушить побічні ефекти (вебхук враховує dryRun).
Ось приклад конфігурації вебхука перевірки, який вказує, що він не має побічних ефектів при запитах з dryRun: true:
Оскільки вебхуки додають затримку до запитів API, вони повинні оцінюватися якомога швидше. timeoutSeconds дозволяє налаштувати, скільки часу сервер API повинен чекати на відповідь вебхука, перш ніж розглядати виклик як невдалий.
Якщо тайм-аут закінчується до того, як вебхук відповість, виклик вебхука буде проігноровано або API-запит буде відхилено відповідно до політики помилок.
Значення тайм-ауту повинно бути між 1 і 30 секунд.
Ось приклад конфігурації вебхука перевірки з кастомним тайм-аутом у 2 секунди:
Тайм-аут для вебхука допуску стандартно становить 10 секунд.
Політика повторного виклику
Одне впорядкування втулків модифікуючого допуску (включаючи вебхуки) не підходить для всіх випадків (див. приклад у https://issue.k8s.io/64333). Модифікуючий вебхук може додати нову підструктуру до обʼєкта (наприклад, додати container до pod), а інші модифікуючи втулки, які вже виконані, можуть мати вплив на ці нові структури (наприклад, встановити imagePullPolicy для всіх контейнерів).
Щоб дозволити втулкам модифікуючого допуску спостерігати за змінами, внесеними іншими втулками, вбудовані модифікуючи втулки допуску повторно запускаються, якщо модифікуючий вебхук змінює обʼєкт, і модифікуючи вебхуки можуть вказати reinvocationPolicy для контролю того, чи будуть вони повторно викликані.
reinvocationPolicy може бути встановлено на Never або IfNeeded. Стандартно встановлено у Never.
Never: вебхук не повинен викликатися більше одного разу в рамках однієї оцінки допуску.
IfNeeded: вебхук може бути викликаний знову в рамках оцінки допуску, якщо обʼєкт, що авторизується, змінюється іншими втулками допуску після початкового виклику вебхука.
Важливі моменти, на які слід звернути увагу:
Кількість додаткових викликів не гарантується як точно одна.
Якщо додаткові виклики призводять до подальших змін обʼєкта, не гарантується, що вебхуки будуть викликані знов.
Вебхуки, які використовують цей параметр, можуть бути переупорядковані для мінімізації кількості додаткових викликів.
Щоб перевірити обʼєкт після того, як всі модифікації гарантовано завершені, використовуйте вебхук допуску (рекомендується для вебхуків з побічними ефектами).
Ось приклад конфігурації модифікуючого вебхука, який вибирає повторний виклик, якщо пізніші втулки допуску змінюють обʼєкт:
Модифікуючи вебхуки повинні бути ідемпотентними, здатними успішно обробити обʼєкт, який вони вже авторизували і потенційно змінили. Це стосується всіх модифікуючих вебхуків допуску, оскільки будь-яка зміна, яку вони можуть внести в обʼєкт, вже могла існувати в обʼєкті, наданому користувачем, але це є особливо важливим для вебхуків, які вибирають повторний виклик.
Політика обробки помилок
failurePolicy визначає, як обробляються невизнані помилки та помилки тайм-ауту від вебхука допуску. Допустимі значення: Ignore або Fail.
Ignore означає, що помилка при виклику вебхука ігнорується, і запит API дозволяється продовжити.
Fail означає, що помилка при виклику вебхука призводить до невдачі допуску та відхилення запиту API.
Ось приклад конфігурації модифікуючого вебхука, налаштованого на відхилення запиту API, якщо виникають помилки під час виклику вебхука допуску:
Стандартна політика обробки помилок failurePolicy для вебхуків допуску Fail.
Моніторинг вебхуків авторизації
Сервер API надає способи моніторингу поведінки вебхуків допуску. Ці механізми моніторингу допомагають адміністраторам кластерів відповісти на запитання, як:
Який модифікуючий вебхук змінив обʼєкт у запиті API?
Яку зміну модифікуючий вебхук застосував до обʼєкта?
Які вебхуки часто відхиляють запити API? Яка причина відхилення?
Анотації аудиту модифікуючих вебхуків
Іноді корисно знати, який модифікуючий вебхук змінив обʼєкт у запиті API, і яку зміну вебхук застосував.
Сервер API Kubernetes виконує аудит кожного виклику модифікуючого вебхука. Кожен виклик генерує анотацію аудиту, яка відображає, чи був обʼєкт запиту змінений викликом, і, за необхідності, генерує анотацію із застосованим патчем з відповіді вебхука допуску. Анотації встановлюються в подію аудиту для даного запиту на даній стадії його виконання, яка потім попередньо обробляється відповідно до певної політики та записується в бекенд.
Рівень аудиту події визначає, які анотації будуть записані:
На рівні аудиту Metadata або вище записується анотація з ключем mutation.webhook.admission.k8s.io/round_{round idx}_index_{order idx} з JSON-наватаженням, яке вказує, що вебхук був викликаний для даного запиту і чи змінив він обʼєкт чи ні.
Наприклад, наступна анотація записується для вебхука, який повторно викликається. Вебхук є третім у ланцюгу модифікуючих вебхуків і не змінив обʼєкт запиту під час виклику.
# записана подія аудиту{"kind": "Event","apiVersion": "audit.k8s.io/v1","annotations": {"mutation.webhook.admission.k8s.io/round_1_index_2": "{\"configuration\":\"my-mutating-webhook-configuration.example.com\",\"webhook\":\"my-webhook.example.com\",\"mutated\": false}"# інші анотації...}# інші поля...}
# десеріалізоване значення анотації{"configuration": "my-mutating-webhook-configuration.example.com","webhook": "my-webhook.example.com","mutated": false}
Наступна анотація записується для вебхука, який викликається на першій стадії. Вебхук є першим у ланцюгу модифікуючих вебхуків і змінив обʼєкт запиту під час виклику.
# записана подія аудиту{"kind": "Event","apiVersion": "audit.k8s.io/v1","annotations": {"mutation.webhook.admission.k8s.io/round_0_index_0": "{\"configuration\":\"my-mutating-webhook-configuration.example.com\",\"webhook\":\"my-webhook-always-mutate.example.com\",\"mutated\": true}"# інші анотації...}# інші поля...}
# десеріалізоване значення анотації{"configuration": "my-mutating-webhook-configuration.example.com","webhook": "my-webhook-always-mutate.example.com","mutated": true}
На рівні аудиту Request або вище записується анотація з ключем patch.webhook.admission.k8s.io/round_{round idx}_index_{order idx} з JSON-навантаженням, яке вказує, що вебхук був викликаний для даного запиту і який патч був застосований до обʼєкта запиту.
Наприклад, наступна анотація записується для вебхука, який повторно викликається. Вебхук є четвертим у ланцюгу модифікуючих вебхуків і відповів JSON-патчем, який був застосований до обʼєкта запиту.
# записана подія аудиту{"kind": "Event","apiVersion": "audit.k8s.io/v1","annotations": {"patch.webhook.admission.k8s.io/round_1_index_3": "{\"configuration\":\"my-other-mutating-webhook-configuration.example.com\",\"webhook\":\"my-webhook-always-mutate.example.com\",\"patch\":[{\"op\":\"add\",\"path\":\"/data/mutation-stage\",\"value\":\"yes\"}],\"patchType\":\"JSONPatch\"}"# інші анотації...}# інші поля...}
Сервер API надає метрики Prometheus з точки доступу /metrics, які можна використовувати для моніторингу та діагностики стану сервера API. Наведені нижче метрики фіксують стан, повʼязаний з вебхуками допуску.
Лічильник відхилення запитів вебхука допуску сервера API
Іноді корисно знати, які вебхуки допуску часто відхиляють запити API, та причину відхилення.
Сервер API надає метрику лічильника Prometheus, яка фіксує відхилення вебхуків допуску. Метрики мають підписи, що ідентифікують причини відхилення запитів вебхуками:
name: назва вебхука, який відхилив запит.
operation: тип операції запиту, може бути одним із CREATE, UPDATE, DELETE та CONNECT.
type: тип вебхука допуску, може бути одним із admit та validating.
error_type: визначає, чи сталася помилка під час виклику вебхука, яка призвела до відхилення. Його значення може бути одним із:
calling_webhook_error: невизнані помилки або помилки тайм-ауту від вебхука допуску сталися, і політика помилки вебхука встановлена на Fail.
no_error: помилка не сталася. Вебхук відхилив запит з allowed: false у відповіді допуску. Підписи метрики rejection_code записують значення .status.code, встановлене в відповіді допуску.
apiserver_internal_error: сталася внутрішня помилка сервера API.
rejection_code: HTTP-код статусу, встановлений у відповіді допуску, коли вебхук відхилив запит.
Приклад метрик лічильника відхилення:
# HELP apiserver_admission_webhook_rejection_count [ALPHA] Лічильник відхилення вебхуків авторизації, ідентифікований за назвою та розділений для кожного типу авторизації (валідація чи допуск) та операції. Додаткові підписи вказують тип помилки (calling_webhook_error або apiserver_internal_error, якщо виникла помилка; no_error інакше) та, за потреби, ненульовий код відхилення, якщо вебхук відхилив запит із HTTP-кодом статусу (врахований сервером API, якщо код більший або рівний 400). Коди, більші за 600, обрізаються до 600, щоб обмежити кардинальність метрик.
# TYPE apiserver_admission_webhook_rejection_count counter
apiserver_admission_webhook_rejection_count{error_type="calling_webhook_error",name="always-timeout-webhook.example.com",operation="CREATE",rejection_code="0",type="validating"} 1
apiserver_admission_webhook_rejection_count{error_type="calling_webhook_error",name="invalid-admission-response-webhook.example.com",operation="CREATE",rejection_code="0",type="validating"} 1
apiserver_admission_webhook_rejection_count{error_type="no_error",name="deny-unwanted-configmap-data.example.com",operation="CREATE",rejection_code="400",type="validating"} 13
Найкращі практики та попередження
Ідемпотентність
Ідемпотентний вебхук допуску, що змінює дані, може успішно обробляти обʼєкт, який він вже допустив і, можливо, змінив. Допуск можна застосовувати кілька разів, не змінюючи результат поза початковою обробкою.
Для запиту CREATE Pod додається sidecar контейнер з імʼям foo-sidecar, суфіксований поточним часовим позначенням (наприклад, foo-sidecar-19700101-000000).
Для CREATE/UPDATE Pod відхиляються запити, якщо позначка "env" установлена, в іншому випадку додається позначка "env": "prod".
Для запиту CREATE Pod додається контейнер під назвою foo-sidecar без перевірки наявності контейнера foo-sidecar у специфікації Pod.
У першому випадку вебхук може додавати однаковий контейнер декілька разів до Pod, кожного разу з різним іменем контейнера. Аналогічно, вебхук може додавати дубльовані контейнери, якщо вони вже існують у Podʼах користувачів.
У другому випадку повторний виклик вебхука призведе до помилки вихідних даних вебхука.
У третьому випадку повторний виклик вебхука призведе до дублювання контейнерів у специфікації Pod, що робить запит недійсним та відхиленим сервером API.
Перехоплення всіх версій обʼєкта
Рекомендується, щоб вебхуки допуску завжди перехоплювали всі версії обʼєкта, встановлюючи .webhooks[].matchPolicy на Equivalent. Також рекомендується, щоб вебхуки допуску завжди реєструвалися для стабільних версій ресурсів. Невдала спроба перехопити всі версії обʼєкта може призвести до того, що політика допуску не буде застосовуватися до деяких версій запитів. Дивіться Відповідність запитів: matchPolicy для прикладів.
Доступність
Рекомендується, щоб вебхуки допуску оцінювалися якомога швидше (зазвичай за мілісекунди), оскільки вони збільшують затримку запиту API. Рекомендується використовувати невеликий таймаут для вебхуків. Дивіться Таймаути для докладнішої інформації.
Рекомендується, щоб вебхуки допуску використовували якусь форму балансування навантаження, щоб забезпечити високу доступність та вигоди в продуктивності. Якщо вебхук працює всередині кластера, ви можете запустити декілька вебхуків позаду служби, щоб скористатися балансуванням навантаження, яке підтримує ця служба.
Гарантування остаточного стану обʼєкта
Вебхуки допуску, які повинні гарантувати, що вони бачать остаточний стан обʼєкта, щоб застосовувати політику, повинні використовувати вебхук допуску для валідації, оскільки обʼєкти можуть бути змінені після перегляду модифікуючими вебхуками.
Наприклад, модифікуючий вебхук допуску налаштований на впровадження контейнера sidecar з імʼям "foo-sidecar" на кожний запит CREATE pod. Якщо необхідно, щоб контейнер був присутнім, також слід налаштувати вебхук допуску для перехоплення запитів CREATE pod, і перевірити, що контейнер з імʼям "foo-sidecar" з необхідною конфігурацією існує в обʼєкті, який має бути створений.
Уникнення блокування вебхуків у самостійно розміщених вебхуках
Вебхук, що працює всередині кластера, може призвести до блокування власного deployment, якщо він налаштований для перехоплення ресурсів, необхідних для запуску власних Podʼів.
Наприклад, модифікуючий вебхук допуску налаштований на допуск запитів на створення CREATE pod лише в тому випадку, якщо у pod встановлено певну мітку (наприклад, "env": "prod"). Сервер розгортання вебхука працює в deployment, яке не встановлює мітку "env". Коли вузол, на якому запущено Podʼи вебхука, стає непрацездатним, deployment вебхука спробує перепланувати Podʼи на інший вузол. Однак запити будуть відхилені існуючим сервером вебхука, оскільки мітка "env" не встановлена, і міграція не може відбутися.
Рекомендується виключати простір імен, де працює ваш вебхук, за допомогою namespaceSelector.
Побічні ефекти
Рекомендується, щоб вебхуки допуску уникати побічних ефектів, якщо це можливо, що означає, що вебхуки працюють тільки з вмістом AdmissionReview, надісланим до них, і не вносять зміни поза цими рамками. Поле .webhooks[].sideEffects має бути встановлене на None, якщо у вебхука немає жодних побічних ефектів.
Якщо побічні ефекти потрібні під час оцінки допуску, їх потрібно приглушити при обробці обʼєкта AdmissionReview з dryRun встановленим на true, і поле .webhooks[].sideEffects має бути встановлене на NoneOnDryRun. Дивіться Побічні ефекти для докладнішої інформації.
Уникнення операцій у просторі імен kube-system
Простір імен kube-system містить обʼєкти, створені компонентами панелі управління Kubernetes, наприклад, службові облікові записи для компонентів панелі управління, Podʼи такі як kube-dns. Ненавмисна зміна або відхилення запитів у просторі імен kube-system може призвести до того, що компоненти панелі управління перестануть працювати або будуть внесені невідомі зміни. Якщо ваші вебхуки допуску не мають на меті змінювати поведінку панелі управління Kubernetes, виключіть простір імен kube-system з перехоплення за допомогою namespaceSelector.
3.10 - Управління службовими обліковими записами
Службовий обліковий запис (ServiceAccount) надає ідентифікацію для процесів, що виконуються в Pod.
Процес всередині Pod може використовувати ідентифікацію свого повʼязаного службового облікового запису для автентифікації у API сервері кластера.
Цей посібник пояснює деякі концепції, повʼязані зі ServiceAccount. Також у посібнику розглядається, як отримати або відкликати токени, що представляють ServiceAccounts. ServiceAccounts, і як (за бажанням) привʼязати термін дії ServiceAccounts до часу життя обʼєкта API.
Перш ніж ви розпочнете
Вам треба мати кластер Kubernetes, а також інструмент командного рядка kubectl має бути налаштований для роботи з вашим кластером. Рекомендується виконувати ці настанови у кластері, що має щонайменше два вузли, які не виконують роль вузлів управління. Якщо у вас немає кластера, ви можете створити його, за допомогою minikube або використовувати одну з цих пісочниць:
Щоб точно виконати ці кроки, переконайтеся, що у вас є простір імен під назвою examplens. Якщо ні, створіть його, виконавши команду:
kubectl create namespace examplens
Облікові записи користувачів та службові облікові записи
Kubernetes розрізняє поняття облікового запису користувача та службового облікового запису з кількох причин:
Облікові записи користувачів призначені для людей. Службові облікові записи призначені для процесів застосунків, які (для Kubernetes) виконуються в контейнерах, що є частиною Pod.
Облікові записи користувачів мають бути глобальними: імена повинні бути унікальними у всіх просторах імен кластера. Незалежно від того, який простір імен ви розглядаєте, певний обліковий запис користувача представляє того самого користувача. У Kubernetes службові облікові записи є привʼязаними до простору імен: два різні простори імен можуть містити ServiceAccountʼи з однаковими іменами.
Як правило, облікові записи користувачів кластера можуть синхронізуватися з корпоративною базою даних, де створення нового облікового запису користувача вимагає спеціальних привілеїв і повʼязане зі складними бізнес-процесами. Навпаки, створення службових облікових записів повинно бути легшим, дозволяючи користувачам кластера створювати службові облікові записи для конкретних завдань за запитом. Відділення створення ServiceAccount від кроків для реєстрації користувачів полегшує дотримання принципу найменших привілеїв для робочих навантажень.
Вимоги до аудиту для облікових записів користувачів (людей) та службових облікових записів можуть відрізнятися; розділення полегшує досягнення цих вимог.
Конфігураційний пакет для складної системи може містити визначення різних службових облікових записів для компонентів цієї системи. Оскільки службові облікові записи можуть створюватися без багатьох обмежень і мають імена, привʼязані до простору імен, така конфігурація зазвичай є переносимою.
Привʼязані токени службових облікових записів
Токени ServiceAccount можуть бути привʼязані до API обʼєктів, що існують у kube-apiserver. Їх можна використовувати для звʼязування дійсності токена з існуванням іншого API обʼєкта. Підтримувані типи обʼєктів наступні:
Pod (використовується для projected томів, див. нижче)
Secret (може використовуватися для відкликання токена шляхом видалення Secret)
Node (у версії v1.32 створення нових токенів, привʼязаних до вузлів, є бета-функцією, використання наявних токенів, привʼязаних до вузлів, є загально доступним)
Коли токен привʼязаний до обʼєкта, metadata.name і metadata.uid цього обʼєкта зберігаються як додаткові "приватні заявки" у виданому JWT.
Коли привʼязаний токен представляється kube-apiserver, автентифікатор службового облікового запису витягне і перевірить ці заявки. Якщо вказаний обʼєкт або ServiceAccount знаходяться в процесі видалення (наприклад, через завершувач), то протягом будь-якого моменту, через 60 секунд (або більше) після дати .metadata.deletionTimestamp, автентифікація з використанням цього токена буде неуспішною. Якщо обʼєкт, на який він посилається, більше не існує (або його metadata.uid не збігається), запит не буде автентифікований.
Додаткові метадані в токенах, повʼязаних з Pod
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.32 [stable] (стандартно увімкнено: true)
Коли токен службового облікового запису привʼязаний до обʼєкта Pod, додаткові метадані також вбудовуються в токен, що вказує на значення поля spec.nodeName повʼязаного Pod і uid цього вузла, якщо це можливо.
Ця інформація про вузол не перевіряється kube-apiserver, коли токен використовується для автентифікації. Вона включена, щоб інтегратори не повинні були отримувати обʼєкти API Pod або Node для перевірки повʼязаного імені вузла та uid при інспекції JWT.
Перевірка та інспекція приватних заявок
API TokenReview може використовуватися для перевірки та вилучення приватних заявок з токена:
Спочатку припустимо, що у вас є Pod з назвою test-pod і службовий обліковий запис з назвою my-sa.
Попри використання kubectl create -f для створення цього ресурсу, і визначення його схожим чином з іншими типами ресурсів у Kubernetes, TokenReview є спеціальним типом і kube-apiserver насправді не зберігає обʼєкт TokenReview в etcd. Тому kubectl get tokenreview не є допустимою командою.
Схема для приватних вимог службового запису
Схема для специфічних для Kubernetes вимог у токенах JWT наразі не задокументована, проте відповідну кодову область можна знайти у serviceaccount package у кодовій базі Kubernetes.
Ви можете перевірити JWT за допомогою стандартного інструменту декодування JWT. Нижче наведено приклад JWT для облікового запису ServiceAccount my-serviceaccount, привʼязаного до обʼєкта Pod з іменем my-pod, який заплановано до вузла my-node, у просторі імен my-namespace:
Поля aud та iss у цьому JWT можуть відрізнятися між різними кластерами Kubernetes залежно від вашої конфігурації.
Наявність полів pod і node означає, що цей токен привʼязано до обʼєкта Pod. При перевірці токенів ServiceAccount, привʼязаних до Pod, сервер API не перевіряє існування обʼєкта Node, на який посилається.
Сервіси, які працюють за межами Kubernetes і хочуть виконувати перевірку JWT в автономному режимі, можуть використовувати цю схему разом із сумісним валідатором JWT, налаштованим на інформацію OpenID Discovery з сервера API, для перевірки представлених JWT без необхідності використання API TokenReview.
Сервіси, які перевіряють JWT таким чином, не перевіряють твердження, вбудовані в токен JWT, на актуальність і дійсність. Це означає, що якщо токен привʼязаний до обʼєкта, а цей обʼєкт більше не існує, токен все одно буде вважатися дійсним (до закінчення терміну дії налаштованого токена).
Клієнти, які потребують впевненості в тому, що повʼязані з токеном твердження все ще дійсні, ПОВИННІ використовувати TokenReview API, щоб представити токен kube-apiserver для перевірки і розширення вбудованих тверджень, використовуючи кроки, подібні до тих, що описані в розділі Перевірка та інспекція приватних тверджень вище, але з підтримуваною клієнтською бібліотекою. Для отримання додаткової інформації про JWT та їх структуру див. JSON Web Token RFC.
Механізм томів привʼязаного токена службового облікового запису
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.22 [stable] (стандартно увімкнено: true)
...- name:kube-api-access-<random-suffix>projected:sources:- serviceAccountToken:path:token# має збігатися з шляхом, який очікує застосунок- configMap:items:- key:ca.crtpath:ca.crtname:kube-root-ca.crt- downwardAPI:items:- fieldRef:apiVersion:v1fieldPath:metadata.namespacepath:namespace
Цей фрагмент маніфесту визначає projected том, що складається з трьох джерел. У цьому випадку,
кожне джерело також представляє один шлях у цьому томі. Три джерела такі:
Джерело serviceAccountToken, яке містить токен, який kubelet отримує з kube-apiserver. Kubelet отримує токени з обмеженим терміном дії за допомогою API TokenRequest. Токен, наданий для TokenRequest, закінчується або при видаленні Pod, або після визначеного терміну дії (стандартно, це 1 година). Kubelet також оновлює цей токен перед тим, як термін його дії закінчиться. Токен привʼязаний до конкретного Pod і має kube-apiserver як свою аудиторію. Цей механізм замінив попередній механізм, який додавав том на основі Secret, де Secret представляв ServiceAccount для Pod, але не мав терміну дії.
Джерело configMap. ConfigMap містить набір даних центру сертифікації. Pod можуть використовувати ці сертифікати, щоб упевнитись, що вони підключаються до kube-apiserver вашого кластера (а не до проміжного блоку або випадково неправильно налаштованого колеги).
Джерело downwardAPI, яке шукає імʼя простору імен, що містить Pod, і надає цю інформацію про імʼя для коду застосунку, що виконується всередині Pod.
Будь-який контейнер у Pod, який монтує цей том, може отримати доступ до вищевказаної інформації.
Примітка:
Не існує якогось окремого механізму для анулювання токена, виданого через TokenRequest. Якщо ви більше не довіряєте привʼязаному токену службового облікового запису для Pod, ви можете видалити цей Pod. Видалення Pod анулює його привʼязані токени службових облікових записів.
Ручне управління Secret для ServiceAccounts
Версії Kubernetes до v1.22 автоматично створювали облікові дані для доступу до API Kubernetes. Цей старіший механізм був заснований на створенні токенів Secret, які потім могли бути змонтовані в запущені Podʼи.
У новіших версіях, включаючи Kubernetes v1.32, API облікові дані отримуються безпосередньо за допомогою TokenRequest, і монтуються в Podʼи за допомогою projected тому. Токени, отримані за допомогою цього методу, мають обмежений термін дії та автоматично анулюються, коли Pod, в який вони змонтовані, видаляється.
Ви все ще можете створити вручну Secret для збереження токена службового облікового запису; наприклад, якщо вам потрібен токен, який ніколи не закінчується.
Після того, як ви вручну створите Secret і звʼяжете його зі службовим обліковим записом, панель управління Kubernetes автоматично заповнює токен у цьому Secret.
Примітка:
Хоча існує ручний механізм для створення токена службового облікового запису з тривалим терміном дії, рекомендується використовувати TokenRequest для отримання токенів доступу до API з коротким терміном дії.
До версії 1.24 Kubernetes автоматично генерував токени на основі Secret для ServiceAccount. Щоб розрізнити автоматично згенеровані токени та створені вручну, Kubernetes перевіряє посилання з поля секретів ServiceAccount. Якщо Secret згадується в полі secrets, він вважається автоматично згенерованим застарілим токеном. В іншому випадку він вважається вручну створеним застарілим токеном. Наприклад:
apiVersion:v1kind:ServiceAccountmetadata:name:build-robotnamespace:defaultsecrets:- name:build-robot-secret# зазвичай НЕ присутній для вручну створеного токена
Починаючи з версії 1.29, застарілі токени службових облікових записів, які були згенеровані автоматично, будуть позначені як недійсні, якщо вони залишатимуться невикористаними протягом певного періоду часу (стандартно один рік). Токени, які продовжують залишатися невикористаними протягом цього визначеного періоду (знову ж таки, стандартно один рік), будуть згодом видалені панеллю управління.
Якщо користувачі використовують анульований автоматично згенерований токен, валідатор токенів:
додасть анотацію аудиту для пари ключ-значення authentication.k8s.io/legacy-token-invalidated: <secret name>/<namespace>,
оновить мітку Secret kubernetes.io/legacy-token-last-used з новою датою,
поверне помилку, вказуючи, що токен був анульований.
При отриманні цієї помилки валідації користувачі можуть оновити Secret, щоб видалити мітку kubernetes.io/legacy-token-invalid-since, щоб тимчасово дозволити використання цього токена.
Ось приклад автоматично згенерованого застарілого токена, який був позначений мітками kubernetes.io/legacy-token-last-used і kubernetes.io/legacy-token-invalid-since:
Контролер ServiceAccount керує ServiceAccount всередині просторів імен та забезпечує наявність ServiceAccount з іменем "default" у кожному активному просторі імен.
Контролер токенів
Контролер токенів службових облікових записів працює як частина kube-controller-manager. Цей контролер діє асинхронно. Він:
відстежує видалення ServiceAccount та видаляє всі відповідні Secretʼи токенів ServiceAccount.
відстежує додавання Secretʼу токенів ServiceAccount та забезпечує наявність відповідного ServiceAccount, додає токен до Secretʼу за потреби.
відстежує видалення Secretʼу та видаляє посилання з відповідного ServiceAccount за потреби.
Необхідно передати файл приватного ключа службового облікового запису контролеру токенів у kube-controller-manager, використовуючи прапорець --service-account-private-key-file. Приватний ключ використовується для підпису згенерованих токенів службових облікових записів. Аналогічно, необхідно передати відповідний публічний ключ у kube-apiserver, використовуючи прапорець --service-account-key-file. Публічний ключ буде використовуватися для перевірки токенів під час автентифікації.
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.32 [alpha] (стандартно увімкнено: false)
Альтернативою встановленню прапорців --service-account-private-key-file та --service-account-key-file є налаштування зовнішнього підписувача JWT для [зовнішнього підписувача токенів ServiceAccount та керування ключами] (#external-serviceaccount-token-signing-and-key-management). Зверніть увагу, що ці налаштування є взаємовиключними і не можуть бути налаштовані разом.
Контролер допуску ServiceAccount
Зміна Podʼів здійснюється через втулок, що викликається Контролером допуску. Він є частиною сервера API. Цей контролер допуску діє синхронно для зміни Podʼів під час їх створення. Коли цей втулок активний (а він є стандартно активним у більшості дистрибутивів), то під час створення Pod він виконує наступні дії:
Якщо у Pod не встановлено значення .spec.serviceAccountName, контролер допуску встановлює імʼя ServiceAccount default для цього Pod.
Контролер допуску забезпечує наявність ServiceAccount, на який посилається Pod. Якщо не існує ServiceAccount з відповідним імʼям, контролер допуску відхиляє Pod. Ця перевірка застосовується навіть для default ServiceAccount.
Якщо поле automountServiceAccountToken у ServiceAccount або в Podʼі не встановлено в false:
контролер допуску змінює Pod, додаючи додатковий том, що містить токен для доступу до API.
контролер допуску додає volumeMount до кожного контейнера в Podʼі, пропускаючи контейнери, які вже мають визначений шлях для монтування тому /var/run/secrets/kubernetes.io/serviceaccount. Для Linux-контейнерів цей том монтується за адресою /var/run/secrets/kubernetes.io/serviceaccount; на Windows-вузлах монтування знаходиться ну еквівалентному шляху.
Якщо в специфікації Pod не містяться жодні imagePullSecrets, контролер допуску додає imagePullSecrets, копіюючи їх з ServiceAccount.
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.28 [stable] (стандартно увімкнено: true)
Цей контролер створює ConfigMap з назвою kube-system/kube-apiserver-legacy-service-account-token-tracking у просторі імен kube-system. ConfigMap фіксує мітку часу, коли система почала відстежувати застарілі токени службових облікових записів.
Очищувач токенів застарілих ServiceAccount
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.30 [stable] (стандартно увімкнено: true)
Очищувач токенів застарілих ServiceAccount працює як частина kube-controller-manager і перевіряє кожні 24 години, чи не використовувався будь-який автоматично згенерований застарілий токен службового облікового запису протягом визначеного часу. Якщо так, очищувач позначає ці токени як недійсні.
Очищувач працює, спершу перевіряючи ConfigMap, створений панеллю управління (за умови, що LegacyServiceAccountTokenTracking увімкнено). Якщо поточний час перевищує визначений час після дати в ConfigMap, очищувач переглядає список Secretʼів у кластері та оцінює кожен Secret, що має тип kubernetes.io/service-account-token.
Якщо Secret відповідає всім наступним умовам, очищувач позначає його як недійсний:
Secret створено автоматично, що означає що він двонаправлено згадується ServiceAccount.
Secret не змонтовано жодним Podʼом.
Secret не використовувався протягом визначеного часу з моменту створення або останнього використання.
Очищувач позначає Secret як недійсний, додаючи мітку kubernetes.io/legacy-token-invalid-since до Secret, з поточною датою. Якщо недійсний Secret не використовується протягом визначеного часу, очищувач видаляє його.
Примітка:
Усі визначені часи стандартно становлять один рік. Адміністратор кластера може налаштувати це значення через аргумент командного рядка --legacy-service-account-token-clean-up-period для компонента kube-controller-manager.
API TokenRequest
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.22 [stable]
Ви використовуєте субресур TokenRequest з ServiceAccount, щоб отримати токен з обмеженим часом дії для цього ServiceAccount. Вам не потрібно викликати його для отримання API-токена для використання в контейнері, оскільки kubelet налаштовує це для вас, використовуючи projected том.
Панель управління Kubernetes (зокрема, контролер допуску ServiceAccount) додає projected том до Podʼів, а kubelet забезпечує, що цей том містить токен, який дозволяє контейнерам автентифікуватися як відповідний ServiceAccount.
(Цей механізм замінив попередній механізм, який додавав том на основі Secret, де Secret представляв ServiceAccount для Pod, але не мав терміну дії.)
Ось приклад того, як це виглядає для запущеного Pod:
Цей фрагмент маніфесту визначає projected том, який обʼєднує інформацію з трьох джерел:
Джерело serviceAccountToken, що містить токен, який kubelet отримує від kube-apiserver. Kubelet отримує токени з обмеженим часом дії, використовуючи API TokenRequest. Токен, виданий для TokenRequest, спливає або коли Pod видаляється, або через визначений термін життя (стандартно — 1 година). Токен привʼязаний до конкретного Podʼа та має kube-apiserver як свою аудиторію.
Джерело configMap. ConfigMap містить пакет даних сертифікаційного центру. Podʼи можуть використовувати ці сертифікати, щоб переконатися, що вони підключаються до kube-apiserver вашого кластера (а не до проміжного блоку або випадково неправильно налаштованого колеги).
Джерело downwardAPI. Цей том downwardAPI робить імʼя простору імен, що містить Pod, доступним для коду програми, що працює всередині Podʼа.
Будь-який контейнер у Podʼі, що монтує цей том, може отримати доступ до вищезазначеної інформації.
Створення додаткових API токенів
Увага:
Створюйте довгострокові API токени тільки якщо механізм запиту токенів не підходить. Механізм запиту токенів надає токени з обмеженим часом дії; оскільки вони спливають, вони представляють менший ризик для інформаційної безпеки.
Для створення постійного API токена для ServiceAccount, створіть Secret типу kubernetes.io/service-account-token з анотацією, що посилається на ServiceAccount. Панель управління потім генерує довгостроковий токен і оновлює цей Secret з даними згенерованого токена.
Якщо ви запустите новий Pod у просторі імен examplens, він може використовувати Secret токену службового облікового запису myserviceaccount, який ви щойно створили.
Підписування та керування токенами зовнішніх ServiceAccount
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.32 [alpha] (стандартно увімкнено: false)
Kube-apiserver можна налаштувати на використання зовнішнього підписувача для підпису токенів та управління ключами для перевірки токенів. Ця можливість дозволяє дистрибутивам kubernetes інтегруватися з рішеннями керування ключами за власним вибором (наприклад, HSM, хмарні KMS) для підписання та перевірки облікових даних службових облікових записів. Щоб налаштувати kube-apiserver на використання external-jwt-signer, встановіть прапорець --service-account-signing-endpoint на розташування сокета домену Unix (UDS) у файловій системі, або додайте префікс @ і назвіть UDS в абстрактному просторі назв сокетів. На сконфігурованому UDS має бути RPC-сервер, який реалізує ExternalJWTSigner. External-jwt-signer має бути працездатним і готовим обслуговувати підтримувані ключі сервісних облікових записів для запуску kube-apiserver.
Докладнішу інформацію про ExternalJWTSigner можна знайти у KEP-740.
Примітка:
Прапорці kube-apiserver --service-account-key-file і --service-account-signing-key-file і надалі використовуватимуться для читання з файлів, якщо не встановлено --service-account-signing-endpoint; вони є взаємовиключними способами підтримки підпису та автентифікації JWT.
Прибирання
Якщо ви створили простір імен examplens для експериментів, ви можете його видалити:
API для сертифікатів та наборів довіри Kubernetes дозволяють автоматизувати створення облікових даних X.509, надаючи програмний інтерфейс для клієнтів API Kubernetes для запиту та отримання X.509 сертифікатів від Центру сертифікації (CA).
Також є експериментальна (альфа) підтримка розподілу наборів довіри.
Запити на підписання сертифікатів
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.19 [stable]
Ресурс CertificateSigningRequest (CSR) використовується для запиту підписання сертифіката від вказаного підписувача, після чого запит може бути схвалений або відхилений перед остаточним підписанням.
Процес підписання запиту
Ресурс типу CertificateSigningRequest дозволяє клієнту запросити видачу сертифіката X.509 на основі запиту на підписання. Обʼєкт CertificateSigningRequest містить PEM-кодований запит на підпис у форматі PKCS#10 у полі spec.request. CertificateSigningRequest вказує підписувача (одержувача, до якого робиться запит) за допомогою поля spec.signerName. Зверніть увагу, що після версії API certificates.k8s.io/v1 ключ spec.signerName є обовʼязковим. У Kubernetes v1.22 та пізніших версіях клієнти можуть за бажанням встановити поле spec.expirationSeconds, щоб запросити певний термін дії виданого сертифіката. Мінімальне допустиме значення для цього поля — 600, тобто десять хвилин.
Після створення CertificateSigningRequest його необхідно схвалити перед підписанням. Залежно від обраного підписувача, CertificateSigningRequest може бути автоматично схвалений контролером. В іншому випадку CertificateSigningRequest слід схвалити вручну через API REST (або client-go) або за допомогою команди kubectl certificate approve. Аналогічно CertificateSigningRequest також може бути відхилений, що повідомляє налаштованому підписувачу, що він не повинен підписати запит.
Для схвалених сертифікатів наступним кроком є підписання. Відповідний контролер підпису перевіряє, чи виконуються умови підписання, а потім створює сертифікат. Після цього контролер підпису оновлює CertificateSigningRequest, зберігаючи новий сертифікат у полі status.certificate наявного обʼєкта CertificateSigningRequest. Поле status.certificate CertificateSigningRequest може бути порожнім або містити сертифікат X.509, кодований у форматі PEM. Поле status.certificate CertificateSigningRequest залишається порожнім, доки підписувач не зробить це.
Після заповнення поля status.certificate запит вважається завершеним, і клієнти тепер можуть отримати PEM-дані підписаного сертифіката з ресурсу CertificateSigningRequest. Підписувачі також можуть відхилити підпис сертифіката, якщо умови схвалення не виконані.
Для зменшення кількості застарілих ресурсів CertificateSigningRequest в кластері періодично запускається контролер збору сміття. Він видаляє CertificateSigningRequests, які не змінювали стан протягом певного періоду:
Схвалені запити: автоматично видаляються після 1 години
Відхилені запити: автоматично видаляються після 1 години
Невдалі запити: автоматично видаляються після 1 години
Запити в очікуванні: автоматично видаляються після 24 годин
Усі запити: автоматично видаляються після того, як видача сертифіката закінчиться після спливання часу дії
Авторизація підпису сертифікатів
Для можливості створення запиту на підпис сертифіката та отримання будь-якого запиту на підпис сертифіката:
apiVersion:rbac.authorization.k8s.io/v1kind:ClusterRolemetadata:name:csr-signerrules:- apiGroups:- certificates.k8s.ioresources:- certificatesigningrequestsverbs:- get- list- watch- apiGroups:- certificates.k8s.ioresources:- certificatesigningrequests/statusverbs:- update- apiGroups:- certificates.k8s.ioresources:- signersresourceNames:- example.com/my-signer-name# example.com/* може використовуватись для авторизації всіх підписувачів в домені 'example.com'verbs:- sign
Підписувачі
Підписувачі абстрактно представляють сутність або сутності, які можуть підписувати або вже підписали сертифікат.
Будь-який підписувач, який доступний за межами конкретного кластера, повинен надавати інформацію про те, як працює підписувач, щоб споживачі могли зрозуміти, що це означає для CertificateSigningRequests та (якщо це увімкнено) ClusterTrustBundles. Це охоплює:
Розподіл довіри: як розподіляються якорі довіри (CA-сертифікати або набори сертифікатів).
Дозволені субʼєкти: будь-які обмеження та поведінка, коли запитано недопустимий субʼєкт.
Дозволені розширення x509: включаючи IP subjectAltNames, DNS subjectAltNames, Email subjectAltNames, URI subjectAltNames тощо, та поведінка, коли запитано недопустиме розширення.
Дозволені використання ключів / розширені використання ключів: будь-які обмеження та поведінка, коли використання, відмінне від використання, визначеного підписувачем, вказане в CSR.
Термін дії / термін життя сертифіката: чи він фіксується підписувачем, настроюваний адміністратором, визначений полем spec.expirationSeconds CSR тощо, та поведінка, коли термін дії, визначений підписувачем, відрізняється від поля spec.expirationSeconds CSR.
Дозволені / заборонені прапорці CA: та поведінка, якщо CSR містить запит на отримання сертифіката CA, коли підписувач не пропускає його.
Зазвичай поле status.certificate обʼєкта CertificateSigningRequest містить один PEM-кодований сертифікат X.509, як тільки CSR схвалено, і сертифікат видається. Деякі підписувачі зберігають кілька сертифікатів у полі status.certificate. У цьому випадку документація для підписувача повинна вказувати значення додаткових сертифікатів; наприклад, це може бути сертифікат плюс проміжні сертифікати, які представляються під час рукостискання TLS.
Якщо ви хочете зробити якір довіри (кореневий сертифікат) доступним, це слід зробити окремо від CertificateSigningRequest та його поля status.certificate. Наприклад, ви можете використовувати ClusterTrustBundle.
Формат підпису PKCS#10 не має стандартного механізму для вказання терміну дії або терміну життя сертифіката. Термін дії або термін життя має бути встановлено через поле spec.expirationSeconds обʼєкта CSR. Вбудовані підписувачі використовують параметр конфігурації ClusterSigningDuration, який стандартно становить 1 рік, (прапорець командного рядка --cluster-signing-duration kube-controller-manager) в як стандартне значення, коли не вказано spec.expirationSeconds. Коли вказано spec.expirationSeconds, використовується мінімум з spec.expirationSeconds та ClusterSigningDuration.
Примітка:
Поле spec.expirationSeconds було додано в Kubernetes v1.22. У попередніх версіях Kubernetes це поле не враховується. API-сервери Kubernetes до v1.22 будуть мовчки видаляти це поле при створенні обʼєкта.
Підписувачі Kubernetes
Kubernetes надає вбудовані підписувачі для підпису сертифікатів, кожен з яких має широко відоме імʼя підписувача signerName:
kubernetes.io/kube-apiserver-client: підписує сертифікати, які мають вважатись сертифікатами клієнтів сервером API. Ніколи автоматично не затверджуються kube-controller-manager.
Розподіл довіри: підписані сертифікати мають вважатись клієнтськими сертифікатами для доступу до API-сервера. Набір ЦС не поширюється жодним іншим способом.
Дозволені субʼєкти: немає обмежень для субʼєктів, однак затверджувачі та підписувачі можуть відхилити запити на затвердження та підпис. Певні субʼєкти подібні до користувачів та груп на рівні кластера є різними поміж різними дистрибутивами, що вимагає додаткових перевірок перед затвердженням та підписуванням. Втулок допуску CertificateSubjectRestrictions є стандартно увімкненим для обмеження system:masters, але в кластері є не тільки субʼєкти рівня адміністраторів кластера.
Дозволені розширення x509: враховують subjectAltNames та використання ключів, відкидаючи інші розширення.
Використання дозволених ключів: мають включати ["client auth"]. Не мають містити використання ключів поза ["digital signature", "key encipherment", "client auth"].
Термін дії / термін життя сертифіката: для реалізації підписувача kube-controller-manager, встановлюється у мінімальне значення з --cluster-signing-duration або, якщо вказано, поля spec.expirationSeconds обʼєкта CSR.
Біт ЦС дозволено / заборонено: не дозволяється.
kubernetes.io/kube-apiserver-client-kubelet: підписує сертифікати, які мають вважатись сертифікатами клієнтів сервером API. Можуть бути автоматично затверджені kube-controller-manager.
Розподіл довіри: підписані сертифікати мають вважатись клієнтськими сертифікатами для доступу до API-сервера. Набір ЦС не поширюється жодним іншим способом.
Дозволені субʼєкти: організації є безумовно ["system:nodes"], загальні імена — "system:node:${NODE_NAME}".
Дозволені розширення x509: враховують розширення з використанням ключів, забороняють розширення subjectAltNames та відкидає інші розширення.
Дозволені використання ключів: ["key encipherment", "digital signature", "client auth"] або ["digital signature", "client auth"].
Термін дії / термін життя сертифіката: для реалізації підписувача kube-controller-manager, встановлюється у мінімальне значення з --cluster-signing-duration або, якщо вказано, поля spec.expirationSeconds обʼєкта CSR.
Біт ЦС дозволено / заборонено: не дозволяється.
kubernetes.io/kubelet-serving: підписує сертифікати, які мають вважатись сертифікатами, які обслуговуються kubelet, але не мають жодних гарантій. Ніколи автоматично не затверджуються kube-controller-manager.
Розподіл довіри: підписані сертифікати мають вважатись API сервером дійсними для обробки зʼєднань з kubelet. Набір ЦС не поширюється жодним іншим способом.
Дозволені субʼєкти: організації є безумовно ["system:nodes"], загальні імена — "system:node:${NODE_NAME}".
Дозволені розширення x509: враховують використання ключів та розширень DNSName/IPAddress subjectAltName extensions, забороняють розширення EmailAddress та URI subjectAltName, відкидають інші розширення. Принаймні один субʼєкт DNS чи IP повинен бути у subjectAltNames.
Дозволені використання ключів: ["key encipherment", "digital signature", "server auth"] або ["digital signature", "server auth"].
Термін дії / термін життя сертифіката: для реалізації підписувача kube-controller-manager, встановлюється у мінімальне значення з --cluster-signing-duration або, якщо вказано, поля spec.expirationSeconds обʼєкта CSR.
Біт ЦС дозволено / заборонено: не дозволяється.
kubernetes.io/legacy-unknown: не має гарантій довіри взагалі. Деякі сторонні дистрибутиви Kubernetes можуть використовувати сертифікати клієнтів, підписані ним. Стабільний API CertificateSigningRequest (версії certificates.k8s.io/v1 та пізніше) не дозволяють встановлювати signerName на kubernetes.io/legacy-unknown. Ніколи автоматично не затверджується kube-controller-manager.
Розподіл довіри: Немає. Для цього підписувача не існує стандартної довіри або розподілу в кластері Kubernetes.
Дозволені субʼєкти: будь-які
Дозволені розширення x509: враховуються subjectAltNames та використання ключів, відкидаються інші розширення.
Дозволені використання ключів: будь-які
Термін дії / термін життя сертифіката: для реалізації підписувача kube-controller-manager, встановлюється у мінімальне значення з --cluster-signing-duration або, якщо вказано, поля spec.expirationSeconds обʼєкта CSR.
Біт ЦС дозволено / заборонено: не дозволяється.
kube-controller-manager реалізує підписування панелю управління для кожного з вбудованих підписувачів. Збої для всіх цих операцій повідомляються лише в логах kube-controller-manager.
Примітка:
Поле spec.expirationSeconds було додано в Kubernetes v1.22. Раніше версії Kubernetes не враховували це поле. API-сервери Kubernetes до v1.22 будуть просто ігнорувати це поле під час створення обʼєкта.
Розподіл довіри відбувається поза рамками для цих підписувачів. Будь-яка довіра за межами описаного вище є строго випадковою. Наприклад, деякі дистрибутиви можуть приймати kubernetes.io/legacy-unknown як клієнтські сертифікати для kube-apiserver, але це не є стандартом. Жодне з цих використань не повʼязане з токенами секретів ServiceAccount .data[ca.crt]. Цей пакет CA гарантовано лише для верифікації зʼєднання з API-сервером за допомогою стандартного Service (kubernetes.default.svc).
Власні підписувачі
Ви можете ввести власних підписувачів, які матимуть схожі імена з префіксами, але такі, що вказують на ваш власний домен. Наприклад, якщо ви є представником проєкту з відкритими сирцями, який використовує доменне імʼя open-fictional.example, тоді ви можете використовувати issuer.open-fictional.example/service-mesh як імʼя підписувача.
Власний підписувач використовує API Kubernetes для випуску сертифікатів. Дивіться підписувачі на основі API для деталей.
Підписування
Підписування панеллю управління
Панель управління Kubernetes реалізує кожного з підписувачів Kubernetes як частину kube-controller-manager.
Примітка:
До Kubernetes v1.18, kube-controller-manager підписував будь-які CSRs, які були позначені як схвалені.
Примітка:
Поле spec.expirationSeconds було додано в Kubernetes v1.22. Раніше версії Kubernetes не враховували це поле. API-сервери Kubernetes до v1.22 будуть просто ігнорувати це поле під час створення обʼєкта.
Підписувачі на основі API
Користувачі REST API можуть підписувати CSRs, надсилаючи запит UPDATE до субресурсу status CSR, який потрібно підписати.
У рамках цього запиту поле status.certificate повинно бути встановлено, щоб містити підписаний сертифікат. Це поле містить один або більше сертифікатів, закодованих у форматі PEM.
Всі PEM блоки повинні мати мітку "CERTIFICATE", не містити заголовків, а закодовані дані повинні бути структурою сертифіката BER, закодованого в ASN.1, як описано в розділі 4 RFC5280.
Не-PEM вміст може зʼявлятися до або після блоків CERTIFICATE PEM і не перевіряється, щоб дозволити пояснювальний текст, як описано в розділі 5.2 RFC7468.
При кодуванні в JSON або YAML це поле закодоване в base-64. Запит на підпис сертифіката (CertificateSigningRequest), що містить приклад сертифіката вище, виглядатиме так:
Перед тим, як підписувач видасть сертифікат на основі запиту на підписання сертифіката (CertificateSigningRequest), підписувач зазвичай перевіряє, що видача для цього CSR була схвалена.
Автоматичне схвалення панелі управління
kube-controller-manager поставляється з вбудованим схвалювачем для сертифікатів з іменем підписувача kubernetes.io/kube-apiserver-client-kubelet, який делегує різні дозволи на CSRs для облікових даних вузлів до авторизації. kube-controller-manager надсилає ресурси SubjectAccessReview до API-сервера для перевірки авторизації на схвалення сертифіката.
Схвалення або відхилення за допомогою kubectl
Адміністратор Kubernetes (з відповідними дозволами) може вручну схвалювати (або відхиляти) запити на підписання сертифікатів (CertificateSigningRequests) за допомогою команд kubectl certificate approve та kubectl certificate deny.
Схвалення або відхилення за допомогою API Kubernetes
Користувачі REST API можуть схвалювати CSRs, надсилаючи запит UPDATE до субресурсу approval CSR, який потрібно схвалити. Наприклад, ви можете написати оператор, який слідкує за певним видом CSR, а потім надсилає UPDATE для їх схвалення.
Коли ви робите запит на схвалення або відхилення, встановіть або умову статусу Approved, або Denied залежно від визначеного стану:
Для схвалених CSR:
apiVersion:certificates.k8s.io/v1kind:CertificateSigningRequest...status:conditions:- lastUpdateTime:"2020-02-08T11:37:35Z"lastTransitionTime:"2020-02-08T11:37:35Z"message:Approved by my custom approver controllerreason:ApprovedByMyPolicy# Ви можете вказати тут будь-який рядокtype:Approved
Для відхилених CSR:
apiVersion:certificates.k8s.io/v1kind:CertificateSigningRequest...status:conditions:- lastUpdateTime:"2020-02-08T11:37:35Z"lastTransitionTime:"2020-02-08T11:37:35Z"message:Denied by my custom approver controllerreason:DeniedByMyPolicy# Ви можете вказати тут будь-який рядокtype:Denied
Зазвичай встановлюється в поле status.conditions.reason код причини, зручний для машинного зчитування, використовуючи TitleCase; це є умовністю, але ви можете встановити тут будь-яке значення. Якщо ви хочете додати примітку для читання людьми, використовуйте поле status.conditions.message.
Пакети довіри кластера
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.27 [alpha]
Примітка:
У Kubernetes 1.32 ви повинні ввімкнути функціональну можливістьClusterTrustBundleтагрупу APIcertificates.k8s.io/v1alpha1,
щоб використовувати цей API.
ClusterTrustBundles — це обʼєкт масштабу кластера для розподілу якорів довіри X.509 (кореневих сертифікатів) до робочих навантажень у кластері. Вони розроблені для гарної роботи з концепцією підписувача із запитів на підписання сертифікатів (CertificateSigningRequests).
Усі обʼєкти ClusterTrustBundle мають сувору валідацію вмісту їхнього поля trustBundle. Це поле повинно містити один або більше сертифікатів X.509, серіалізованих у DER, кожен з яких обгорнутий у блок PEM CERTIFICATE. Сертифікати повинні аналізуватися як дійсні сертифікати X.509.
Езотеричні функції PEM, такі як дані між блоками та заголовки всередині блоків, або відхиляються під час валідації обʼєкта, або можуть ігноруватися споживачами обʼєкта. Крім того, споживачі можуть перевпорядковувати сертифікати в пакеті за своїм власним довільним, але стабільним порядком.
Обʼєкти ClusterTrustBundle слід вважати загальнодоступними в межах кластера. Якщо ваш кластер використовує авторизацію RBAC, усі ServiceAccounts стандартно мають дозволи get, list та watch для всіх обʼєктів ClusterTrustBundle. Якщо ви використовуєте власний механізм авторизації та ввімкнули ClusterTrustBundles у своєму кластері, вам слід налаштувати еквівалентне правило для того, щоб ці обʼєкти були загальнодоступними в межах кластера, щоб вони працювали належним чином.
Якщо ви не маєте стандартного дозволу для отримання переліку пакетів довіри кластера у вашому кластері, ви можете діяти від імені службового облікового запису, до якого у вас є доступ, щоб побачити доступні ClusterTrustBundles:
kubectl get clustertrustbundles --as='system:serviceaccount:mynamespace:default'
ClusterTrustBundles, звʼязані з підписувачем
ClusterTrustBundles, звʼязані з підписувачем, асоціюються з імʼям підписувача, як тут:
apiVersion:certificates.k8s.io/v1alpha1kind:ClusterTrustBundlemetadata:name:example.com:mysigner:foospec:signerName:example.com/mysignertrustBundle:"<... PEM data ...>"
ClusterTrustBundles призначені для підтримки контролера, специфічного для підписувача в кластері, тому вони мають кілька функцій безпеки:
Щоб створити або оновити ClusterTrustBundle, звʼязаний з підписувачем, ви повинні мати дозвіл підтвердити підписувача (спеціальне дієслово авторизації attest, група API certificates.k8s.io; шлях ресурсу signers). Ви можете налаштувати авторизацію для конкретного імені ресурсу <signerNameDomain>/<signerNamePath> або відповідати шаблону, наприклад <signerNameDomain>/*.
ClusterTrustBundles, звʼязані з підписувачем, повинні бути названі з префіксом, отриманим з їхнього поля spec.signerName. Слеші (/) замінюються на двокрапки (:), а в кінці додається двокрапка. За цим слідує довільне імʼя. Наприклад, підписувач example.com/mysigner може бути звʼязаний з ClusterTrustBundle example.com:mysigner:<arbitrary-name>.
ClusterTrustBundles, звʼязані з підписувачем, зазвичай використовуються у робочих навантаженнях за допомогою комбінації селектора полів за іменем підписувача та окремого селектора міток.
ClusterTrustBundles, незвʼязані з підписувачем
ClusterTrustBundles, незвʼязані з підписувачем, мають порожнє поле spec.signerName, як це:
apiVersion:certificates.k8s.io/v1alpha1kind:ClusterTrustBundlemetadata:name:foospec:# signerName не вказано, тому поле порожнєtrustBundle:"<... PEM data ...>"
Вони призначені головним чином для випадків використання конфігурації кластера. Кожен ClusterTrustBundle, незвʼязаний з підписувачем, є незалежним обʼєктом, на відміну від звичайної групової поведінки ClusterTrustBundles, звʼязаних з підписувачем.
ClusterTrustBundles, незвʼязані з підписувачем, не мають вимоги щодо дієслова attest. Натомість, ви контролюєте доступ до них безпосередньо за допомогою звичайних механізмів, таких як контроль доступу на основі ролей.
Щоб відрізнити їх від ClusterTrustBundles, звʼязаних з підписувачем, назви ClusterTrustBundles, незвʼязаних з підписувачем, не повинні містити двокрапку (:).
Доступ до ClusterTrustBundles з Podʼів
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.29 [alpha]
Вміст ClusterTrustBundles може бути впроваджений у файлову систему контейнера, подібно до ConfigMaps та Secrets. Дивіться джерело projected томів clusterTrustBundle для отримання додаткової інформації.
Як видати сертифікат для користувача
Для того, щоб звичайний користувач міг автентифікуватися та викликати API, потрібно виконати кілька кроків. Спершу цей користувач повинен мати сертифікат, виданий кластером Kubernetes, а потім надати цей сертифікат API Kubernetes.
Створення приватного ключа
Наступні скрипти показують, як згенерувати приватний ключ PKI та CSR. Важливо встановити значення CN та O атрибута CSR. CN — це імʼя користувача, а O — це група, до якої належатиме цей користувач. Ви можете звернутися до RBAC по стандартні групи.
Створіть запит на підписання сертифікату (CertificateSigningRequest) і подайте його до кластера Kubernetes через kubectl. Нижче наведено скрипт для CertificateSigningRequest.
3.12 - Зіставлення PodSecurityPolicies зі стандартами безпеки Podʼів
Нижче наведено таблиці, що перераховують параметри конфігурації обʼєктів PodSecurityPolicy, чи поле змінює або перевіряє контейнери, та як значення конфігурації зіставляються з Стандартами безпеки Podʼів.
Для кожного параметра, до якого це застосовується, перераховані допустимі значення для Baseline та Restricted профілів. Все, що перебуває за межами допустимих значень для цих профілів, підпадає під Privileged профіль. "Немає думки" означає, що всі значення допустимі для всіх стандартів безпеки Podʼів.
Baseline: "runtime/default,"(Кома в кінці, щоб встановити unset)
Restricted: "runtime/default"(Без коми в кінці)
Значення localhost/* також дозволені як для Baseline, так і для Restricted.
3.13 - Автентифікація/авторизація kubelet
Огляд
HTTP-запити до HTTPS-точки доступу kubelet надають доступ до даних різного рівня чутливості та дозволяють виконувати операції з різними рівнями повноважень на вузлі та в контейнерах.
У цьому документі описано, як автентифікувати та авторизувати доступ до HTTPS-точки доступу kubelet.
Автентифікація kubelet
Стандартно запити до HTTPS-точки доступу kubelet, які не відхилені іншими налаштованими методами автентифікації, розглядаються як анонімні запити та отримують імʼя користувача system:anonymous та групу system:unauthenticated.
Щоб вимкнути анонімний доступ та надсилати відповіді 401 Unauthorized на невідомі запити:
запустіть kubelet з прапорцем --anonymous-auth=false
Щоб увімкнути автентифікацію за допомогою клієнтських сертифікатів X509 до HTTPS-точки доступу kubelet:
запустіть kubelet з прапорцем --client-ca-file, надаючи набір кореневих сертифікатів для перевірки клієнтських сертифікатів
запустіть apiserver з прапорцями --kubelet-client-certificate та --kubelet-client-key
Щоб увімкнути використання API-токенів на предʼявника (включаючи токени службових облікових записів) для автентифікації до HTTPS-точки доступу kubelet:
переконайтеся, що група API authentication.k8s.io/v1beta1 ввімкнена в apiserver
запустіть kubelet з прапорцями --authentication-token-webhook та --kubeconfig
kubelet викликає API TokenReview на налаштованому apiserver, щоб визначити інформацію про користувача з токенів на предʼявника
Авторизація kubelet
Будь-який запит, який успішно автентифікується (включаючи анонімний запит), потім авторизується. Стандартний режим авторизації — AlwaysAllow, який дозволяє всі запити.
Є багато можливих причин для розподілу доступу до API kubelet:
ввімкнено анонімну автентифікацію, але потрібно обмежити можливості анонімних користувачів викликати API kubelet
ввімкнено автентифікацію з використанням токенів на предʼявника, але потрібно обмежити можливості довільних користувачів API (наприклад, службові облікові записи) викликати API kubelet
ввімкнено автентифікацію за допомогою клієнтських сертифікатів, але дозволено використовувати API kubelet тільки деяким сертифікатам клієнтів, які підписані налаштованим кореневим сертифікатом
Щоб розділити доступ до API kubelet, делегуйте авторизацію apiserver:
переконайтеся, що група API authorization.k8s.io/v1beta1 ввімкнена в apiserver
запустіть kubelet з прапорцями --authorization-mode=Webhook та --kubeconfig
kubelet викликає API SubjectAccessReview на налаштованому apiserver, щоб визначити, чи авторизований кожний запит
Kubelet авторизує запити до API, використовуючи той самий підхід до атрибутів запиту, що й apiserver.
Дієслово визначається з HTTP-дії вхідного запиту:
HTTP-дія
Дієслово запиту
POST
create
GET, HEAD
get
PUT
update
PATCH
patch
DELETE
delete
Ресурс та субресурс визначаються з шляху вхідного запиту:
Kubelet API
Ресурс
Субресурс
/stats/*
nodes
stats
/metrics/*
nodes
metrics
/logs/*
nodes
log
/spec/*
nodes
spec
/checkpoint/*
nodes
checkpoint
всі інші
nodes
proxy
Атрибути простору імен та групи API завжди є порожніми рядками, а імʼя ресурсу завжди є імʼям обʼєкта Node kubelet.
При використанні цього режиму переконайтеся, що користувач, визначений прапорцями --kubelet-client-certificate та --kubelet-client-key, переданими до apiserver, має дозвіл наступних атрибутів:
verb=*, resource=nodes, subresource=proxy
verb=*, resource=nodes, subresource=stats
verb=*, resource=nodes, subresource=log
verb=*, resource=nodes, subresource=spec
verb=*, resource=nodes, subresource=metrics
Детальна авторизація
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.32 [alpha] (стандартно увімкнено: false)
Коли увімкнено функціональну можливість KubeletFineGrainedAuthz, kubelet виконує детальну перевірку перед поверненням до підресурсу proxy для кінцевих точок /pods, /runningPods, /configz та /healthz. Ресурс і підресурс визначаються за шляхом вхідного запиту:
Kubelet API
ресурс
підресурс
/stats/*
nodes
stats
/metrics/*
nodes
metrics
/logs/*
nodes
log
/spec/*
nodes
spec
/pods
nodes
pods, proxy
/runningPods/
nodes
pods, proxy
/healthz
nodes
healthz, proxy
/configz
nodes
configz, proxy
all others
nodes
proxy
Коли функціональну можливість KubeletFineGrainedAuthz увімкнено, переконайтеся, що користувач, ідентифікований прапорцями --kubelet-client-certificate та --kubelet-client-key, переданими серверу API, є авторизованим для наступних атрибутів:
verb=*, resource=nodes, subresource=proxy
verb=*, resource=nodes, subresource=stats
verb=*, resource=nodes, subresource=log
verb=*, resource=nodes, subresource=spec
verb=*, resource=nodes, subresource=metrics
verb=*, resource=nodes, subresource=configz
verb=*, resource=nodes, subresource=healthz
verb=*, resource=nodes, subresource=pods
3.14 - Початкове завантаження TLS
У кластері Kubernetes компоненти на вузлах робочих навантажень, kubelet та kube-proxy, повинні взаємодіяти з компонентами панелі управління Kubernetes, зокрема з kube-apiserver. Для забезпечення приватності комунікації, її невтручання та переконання, що кожен компонент кластера спілкується з іншим довіреним компонентом, ми наполегливо рекомендуємо використовувати TLS-сертифікати клієнтів на вузлах.
Звичайний процес ініціалізації цих компонентів, особливо робочих вузлів, які потребують сертифікати для безпечної комунікації з kube-apiserver, може бути складним, оскільки він часто виходить за межі Kubernetes і вимагає значної додаткової роботи. Це, своєю чергою, може ускладнити ініціалізацію або масштабування кластера.
З метою спрощення процесу, починаючи з версії 1.4, Kubernetes ввів API запиту та підпису сертифікатів. Пропозицію можна знайти тут.
У цьому документі описано процес ініціалізації вузла, спосіб налаштування початкового завантаження TLS-сертифікатів клієнтів для kubelet та його роботу.
Процес ініціалізації
Коли робочий вузол запускається, kubelet виконує наступне:
Шукає свій файл kubeconfig.
Отримує URL-адресу сервера API та облікові дані, зазвичай ключ TLS та підписаний сертифікат з файлу kubeconfig.
Намагається спілкуватися з сервером API, використовуючи облікові дані.
Припускаючи, що kube-apiserver успішно перевіряє облікові дані kubelet, він буде вважати kubelet дійсним вузлом та почне призначати для нього Podʼи.
Зауважте, що вищевказаний процес залежить від:
Існування ключа та сертифіката на локальному хості у kubeconfig.
Підписання сертифіката центром сертифікації (CA), якому довіряє kube-apiserver.
Всі перелічені нижче обовʼязки покладаються на того, хто налаштовує та керує кластером:
Створення ключа та сертифіката CA.
Розповсюдження сертифіката CA на вузли панелі управління, де запущений kube-apiserver.
Створення ключа та сертифіката для кожного kubelet; наполегливо рекомендується мати унікальний ключ з унікальним CN для кожного kubelet.
Підписання сертифіката kubelet за допомогою ключа CA.
Розповсюдження ключа та підписаного сертифіката kubelet на конкретний вузол, на якому працює kubelet.
Початкове завантаження TLS, описане у цьому документі, призначене спростити та частково або повністю автоматизувати кроки з 3 по 14, оскільки вони є найбільш поширеними при ініціалізації або масштабуванні кластера.
Ініціалізація початкового завантаження
Під час процесу ініціалізації початкового завантаження відбувається наступне:
kubelet починає роботу.
kubelet бачить, що у нього немає файлу kubeconfig.
kubelet шукає та знаходить файл bootstrap-kubeconfig.
kubelet читає свій файл ініціалізації початкового завантаження, отримуючи URL-адресу сервера API та обмежений "токен".
kubelet підключається до сервера API, автентифікується за допомогою токена.
у kubelet тепер є обмежені облікові дані для створення та отримання запиту на підпис сертифіката (CSR).
kubelet створює CSR для себе з встановленим signerName kubernetes.io/kube-apiserver-client-kubelet.
CSR затверджується одним з двох способів:
Якщо налаштовано, kube-controller-manager автоматично затверджує CSR.
Якщо налаштовано, зовнішній процес, можливо, людина, затверджує CSR за допомогою API Kubernetes або через kubectl.
Сертифікат створюється для kubelet.
Сертифікат видано для kubelet.
kubelet отримує сертифікат.
kubelet створює належний kubeconfig з ключем та підписаним сертифікатом.
kubelet починає нормальну роботу.
Опціонально: якщо налаштовано, kubelet автоматично запитує поновлення сертифіката, коли той наближається до закінчення строку дії.
Поновлений сертифікат затверджується та видається, або автоматично, або вручну, залежно від налаштувань.
Усі інші розділи цього документу описують необхідні кроки для налаштування початкового завантаження TLS та його обмежень.
Налаштування
Для налаштування початкового завантаження TLS та опціонального автоматичного затвердження потрібно налаштувати параметри на наступних компонентах:
kube-apiserver
kube-controller-manager
kubelet
ресурси в кластері: ClusterRoleBinding та, можливо, ClusterRole
Крім того, вам потрібен ваш центр сертифікації Kubernetes (CA).
Центр сертифікації
Як і без початкового завантаження, вам знадобиться ключ та сертифікат центру сертифікації (CA). Як і раніше, вони будуть використовуватися для підпису сертифіката kubelet. Як і раніше, ваша відповідальність полягає в їх розповсюджені на вузли панелі управління.
Для цілей цього документу ми припускаємо, що вони розповсюджені на вузли панелі управління за шляхом /var/lib/kubernetes/ca.pem (сертифікат) та /var/lib/kubernetes/ca-key.pem (ключ). Ми будемо посилатися на них як "сертифікат та ключ CA Kubernetes".
Всі компоненти Kubernetes, які використовують ці сертифікати — kubelet, kube-apiserver, kube-controller-manager — припускають, що ключ та сертифікат закодовані у PEM-форматі.
Налаштування kube-apiserver
У kube-apiserver є кілька вимог для активації початкового завантаження TLS:
Визнання CA, який підписує сертифікат клієнта
Автентифікація початкового завантаження kubelet у групу system:bootstrappers
Авторизація початкового завантаження kubelet для створення запиту на підпис сертифіката (CSR)
Визнання сертифікатів клієнтів
Це є нормою для всієї автентифікації сертифікатів клієнтів. Якщо це ще не налаштовано, додайте прапорець --client-ca-file=ФАЙЛ до команди kube-apiserver, щоб активувати автентифікацію за сертифікатом клієнта, посилаючись на пакет сертифікатів центру сертифікації, наприклад --client-ca-file=/var/lib/kubernetes/ca.pem.
Початкова автентифікація початкового завантаження
Для того, щоб процес початкового завантаження kubelet міг підʼєднатися до kube-apiserver та запросити сертифікат, спочатку йому потрібно автентифікуватися на сервері. Ви можете використовувати будь-який автентифікатор, який може автентифікувати kubelet.
Хоча будь-яка стратегія автентифікації може бути використана для початкових облікових даних kubelet, рекомендується використовувати наступні два автентифікатори для полегшення надання прав.
Використання токенів початкового завантаження є простішим та зручнішим способом автентифікації kubelet і не вимагає додаткових прапорів при запуску kube-apiserver.
Який би метод ви не обрали, вимога полягає в тому, щоб kubelet міг автентифікуватися як користувач з правами на:
створення та отримання CSRs
автоматичне затвердження запиту клієнтських сертифікатів вузлів, якщо увімкнено автоматичне затвердження.
Kubelet, який автентифікується за допомогою початкових токенів, автентифікується як користувач у групі system:bootstrappers, що є стандартним методом використання.
Оскільки ця функція вдосконалюється, вам слід переконатися, що токени привʼязані до політики управління доступом на основі ролей (RBAC), яка обмежує запити (використовуючи початковий токен) виключно клієнтськими запитами, повʼязаними з наданням сертифікатів. З RBAC можна гнучко налаштовувати обмеження для токенів за групами. Наприклад, ви можете вимкнути доступ певної початкової групи після завершення розгортання вузлів.
Токени початкового завантаження
Токени початкового завантаження докладно описані тут. Це токени, які зберігаються як секрети в кластері Kubernetes і потім видаються окремим kubelet. Ви можете використовувати один токен для всього кластера або видавати по одному на кожен робочий вузол.
Процес складається з двох етапів:
Створити Secret Kubernetes з ідентифікатором токена, секретом і областю(ями).
Видати токен kubelet.
З погляду kubelet, один токен такий самий, як інший і не має особливого значення. З погляду kube-apiserver, однак, початковий токен є особливим. Завдяки його type, namespace і name, kube-apiserver розпізнає його як спеціальний токен і надає будь-кому, хто автентифікується з цим токеном, особливі права початкового завантаження, зокрема, розглядаючи їх як члена групи system:bootstrappers. Це виконує основну вимогу для початкового завантаження TLS.
Якщо ви хочете використовувати токени початкового завантаження, ви повинні увімкнути їх на kube-apiserver з прапорцем:
--enable-bootstrap-token-auth=true
Файл автентифікації токенів
kube-apiserver має можливість приймати токени для автентифікації. Ці токени можуть бути довільними, але повинні представляти щонайменше 128 біт ентропії, отриманих з надійного генератора випадкових чисел (наприклад, /dev/urandom у більшості сучасних Linux-систем). Є кілька способів генерації токена. Наприклад:
head -c 16 /dev/urandom | od -An -t x | tr -d ' '
Це згенерує токени, які виглядають так: 02b50b05283e98dd0fd71db496ef01e8.
Файл токенів повинен виглядати як у наступному прикладі, де перші три значення можуть бути будь-якими, а імʼя групи в лапках повинно бути таким, як показано:
Додайте прапорець --token-auth-file=FILENAME до команди kube-apiserver (можливо, у вашому файлі systemd), щоб увімкнути файл токенів. Докладніше дивіться тут.
Авторизація kubelet на створення CSR
Тепер, коли вузол початкового завантаження автентифікований як частина групи system:bootstrappers, його потрібно авторизувати на створення запиту на підпис сертифіката (CSR), а також на його отримання після завершення. На щастя, Kubernetes постачається з ClusterRole, який має саме ці (і тільки ці) дозволи, system:node-bootstrapper.
Щоб зробити це, потрібно лише створити ClusterRoleBinding, що звʼязує групу system:bootstrappers з кластерною роллю system:node-bootstrapper.
# увімкнення створення CSR для вузлів початкового завантаженняapiVersion:rbac.authorization.k8s.io/v1kind:ClusterRoleBindingmetadata:name:create-csrs-for-bootstrappingsubjects:- kind:Groupname:system:bootstrappersapiGroup:rbac.authorization.k8s.ioroleRef:kind:ClusterRolename:system:node-bootstrapperapiGroup:rbac.authorization.k8s.io
Налаштування kube-controller-manager
Поки apiserver отримує запити на сертифікати від kubelet і автентифікує ці запити, controller-manager відповідає за видачу фактичних підписаних сертифікатів.
Controller-manager виконує цю функцію через цикл управління видачею сертифікатів. Це реалізується у вигляді локального підписувача cfssl, який використовує активи на диску. Зараз всі видані сертифікати стандартно мають один рік дійсності та набір ключів для використання.
Для того, щоб controller-manager міг підписувати сертифікати, йому потрібно наступне:
доступ до "ключа та сертифіката Kubernetes CA", який ви створили та розповсюдили
увімкнення підписування CSR
Доступ до ключа та сертифіката
Як описано раніше, вам потрібно створити ключ і сертифікат Kubernetes CA і розповсюдити їх на вузли панелі управління. Ці сертифікати будуть використовуватися controller-manager для підписування сертифікатів kubelet.
Оскільки ці підписані сертифікати, своєю чергою, будуть використовуватися kubelet для автентифікації як звичайного kubelet до kube-apiserver, важливо, щоб CA, наданий controller-manager на цьому етапі, також був довірений kube-apiserver для автентифікації. Це надається kube-apiserver за допомогою прапорця --client-ca-file=FILENAME (наприклад, --client-ca-file=/var/lib/kubernetes/ca.pem), як описано в розділі конфігурації kube-apiserver.
Щоб надати ключ і сертифікат Kubernetes CA для kube-controller-manager, використовуйте наступні прапорці:
Тривалість дійсності підписаних сертифікатів можна налаштувати за допомогою прапорця:
--cluster-signing-duration
Затвердження
Щоб затвердити CSR, потрібно вказати controller-manager, що їх можна затверджувати. Це робиться шляхом надання прав доступу RBAC потрібній групі.
Існують два різні набори дозволів:
nodeclient: Якщо вузол створює новий сертифікат для вузла, тоді у нього ще немає сертифіката. Він автентифікується за допомогою одного з токенів, зазначених вище, і таким чином є частиною групи system:bootstrappers.
selfnodeclient: Якщо вузол оновлює свій сертифікат, тоді у нього вже є сертифікат (за визначенням), який він використовує для автентифікації як частина групи system:nodes.
Щоб дозволити kubelet запитувати та отримувати новий сертифікат, створіть ClusterRoleBinding, що звʼязує групу, в якій є членом вузол початкового завантаження, system:bootstrappers, з ClusterRole, що надає їй дозвіл, system:certificates.k8s.io:certificatesigningrequests:nodeclient:
# Затвердження всіх CSR для групи "system:bootstrappers"apiVersion:rbac.authorization.k8s.io/v1kind:ClusterRoleBindingmetadata:name:auto-approve-csrs-for-groupsubjects:- kind:Groupname:system:bootstrappersapiGroup:rbac.authorization.k8s.ioroleRef:kind:ClusterRolename:system:certificates.k8s.io:certificatesigningrequests:nodeclientapiGroup:rbac.authorization.k8s.io
Щоб дозволити kubelet оновлювати власний клієнтський сертифікат, створіть ClusterRoleBinding, що звʼязує групу, в якій є членом повнофункціональний вузол, system:nodes, з ClusterRole, що
надає їй дозвіл, system:certificates.k8s.io:certificatesigningrequests:selfnodeclient:
# Затвердження запитів на оновлення CSR для групи "system:nodes"apiVersion:rbac.authorization.k8s.io/v1kind:ClusterRoleBindingmetadata:name:auto-approve-renewals-for-nodessubjects:- kind:Groupname:system:nodesapiGroup:rbac.authorization.k8s.ioroleRef:kind:ClusterRolename:system:certificates.k8s.io:certificatesigningrequests:selfnodeclientapiGroup:rbac.authorization.k8s.io
Контролер csrapproving, який постачається як частина kube-controller-manager, стандартно увімкнено. Контролер використовує API SubjectAccessReview для визначення, чи авторизований користувач для запиту CSR, а потім затверджує на основі результатів авторизації. Щоб уникнути конфліктів з іншими затверджувачами, вбудований затверджувач не відхиляє CSR явним чином. Він лише ігнорує неавторизовані запити. Контролер також видаляє прострочені сертифікати в рамках збору сміття.
Налаштування kubelet
Нарешті, з правильно налаштованими вузлами панелі управління та всією необхідною автентифікацією та авторизацією, ми можемо налаштувати kubelet.
Для початкового завантаження kubelet потрібна наступна конфігурація:
Шлях для зберігання ключа та сертифіката, які він генерує (опціонально, можна використовувати стандартні)
Шлях до файлу kubeconfig, який ще не існує; тут буде збережено конфігураційний файл після початкового завантаження
Шлях до початкового файлу kubeconfig, що містить URL сервера та початкові облікові дані, наприклад, початковий токен
Опціонально: інструкції щодо ротації сертифікатів
Початковий файл kubeconfig має бути в шляху, доступному для kubelet, наприклад /var/lib/kubelet/bootstrap-kubeconfig.
Його формат ідентичний звичайному файлу kubeconfig. Приклад файлу може виглядати наступним чином:
certificate-authority: шлях до файлу CA, використовується для перевірки сертифіката сервера, представленого kube-apiserver
server: URL до kube-apiserver
token: токен для використання
Формат токена не має значення, головне, щоб він відповідав очікуванням kube-apiserver. У наведеному прикладі ми використали початковий токен. Як зазначалося раніше, будь-який дійсний метод автентифікації може бути використаний, а не тільки токени.
Оскільки початковий kubeconfigє стандартним kubeconfig, ви можете використовувати kubectl для його створення. Щоб створити вищезазначений приклад файлу:
Під час запуску kubelet, якщо файл, вказаний через --kubeconfig, не існує, початковий kubeconfig, вказаний через --bootstrap-kubeconfig, використовується для запиту клієнтського сертифіката від API сервера. Після затвердження запиту на сертифікат і його отримання kubelet, конфігураційний файл kubeconfig, що посилається на згенерований ключ і отриманий сертифікат, буде записаний у шлях, вказаний за допомогою --kubeconfig. Файл сертифіката і ключа буде розміщено в теці, вказаній прапорцем --cert-dir.
Клієнтські та серверні сертифікати
Все вищезазначене стосується клієнтських сертифікатів kubelet, зокрема сертифікатів, які kubelet використовує для автентифікації до kube-apiserver.
kubelet також може використовувати серверні сертифікати. Сам kubelet відкриває https-точку доступу для певних функцій. Для їх захисту, kubelet може робити одне з наступного:
використовувати наданий ключ та сертифікат через прапорці --tls-private-key-file та --tls-cert-file
створити самопідписаний ключ та сертифікат, якщо ключ та сертифікат не надані
запитати серверні сертифікати у сервера кластера через API CSR
Клієнтський сертифікат, наданий під час початкового завантаження TLS, стандартно підписується лише для client auth і, отже, не може використовуватися як серверний сертифікат, або server auth.
Однак, ви можете увімкнути його серверний сертифікат, принаймні частково, через ротацію сертифікатів.
Ротація сертифікатів
З версії Kubernetes v1.8 та вище kubelet реалізує функції для увімкнення ротації його клієнтських і/або серверних сертифікатів. Зверніть увагу, що ротація серверного сертифіката є бета функцією та потребує функціональної можливості RotateKubeletServerCertificate на kubelet (стандартно увімкнено).
Ви можете налаштувати kubelet для ротації його клієнтських сертифікатів, створюючи нові CSRs при закінченні терміну дії його поточних облікових даних. Щоб увімкнути цю функцію, використовуйте поле rotateCertificates у файлі конфігурації kubelet або передайте наступний аргумент командного рядка kubelet (застаріло):
--rotate-certificates
Увімкнення RotateKubeletServerCertificate призводить до того, що kubelet одночасно
запитує серверний сертифікат після початкового завантаження своїх клієнтських облікових даних і ротує цей сертифікат. Щоб увімкнути цю поведінку, використовуйте поле serverTLSBootstrap у файлі конфігурації kubelet або передайте наступний аргумент командного рядка kubelet (застаріло):
--rotate-server-certificates
Примітка:
Контролери, що затверджують CSR, реалізовані в ядрі Kubernetes, не затверджують серверні сертифікати вузла з міркувань безпеки. Для використання RotateKubeletServerCertificate операторам потрібно запустити власний контролер затвердження або вручну затвердити запити на серверні сертифікати.
Процес затвердження серверних сертифікатів kubelet, специфічний для розгортання, зазвичай повинен затверджувати лише CSRs, які:
запитані вузлами (забезпечте, що поле spec.username має форму system:node:<nodeName> і spec.groups містить system:nodes)
запитують використання для серверного сертифіката (забезпечте, що spec.usages містить server auth, додатково містить digital signature та key encipherment, і не містить інших використань)
мають лише IP та DNS subjectAltNames, які належать запитуючому вузлу, і не мають URI та Email subjectAltNames (розібрати x509 Certificate Signing Request в spec.request, щоб перевірити subjectAltNames)
Інші складові автентифікації
Усі процеси завантаження TLS, описані у цьому документі, стосуються kubelet. Однак інші компоненти можуть потребувати прямого звʼязку з kube-apiserver. Особливо важливим є kube-proxy, який є частиною компонентів вузла Kubernetes і запускається на кожному вузлі, але може також включати інші компоненти, такі як моніторинг чи роботу з мережею.
Подібно до kubelet, цим іншим компонентам також потрібен метод автентифікації у kube-apiserver. У вас є кілька варіантів для генерації цих облікових даних:
Традиційний спосіб: Створіть і розповсюдьте сертифікати так само як ви це робили для kubelet перед завантаженням TLS.
DaemonSet: Оскільки сам kubelet завантажується на кожний вузол і достатньо для запуску базових служб, ви можете запускати kube-proxy та інші служби, специфічні для вузла, не як самостійний процес, а як daemonset у просторі імен kube-system. Оскільки він буде в кластері, ви можете надати йому відповідний службовий обліковий запис з відповідними дозволами для виконання своїх дій. Це може бути найпростішим способом налаштування таких служб.
Затвердження за допомогою kubectl
Запити на сертифікати можна затвердити поза процесом затвердження, вбудованим у контролер
керування.
Контролер підпису не негайно підписує всі запити на сертифікати. Замість цього він чекає, доки вони не будуть позначені статусом "Approved" відповіднbv привілейованим користувачем. Цей процес призначений для того, щоб дозволити автоматичне затвердження, яке обробляється зовнішнім контролером затвердження або controller-manager, реалізованим в основному controller-manager. Однак адміністратори кластера також можуть вручну затверджувати запити на сертифікати за допомогою kubectl. Адміністратор може отримати перелік CSRs за допомогою kubectl get csr та детально описати один з них за допомогою kubectl describe csr <name>. Адміністратор може затвердити або відхилити CSR за допомогою kubectl certificate approve <name> та kubectl certificate deny <name>.
3.15 - Змінювані політики допуску
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.32 [alpha]
На цій сторінці ви можете ознайомитися з інформацією про MutatingAdmissionPolicies.
Що таке MutatingAdmissionPolicies?
Зміна політик доступу пропонує декларативну альтернативу мутації вебхуків допуску, яка виконується в процесі роботи.
Мутуючі політики допуску використовують Common Expression Language (CEL) для оголошення мутацій ресурсів. Мутації можуть бути визначені або за допомогою apply configuration, яка обʼєднується за допомогою server side apply merge strategy, або за допомогою JSON patch.
Мутуючі політики допуску дуже добре конфігуруються, що дозволяє авторам політик визначати політики, які можна параметризувати і масштабувати на ресурси відповідно до потреб адміністраторів кластерів.
З яких ресурсів складається політика
Політика зазвичай складається з трьох ресурсів:
MutatingAdmissionPolicy описує абстрактну логіку політики (наприклад: «ця політика встановлює певну мітку на певне значення»).
Ресурс параметрів надає інформацію для MutatingAdmissionPolicy, щоб зробити її конкретним твердженням (наприклад, «встановіть мітку owner на щось на кшталт company.example.com»). Ресурси параметрів відносяться до ресурсів Kubernetes, доступних у Kubernetes API. Вони можуть бути вбудованими типами або розширеннями, такими як CustomResourceDefinition (CRD). Наприклад, ви можете використовувати ConfigMap як параметр.
Привʼязка MutatingAdmissionPolicyBinding повʼязує вищезгадані ресурси (MutatingAdmissionPolicy і параметр) разом і забезпечує масштабування. Якщо ви хочете встановити мітку owner лише для Pods, а не для інших типів API, привʼязка — це місце, де ви вказуєте цю мутацію.
Для того, щоб політика мала ефект, необхідно визначити принаймні MutatingAdmissionPolicy та відповідне MutatingAdmissionPolicyBinding.
Якщо MutatingAdmissionPolicy не потрібно налаштовувати через параметри, просто залиште spec.paramKind у MutatingAdmissionPolicy не вказаним.
Початок роботи з MutatingAdmissionPolicies
Мутація політики допуску є частиною панелі управління кластером. Ви повинні створювати та розгортати їх з великою обережністю. Нижче описано, як швидко поекспериментувати з мутуючими політиками допуску.
Створення MutatingAdmissionPolicy
Нижче наведено приклад політики MutatingAdmissionPolicy. Ця політика змінює нові створені pod'и так, щоб вони мали контейнер sidecar, якщо він не існує.
Поле .spec.mutations складається зі списку виразів, які обчислюють патчі до ресурсів. Патчі можуть бути як патчами застосувати конфігурації, так і патчами JSON Patch.
Після обчислення всіх виразів сервер API застосовує ці зміни до ресурсу, який проходить через допуск.
Щоб налаштувати мутуючу політику допуску для використання в кластері, необхідна привʼязка. MutatingAdmissionPolicy буде активною лише тоді, коли існує відповідна привʼязка із зазначеним spec.policyName, що збігається із spec.name політики.
Після створення привʼязки і політики будь-який запит до ресурсу, який відповідає spec.matchConditions політики, буде викликати набір визначених мутацій.
У наведеному вище прикладі створення Pod додасть мутацію mesh-proxy initContainer:
Ресурси параметрів дозволяють відокремити конфігурацію політики від її
визначення. Політика може визначати paramKind, який окреслює GVK ресурсу параметра, а потім привʼязка політики привʼязує політику за назвою (через policyName) до певного ресурсу параметра через paramRef.
Будь ласка, зверніться до статті ресурси параметрів для отримання додаткової інформації.
ApplyConfiguration
Вирази MutatingAdmissionPolicy завжди є CEL. Кожен вираз застосовної конфігурації повинен приводити до CEL-обʼєкта (оголошеного за допомогою ініціалізації Object()).
Застосовні конфігурації не можуть змінювати атомарні структури, map або масиви через ризик випадкового видалення значень, не включених у застосовну конфігурацію.
CEL-вирази мають доступ до типів обʼєктів, необхідних для створення застосовних конфігурацій:
Object — CEL-тип обʼєкта ресурсу.
Object.<fieldName> — CEL-тип поля обʼєкта (наприклад, Object.spec)
Object.<fieldName1>.<fieldName2>...<fieldNameN> — CEL-тип вкладеного поля (наприклад, Object.spec.containers)
CEL-вирази мають доступ до вмісту запиту API, організованого в CEL-змінні, а також до деяких інших корисних змінних:
object — Обʼєкт з вхідного запиту. Для запитів DELETE дорівнює нулю.
oldObject — Наявний обʼєкт. Для запитів на створення дорівнює нулю.
request — Атрибути запиту до API.
params — Ресурс параметра, на який посилається привʼязка політики, що оцінюється. Заповнюється тільки якщо політика має ParamKind.
namespaceObject — Обʼєкт простору імен, до якого належить вхідний обʼєкт. Значення дорівнює нулю для кластерних ресурсів.
variables — Мапа складених змінних, від імені до ледачо обчисленого значення. Наприклад, до змінної з іменем foo можна отримати доступ як variables.foo.
authorizer.requestResource — CEL ResourceCheck, сконструйований з authorizer і сконфігурований з ресурсом запиту.
Властивості apiVersion, kind, metadata.name, metadata.generateName і metadata.labels завжди доступні з кореня обʼєкта. Інші властивості метаданих недоступні.
JSONPatch
Цю ж саму мутацію можна записати у вигляді JSON Patch наступним чином:
CEL-вирази мають доступ до типів, необхідних для створення патчів і об'єктів JSON:
JSONPatch — CEL тип операцій JSON Patch. JSONPatch має поля op, from, path та value. Дивіться JSON patch для більш детальної інформації. Поле value може мати будь-яке значення: рядок, ціле число, масив, мапа або об'єкт. Якщо встановлено, поля path і from мають бути встановлені на рядок JSON-покажчик, де CEL-функція jsonpatch.escapeKey() може бути використана для витіснення ключів шляху, що містять / і ~.
Object — CEL-тип обʼєкта ресурсу.
Object.<fieldName> — CEL-тип поля обʼєкта (наприклад, Object.spec)
Object.<fieldName1>.<fieldName2>...<fieldNameN> — CEL-тип вкладеного поля (наприклад, Object.spec.containers)
CEL-вирази мають доступ до вмісту запиту API, організованого в CEL-змінні, а також до деяких інших корисних змінних:
object — Обʼєкт з вхідного запиту. Для запитів DELETE дорівнює нулю.
oldObject — Наявний обʼєкт. Для запитів на створення дорівнює нулю.
request — Атрибути запиту до API.
params — Ресурс параметра, на який посилається привʼязка політики, що оцінюється. Заповнюється тільки якщо політика має ParamKind.
namespaceObject — Обʼєкт простору імен, до якого належить вхідний обʼєкт. Значення дорівнює нулю для кластерних ресурсів.
variables — Мапа складених змінних, від імені до ліниво обчислюваного значення. Наприклад, до змінної з іменем foo можна отримати доступ як variables.foo.
jsonpatch.escapeKey — Виконує екранування клавіш JSONPatch. Символи ~ та / екрануються як ~0 та ~1 відповідно.
Доступні тільки назви властивостей виду [a-zA-Z_.-/][a-zA-Z0-9_.-/]*.
3.16 - Правила перевірки допуску
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.30 [stable]
Ця сторінка надає огляд правил перевірки допуску.
Що таке правила перевірки допуску?
Правила перевірки допуску пропонують декларативну, вбудовану альтернативу веб-хукам перевірки допуску.
Правила перевірки допуску використовують мову загальних виразів (Common Expression Language, CEL). Правила перевірки допуску мають високу налаштовуваність, що дозволяє авторам визначати правила, які можуть бути параметризовані та обмежені ресурсами за необхідності адміністраторами кластера.
Які ресурси складають правила
Зазвичай правило складається з трьох ресурсів:
ValidatingAdmissionPolicy описує абстрактну логіку правил (наприклад: "ці праивла переконуються, що певна мітка встановлена у певне значення").
ValidatingAdmissionPolicyBinding повʼязує вищезазначені ресурси разом і надає обмеження області дії. Якщо вам потрібно вимагати встановлення мітки owner для Pods, привʼязка визначає, де ви будете вказувати це обмеження.
Ресурс параметра надає інформацію для ValidatingAdmissionPolicy, щоб зробити його конкретним висловленням (наприклад, "мітка owner повинна бути встановлена на щось, що закінчується на .company.com"). Вбудований тип, такий як ConfigMap або CRD, визначає схему ресурсу параметра. Обʼєкти ValidatingAdmissionPolicy вказують, який Kind вони очікують для свого ресурсу параметру.
Для того щоб правила мали ефект, обовʼязково повинні бути визначені принаймні ValidatingAdmissionPolicy та відповідне ValidatingAdmissionPolicyBinding.
Якщо ValidatingAdmissionPolicy не потребує налаштування через параметри, просто залиште
spec.paramKind в ValidatingAdmissionPolicy не вказаним.
Початок роботи з правилами перевірки допуску
Правила перевірки допуску є частиною панелі управління кластера. Ви повинні писати та розгортати їх з великою обережністю. Нижче наведено інструкції щодо швидкого експерименту з правилами перевірки допуску.
spec.validations містить вирази CEL, які використовують Мову загальних виразів (CEL), щоб перевірити запит. Якщо вираз обчислюється як false, перевірка валідації застосовується згідно з полем spec.failurePolicy.
Примітка:
Ви можете швидко перевірити вирази CEL у пісочниці CEL.
Для налаштування правил перевірки допуску для використання в кластері потрібна привʼязка. Нижче наведено приклад ValidatingAdmissionPolicyBinding.:
Вище наведено простий приклад використання ValidatingAdmissionPolicy без налаштованого параметра.
Дії валідації
Кожний ValidatingAdmissionPolicyBinding повинен вказати одну або декілька validationActions, щоб визначити, як validations правила будуть застосовані.
Підтримувані validationActions:
Deny: Невдалий результат валідації призводить до відхиленого запиту.
Warn: Невдалий результат валідації повідомляється клієнту запиту як попередження.
Audit: Невдалий результат валідації включається в подію аудиту для запиту до API.
Наприклад, щоб одночасно попереджувати клієнтів про невдалий результат валідації та аудитувати невдалий результат валідації, використовуйте:
validationActions:[Warn, Audit]
Deny та Warn не можуть бути використані разом, оскільки ця комбінація надмірно дублює невдалий результат валідації як у тілі відповіді API, так і в HTTP заголовках попередження.
validation, який оцінюється як false, завжди застосовується відповідно до цих дій. Невдачі, визначені полем failurePolicy, застосовуються відповідно до цих дій тільки у випадку, якщо failurePolicy встановлено на Fail (або не вказано), інакше невдачі ігноруються.
Ресурси параметрів дозволяють відокремити конфігурацію правил від їх визначення. Правило може визначити paramKind, який визначає GVK ресурсу параметра, а потім привʼязка правила повʼязує його за іменем (через policyName) з певним ресурсом параметра через paramRef.
Якщо потрібна конфігурація параметра, наведено приклад ValidatingAdmissionPolicy з конфігурацією параметра.
Поле spec.paramKind ValidatingAdmissionPolicy вказує на вид використовуваних ресурсів для параметризації цього правила. У цьому прикладі це налаштовано за допомогою ресурсів ReplicaLimit. Зверніть увагу в цьому прикладі, як вираз CEL посилається на параметри через змінну CEL params, наприклад, params.maxReplicas. spec.matchConstraints вказує, для яких ресурсів ця правило призначена для валідації. Зверніть увагу, що як параметр можуть використовуватися і стандартні типи, такі як ConfigMap.
Поля spec.validations містять вирази CEL. Якщо вираз оцінюється як false, то валідаційна перевірка здійснюється відповідно до поля spec.failurePolicy.
Автор правил перевірки допуску відповідає за надання параметра CRD ReplicaLimit.
Для налаштування правил перевірки допуску для використання в кластері створюються привʼязка та ресурс параметра. Наведено приклад ValidatingAdmissionPolicyBinding який використовує кластерний параметр — той самий параметр буде використовуватися для валідації кожного запиту до ресурсу, який відповідає привʼязці:
Цей ресурс параметра правил обмежує Deployments до максимуму 3 репліки.
В правилі допуску може бути кілька привʼязок. Щоб привʼязати всі інші середовища до обмеження maxReplicas 100, створіть інший ValidatingAdmissionPolicyBinding:
apiVersion:admissionregistration.k8s.io/v1kind:ValidatingAdmissionPolicyBindingmetadata:name:"replicalimit-binding-nontest"spec:policyName:"replicalimit-policy.example.com"validationActions:[Deny]paramRef:name:"replica-limit-prod.example.com"namespace:"default"matchResources:namespaceSelector:matchExpressions:- key:environmentoperator:NotInvalues:- test
Зверніть увагу, що ця привʼязка застосовує різний параметр до ресурсів, які не знаходяться в середовищі test.
Для кожного запиту на допуск, сервер API оцінює вирази CEL кожної комбінації (правило, привʼязка, параметр), які відповідають запиту. Для того, щоб запит був прийнятий, він повинен пройти всі оцінки.
Якщо кілька привʼязок відповідають запиту, правило буде оцінено для кожної, і вони всі повинні пройти оцінку, щоб правило вважали пройденим.
Якщо кілька параметрів відповідають одній привʼязці, правила будуть оцінені для кожного параметра, і вони також повинні всі пройти, щоб привʼязка вважалася пройденою. Привʼязки можуть мати критерії відповідності, що перекриваються. Правило оцінюється для кожної відповідної комбінації привʼязка-параметр. Правило може бути оцінено навіть кілька разів, якщо йому відповідає кілька привʼязок, або одна привʼязка, яка відповідає кільком параметрам.
Обʼєкт params, який представляє ресурс параметра, не буде встановлений, якщо ресурс параметра не був привʼязаний, тому для правил, які потребують ресурсу параметра, може бути корисно додати перевірку, щоб забезпечити його привʼязку. Ресурс параметра не буде привʼязаний і params буде null, якщо paramKind правила або paramRef привʼязки не вказані.
Для випадків використання, що потребують конфігурації параметра, ми рекомендуємо додати перевірку параметра в spec.validations[0].expression:
- expression: "params != null"
message: "params missing but required to bind to this policy"
Необовʼязкові параметри
Буває зручно мати можливість мати необовʼязкові параметри як частину ресурсу параметра і валідувати їх лише в разі їх присутності. У CEL є has(), який перевіряє, чи існує переданий ключ. Крім того, CEL реалізує булеве скорочення. Якщо перша половина логічного ОБО відноситься до true, то друга половина не оцінюється (оскільки результат усього ОБО буде true в будь-якому випадку).
Поєднуючи ці дві можливості, ми можемо забезпечити можливість валідації необовʼязкових параметрів:
Тут спочатку ми перевіряємо, що необовʼязковий параметр присутній за допомогою !has(params.optionalNumber).
Якщо optionalNumber не був визначений, то вираз скорочується, оскільки
!has(params.optionalNumber) оцінюється як true.
Якщо optionalNumber був визначений, тоді друга половина CEL виразу буде
оцінена, і optionalNumber буде перевірений, щоб забезпечити, що він містить значення від 5 до 10 включно.
Параметри на рівні простору імен
Як автор ValidatingAdmissionPolicy та його ValidatingAdmissionPolicyBinding, ви можете вибрати, чи вказувати параметри на рівні кластера або на рівні простору імен. Якщо ви вказуєте namespace для paramRef привʼязки, панель управління шукає параметри лише в цьому просторі імен.
Проте, якщо namespace не вказано в ValidatingAdmissionPolicyBinding, сервер API може шукати відповідні параметри в просторі імен, до якого відноситься запит. Наприклад, якщо ви робите запит на зміну ConfigMap у просторі імен default, і існує відповідна ValidatingAdmissionPolicyBinding без вказаного namespace, то сервер API шукає обʼєкт параметра в default. Цей дизайн дозволяє конфігурувати правило, що залежить від простору імен ресурсу, який обробляється, для отримання більш точного контролю.
Селектор параметрів
Крім вказання параметра у привʼязці за допомогою name, ви можете вибрати замість цього вказати селектор міток, таким чином, всі ресурси paramKind правила та namespace параметра (якщо застосовується), які відповідають селектору міток, вибираються для оцінки. Див. селектор для отримання додаткової інформації про те, як селектори міток відбирають ресурси.
Якщо умову виконується для декількох параметрів, правила оцінюються для кожного знайденого параметра, а результати будуть оцінені разом через логічне І (AND).
Якщо надано namespace, для вибору допускаються лише обʼєкти paramKind у вказаному просторі імен. В іншому випадку, коли namespace порожній, а paramKind обмежений простором імен, використовується namespace, використаний у запиті для допуску.
Перевірка авторизації
Ми ввели перевірку авторизації для ресурсів параметрів. Очікується, що користувач матиме доступ на читання до ресурсів, на які посилається paramKind у ValidatingAdmissionPolicy та paramRef у ValidatingAdmissionPolicyBinding.
Зверніть увагу, що якщо ресурс у paramKind не вдасться знайти через restmapper, потрібен доступ на читання до всіх ресурсів груп.
Правило помилок
failurePolicy визначає, як обробляються неправильні конфігурації та вирази CEL, що викликають помилку в правилах перевірки допуску. Допустимі значення: Ignore або Fail.
Ignore означає, що помилка під час виклику ValidatingAdmissionPolicy ігнорується, і запит API може продовжуватися.
Fail означає, що помилка під час виклику ValidatingAdmissionPolicy призводить до відмови в прийнятті та відхилення запиту API.
Зверніть увагу, що failurePolicy визначається всередині ValidatingAdmissionPolicy:
spec.validations[i].expression представляє вираз, який буде оцінений за допомогою CEL. Для отримання додаткової інформації див. Специфікацію мови CEL. Вирази CEL мають доступ до вмісту запиту/відповіді допуску, організованого в змінні CEL, а також деяких інших корисних змінних:
'object' — Обʼєкт з вхідного запиту. Значення null для запитів DELETE.
'oldObject' — Наявний обʼєкт. Значення null для запитів CREATE.
'params' — Ресурс параметра, на який посилається привʼязка правила, яке оцінюється. Значення null, якщо ParamKind не вказано.
namespaceObject — Простір імен, як ресурс Kubernetes, до якого належить вхідний обʼєкт. Значення null, якщо вхідний обʼєкт має область видимості кластера.
authorizer — Авторизатор CEL. Може використовуватися для виконання перевірок авторизації для принципала (автентифікованого користувача) запиту. Див. AuthzSelectors та Authz в документації бібліотеки Kubernetes CEL для отримання додаткових відомостей.
authorizer.requestResource — Скорочення для перевірки авторизації, налаштоване з ресурсом запиту (група, ресурс, (субресурс), простір імен, імʼя).
apiVersion, kind, metadata.name і metadata.generateName завжди доступні з кореня обʼєкта. Інші властивості метаданих не доступні.
Рівність у масивах із типом списку 'set' або 'map' ігнорує порядок елементів, тобто [1, 2] == [2, 1]. Конкатенація у масивах з x-kubernetes-list-type використовує семантику типу списку:
'set': X + Y виконує обʼєднання, де позиції масиву всіх елементів в X зберігаються, а
неперетинаючися елементи в Y додаються, зберігаючи їх частковий порядок.
'map': X + Y виконує злиття, де позиції масиву всіх ключів в X зберігаються, але значення
перезаписуються значеннями в Y, коли множини ключів X і Y перетинаються. Елементи в Y з неперетинаючимися ключами додаються, зберігаючи їх частковий порядок.
spec.validation[i].reason представляє машинночитаний опис причини невдачі цієї валідації. Якщо це перша валідація в списку, яка завершується невдачею, ця причина, а також відповідний код відповіді HTTP використовуються у відповіді HTTP клієнту. Підтримувані зараз причини: Unauthorized, Forbidden, Invalid, RequestEntityTooLarge. Якщо не встановлено, StatusReasonInvalid використовується у відповіді клієнту.
Відповідність запитів: matchConditions
Ви можете визначити умови відповідності для ValidatingAdmissionPolicy, якщо вам потрібно дотримуватися детального фільтрування запитів. Ці умови корисні, якщо ви виявите, що правила відповідності, objectSelectors та namespaceSelectors все ще не забезпечують потрібного фільтрування. Умови відповідності — це вирази CEL. Усі умови відповідності повинні оцінюватися як true для ресурсу, який має бути оцінений.
Нижче наведено приклад, що ілюструє кілька різних використань умов відповідності:
apiVersion:admissionregistration.k8s.io/v1kind:ValidatingAdmissionPolicymetadata:name:"demo-policy.example.com"spec:failurePolicy:FailmatchConstraints:resourceRules:- apiGroups:["*"]apiVersions:["*"]operations:["CREATE","UPDATE"]resources:["*"]matchConditions:- name:'exclude-leases'# Імʼя кожної умови має бути унікальнимexpression:'!(request.resource.group == "coordination.k8s.io" && request.resource.resource == "leases")'# Шукати збіг із запитами non-lease.- name:'exclude-kubelet-requests'expression:'!("system:nodes" in request.userInfo.groups)'# Шукати збіг із запитами від користувачів, які не є користувачами вузла.- name:'rbac'# Оминати запити RBAC.expression:'request.resource.group != "rbac.authorization.k8s.io"'validations:- expression:"!object.metadata.name.contains('demo') || object.metadata.namespace == 'demo'"
Умови відповідності мають доступ до тих самих змінних CEL, що й вирази валідації.
У випадку помилки при оцінці умови відповідності правило не оцінюється. Рішення про відхилення запиту визначається наступним чином:
Якщо будь-яка умова відповідності оцінюється як false (незалежно від інших помилок), сервер API пропускає політику.
apiVersion:admissionregistration.k8s.io/v1kind:ValidatingAdmissionPolicymetadata:name:"demo-policy.example.com"spec:failurePolicy:FailmatchConstraints:resourceRules:- apiGroups:["apps"]apiVersions:["v1"]operations:["CREATE","UPDATE"]resources:["deployments"]validations:- key:"high-replica-count"expression:"object.spec.replicas > 50"messageExpression:"'Deployment spec.replicas set to ' + string(object.spec.replicas)"
Коли запит API перевіряється за цим правилом допуску, отримана подія аудиту буде виглядати так:
#Записанаподіяаудиту{
"kind": "Event",
"apiVersion": "audit.k8s.io/v1",
"annotations": {
"demo-policy.example.com/high-replica-count": "Deployment spec.replicas set to 128"#іншіанотації... }
#іншіполя...}
У цьому прикладі анотація буде включена лише тоді, коли spec.replicas у Deployment більше 50, в іншому випадку вираз CEL оцінюється як null, і анотація не буде включена.
Зверніть увагу, що ключі анотацій аудиту мають префікс з імʼям ValidatingAdmissionWebhook та /. Якщо інший контролер допуску, такий як вебхук допуску, використовує точно такий самий ключ анотації аудиту, то значення першого контролера допуску, який включає анотацію аудиту, буде включено в аудит-подію, а всі інші значення будуть ігноруватися.
Вираз повідомлення
Щоб повертати більш дружнє повідомлення, коли правило відхиляє запит, ми можемо використовувати вираз CEL для створення повідомлення з spec.validations[i].messageExpression. Подібно до виразу валідації, вираз повідомлення має доступ до object, oldObject, request, params та namespaceObject. На відміну від валідації, вираз повідомлення має повертати рядок.
Наприклад, щоб краще інформувати користувача про причину відхилення, коли правило посилається на параметр, ми можемо мати наступну валідацію:
apiVersion:admissionregistration.k8s.io/v1kind:ValidatingAdmissionPolicymetadata:name:"deploy-replica-policy.example.com"spec:paramKind:apiVersion:rules.example.com/v1kind:ReplicaLimitmatchConstraints:resourceRules:- apiGroups:["apps"]apiVersions:["v1"]operations:["CREATE","UPDATE"]resources:["deployments"]validations:- expression:"object.spec.replicas <= params.maxReplicas"messageExpression:"'object.spec.replicas must be no greater than ' + string(params.maxReplicas)"reason:Invalid
Після створення обʼєкту параметрів, який обмежує репліки до 3 та налаштування привʼязки, коли ми спробуємо створити Deployment з 5 репліками, ми отримаємо наступне повідомлення.
$ kubectl create deploy --image=nginx nginx --replicas=5error: failed to create deployment: deployments.apps "nginx" is forbidden: ValidatingAdmissionPolicy 'deploy-replica-policy.example.com' with binding 'demo-binding-test.example.com' denied request: object.spec.replicas must be no greater than 3
Це більш інформативно, ніж статичне повідомлення "занадто багато реплік".
Вираз повідомлення має перевагу над статичним повідомленням, визначеним у spec.validations[i].message, якщо обидва визначені. Однак, якщо вираз повідомлення не вдається оцінити, буде використано статичне повідомлення. Крім того, якщо вираз повідомлення оцінюється як багаторядковий рядок, результат оцінки буде відкинутий, і використовуватиметься статичне повідомлення, якщо воно присутнє. Зауважте, що статичне повідомлення перевіряється на відповідність багаторядковим рядкам.
Перевірка типів
Під час створення або оновлення визначення правил валідації процес валідації аналізує вирази, які він містить, та повідомляє про будь-які синтаксичні помилки, відхиляючи визначення, якщо виявлено помилки. Потім перевіряються змінні, на які є посилання, на наявність помилок типів, включаючи відсутні поля та плутанину типів, відносно відповідних типів spec.matchConstraints. Результат перевірки типів можна отримати з status.typeChecking. Наявність status.typeChecking вказує на завершення перевірки типів, а порожнє status.typeChecking означає, що помилок не виявлено.
apiVersion:admissionregistration.k8s.io/v1kind:ValidatingAdmissionPolicymetadata:name:"deploy-replica-policy.example.com"spec:matchConstraints:resourceRules:- apiGroups:["apps"]apiVersions:["v1"]operations:["CREATE","UPDATE"]resources:["deployments"]validations:- expression:"object.replicas > 1"# має бути "object.spec.replicas > 1"message:"must be replicated"reason:Invalid
apiVersion:admissionregistration.k8s.io/v1kind:ValidatingAdmissionPolicymetadata:name:"replica-policy.example.com"spec:matchConstraints:resourceRules:- apiGroups:["apps"]apiVersions:["v1"]operations:["CREATE","UPDATE"]resources:["deployments","replicasets"]validations:- expression:"object.replicas > 1"# має бути "object.spec.replicas > 1"message:"must be replicated"reason:Invalid
буде мати декілька типів та результат перевірки типів кожного типу у повідомленні про попередження.
Відсутнє зіставлення за шаблоном. Якщо spec.matchConstraints.resourceRules містить "*" у будь-якому з apiGroups, apiVersions або resources, типи, які відповідають "*", не будуть перевірені.
Кількість збігів типів обмежена до 10. Це робиться для запобігання використанню правил, що вручну вказує занадто багато типів, що може споживати занадто багато обчислювальних ресурсів. Порядок спадання групи, версії, а потім ресурсу, 11-а комбінація та після буде ігноруватися.
Перевірка типів не впливає на поведінку правил жодним чином. Навіть якщо під час перевірки типів виявляються помилки, політика буде продовжувати оцінюватися. Якщо під час оцінки виникають помилки, політика вибере свій результат.
Перевірка типів не застосовується до CRD, включаючи відповідні типи CRD та посилання на paramKind. Підтримка CRD зʼявиться у майбутній версії.
Склад змінних
Якщо вираз стає занадто складним або частина виразу повторно використовується та має високі обчислювальні витрати, ви можете винести частину виразів у змінні. Змінна — це вираз з назвою, на який можна посилатися пізніше в variables в інших виразах.
Змінна оцінюється ліниво (lazily), під час першого посилання на неї. Про будь-яку помилку, що виникає під час оцінки, буде повідомлено під час оцінки вказаного виразу, на який посилається змінна. Як результат, так і можлива помилка запамʼятовуються і лише один раз враховуються при оцінці під час виконання.
Порядок змінних важливий, оскільки змінна може посилатися на інші змінні, які визначені перед нею. Це упорядкування запобігає циклічним посиланням.
Наведено більш складний приклад змінних, що забезпечує відповідність імен репозиторіїв образів середовищу, визначеному у просторі імен.
# Це правило забезпечує виконання умови, що всі контейнери deployment повинні мати збіг репозиторієв образів з міткою середовища його простору імен.# За винятком deployment, позначених як "exempt", або будь-яких контейнерів, які не належать організації "example.com" (наприклад, загальні sidecar).# Наприклад, якщо у просторі імен є мітка {"environment": "staging"}, всі контейнери повинні мати репозиторій, який є або staging.example.com/*# або не містить "example.com" взагалі, якщо deployment має мітку {"exempt": "true"}.apiVersion:admissionregistration.k8s.io/v1kind:ValidatingAdmissionPolicymetadata:name:"image-matches-namespace-environment.policy.example.com"spec:failurePolicy:FailmatchConstraints:resourceRules:- apiGroups:["apps"]apiVersions:["v1"]operations:["CREATE","UPDATE"]resources:["deployments"]variables:- name:environmentexpression:"'environment' in namespaceObject.metadata.labels ? namespaceObject.metadata.labels['environment'] : 'prod'"- name:exemptexpression:"'exempt' in object.metadata.labels && object.metadata.labels['exempt'] == 'true'"- name:containersexpression:"object.spec.template.spec.containers"- name:containersToCheckexpression:"variables.containers.filter(c, c.image.contains('example.com/'))"validations:- expression:"variables.exempt || variables.containersToCheck.all(c, c.image.startsWith(variables.environment + '.'))"messageExpression:"'only ' + variables.environment + ' images are allowed in namespace ' + namespaceObject.metadata.name"
З правилом, привʼязаним до простору імен default, який має мітку environment: prod, спроба створити Deployment буде відхилена.
error: failed to create deployment: deployments.apps "invalid" is forbidden: ValidatingAdmissionPolicy 'image-matches-namespace-environment.policy.example.com' with binding 'demo-binding-test.example.com' denied request: only prod images are allowed in namespace default
4 - Відомі мітки, анотації та позначення
Kubernetes зберігає всі мітки, анотації та taint в просторах імен kubernetes.io і k8s.io.
Цей документ одночасно є і довідником, і точкою для призначення значень.
Мітки, анотації та позначення, використані в обʼєктах API
Якщо ця анотація встановлена в значення true для FlowSchema або PriorityLevelConfiguration, то spec для цього обʼєкта управляється kube-apiserver. Якщо сервер API не розпізнає обʼєкт APF, а ви анотуєте його для автоматичного оновлення, сервер API видаляє весь обʼєкт. У іншому випадку сервер API не управляє специфікацією обʼєкта. Докладніше читайте Обслуговування обовʼязкових та рекомендованих обʼєктів конфігурації.
Використовується для: Обʼєкти, які використовуються як батьки ApplySet.
Використання цієї анотації є альфа-версією. Для Kubernetes версії 1.32 ви можете використовувати цю анотацію на Secrets, ConfigMaps або власних ресурсах, якщо CustomResourceDefinition, що їх визначає, має мітку applyset.kubernetes.io/is-parent-type.
Частина специфікації, яка використовується для реалізації обрізки на основі ApplySet в kubectl. Ця анотація застосовується до батьківського обʼєкта, який використовується для відстеження ApplySet для розширення області застосування ApplySet поза власним простором імен батьківського обʼєкта (якщо є). Значення — це розділені комами імена просторів імен, в яких знаходяться обʼєкти, відмінні від простору імен батьківського обʼєкта.
Використовується для: Обʼєкти, які використовуються як батьки ApplySet.
Використання цієї анотації є альфа-версією. Для Kubernetes версії 1.32 ви можете використовувати цю анотацію на Secrets, ConfigMaps або власних ресурсах, якщо CustomResourceDefinition, що їх визначає, має мітку applyset.kubernetes.io/is-parent-type.
Частина специфікації, яка використовується для реалізації обрізки на основі ApplySet в kubectl. Ця анотація застосовується до батьківського об’єкта, який використовується для відстеження ApplySet для оптимізації списку об’єктів-членів ApplySet. Не є обовʼязковою у специфікації ApplySet, оскільки інструменти можуть виконувати виявлення або використовувати іншу оптимізацію. Однак, починаючи з версії Kubernetes 1.32, kubectl вимагає її наявності. Якщо присутнє, значення цієї анотації має бути розділеним комами списком типів груп у форматі повної назви, тобто. <resource>.<group>.
Використовується для: Обʼєкти, які використовуються як батьки ApplySet.
Для Kubernetes версії 1.32 ви можете використовувати цю анотацію на Secrets, ConfigMaps або власних ресурсах, якщо CustomResourceDefinition, що їх визначає, має мітку applyset.kubernetes.io/is-parent-type.
Частина специфікації, яка використовується для реалізації обрізки на основі ApplySet в kubectl. Ця анотація застосовується до батьківського об’єкта, який використовується для відстеження ApplySet для оптимізації списку об’єктів-членів ApplySet. Не є обовʼязковою у специфікації ApplySet, оскільки інструменти можуть виконувати виявлення або використовувати іншу оптимізацію. Однак, починаючи з версії Kubernetes 1.32, kubectl вимагає її наявності. Якщо присутнє, значення цієї анотації має бути розділеним комами списком типів груп у форматі повної назви, тобто. <resource>.<group>.
Використовується для: Обʼєкти, які використовуються як батьки ApplySet.
Використання цієї мітки є альфа-версією. Для Kubernetes версії 1.32 ви можете використовувати цю мітку на Secrets, ConfigMaps або власних ресурсах, якщо CustomResourceDefinition, що їх визначає, має мітку applyset.kubernetes.io/is-parent-type.
Частина специфікації, яка використовується для реалізації обрізки на основі ApplySet в kubectl. Ця мітка робить об’єкт батьківським об’єктом ApplySet. Його значенням є унікальний ідентифікатор ApplySet, який походить від ідентифікатора самого батьківського об’єкта. Цей ідентифікатор повинен бути кодуванням base64 (з використанням безпечного для URL кодування RFC4648) хешу group-kind-name-namespace обʼєкта, на якому він знаходиться, у вигляді: <base64(sha256(<name>.<namespace>.<kind>.<group>))>. Між значенням цієї мітки та UID обʼєкта немає звʼязку.
Використовується для: Custom Resource Definition (CRD)
Використання цієї мітки є альфа-версією. Частина специфікації, яка використовується для реалізації обрізки на основі ApplySet в kubectl. Ви можете встановити цю мітку на CustomResourceDefinition (CRD), щоб ідентифікувати тип власного ресурсу, який він визначає (а не сам CRD) як дозволеного батька для ApplySet. Єдиним допустимим значенням для цієї мітки є "true"; якщо ви хочете позначити CRD як такий, що не є дійсним батьком для ApplySets, пропустіть цю мітку.
Використання цієї мітки є альфа-версією. Частина специфікації, яка використовується для реалізації обрізки на основі ApplySet в kubectl. Ця мітка робить обʼєкт членом ApplySet. Значення мітки повинно збігатися зі значенням мітки applyset.kubernetes.io/id у батьківському обʼєкті.
Використовується для: Обʼєкти, які використовуються як батьки ApplySet.
Використання цієї анотації є альфа-версією. Для Kubernetes версії 1.32 ви можете використовувати цю анотацію на Secrets, ConfigMaps або власних ресурсах, якщо CustomResourceDefinition, що їх визначає, має мітку applyset.kubernetes.io/is-parent-type.
Частина специфікації, яка використовується для реалізації обрізки на основі ApplySet в kubectl. Ця анотація застосовується до батьківського обʼєкта, який використовується для відстеження ApplySet, щоб вказати, який інструментарій керує цим ApplySet. Інструментарій повинен відмовлятися змінювати ApplySets, що належать іншим інструментам. Значення має бути у форматі <toolname>/<semver>.
apps.kubernetes.io/pod-index (beta)
Тип: Label
Приклад: apps.kubernetes.io/pod-index: "0"
Використовується для: Pod
Коли контролер StatefulSet створює Pod для StatefulSet, він встановлює цю мітку на Pod. Значення мітки є порядковим індексом створюваного Podʼа.
Дивіться Мітка індексу Podʼа в темі StatefulSet для отримання більш детальної інформації. Зверніть увагу на PodIndexLabel, має бути увімкнено, щоб цю мітку можна було додати до Podʼів.
Ця анотація додається до створених вимог на ресурси. Її значення відповідає назві вимоги ресурсу у файлі .spec будь-якого Podʼа(ів), для якого було створено ResourceClaim. Ця анотація є внутрішньою деталлю реалізації динамічного розподілу ресурсів. Вам не потрібно читати або змінювати значення цієї анотації.
Коли ця анотація має значення "true", автомасштабувальнику кластера дозволяється виселяти Pod навіть якщо інші правила зазвичай забороняють це робити. Автомасштабувальник кластера ніколи не виселяє Podʼи, для яких ця анотація явно встановлена у значення "false"; ви можете встановити це значення для важливого Podʼа, який ви хочете продовжувати виконувати. Якщо цю анотацію не задано, то автомасштабувальник кластера поводитиметься так, як він поводиться на рівні Podʼа.
Ця анотація використовується у маніфестах для позначення обʼєкта як локальної конфігурації, яку не слід передавати до API Kubernetes.
Значення "true" для цієї анотації вказує, що обʼєкт використовується лише клієнтськими інструментами і не повинен бути надісланий на сервер API.
Значення "false" може бути використане для вказівки, що обʼєкт повинен бути надісланий на сервер API, навіть якщо в іншому випадку він вважався б локальним.
Ця анотація є частиною специфікації функцій Kubernetes Resource Model (KRM), яка використовується Kustomize та подібними сторонніми інструментами. Наприклад, Kustomize видаляє обʼєкти з цією анотацією з кінцевого результату збирання коду.
Ця анотація дозволяє вам вказати профіль безпеки AppArmor для контейнера в межах Podʼа Kubernetes. Починаючи з версії Kubernetes 1.30, це слід налаштовувати за допомогою поля appArmorProfile. Щоб дізнатися більше, перегляньте підручник з AppArmor. У підручнику показано, як використовувати AppArmor для обмеження можливостей і доступу контейнера.
Вказаний профіль визначає набір правил і обмежень, яких повинен дотримуватися процес у контейнері. Це допомагає забезпечити дотримання політик безпеки та ізоляцію ваших контейнерів.
internal.config.kubernetes.io/* (reserved prefix)
Тип: Annotation
Використовується для: Всі обʼєкти
Цей префікс зарезервований для внутрішнього використання інструментами, які діють як оркестратори відповідно до специфікації функцій Моделі Ресурсів Kubernetes (KRM). Анотації з цим префіксом є внутрішніми для процесу оркестрування та не зберігаються в маніфестах у файловій системі. Іншими словами, інструмент-оркестратор повинен встановлювати ці анотації при зчитуванні файлів з локальної файлової системи та видаляти їх при записі результатів роботи функцій назад у файлову систему.
Функція KRM не повинна змінювати анотації з цим префіксом, якщо не зазначено інше для конкретної анотації. Це дозволяє інструментам оркестрування додавати додаткові внутрішні анотації без необхідності вносити зміни в існуючі функції.
Ця анотація записує шлях до файлу маніфесту, з якого було завантажено обʼєкт, у вигляді розділеного слешами, незалежного від ОС, відносного шляху. Шлях є відносним до фіксованого розташування у файловій системі, визначеного інструментом-оркестратором.
Ця анотація є частиною специфікації функцій Моделі Ресурсів Kubernetes (KRM), яка використовується Kustomize та подібними сторонніми інструментами.
Функція KRM не повинна змінювати цю анотацію у вхідних обʼєктах, якщо вона не змінює файли, на які посилається. Функція KRM може включати цю анотацію у обʼєкти, які вона генерує.
internal.config.kubernetes.io/index
Тип: Annotation
Приклад: internal.config.kubernetes.io/index: "2"
Використовується для: Всі обʼєкти
Ця анотація записує позицію (нумерація з нуля) YAML-документа, який містить обʼєкт, у файлі маніфесту, з якого було завантажено обʼєкт. Зазначимо, що YAML-документи розділяються трьома тире (---) і кожен може містити один обʼєкт. Якщо ця анотація не вказана, мається на увазі значення 0.
Ця анотація є частиною специфікації функцій Моделі Ресурсів Kubernetes (KRM), яка використовується Kustomize та подібними сторонніми інструментами.
Функція KRM не повинна змінювати цю анотацію у вхідних обʼєктах, якщо вона не змінює файли, на які посилається. Функція KRM може включати цю анотацію в обʼєкти, які вона генерує.
Ця анотація записує остаточні бали, які планувальник обчислює з балів, отриманих від втулків планувальника для розрахунку балів, що використовуються https://sigs.k8s.io/kube-scheduler-simulator.
Kubelet заповнює це значення за допомогою runtime.GOARCH, як визначено в Go. Це може бути корисним, якщо ви використовуєте змішані вузли ARM і x86.
kubernetes.io/os
Тип: Label
Приклад: kubernetes.io/os: "linux"
Використовується для: Node, Pod
Для вузлів Kubelet заповнює це значення за допомогою runtime.GOOS, як визначено в Go. Це може бути корисним, якщо у вашому кластері використовуються різні операційні системи (наприклад, змішані вузли Linux і Windows).
Ви також можете встановити цю мітку на Pod. Kubernetes дозволяє встановлювати будь-яке значення для цієї мітки; якщо ви використовуєте цю мітку, ви все ж повинні встановити її на рядок Go runtime.GOOS для операційної системи, з якою працює цей Pod.
Якщо значення мітки kubernetes.io/os для Pod не відповідає значенню мітки на вузлі, Kubelet на цьому вузлі не прийме Pod. Проте це не враховується планувальником kube-scheduler. Крім того, Kubelet відмовляється запускати Pod, якщо ви вказали операційну систему Pod, яка не відповідає операційній системі вузла, на якому працює цей Kubelet. Більше деталей можна знайти в розділі Операційна система Podʼа.
API-сервер Kubernetes (частина панелі управління) встановлює цю мітку на всі простори імен. Значення мітки встановлюється на імʼя простору імен. Ви не можете змінити значення цієї мітки.
Це корисно, якщо ви хочете вказати конкретний простір імен за допомогою селектора міток selector.
kubernetes.io/limit-ranger
Тип: Annotation
Приклад: kubernetes.io/limit-ranger: "LimitRanger plugin set: cpu, memory request for container nginx; cpu, memory limit for container nginx"
Використовується для: Pod
Стандартно Kubernetes не надає жодних обмежень на ресурси, тобто, якщо ви явно не визначите обмеження, ваш контейнер може споживати необмежену кількість CPU та памʼяті. Ви можете визначити стандартний запит або обмеження для Podʼів. Це робиться шляхом створення LimitRange у відповідному просторі імен. Podʼи, розгорнуті після визначення LimitRange, матимуть ці обмеження, застосовані до них. Анотація kubernetes.io/limit-ranger фіксує, що стандартні ресурси були вказані для Pod і були успішно застосовані. Для детальнішої інформації читайте про LimitRanges.
Коли kubelet створює статичний Pod на основі заданого маніфесту, він додає цю анотацію до статичного Pod. Значення анотації — це UID Pod. Зверніть увагу, що kubelet також встановлює .spec.nodeName у поточне імʼя вузла, ніби Pod було заплановано на цей вузол.
Для статичного Pod, створеного kubelet на вузлі, на API-сервері створюється дзеркальний Pod. Kubelet додає анотацію, щоб позначити, що цей Pod фактично є дзеркальним Podʼом. Значення анотації копіюється з анотації kubernetes.io/config.hash, яка є UID Pod.
При оновленні Pod з цією встановленою анотацією анотацію не можна змінити або видалити. Якщо у Podʼа немає цієї анотації, її не можна додати під час оновлення Pod.
kubernetes.io/config.source
Тип: Annotation
Приклад: kubernetes.io/config.source: "file"
Використовується для: Pod
Ця анотація додається kubelet, щоб вказати звідки походить Pod. Для статичних Pod значення анотації може бути одним із file або http, залежно від того, де розташований маніфест Podʼа. Для Podʼа, створеного на API-сервері, а потім запланованого на поточний вузол, значення анотації — api.
Для вказання того, як слід керувати надбудовою, ви можете використовувати мітку addonmanager.kubernetes.io/mode. Ця мітка може мати одне з трьох значень: Reconcile, EnsureExists або Ignore.
Reconcile: Ресурси надбудови періодично будуть зведені до очікуваного стану. Якщо є будь-які відмінності, менеджер надбудов буде переробляти, змінювати конфігурацію або видаляти ресурси за потреби. Цей режим є стандартним режимом, якщо мітка не вказана.
EnsureExists: Ресурси надбудов будуть перевірятися лише на наявність, але не будуть змінюватися після створення. Менеджер надбудов створить або переробить ресурси, коли відсутній жоден екземпляр ресурсу з таким імʼям.
Ignore: Ресурси надбудов будуть ігноруватися. Цей режим корисний для надбудов, які не сумісні з менеджером надбудов або керуються іншим контролером.
Для отримання докладнішої інформації див. Addon-manager.
kube-apiserver встановлює цю мітку для будь-якого обʼєкта APIService, який сервер API створив автоматично. Мітка позначає, як панель управління повинна керувати цим APIService. Ви не повинні додавати, змінювати або видаляти цю мітку самостійно.
Примітка:
Обʼєкти APIService, що автоматично керуються, видаляються kube-apiserver, коли він не має вбудованого або власного API ресурсу користувача, який відповідає API-групі/версії APIService.
Є два можливих значення:
onstart: APIService повинен бути зведений до очікуваного стану при старті сервера API, але не під час інших операцій.
true: Сервер API повинен безперервно зводити цей APIService до очікуваного стану.
Ця анотація на Service вказує, чи повинен контролер точок доступу створювати точки доступу для неготових Podʼів. Точки доступу цих Service зберігають свої DNS-записи і продовжують отримувати трафік для Service з моменту, коли kubelet запускає всі контейнери у Pod і позначає його як Running, до моменту, коли kubelet зупиняє всі контейнери і видаляє Pod з сервера API.
Ця анотація використовувалася для налаштування поведінки масштабування для HorizontalPodAutoscaler (HPA) у попередніх версіях Kubernetes. Вона дозволяла вказати, як HPA має масштабувати Podʼи вгору або вниз, включаючи встановлення вікон стабілізації та політик масштабування. Встановлення цієї анотації не має жодного ефекту в будь-якому підтримуваному випуску Kubernetes.
Kubelet заповнює цю мітку імʼям хоста вузла. Зверніть увагу, що імʼя хоста може бути змінене з "фактичного" імʼя хоста за допомогою прапорця --hostname-override для kubelet.
Ця мітка також використовується як частина ієрархії топології. Дивіться topology.kubernetes.io/zone для отримання додаткової інформації.
kubernetes.io/enforce-mountable-secrets є застарілим, починаючи з Kubernetes v1.32. Використовуйте окремі простори імен для ізоляції доступу до змонтованих секретів.
Значення цієї анотації повинно бути true, щоб вона набула чинності. Коли ви встановлюєте цю анотацію у значення "true", Kubernetes застосовує наступні правила для Podʼів, що працюють з цим ServiceAccount:
Secretʼи, змонтовані як томи, повинні бути перелічені в полі secrets ServiceAccount.
Secretʼи, на які посилаються у полі envFrom для контейнерів (включаючи контейнери sidecar і контейнери ініціалізації), також повинні бути перелічені в полі secrets ServiceAccount. Якщо будь-який контейнер в Podʼі посилається на Secret, який не перелічений в полі secrets ServiceAccount (навіть якщо посилання позначене як optional), то Pod не запуститься, і буде згенеровано помилку, що вказує на невідповідне посилання на секрет.
Secretʼи, на які посилається у полі imagePullSecrets Podʼа, повинні бути присутніми в полі imagePullSecrets ServiceAccount, Pod не запуститься, і буде згенеровано помилку, що вказує на невідповідне посилання на секрет для отримання образу.
Під час створення або оновлення Podʼа перевіряються ці правила. Якщо Pod не відповідає їм, він не запуститься, і ви побачите повідомлення про помилку. Якщо Pod уже працює, і ви змінюєте анотацію kubernetes.io/enforce-mountable-secrets на значення true, або ви редагуєте повʼязаний ServiceAccount для видалення посилання на Secret, який вже використовується Podʼом, Pod продовжить працювати.
Ви можете додати мітки до певних робочих вузлів, щоб виключити їх зі списку серверів бекенда, які використовуються зовнішніми балансувальниками навантаження. Наступна команда може бути використана для виключення робочого вузла зі списку серверів бекенда у наборі серверів бекенда:
Ця анотація використовується для встановлення Вартості видалення Podʼа, що дозволяє користувачам впливати на порядок зменшення масштабування ReplicaSet. Значення анотації аналізується як тип int32.
Ця анотація контролює, чи повинен бути виселений Pod DaemonSet за допомогою ClusterAutoscaler. Ця анотація повинна бути вказана на Pod DaemonSet у маніфесті DaemonSet. Коли ця анотація встановлена в значення "true", ClusterAutoscaler дозволяє виселити Pod DaemonSet, навіть якщо інші правила зазвичай цього уникнули б. Щоб заборонити ClusterAutoscaler виселяти Pod DaemonSet, ви можете встановити цю анотацію в значення "false" для важливих Pod DaemonSet. Якщо ця анотація не встановлена, тоді ClusterAutoscaler діє згідно своєї загальної поведінки (тобто виселяє Pod DaemonSets на основі своєї конфігурації).
Примітка:
Ця анотація впливає тільки на Podʼи DaemonSet.
kubernetes.io/ingress-bandwidth
Тип: Annotation
Приклад: kubernetes.io/ingress-bandwidth: 10M
Використовується для: Pod
Ви можете застосувати обмеження пропускної здатності відповідно для якості обслуговування до Pod щоб ефективно обмежити його доступну пропускну здатність. Вхідний трафік до Podʼа обробляється за допомогою упорядкованої черги пакетів для ефективного керування даними. Щоб обмежити пропускну здатність Podʼа, напишіть файл визначення обʼєкта JSON і вкажіть швидкість передачі даних за допомогою анотації kubernetes.io/ingress-bandwidth. Одиницею, яка використовується для вказівки швидкості вхідної передачі, є біти на секунду, в форматі Кількості. Наприклад, 10M означає 10 мегабіт на секунду.
Примітка:
Анотація формування трафіку вхідного напрямку є експериментальною функцією. Якщо ви хочете ввести підтримку формування трафіку, вам слід додати втулок bandwidth до конфігураційного файлу CNI (стандартно /etc/cni/net.d) і переконатися, що відповідний виконавчий файл включений у теку CNI bin (стандартно /opt/cni/bin).
kubernetes.io/egress-bandwidth
Тип: Annotation
Приклад: kubernetes.io/egress-bandwidth: 10M
Використовується для: Pod
Вихідний трафік з Podʼа обробляється за допомогою застосування політик, які просто відкидають пакети, що перевищують налаштовану швидкість. Обмеження, які ви встановлюєте на Pod, не впливають на пропускну здатність інших Podʼів. Щоб обмежити пропускну здатність Podʼа, напишіть файл визначення обʼєкта JSON і вкажіть швидкість передачі даних за допомогою анотації kubernetes.io/egress-bandwidth. Одиницею, яка використовується для вказівки швидкості вихідної передачі, є біти на секунду, в форматі Кількості. Наприклад, 10M означає 10 мегабіт на секунду.
Примітка:
Анотація формування трафіку вихідного напрямку є експериментальною функцією. Якщо ви хочете ввести підтримку формування трафіку, вам слід додати втулок bandwidth до конфігураційного файлу CNI (стандартно /etc/cni/net.d) і переконатися, що відповідний виконавчий файл включений у теку CNI bin (стандартно /opt/cni/bin).
Kubelet заповнює це значенням типу екземпляра, як визначено постачальником хмарних послуг. Це буде встановлено лише в разі використання постачальника хмарних послуг. Це налаштування є зручним, якщо ви хочете спрямувати певні робочі навантаження на певні типи екземплярів, але, як правило, ви хочете покладатися на планувальник Kubernetes для виконання планування на основі ресурсів. Ви повинні намагатися планувати на основі властивостей, а не на основі типів екземплярів (наприклад, потребувати GPU, замість потреби в g2.2xlarge).
Коли ця анотація встановлена на PersistentVolumeClaim (PVC), це вказує на те, що життєвий цикл PVC пройшов через початкове налаштування звʼязування. Коли вона присутня, ця інформація змінює те, як панель управління тлумачить стан обʼєктів PVC. Значення цієї анотації не має значення для Kubernetes.
Використовується для: PersistentVolume, PersistentVolumeClaim
Якщо ця анотація встановлена на PersistentVolume або PersistentVolumeClaim, це вказує на те, що звʼязка зберігання (PersistentVolume → PersistentVolumeClaim або PersistentVolumeClaim → PersistentVolume) була встановлена контролером. Якщо анотація не встановлена, а звʼязка зберігання вже існує, відсутність цієї анотації означає, що звʼязка була встановлена вручну. Значення цієї анотації не має значення.
Ця анотація додається до PersistentVolume (PV), який був динамічно розподілений Kubernetes. Її значення — це імʼя втулка тому, який створив том. Вона служить як користувачам (щоб показати, звідки походить PV), так і Kubernetes (щоб визначити динамічно розподілені PV у своїх рішеннях).
Використовується для: PersistentVolume, PersistentVolumeClaim
Ця анотація додається до PersistentVolume (PV) та PersistentVolumeClaim (PVC), які мають бути динамічно розподілені або видалені відповідним драйвером CSI через власну функціональну можливість CSIMigration. Коли ця анотація встановлена, компоненти Kubernetes "припиняють боротьбу", і external-provisioner діятиме з обʼєктами.
На Node: kubelet або зовнішній cloud-controller-manager заповнюють мітку інформацією від постачальника хмарних послуг. Мітку буде встановлено лише в разі використання постачальника хмарних послуг. Однак ви можете розглянути можливість встановлення її на вузлах, якщо це має сенс у вашій топології.
На PersistentVolume: постачальники томів, що мають відомості про топологію, автоматично встановлюють обмеження на спорідненість вузла для PersistentVolume.
Зона представляє собою логічний домен невдачі. Для підвищення доступності звичайно, кластери Kubernetes охоплюють декілька зон. Хоча точне визначення зони залишається на вибір реалізацій інфраструктури, загальні властивості зон включають дуже низьку мережеву затримку всередині зони, відсутність вартості мережевого трафіку всередині зони та незалежність від невдач інших зон. Наприклад, вузли всередині зони можуть використовувати один мережевий комутатор, але вузли в різних зонах цього робити не повинні.
Регіон представляє собою більшу область, що складається з однієї або декількох зон. Кластери Kubernetes, що охоплюють декілька регіонів, є не звичайним явищем. Хоча точне визначення зони або регіону залишається на вибір реалізацій інфраструктури, загальні властивості регіону включають в себе вищу мережеву затримку між ними, ненульову вартість мережевого трафіку між ними та незалежність від невдач інших зон або регіонів. Наприклад, вузли всередині регіону можуть використовувати спільну інфраструктуру живлення (наприклад, джерело безперебійного живлення або генератор), але вузли в різних регіонах зазвичай ні.
Kubernetes робить кілька припущень щодо структури зон та регіонів:
регіони та зони є ієрархічними: зони є строгими підмножинами регіонів, і жодна зона не може бути в двох регіонах;
імена зон є унікальними у всіх регіонах; наприклад, регіон "africa-east-1" може складатися з зон "africa-east-1a" та "africa-east-1b".
Можна вважати за безпечне припущення, що мітки топології не змінюються. Навіть якщо мітки є строго змінюваними, споживачі можуть припускати, що данний вузол не буде переміщений між зонами без знищення та перестворення.
Kubernetes може використовувати цю інформацію різними способами. Наприклад, планувальник автоматично намагається розподілити Podʼи в ReplicaSet по вузлах в однозонному кластері (щоб зменшити вплив відмови вузла, див. kubernetes.io/hostname). З кластерами, які охоплюють кілька зон, ця поведінка розподілу також застосовується до зон (для зменшення впливу відмови зони). Це досягається за допомогою SelectorSpreadPriority.
SelectorSpreadPriority — це найкраще розміщення. Якщо зони у вашому кластері є гетерогенними (наприклад, різна кількість вузлів, різні типи вузлів або різні вимоги до ресурсів Podʼа), це розміщення може завадити рівномірному розподілу ваших Podʼів між зонами. Якщо це потрібно, ви можете використовувати однорідні зони (однакова кількість і типи вузлів), щоб зменшити ймовірність нерівномірного розподілу.
Планувальник (за допомогою предиката VolumeZonePredicate) також буде забезпечувати, що Podʼи, які вимагають певного тома, будуть розміщені лише в тій же зоні, що й цей том. Томи не можуть бути підключені в різних зонах.
Якщо PersistentVolumeLabel не підтримує автоматичне додавання міток до ваших PersistentVolume, варто розглянути можливість додавання міток вручну (або підтримку PersistentVolumeLabel). З PersistentVolumeLabel планувальник перешкоджає Podʼам монтувати томи в інших зонах. Якщо ваша інфраструктура не має цього обмеження, вам не потрібно додавати мітки зони до томів взагалі.
Використовується для: PersistentVolume, PersistentVolumeClaim
Ця анотація може використовуватися для PersistentVolume(PV) або PersistentVolumeClaim(PVC), щоб вказати імʼя StorageClass. Коли обидва атрибути storageClassName та анотація volume.beta.kubernetes.io/storage-class вказані, анотація volume.beta.kubernetes.io/storage-class має перевагу над атрибутом storageClassName.
Ця анотація застаріла. Замість цього встановіть поле storageClassName для PersistentVolumeClaim або PersistentVolume.
Якщо вузол має анотацію volumes.kubernetes.io/controller-managed-attach-detach, його операції прикріплення та відʼєднання зберігання керуються контролеромприкріплення/відʼєднання тому.
Коли kubelet працює на операційній системі Microsoft Windows, він автоматично позначає міткою свій вузол, щоб зафіксувати версію Windows Server, що використовується.
Значення мітки має формат "MajorVersion.MinorVersion.BuildNumber".
Цю анотацію буде автоматично додано до обʼєкта CSINode, який зіставляється з вузлом, на якому встановлено CSIDriver. Ця анотація показує назву вбудованого втулка, який було перенесено. Його значення залежить від вбудованого коду хмарного провайдера зберігання.
Наприклад, якщо тип зберігання вбудованого хмарного провайдера є CSIMigrationvSphere, обʼєкт CSINodes для вузла повинен бути оновлений наступним чином: storage.alpha.kubernetes.io/migrated-plugins: "kubernetes.io/vsphere-volume"
service.kubernetes.io/headless
Тип: Label
Приклад: service.kubernetes.io/headless: ""
Використовується для: Service
Панель управління додає цю мітку до об’єкта Endpoints, коли Service-власник є headless. Щоб дізнатися більше, прочитайте Headless Services.
Ця анотація використовувалася для увімкнення підказок про топологію на Serviceʼах. Підказки щодо топології з тих пір були перейменовані: концепцію зараз називають Маршрутизацією з урахуванням топології. Встановлення анотації на Auto для Service налаштовує панель управління Kubernetes додавати підказки про топологію на EndpointSlices, повʼязані з цим Service. Ви також можете явно встановити анотацію на Disabled.
Якщо ви використовуєте версію Kubernetes, старішу за 1.32, перевірте документацію для цієї версії Kubernetes, щоб побачити, як працює маршрутизація на основі топології в цьому випуску.
Інших дійсних значень для цієї анотації немає. Якщо вам не потрібні підказки щодо топології для Service, не додавайте цю анотацію.
service.kubernetes.io/topology-mode
Тип: Annotation
Приклад: service.kubernetes.io/topology-mode: Auto
Використовується для: Service
Ця анотація надає спосіб визначення того, як Serviceʼи обробляють топологію мережі; наприклад, ви можете налаштувати Service так, щоб Kubernetes віддавав перевагу збереженню трафіку між клієнтом і сервером в межах однієї топологічної зони. У деяких випадках це може допомогти зменшити витрати або покращити роботу мережі.
Панель управління додає цю мітку лише до Secretʼів, які мають тип kubernetes.io/service-account-token. Значення цієї мітки записує дату (в форматі ISO 8601, в часовому поясі UTC), коли панель управління востаннє бачила запит, де клієнт автентифікувався за допомогою токена службового облікового запису.
Якщо легасі-токен використовувався останній раз до того, як кластер отримав цю функцію (додану у Kubernetes v1.26), то мітка не встановлена.
Панель управління автоматично додає цю мітку до автогенерованих Secretʼів з типом kubernetes.io/service-account-token, за умови, що у вас увімкнено функціональну можливістьLegacyServiceAccountTokenCleanUp. У Kubernetes 1.32 ця поведінка включена стандартно. Ця мітка позначає токен на основі Secret як недійсний для автентифікації. Значення цієї мітки записує дату (в форматі ISO 8601, в часовому поясі UTC), коли панель управління виявляє, що автогенерований Secret не використовувався протягом вказаного періоду (стандартно, один рік).
Ця мітка використовується для позначення контролера або сутності, яка керує EndpointSlice. Мета цієї мітки — забезпечити можливість керувати різними обʼєктами EndpointSlice різними контролерами або сутностями в межах одного та самого кластера.
Цю мітку можна встановити на значення "true" для ресурсу Endpoints, щоб позначити, що контролер EndpointSliceMirroring не повинен дублювати цей ресурс за допомогою EndpointSlices.
Якщо ресурс IngressClass має цю анотацію встановлену на значення "true", новий ресурс Ingress без вказаного класу буде призначено цей стандартний клас.
Ви можете використовувати цю анотацію для налаштування додаткових параметрів Ingress, що використовує NGINX Ingress Controller. Анотація configuration-snippet стандартно ігнорується, починаючи з версії 1.9.0 контролера ingress. Щоб використовувати цю анотацію, потрібно явно увімкнути налаштування контролера NGINX ingress allow-snippet-annotations. Увімкнення цієї анотації може бути небезпечним у кластері з декількома орендарями, оскільки це може дозволити людям з обмеженими правами доступу отримувати всі Secrets у кластері.
kubernetes.io/ingress.class (deprecated)
Тип: Annotation
Використовується для: Ingress
Примітка:
Починаючи з v1.18, ця анотація застаріла на користь spec.ingressClassName.
kubernetes.io/cluster-service (deprecated)
Тип: Label
Приклад: kubernetes.io/cluster-service: "true"
Використовується для: Service
Ця мітка вказує на те, що Service надає послугу кластеру, якщо її значення встановлено у true. Коли ви запускаєте kubectl cluster-info, утиліта запитує Services, для яких цю мітку встановлено у значення true.
Втім, встановлення цієї мітки на будь-якій Service є застарілим.
Якщо один ресурс StorageClass має цю анотацію встановлену на значення "true", новий ресурс PersistentVolumeClaim без вказаного класу буде призначено цей стандартний клас.
Kubelet може встановити цю анотацію на вузлі, щоб вказати його налаштовану адресу IPv4 та/або IPv6.
Коли kubelet запускається з прапорцем --cloud-provider, встановленим на будь-яке значення (включає як зовнішні, так і застарілі постачальники хмарних служб у вбудованому коді), він встановлює цю анотацію на вузлі, щоб вказати IP-адресу, встановлену з командного рядка за допомогою прапорця --node-ip. Цей IP перевіряється постачальником хмарних послуг на дійсність за допомогою cloud-controller-manager.
Контролер Job у kube-controller-manager встановлює це як мітку та анотацію для Podʼів, створених з режимом завершення Indexed.
Зверніть увагу, що для того, щоб це було додано як мітку Podʼа, необхідно увімкнути функціональну можливість PodIndexLabel, інакше це буде просто анотацією.
Використовується для: Jobs and Pods controlled by CronJobs
Ця анотація використовується для запису оригінального (очікуваного) часу створення для завдання, коли це завдання є частиною CronJob. Панель управління встановлює значення цього часового позначення у форматі RFC3339. Якщо завдання належить до CronJob з вказаною часовою зоною, тоді мітка часу знаходиться в цій часовій зоні. В іншому випадку мітка часу відображається в локальному часі controller-manager.
Значення анотації — це імʼя контейнера, яке є типовим для цього Podʼа. Наприклад, команди kubectl logs або kubectl exec без прапорця -c або --container використовуватимуть цей типовий контейнер.
Значення анотації — це імʼя контейнера, яке є типовим для логування для цього Podʼа. Наприклад, команда kubectl logs без прапорця -c або --container використовуватиме цей типовий контейнер.
Примітка:
Ця анотація є застарілою. Замість цього, слід використовувати анотацію kubectl.kubernetes.io/default-container. Версії Kubernetes 1.25 і новіші ігнорують цю анотацію.
Командний рядок інструменту kubectl використовує цю анотацію як застарілий механізм для відстеження змін. Цей механізм був замінений на Server-Side Apply.
Використовується для: Deployment, ReplicaSet, StatefulSet, DaemonSet, Pod
Ця анотація містить останній час перезапуску ресурсу (Deployment, ReplicaSet, StatefulSet або DaemonSet), під час якого kubectl запустив розгортання для примусового створення нових Podʼів. Команда kubectl rollout restart <RESOURCE> ініціює перезапуск шляхом виправлення шаблону метаданих усіх Podʼів ресурсу з цією анотацією. У наведеному вище прикладі останній час перезапуску показано як 21 червня 2024 року о 17:27:41 UTC.
Не слід вважати, що ця анотація відображає дату/час останнього оновлення; окремі зміни могли бути внесені з моменту останнього ручного розгортання.
Якщо ви вручну встановите цю анотацію на Pod, нічого не станеться. Побічний ефект перезапуску повʼязаний з тим, як працює управління робочим навантаженням і шаблонізацією Pod.
Панель управління додає цю анотацію до обʼєкта Endpoints, якщо повʼязаний Service має більше 1000 резервних точок доступу. Анотація вказує на те, що обʼєкт Endpoints перевищив потужність, і кількість точок доступу була скорочена до 1000.
Якщо кількість резервних точок доступу опускається нижче 1000, то панель управління видаляє цю анотацію.
Ця анотація встановлює обʼєкт Endpoints, який представляє мітку часу (Мітка часу зберігається у форматі дата-часового рядка RFC 3339. Наприклад, '2018-10-22T19:32:52.1Z'). Це позначка часу останньої зміни в деякому обʼєкті Pod або Service, яка спричинила зміну в обʼєкті Endpoints.
Раніше панель управління встановлювала анотацію на обʼєкті Endpoints. Ця анотація містила наступну інформацію:
Хто є поточним лідером.
Час, коли було здобуто поточне лідерство.
Тривалість оренди (лідерства) у секундах.
Час, коли поточна оренда (поточне лідерство) повинна бути продовжена.
Кількість переходів лідерства, які сталися у минулому.
Тепер Kubernetes використовує Leases для керування призначенням лідера для панелі управління Kubernetes.
batch.kubernetes.io/job-tracking (deprecated)
Тип: Annotation
Приклад: batch.kubernetes.io/job-tracking: ""
Використовується для: Jobs
Раніше наявність цієї анотації на обʼєкті Job вказувала на те, що панель управління відстежує статус Job за допомогою завершувачів. Додавання або видалення цієї анотації більше не має впливу (з версії Kubernetes v1.27 і пізніше). Всі Jobs відстежуються за допомогою завершувачів.
job-name (deprecated)
Тип: Label
Приклад: job-name: "pi"
Використовується для: Jobs та Pods, що керуються через Jobs
Примітка:
Починаючи з Kubernetes 1.27, ця мітка застаріла. Kubernetes 1.27 та новіші версії ігнорують цю мітку і використовують мітку з префіксом job-name.
controller-uid (deprecated)
Тип: Label
Приклад: controller-uid: "$UID"
Використовується для: Jobs та Pods, що керуються через Jobs
Примітка:
Починаючи з Kubernetes 1.27, ця мітка застаріла. Kubernetes 1.27 та новіші версії ігнорують цю мітку і використовують мітку з префіксом controller-uid.
batch.kubernetes.io/job-name
Тип: Label
Приклад: batch.kubernetes.io/job-name: "pi"
Використовується для: Jobs та Pods, що керуються через Jobs
Ця мітка використовується як зручний спосіб для отримання Podʼів, що належать Job. Мітка job-name походить від імені Job і надає простий спосіб отримати Podʼи, що належать Job.
Використовується для: Jobs та Pods, що керуються через Jobs
Ця мітка використовується як програмний спосіб отримати всі Podʼи, що належать Job. controller-uid є унікальним ідентифікатором, який встановлюється в поле selector, щоб контролер Job міг отримати всі відповідні Podʼи.
Ця анотація вимагає активування контролера допуску PodTolerationRestriction. Ключ цієї анотації дозволяє призначати толерантності для простору імен, і будь-які нові створені в цьому просторі імен Podʼи отримають ці толерантності.
Ця анотація корисна лише тоді, коли активований контролер допуску (Alpha) PodTolerationRestriction. Значення анотації — це JSON-документ, який визначає список допустимих толерантностей для простору імен, який анотується. Під час створення Pod або зміни його толерантностей, сервер API перевіряє толерантності, щоб переконатися, що вони згадуються у списку дозволених. Pod буде прийнятий лише у випадку успішної перевірки.
Kubelet виявляє тиск на памʼять на основі значень memory.available і allocatableMemory.available, спостережуваних на вузлі. Потім спостережені значення порівнюються з відповідними пороговими значеннями, які можна встановити на kubelet, щоб визначити, чи потрібно додати / видалити умову вузла та позначення.
Kubelet виявляє тиск на дискову памʼять на основі значень imagefs.available, imagefs.inodesFree, nodefs.available і nodefs.inodesFree (тільки для Linux), спостережуваних на вузлі. Потім спостережені значення порівнюються з відповідними пороговими значеннями, які можна встановити на kubelet, щоб визначити, чи потрібно додати / видалити умову вузла та позначення.
Це спочатку встановлюється kubelet, коли використовуваний хмарний постачальник вказує на потребу в додатковій конфігурації мережі. Тільки коли маршрут на хмарі налаштований належним чином, хмарний постачальник видаляє позначення.
Kubelet перевіряє D-значення розміру /proc/sys/kernel/pid_max та PID, використані Kubernetes на вузлі, щоб отримати кількість доступних PID, які вказуються метрикою pid.available. Потім цю метрику порівнюють з відповідним пороговим значенням, яке можна встановити на kubelet, щоб визначити, чи потрібно додати / видалити умову вузла та позначення.
Користувач може вручну додати позначення на вузол, відмітивши його як такий що вийшов з ладу. Якщо вузол позначено як неробочий з цією міткою, Podʼи на вузлі буде примусово видалено, якщо на ньому немає відповідних толерантностей, і операції відокремлення тома для Podʼів, що завершуються на вузлі, будуть виконані негайно. Це дозволяє швидко відновити Podʼи на вузлі, що вийшов з ладу, на іншому вузлі.
Увага:
Дивіться Невідповідне вимкнення вузла для отримання додаткових відомостей про те, коли і як використовувати це позначення.
Встановлює цю позначку на вузлі, щоб позначити його як непридатний для використання, коли kubelet запускається з "зовнішнім" хмарним постачальником, доки контролер з cloud-controller-manager ініціалізує цей вузол, а потім видаляє позначку.
Якщо вузол перебуває у визначеному хмарним постачальником стані вимкнення, вузол отримує відповідну позначку з node.cloudprovider.kubernetes.io/shutdown і ефект позначки NoSchedule.
Ці мітки використовуються компонентом виявлення функцій вузла (NFD), щоб оголошувати функції на вузлі. Усі вбудовані мітки використовують простір імен мітки feature.node.kubernetes.io та мають формат feature.node.kubernetes.io/<назва-функції>: "true". NFD має багато точок розширення для створення міток, специфічних для постачальника або застосунку. Для отримання детальної інформації дивіться посібник з налаштування.
Для вузлів, на яких заплановано master виявлення функцій вузла (NFD) , ця анотація записує версію майстра NFD. Вона використовується лише для інформаційних цілей.
Ця анотація записує список міток функцій вузла, розділених комами, керованих виявленням функцій вузла (NFD). NFD використовує це для внутрішнього механізму. Ви не повинні редагувати цю анотацію самостійно.
Ця анотація зберігає розділені комами список розширених ресурсів, керованих виявленням функцій вузла (NFD). NFD використовує це для внутрішнього механізму. Ви не повинні редагувати цю анотацію самостійно.
nfd.node.kubernetes.io/node-name
Тип: Label
Приклад: nfd.node.kubernetes.io/node-name: node-1
Використовується для: Nodes
Мітка вказує, який вузол націлений обʼєкт NodeFeature. Творці обʼєктів NodeFeature повинні встановлювати цю мітку, а споживачі обʼєктів повинні використовувати її для фільтрації особливостей, призначених для певного вузла.
Примітка:
Ці мітки або анотації Node Feature Discovery (NFD) застосовуються лише до вузлів, де працює NFD. Щоб дізнатися більше про NFD та його компоненти, перейдіть до його офіційної документації.
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує балансувальник навантаження для Service на основі цієї анотації. Значення визначає, як часто балансувальник навантаження записує записи логу. Наприклад, якщо ви встановите значення на 5, записи логу будуть відбуватися з інтервалом у 5 секунд.
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує балансувальник навантаження для Service на основі цієї анотації. Ведення логу доступу активується, якщо ви встановите анотацію на значення "true".
Приклад: service.beta.kubernetes.io/aws-load-balancer-access-log-enabled: example
Використовується для: Service
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує балансувальник навантаження для Service на основі цієї анотації. Балансувальник навантаження записує логи до корзини S3 з іменем, яке ви вказуєте.
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує балансувальник навантаження для Service на основі цієї анотації. Балансувальник навантаження записує обʼєкти журналів з префіксом, який ви вказуєте.
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує теґи (концепція AWS) для балансувальника навантаження на основі розділених комами пар ключ/значення у значенні цієї анотації.
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує прослуховувач балансувальника навантаження на основі значення цієї анотації.
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує балансувальник навантаження на основі цієї анотації. Налаштування затримки зʼєднання балансувальника навантаження залежить від значення, яке ви встановлюєте.
Якщо ви налаштовуєте затримку зʼєднання для Service з type: LoadBalancer, і ви використовуєте хмару AWS, інтеграція налаштовує період затримки на основі цієї анотації. Значення, яке ви встановлюєте, визначає тайм-аут затримки у секундах.
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує балансувальник навантаження на основі цієї анотації. Балансувальник має налаштований період тайм-ауту бездіяльності (у секундах), який застосовується до його зʼєднань. Якщо протягом періоду тайм-ауту бездіяльності не було відправлено або отримано жодних даних, балансувальник закриває зʼєднання.
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує балансувальник навантаження на основі цієї анотації. Якщо ви встановите цю анотацію в значення "true", кожен вузол балансувальника навантаження розподіляє запити рівномірно серед зареєстрованих цілей у всіх увімкнених зонах доступності. Якщо ви вимкнете перехресне балансування зон, кожен вузол балансувальника навантаження розподіляє запити рівномірно серед зареєстрованих цілей лише у своїй зоні доступності.
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує балансувальник навантаження на основі цієї анотації. Значення є розділеним комами списком ідентифікаторів виділення еластичних IP-адрес.
Ця анотація має сенс тільки для Service з type: LoadBalancer, де балансувальник навантаження є мережевим балансувальником AWS.
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує балансувальник навантаження на основі цієї анотації. Значення анотації є розділеним комами списком додаткових груп безпеки AWS VPC для налаштування балансувальника навантаження.
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує балансувальник навантаження на основі цієї анотації. Значення анотації визначає кількість послідовних успішних перевірок стану для бекенду, щоб вважати його справним для передавання трафіку.
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує балансувальник навантаження на основі цієї анотації. Значення анотації визначає інтервал, в секундах, між запитами перевірки стану, які виконує балансувальник навантаження.
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує балансувальник навантаження на основі цієї анотації. Значення анотації визначає частину шляху URL, яка використовується для HTTP перевірок стану.
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує балансувальник навантаження на основі цієї анотації. Значення анотації визначає порт, до якого підключається балансувальник навантаження під час виконання перевірок стану.
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує балансувальник навантаження на основі цієї анотації. Значення анотації визначає спосіб, яким балансувальник навантаження перевіряє стан бекендів.
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує балансувальник навантаження на основі цієї анотації. Значення анотації вказує кількість секунд до того, як запит, який ще не вдався, автоматично вважається неуспішним.
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує балансувальник навантаження на основі цієї анотації. Значення анотації визначає кількість послідовних невдалих перевірок стану, необхідних для того, щоб бекенд вважася несправним для передачі трафіку.
Інтеграція менеджера контролера хмарних служб з AWS Elastic Load Balancing налаштовує балансувальник навантаження на основі цієї анотації. Коли ви встановлюєте цю анотацію у значення "true", інтеграція налаштовує внутрішній балансувальник навантаження.
Якщо ви встановлюєте цю анотацію на Service, і також анотуєте цей Service з service.beta.kubernetes.io/aws-load-balancer-type: "external", і ви використовуєте контролер балансувальника навантаження AWS у вашому кластері, тоді контролер балансувальника навантаження AWS встановлює назву цього балансувальника на значення, яке ви встановлюєте для цієї анотації.
Дивіться анотації у документації контролера балансувальника навантаження AWS.
Офіційна інтеграція Kubernetes з AWS Elastic Load Balancing налаштовує балансувальник навантаження на основі цієї анотації. Єдине допустиме значення — "*", що вказує на те, що балансувальник навантаження повинен обгортати TCP-зʼєднання до бекенду Pod за допомогою протоколу PROXY.
Контролер балансувальника навантаження AWS використовує цю анотацію для вказівки розділеного комами списку груп безпеки, які ви хочете прикріпити до балансувальника навантаження AWS. Підтримуються як імʼя, так і ID груп безпеки, де імʼя відповідає тегу Name, а не атрибуту groupName.
Коли ця анотація додається до Service, контролер балансувальника навантаження прикріплює групи безпеки, на які вказує анотація, до балансувальника навантаження. Якщо ви пропускаєте цю анотацію, контролер балансувальника навантаження AWS автоматично створює нову групу безпеки і прикріплює її до балансувальника навантаження.
Примітка:
Починаючи з Kubernetes v1.27, ця анотація більше не встановлюється або не читається безпосередньо. Однак контролер балансувальника навантаження AWS (частина проєкту Kubernetes) все ще використовує анотацію service.beta.kubernetes.io/aws-load-balancer-security-groups.
Офіційна інтеграція з AWS Elastic Load Balancing налаштовує TLS для Service з type: LoadBalancer на основі цієї анотації. Значення анотації — це імʼя ресурсу AWS (ARN) сертифіката X.509, який повинен використовувати прослуховувач балансувальника навантаження.
(Протокол TLS базується на старій технології, яка скорочується до SSL.)
Офіційна інтеграція з AWS Elastic Load Balancing налаштовує TLS для Service з type: LoadBalancer на основі цієї анотації. Значення анотації — це імʼя політики AWS для взаємодії TLS з клієнтом.
Офіційна інтеграція з AWS Elastic Load Balancing налаштовує TLS для Service з type: LoadBalancer на основі цієї анотації. Значення анотації може бути або "*", що означає, що всі порти балансувальника навантаження повинні використовувати TLS, або це може бути розділений комами список номерів портів.
Офіційна інтеграція Kubernetes з AWS використовує цю анотацію для налаштування балансувальника навантаження та визначення, в яких зонах доступності AWS розгорнути керовану службу балансування навантаження. Значення може бути або розділений комами список імен підмереж, або розділений комами список ідентифікаторів підмереж.
Офіційна інтеграція Kubernetes з AWS використовує цю анотацію для визначення, які вузли у вашому кластері повинні бути розглянуті як дійсні цілі для балансувальника навантаження.
Офіційні інтеграції Kubernetes з AWS використовують цю анотацію для визначення того, чи має інтеграція з хмарним провайдером AWS керувати Service з type: LoadBalancer.
Є два допустимі значення:
nlb
менеджер контролера хмарних послуг налаштовує мережевий балансувальник навантаження
external
менеджер контролера хмарних послуг не налаштовує жодного балансувальника навантаження
Якщо ви розгортаєте Service з type: LoadBalancer на AWS і не встановлюєте жодної анотації service.beta.kubernetes.io/aws-load-balancer-type, інтеграція з AWS розгортатиме класичний балансувальник навантаження Elastic Load Balancer. Ця поведінка, коли анотація відсутня, є типовою, якщо ви не вказуєте інше.
Коли ви встановлюєте цю анотацію на значення external на Service з type: LoadBalancer, а у вашому кластері є працюючий deployment контролера балансувальника навантаження AWS, то контролер балансувальника навантаження AWS намагатиметься розгорнути балансувальник навантаження на основі специфікації Service.
Увага:
Не змінюйте або додавайте анотацію service.beta.kubernetes.io/aws-load-balancer-type на існуючий обʼєкт Service. Для отримання додаткових відомостей дивіться документацію AWS з цього питання.
Ця анотація працює лише для Service, підтримуваних стандартним балансувальником навантаження Azure. Вона використовується у Service для вказівки, чи слід вимикати або вмикати скидання TCP при бездіяльності. Якщо увімкнено, це допомагає застосункам працювати більш передбачувано, виявляти обриви зʼєднання, видаляти застарілі зʼєднання та ініціювати нові. Ви можете встановити значення як true або false.
Значення обовʼязково повинно бути одним із privileged, baseline або restricted, що відповідає рівням стандарту безпеки для Podʼів. Зокрема, мітка enforceзабороняє створення будь-якого Podʼа у позначеному просторі імен, який не відповідає вимогам, визначеним на вказаному рівні.
Значення має бути latest або дійсна версія Kubernetes у форматі v<major>.<minor>. Це визначає версію політик стандарту безпеки для Podʼів, які застосовуються при перевірці Podʼа.
Значення має бути одним із privileged, baseline або restricted, що відповідають рівням стандарту безпеки для Podʼів. Зокрема, мітка audit не перешкоджає створенню Podʼа у позначеному просторі імен, який не відповідає вимогам, визначеним на вказаному рівні, але додає цю анотацію до Podʼа.
Значення повинно бути latest або дійсна версія Kubernetes у форматі v<major>.<minor>. Це визначає версію політик стандарту безпеки для Podʼів, які застосовуються під час перевірки Podʼа.
Значення має бути одним із privileged, baseline або restricted, що відповідають рівням стандарту безпеки для Podʼів. Зокрема, мітка warn не перешкоджає створенню Podʼа у позначеному просторі імен, який не відповідає вимогам, визначеним на вказаному рівні, але повертає попередження користувачу після цього.
Зверніть увагу, що попередження також відображаються при створенні або оновленні обʼєктів, які містять шаблони Podʼа, такі як Deployments, Jobs, StatefulSets тощо.
Значення повинно бути latest або дійсна версія Kubernetes у форматі v<основний>.<додатковий>. Це визначає версію політик стандарту безпеки для Podʼів, які застосовуються при перевірці поданих Podʼів. Зверніть увагу, що попередження також відображаються при створенні або оновленні обʼєктів, які містять шаблони Podʼа, такі як Deployments, Jobs, StatefulSets тощо.
Використовується для: ClusterRole, ClusterRoleBinding, Role, RoleBinding
Коли ця анотація встановлена на стандартне значення "true" на обʼєктах RBAC, створених сервером API, вони автоматично оновлюються при запуску сервера для додавання відсутніх дозволів та субʼєктів (додаткові дозволи та субʼєкти залишаються на місці). Щоб запобігти автоматичному оновленню певної ролі або привʼязки ролі, встановіть цю анотацію у значення "false". Якщо ви створюєте власні обʼєкти RBAC і встановлюєте цю анотацію у значення "false", kubectl auth reconcile (який дозволяє узгоджувати довільні обʼєкти RBAC у маніфесті) враховує цю анотацію і автоматично не додає відсутні дозволи та субʼєкти.
kubernetes.io/psp (deprecated)
Тип: Annotation
Приклад: kubernetes.io/psp: restricted
Використовується для: Pod
Ця анотація була актуальною лише у випадку використання обʼєктів PodSecurityPolicy. Kubernetes v1.32 не підтримує API PodSecurityPolicy.
Коли контролер допуску PodSecurityPolicy дав дозвіл Podʼу, він модифікував Pod так, щоб мати цю анотацію. Значення анотації було імʼям PodSecurityPolicy, яке використовувалось для валідації.
Значення може бути або true, або false. Це визначає, чи може користувач змінювати режим джерельного тому при створенні PersistentVolumeClaim із VolumeSnapshot.
Анотація, яку kubeadm використовує для збереження інформації про сокет CRI, наданої kubeadm під час init/join для подальшого використання. kubeadm додає цю інформацію як анотацію до обʼєкта Node. Ця анотація залишається "альфа", оскільки в ідеалі це має бути поле в KubeletConfiguration.
Анотація, яку kubeadm додає до локально керованих Podʼів etcd для відстеження списку URL-адрес, до яких повинні підключатися клієнти etcd. Це використовується головним чином для перевірки стану справності кластера etcd.
Анотація, яку kubeadm додає до ConfigMapʼів, що ним керуються для налаштування компонентів. Вона містить хеш (SHA-256), який використовується для визначення, чи застосував користувач налаштування, відмінні від стандартних налаштувань для конкретного компонента.
node-role.kubernetes.io/control-plane
Тип: Label
Використовується для: Node
Мітка-маркер, що вказує, що вузол використовується для запуску компонентів панелі управління. Інструмент kubeadm застосовує цю мітку до вузлів панелі управління, якими він керує. Інші інструменти управління кластером зазвичай також встановлюють це позачення.
Ви можете позначити вузли панелі управління цією міткою, щоб спростити розміщення Podʼів лише на цих вузлах або уникнути запуску Podʼів на панелі управління. Якщо ця мітка встановлена, контролер EndpointSlice ігнорує цей вузол під час розрахунку підказок, що враховують топологію.
Позначення, що kubeadm накладає на вузли панелі управління для обмеження розміщення Podʼів і дозволяє розміщувати на них лише певні Podʼи.
Якщо це позначення застосовано, вузли панелі управління дозволяють розміщувати у себе лише критичні навантаження. Ви можете видалити це позначення вручну за допомогою такої команди на відповідному вузлі.
Позначення, що раніше kubeadm застосовував на вузли панелі управління, щоб дозволити розміщувати на них лише критичні навантаження. Замінений позначенням node-role.kubernetes.io/control-plane. kubeadm більше не встановлює або не використовує це застаріле позначення.
4.1 - Анотації аудиту
Ця сторінка служить довідником по анотаціях аудиту простору імен kubernetes.io. Ці анотації застосовуються до обʼєктів Event з API-групи audit.k8s.io.
Примітка:
Наступні анотації не використовуються в межах Kubernetes API. Коли ви вмикаєте аудит у своєму кластері, дані аудиту подій записуються за допомогою Event з API-групи audit.k8s.io. Ці анотації застосовуються до подій аудиту. Події аудиту відрізняються від обʼєктів у API подій (API-група events.k8s.io).
k8s.io/deprecated
Приклад: k8s.io/deprecated: "true"
Значення повинно бути "true" або "false". Значення "true" вказує на те, що в запит використовував застарілу версію API.
k8s.io/removed-release
Приклад: k8s.io/removed-release: "1.22"
Значення повинно бути у форматі ".". Встановлюється на цільовий випуск видалення на запити до застарілих версій API з цільовим випуском видалення.
Значення повинно бути одним із user, namespace або runtimeClass, що відповідає вимогам виключень безпеки Pod. Ця анотація вказує на те, на чому засновано виключення з дотримання безпеки Pod.
Значення повинно бути privileged:<version>, baseline:<version>,
restricted:<version>, що відповідає рівням стандарту безпеки Pod, супроводжуваних версією, яка повинна бути latest або дійсною версією Kubernetes у форматі v<MAJOR>.<MINOR>. Ця анотація надає інформацію про рівень виконання, який дозволив або відхилив Pod під час допуску PodSecurity.
Приклад: pod-security.kubernetes.io/audit-violations: would violate PodSecurity "restricted:latest": allowPrivilegeEscalation != false (container "example" must set securityContext.allowPrivilegeEscalation=false), ...
Значення деталізує порушення аудиту політики, воно містить рівень стандарту безпеки Pod, який був порушений, а також конкретні політики з полів, які були порушені з дотримання безпеки Pod.
Приклад: missing-san.invalid-cert.kubernetes.io/example-svc.example-namespace.svc: "покладається на застаріле поле загального імені замість розширення SAN для перевірки субʼєкта"
Використовується у Kubernetes версії v1.24 та пізніше.
Ця анотація вказує, що вебхук або агрегований API-сервер використовує недійсний сертифікат, у якого відсутні subjectAltNames. Підтримка цих сертифікатів відключена у Kubernetes 1.19 та видалена у Kubernetes 1.23.
Запити до точок доступу, які використовують ці сертифікати, будуть невдалими. Serviceʼи, які використовують ці сертифікати, повинні замінити їх якомога швидше, щоб уникнути перерви у роботі при використанні середовищ Kubernetes 1.23+.
Використовується у Kubernetes версії v1.24 та пізніше.
Ця анотація вказує, що вебхук або агрегований API-сервер використовує недійсний сертифікат, підписаний небезпечним хешем SHA-1. Підтримка цих небезпечних сертифікатів відключена у Kubernetes 1.24 та буде видалена в майбутніх версіях.
Serviceʼи, які використовують ці сертифікати, повинні замінити їх якнайшвидше, щоб забезпечити належну безпеку зʼєднань та уникнути перебоїв у майбутніх випусках.
Використовується у Kubernetes версії v1.27 та пізніше.
Ця анотація вказує, що перевірка політики допуску не вдалася для запиту API або що перевірка призвела до помилки, коли політика була налаштована з failurePolicy: Fail.
Значення анотації є обʼєктом JSON. message у JSON надає повідомлення про невдачу перевірки.
policy, binding і expressionIndex в JSON ідентифікують імʼя ValidatingAdmissionPolicy, імʼя ValidatingAdmissionPolicyBinding та індекс у політиці validations виразів CEL, які не вдалося, відповідно.
validationActions показують, які дії були вжиті для цієї невдачі перевірки. Див. Політика валідації допуску для отримання додаткових відомостей щодо validationActions.
5 - API Kubernetes
API Kubernetes це застосунок, який обслуговує функціонал Kubernetes через RESTful інтерфейс та зберігає стан кластера.
Ресурси Kubernetes та "записи про наміри" зберігаються як обʼєкти API та модифікуються за допомогою RESTful викликів до API. API дозволяє керувати конфігурацією декларативним способом. Користувачі можуть взаємодіяти з API Kubernetes безпосередньо або за допомогою інструментів, таких як kubectl. Ядро API Kubernetes є гнучким та може бути розширено для підтримки власних ресурсів користувачів.
5.1 - Ресурси робочих навантажень
5.1.1 - Pod
Pod — це колекція контейнерів, які можуть запускатися на одному хості.
apiVersion: v1
import "k8s.io/api/core/v1"
Pod
Pod є колекцією контейнерів, які можуть працювати на одному хості. Цей ресурс створюється клієнтами та розміщується на хостах.
Map: унікальні значення ключа name будуть збережені під час злиття
Список контейнерів, що належать Podʼу. Зараз контейнери не можуть бути додані або видалені. В Podʼі повинен бути принаймні один контейнер. Не може бути оновлено.
Map: унікальні значення ключа name будуть збережені під час злиття
Список контейнерів ініціалізації, що належать Podʼу. Контейнери ініціалізації виконуються у визначеному порядку перед запуском звичайних контейнерів. Якщо будь-який контейнер ініціалізації зазнає збою, Pod вважається збійним та обробляється відповідно до restartPolicy. Імʼя контейнера ініціалізації або звичайного контейнера повинно бути унікальним серед усіх контейнерів. Контейнери ініціалізації не можуть мати дій Lifecycle, Readiness probes, Liveness probes, або Startup probes. resourceRequirements контейнера ініціалізації враховуються під час планування, знаходячи найбільше значення запиту/ліміту для кожного типу ресурсів, а потім використовуючи максимум цього значення або суму цих значень для звичайних контейнерів. Ліміти застосовуються до контейнерів ініціалізації аналогічним чином. Контейнери ініціалізації зараз не можуть бути додані або видалені. Не може бути оновлено. Докладніше: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/
Map: унікальні значення ключа name будуть збережені під час злиття
Список ефемерних контейнерів, що запущені у цьому Pod. Ефемерні контейнери можуть бути запущені в наявному Podʼі для виконання дій, ініційованих користувачем, таких як налагодження. Цей список не може бути вказаний при створенні Podʼа, і його не можна змінити, оновивши специфікацію Podʼа. Щоб додати ефемерний контейнер до наявного Podʼа, використовуйте субресурс ефемерних контейнерів Podʼа.
Map: унікальні значення ключа name будуть збережені під час злиття
ImagePullSecrets — це необовʼязково список посилань на Secretʼи у тому ж просторі імен, які використовуються для отримання будь-яких образів, що використовуються у цьому PodSpec. Якщо вказано, ці Secretʼи будуть передані індивідуальним реалізаціям отримувачів для їх використання. Докладніше: https://kubernetes.io/docs/concepts/containers/images#specifying-imagepullsecrets-on-a-pod
enableServiceLinks (boolean)
EnableServiceLinks вказує, чи слід впроваджувати інформацію про Serviceʼи у змінні середовища Pod, відповідно до синтаксису Docker посилань. Необовʼязково: стандартне значення — true.
os (PodOS)
PodOS визначає параметри операційної системи Pod.
Якщо в поле OS встановлено значення linux, наступні поля не повинні бути встановлені:
securityContext.windowsOptions
Якщо в поле OS встановлено значення windows, наступні поля не повинні бути встановлені:
Поле NodeName вказує, на якому вузлі (node) заплановано запуск цього podʼа. Якщо це поле порожнє, pod є кандидатом для планування за допомогою планувальника, визначеного в полі schedulerName. Після того як це поле встановлено, kubelet цього вузла стає відповідальним за життєвий цикл podʼа. Це поле не слід використовувати для вираження бажання запустити pod на конкретному вузлі. Детальніше: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#nodename
affinity (Affinity)
Якщо вказано, це обмеження на планування Podʼа.
Affinity — це група правил планування з урахуванням спорідненості.
Описує правила планування Podʼа з урахуванням спорідненості до інших Podʼів (наприклад, розташувати цей Pod на тому ж вузлі, у тій же зоні тощо, що й інші Podʼи).
Описує правила планування Podʼа з урахуванням анти-спорідненості до інших Podʼів (наприклад, уникати розташування цього Podʼа на тому ж вузлі, у тій же зоні тощо, що й інші Podʼи).
tolerations ([]Toleration)
Atomic: буде замінено під час злиття
Якщо вказано, визначає толерантності Podʼа.
Pod, до якого прикріплено цю толерантність, толерує будь-який taint, який відповідає трійці <key,value,effect> за допомогою оператора зіставлення .
tolerations.key (string)
Ключ taint, до якого застосовується толерантність. Порожнє значення означає відповідність усім ключам taint. Якщо ключ порожній, оператор має бути Exists; ця комбінація означає відповідність усім значенням та ключам.
tolerations.operator (string)
Оператор, що представляє стосунок ключа до значення. Допустимі оператори — Exists та Equal. Стандартне значення — Equal. Exists еквівалентний знаку підстановки для значення, щоб Pod міг толерувати всі taint певної категорії.
tolerations.value (string)
Значення taint, до якого застосовується толерантність. Якщо оператор Exists, значення має бути порожнім, в іншому випадку — це звичайний рядок.
tolerations.effect (string)
Ефект, до якого застосовується толерантність. Порожнє значення означає відповідність усім ефектам taint. Допустимі значення: NoSchedule, PreferNoSchedule та NoExecute.
tolerations.tolerationSeconds (int64)
TolerationSeconds визначає період часу, протягом якого толерантність (яка має бути з ефектом NoExecute, інакше це поле ігнорується) толерує taint. Стандартно не встановлюється, що означає виконувати толерування taint назавжди (не видаляти). Нульові та відʼємні значення система обробляє як 0 (негайне видалення).
schedulerName (string)
Якщо вказано, Pod буде оброблено вказаним планувальником. Якщо не вказано, Pod буде оброблено стандартним планувальником.
runtimeClassName (string)
RuntimeClassName посилається на обʼєкт RuntimeClass у групі node.k8s.io, який повинен бути використаний для запуску цього Podʼа. Якщо жоден ресурс RuntimeClass не відповідає названому класу, Pod не буде запущено. Якщо не встановлено або порожнє, буде використано "старий" RuntimeClass, який є неявним класом з порожнім визначенням, що використовує стандартний обробник середовища. Детальніше: https://git.k8s.io/enhancements/keps/sig-node/585-runtime-class
priorityClassName (string)
Якщо вказано, вказує на пріоритет Podʼа. "system-node-critical" та "system-cluster-critical" — це два спеціальні ключові слова, які вказують на найвищі пріоритети, причому перший має найвищий пріоритет. Будь-яке інше імʼя має бути визначене шляхом створення обʼєкта PriorityClass з цим імʼям. Якщо не вказано, пріоритет Podʼа буде стандартним або нульовим, якщо немає стандартного значення.
priority (int32)
Значення пріоритету. Різні системні компоненти використовують це поле для визначення пріоритету Podʼа. Коли включено контролер доступу до пріоритетів (Priority Admission Controller), він не дозволяє користувачам встановлювати це поле. Контролер доступу заповнює це поле з PriorityClassName. Чим вище значення, тим вищий пріоритет.
preemptionPolicy (string)
PreemptionPolicy — це політика випередження для Podʼів з нижчим пріоритетом. Одне з: Never чи PreemptLowerPriority. Стандартне значення — PreemptLowerPriority, якщо не встановлено.
Map: під час об’єднання будуть збережені унікальні значення за ключами topologyKey, whenUnsatisfiable
TopologySpreadConstraints описує, як група Podʼів повинна розподілятися по топологічних доменах. Планувальник розміщуватиме Podʼи таким чином, щоб дотримуватися обмежень. Всі topologySpreadConstraints поєднуються логічним оператором AND.
TopologySpreadConstraint визначає, як розподіляти відповідні Podʼи серед заданої топології.
MaxSkew описує ступінь нерівномірного розподілу Podʼів. Коли whenUnsatisfiable=DoNotSchedule, це максимальна допустима різниця між кількістю відповідних Podʼів у цільовій топології та глобальним мінімумом. Глобальний мінімум — це мінімальна кількість відповідних Podʼів у відповідному домені або нуль, якщо кількість відповідних доменів менша за MinDomains. Наприклад, у кластері з 3 зонами MaxSkew встановлено на 1, і Podʼи з однаковим labelSelector розподіляються як 2/2/1: У цьому випадку глобальний мінімум дорівнює 1.
якщо MaxSkew дорівнює 1, новий Pod може бути розміщений тільки в zone3, щоб стати 2/2/2; розміщення його в zone1 (zone2) призведе до порушення MaxSkew (1) через ActualSkew (3-1) в zone1 (zone2).
якщо MaxSkew дорівнює 2, новий Pod може бути розміщений у будь-якій зоні. Коли whenUnsatisfiable=ScheduleAnyway, це використовується для надання більшої переваги топологіям, які задовольняють цю умову. Це обовʼязкове поле. Стандартне значення — 1; 0 не допускається.
TopologyKey — це ключ міток вузлів. Вузли, які мають мітку з цим ключем та ідентичними значеннями, вважаються такими, що належать до однієї топології. Ми розглядаємо кожен <key, value> як "кошик" і намагаємося розмістити збалансовану кількість Podʼів у кожному кошику. Ми визначаємо домен як конкретний екземпляр топології. Також ми визначаємо відповідний домен як домен, чиї вузли відповідають вимогам nodeAffinityPolicy та nodeTaintsPolicy. Наприклад, якщо TopologyKey — це "kubernetes.io/hostname", кожен вузол є доменом цієї топології. І, якщо TopologyKey — це "topology.kubernetes.io/zone", кожна зона є доменом цієї топології. Це обовʼязкове поле.
WhenUnsatisfiable вказує, як діяти з Podʼом, якщо він не відповідає умовам розподілу.
DoNotSchedule (стандартно) наказує планувальнику не розміщувати його.
ScheduleAnyway наказує планувальнику розмістити Pod у будь-якому місці, але з наданням більшої переваги топологіям, які допоможуть зменшити нерівномірність розподілу. Умова вважається "незадовільною" для вхідного Podʼа, якщо і тільки якщо кожне можливе призначення вузла для цього Podʼа порушуватиме "MaxSkew" у деякій топології. Наприклад, у кластері з 3 зонами MaxSkew встановлено на 1, і Podʼи з однаковим labelSelector розподіляються як 3/1/1:
Якщо WhenUnsatisfiable встановлено на DoNotSchedule, новий Pod може бути розміщений тільки в zone2 (zone3), щоб стати 3/2/1 (3/1/2), оскільки ActualSkew (2-1) у zone2 (zone3) задовольняє MaxSkew (1). Іншими словами, кластер все ще може бути незбалансованим, але планувальник не зробить його більш незбалансованим. Це обовʼязкове поле.
LabelSelector використовується для знаходження відповідних Podʼів. Podʼи, які відповідають цьому label selector, враховуються для визначення кількості Podʼів у відповідному топологічному домені.
MatchLabelKeys — це набір ключів міток Podʼа для вибору Podʼів, за якими буде розраховано розподіл. Ключі використовуються для пошуку значень у мітках вхідного Podʼа, ці ключ-значення міток поєднуються з labelSelector для вибору групи наявних Podʼів, за якими буде розраховано розподіл для вхідного Podʼа. Той самий ключ заборонено мати як у MatchLabelKeys, так і в LabelSelector. MatchLabelKeys не можна встановлювати, коли LabelSelector не встановлено. Ключі, які не існують у мітках вхідного Podʼа, будуть ігноруватися. Нульовий або порожній список означає збіг тільки з labelSelector.
Це бета-поле і вимагає ввімкнення функції MatchLabelKeysInPodTopologySpread (типово увімкнено).
topologySpreadConstraints.minDomains (int32)
MinDomains вказує мінімальну кількість відповідних доменів. Коли кількість відповідних доменів з відповідними топологічними ключами менша за minDomains, Pod Topology Spread трактує "глобальний мінімум" як 0, і потім виконується розрахунок Skew. І коли кількість відповідних доменів з відповідними топологічними ключами дорівнює або перевищує minDomains, це значення не впливає на розподіл. У результаті, коли кількість відповідних доменів менша за minDomains, планувальник не розміщуватиме більше maxSkew Podʼів у ці домени. Якщо значення дорівнює null, обмеження поводиться так, ніби MinDomains дорівнює 1. Допустимі значення — цілі числа, більші за 0. Коли значення не дорівнює null, WhenUnsatisfiable має бути DoNotSchedule.
Наприклад, у кластері з 3 зонами MaxSkew встановлено на 2, MinDomains встановлено на 5, і Podʼи з однаковим labelSelector розподіляються як 2/2/2:
Кількість доменів менша за 5 (MinDomains), тому "глобальний мінімум" трактуватиметься як 0. У цій ситуації новий Pod з тим самим labelSelector не може бути розміщений, оскільки обчислений skew буде 3 (3 - 0), якщо новий Pod буде розміщено в будь-якій з трьох зон, це порушить MaxSkew.
NodeAffinityPolicy вказує, як ми будемо враховувати nodeAffinity/nodeSelector Podʼа при розрахунку перекосу розподілу топології Pod. Варіанти:
Honor: тільки вузли, що відповідають nodeAffinity/nodeSelector, включаються до розрахунків.
Ignore: nodeAffinity/nodeSelector ігноруються. Всі вузли включаються до розрахунків.
Якщо це значення дорівнює null, поведінка еквівалентна полю Honor. Це функція на рівні бета, типово увімкнена за допомогою прапорця NodeInclusionPolicyInPodTopologySpread.
NodeTaintsPolicy вказує, як ми будемо враховувати node taints при розрахунку перекосу розподілу топології Pod. Варіанти:
Honor: вузли без taints, разом з вузлами з taints, для яких вхідний Pod має толерантність, включаються.
Ignore: node taints ігноруються. Всі вузли включаються.
Якщо це значення дорівнює null, поведінка еквівалентна полю Ignore. Це функція на рівні бета, типово увімкнена за допомогою прапорця NodeInclusionPolicyInPodTopologySpread.
Overhead представляє ресурси, що представляють накладні витрати Podʼа для роботи з конкретним RuntimeClass. Це поле буде автоматично заповнене під час допуску контролером RuntimeClass. Якщо контролер допуску RuntimeClass увімкнено, overhead не повинен бути встановлений у запитах на створення Podʼа. Контролер допуску RuntimeClass відхилить запити на створення Podʼа, у яких overhead вже встановлений. Якщо RuntimeClass налаштований та обраний у PodSpec, Overhead буде встановлено на значення, визначене у відповідному RuntimeClass, в іншому випадку воно залишиться невстановленим та буде вважатися рівним нулю. Докладніше: https://git.k8s.io/enhancements/keps/sig-node/688-pod-overhead/README.md
Необовʼязкова тривалість у секундах, необхідна для коректного завершення роботи Podʼа. Може бути зменшена у запиті на видалення. Значення повинно бути невідʼємним цілим числом. Значення нуль означає негайне припинення через сигнал kill (без можливості завершити роботу коректно). Якщо це значення є nil, буде використано стандартний період завершення. Період належного завершення — це тривалість у секундах після того, як процеси, що працюють у Podʼі, отримають сигнал про завершення, і до того, як вони будуть примусово зупинені сигналом kill. Встановіть це значення більше, ніж очікуваний час завершення вашого процесу. Стандартне значення — 30 секунд.
activeDeadlineSeconds (int64)
Необовʼязкова тривалість у секундах, протягом якої Pod може бути активним на вузлі відносно StartTime, перш ніж система почне активно намагатися позначити його як несправний та припинити роботу повʼязаних контейнерів. Значення повинно бути додатним цілим числом.
ConditionType належить до стану у списку станів Podʼа з відповідним типом.
Імʼя хосту та розвʼязування імен
hostname (string)
Вказує імʼя хосту Podʼа. Якщо не вказано, імʼя хосту Podʼа буде встановлено в значення визначене системою.
setHostnameAsFQDN (boolean)
Якщо встановлено значення true, імʼя хосту Podʼа буде налаштоване як повне доменне імʼя (FQDN) Podʼа, а не просто коротке імʼя (стандартно). У Linux-контейнерах це означає встановлення FQDN в полі імʼя хосту ядра (поле nodename структури utsname). У Windows-контейнерах це означає встановлення значення реєстру імʼя хосту для ключа реєстру HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters на FQDN. Якщо Pod не має FQDN, це не має ефекту. Стандартне значення — false.
subdomain (string)
Якщо вказано, повне кваліфіковане імʼя хосту Podʼа буде "<hostname>.<subdomain>.<pod namespace>.svc.<cluster domain>". Якщо не вказано, Pod не буде мати доменного імені взагалі.
hostAliases ([]HostAlias)
Patch strategy: злиття за ключем ip
Map: унікальні значення ключа ip будуть збережені під час злиття
HostAliases є необовʼязковим списком хостів та IP, які будуть впроваджені у файл hosts Podʼа, якщо вказано.
HostAlias містить зітсавлення між IP та іменами хостів, які будуть впроваджені як запис у файл hosts Podʼа.
hostAliases.ip (string), обовʼязково
Запис IP-адреси у файлі hosts.
hostAliases.hostnames ([]string)
Atomic: буде замінено під час злиття
Імена хостів для вищевказаної IP-адреси.
dnsConfig (PodDNSConfig)
Вказує параметри DNS Podʼа. Параметри, вказані тут, будуть обʼєднані зі згенерованою DNS-конфігурацією на основі DNSPolicy.
PodDNSConfig визначає параметри DNS Podʼа на додаток до тих, що генеруються з DNSPolicy.
dnsConfig.nameservers ([]string)
Atomic: буде замінено під час злиття
Список IP-адрес DNS-серверів імен. Він буде доданий до основних серверів імен, згенерованих з DNSPolicy. Дубльовані сервери імен будуть видалені.
dnsConfig.options ([]PodDNSConfigOption)
Atomic: буде замінено під час злиття
Список опцій DNS-резолвера. Він буде обʼєднаний з основними опціями, згенерованими з DNSPolicy. Дубльовані записи будуть видалені. Опції розвʼязування імен, зазначені в Options, замінять ті, що зʼявляються в основній DNSPolicy.
PodDNSConfigOption визначає опції DNS-резольвера Podʼа.
dnsConfig.options.name (string)
Обовʼязкове.
dnsConfig.options.value (string)
dnsConfig.searches ([]string)
Atomic: буде замінено під час злиття
Список доменів пошуку DNS для пошуку імен хостів. Він буде доданий до основних шляхів пошуку, згенерованих з DNSPolicy. Дубльовані шляхи пошуку будуть видалені.
dnsPolicy (string)
Встановлює політику DNS для Podʼа. Стандартне значеняя — "ClusterFirst". Допустимі значення: ʼClusterFirstWithHostNetʼ, ʼClusterFirstʼ, ʼDefaultʼ або ʼNoneʼ. Параметри DNS, задані в DNSConfig, будуть обʼєднані з політикою, вибраною за допомогою DNSPolicy. Щоб налаштувати опції DNS разом з hostNetwork, потрібно явно вказати політику DNS як ʼClusterFirstWithHostNetʼ.
Простори імен хоста
hostNetwork (boolean)
Використання мережі хоста для цього Podʼа. Використовує простір імен мережі хоста. Якщо ця опція встановлена, необхідно вказати порти, які будуть використовуватися. Стандартне значення — false.
hostPID (boolean)
Використання простору імен PID хоста. Необовʼязково: стандартне значення — false.
hostIPC (boolean)
Використання простору імен IPC хоста. Необовʼязково: стандартне значення — false.
shareProcessNamespace (boolean)
Спільний процесний простір імен між усіма контейнерами в Podʼі. Якщо це встановлено, контейнери зможуть бачити та надсилати сигнали процесам з інших контейнерів у тому ж Podʼі, і перший процес у кожному контейнері не буде мати PID 1. HostPID та ShareProcessNamespace не можуть бути встановлені одночасно. Необовʼязково: стандартне значення — false.
AutomountServiceAccountToken вказує, чи повинен токен службового облікового запису автоматично монтуватися.
Контекст безпеки
securityContext (PodSecurityContext)
SecurityContext містить атрибути безпеки на рівні Podʼа та загальні налаштування контейнера. Необовʼязково: стандартне значення — порожньо. Див. опис типу для стандартних значень для кожного поля.
PodSecurityContext містить атрибути безпеки на рівні Podʼа та загальні налаштування контейнера. Деякі поля також присутні у container.securityContext. Значення полів container.securityContext мають пріоритет над значеннями полів PodSecurityContext.
securityContext.appArmorProfile (AppArmorProfile)
appArmorProfile — параметри AppArmor, які будуть використовуватися контейнерами у цьому pod'і. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
AppArmorProfile визначає налаштування AppArmor для контейнера або podʼа.
localhostProfile вказує профіль, завантажений на вузлі, який слід використовувати. Профіль має бути попередньо налаштований на вузлі для коректної роботи. Назва профілю повинна відповідати завантаженій назві. Це поле повинно бути встановлене, якщо і тільки якщо тип дорівнює "Localhost".
securityContext.fsGroup (int64)
Спеціальна додаткова група, яка застосовується до всіх контейнерів у Podʼі. Деякі типи томів дозволяють Kubelet змінювати право власності на цей том, щоб він належав Podʼу:
GID власника буде FSGroup
Встановлюється біт setgid (нові файли, створені в томі, будуть належати FSGroup)
Біти дозволів обʼєднуються з rw-rw----
Якщо не встановлено, Kubelet не змінює право власності та дозволи будь-якого тому. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
securityContext.fsGroupChangePolicy (string)
fsGroupChangePolicy визначає поведінку зміни прав власності та дозволів тому перед тим, як він буде доступний у Podʼі. Це поле застосовується лише до типів томів, які підтримують права власності на основі fsGroup (та дозволів). Це не впливає на ефемерні типи томів, такі як: secret, configmaps та emptydir. Дійсні значення: "OnRootMismatch" та "Always". Якщо не вказано, використовується "Always". Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
securityContext.runAsUser (int64)
UID, з яким запускається початковий процес контейнера. Стандартно використовується користувач, вказаний у метаданих образу, якщо не вказано інше. Також може бути встановлено в PodSecurityContext. Якщо значення встановлено як у SecurityContext, так і в PodSecurityContext, пріоритет має значення, зазначене в SecurityContext. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
securityContext.runAsNonRoot (boolean)
Вказує, що контейнер повинен запускатися як користувач, який не є root. Якщо значення true, Kubelet перевірить образ під час виконання, щоб гарантувати, що він не запускається з UID 0 (root), і не запустить контейнер, якщо це не так. Якщо поле не встановлено або має значення false, така перевірка не виконується. Також може бути налаштовано в SecurityContext. Якщо значення встановлено як у SecurityContext, так і в PodSecurityContext, пріоритет має значення, вказане в SecurityContext.
securityContext.runAsGroup (int64)
GID, під яким запускається початковий процес контейнера. Якщо не встановлено, використовується стандартне значення для середовища виконання. Також може бути вказано в SecurityContext. Якщо значення встановлено як у SecurityContext, так і в PodSecurityContext, пріоритет має значення, зазначене в SecurityContext для цього контейнера. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
securityContext.seccompProfile (SeccompProfile)
Параметри seccomp для використання контейнерами в цьому Podʼі. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
SeccompProfile визначає налаштування профілю seccomp для Podʼа/контейнера. Може бути встановлено лише одне джерело профілю.
localhostProfile вказує, що має бути використаний профіль, визначений у файлі на вузлі. Профіль має бути попередньо налаштований на вузлі, щоб працювати. Має бути низхідний шлях, відносно до налаштованого розташування профілю seccomp kubelet. Має бути встановлено, якщо тип "Localhost". НЕ має бути встановлено для будь-якого іншого типу.
securityContext.seLinuxOptions (SELinuxOptions)
Контекст SELinux, який буде застосовано до всіх контейнерів. Якщо не зазначено, середовище виконання контейнера виділить випадковий контекст SELinux для кожного контейнера. Також може бути встановлено в SecurityContext. Якщо встановлено і в SecurityContext, і в PodSecurityContext, то значення, зазначене в SecurityContext, має пріоритет для цього контейнера. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
SELinuxOptions — це мітки, які будуть застосовані до контейнера
securityContext.seLinuxOptions.level (string)
Level — це мітка рівня SELinux, яка застосовується до контейнера.
securityContext.seLinuxOptions.role (string)
Role — це мітка ролі SELinux, яка застосовується до контейнера.
securityContext.seLinuxOptions.type (string)
Type — це мітка типу SELinux, яка застосовується до контейнера.
securityContext.seLinuxOptions.user (string)
User — це мітка користувача SELinux, яка застосовується до контейнера.
securityContext.supplementalGroups ([]int64)
Atomic: буде замінено під час злиття
Список груп, які застосовуються до першого процесу, запущеного в кожному контейнері, на додачу до основного GID контейнера та fsGroup (якщо вказано). Якщо функція SupplementalGroupsPolicy увімкнена, поле supplementalGroupsPolicy визначає, чи будуть ці групи додані до вже визначених у контейнерному образі або замінять їх. Якщо не вказано, додаткові групи не додаються, хоча членство в групах, визначених в образі контейнера, може бути використане залежно від поля supplementalGroupsPolicy. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
securityContext.supplementalGroupsPolicy (string)
Визначає, як обчислюються додаткові групи для перших процесів контейнера. Дійсні значення: "Merge" і "Strict". Якщо не вказано, використовується значення "Merge". (Alpha) Використання цього поля вимагає ввімкненої функції SupplementalGroupsPolicy, і середовище виконання контейнерів повинно підтримувати цю функцію. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
securityContext.sysctls ([]Sysctl)
Atomic: буде замінено під час злиття
Sysctls містять список sysctls з простором імен, що використовуються для Podʼа. Podʼи з непідтримуваними sysctl (середовищем виконання контейнера) можуть не запуститися. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
Sysctl визначає параметр ядра, який потрібно встановити
Параметри, специфічні для Windows, що застосовуються до всіх контейнерів. Якщо не зазначено, використовуються параметри у SecurityContext контейнера. Якщо встановлено і в SecurityContext, і в PodSecurityContext, то значення, зазначене в SecurityContext, має пріоритет. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — linux.
WindowsSecurityContextOptions містять параметри та облікові дані, специфічні для Windows.
HostProcess визначає, чи повинен контейнер запускатися як контейнер ʼHost Processʼ. Усі контейнери Podʼа повинні мати однакове ефективне значення HostProcess (не дозволяється змішування контейнерів HostProcess та не-HostProcess). Крім того, якщо HostProcess дорівнює true, то HostNetwork також має бути встановлено на true.
Ім’я користувача в Windows для запуску точки входу процесу контейнера. Стандартно використовується користувач, вказаний у метаданих образу, якщо не вказано. Також можна встановити в PodSecurityContext. Якщо встановлено як у SecurityContext, так і в PodSecurityContext, значення, вказане в SecurityContext, має пріоритет.
Alpha рівень
hostUsers (boolean)
Використання простору імен користувачів хоста. Необовʼязково: стандартне значення — true. Якщо встановлено true або не зазначено, Pod буде виконуватися в просторі імен користувачів хоста, корисно, коли Pod потребує функції, доступної лише в просторі імен користувачів хоста, такої як завантаження модуля ядра з CAP_SYS_MODULE. Коли встановлено false, створюється новий простір імен для користувачів для Podʼа. Встановлення значення false корисно для зниження ризику вразливостей виходу з контейнера, дозволяючи користувачам запускати контейнери з правами root без фактичних привілеїв root на хості. Це поле є рівнем alpha і враховується лише серверами, які включають функцію UserNamespacesSupport.
resourceClaims ([]PodResourceClaim)
Patch strategy: retainKeys, обʼєднання за ключем name
Map: унікальні значення за ключем name будуть збережені під час обʼєднання
ResourceClaims визначає, які ResourceClaims повинні бути виділені та зарезервовані перед тим, як Podʼу буде дозволено почати роботу. Ресурси будуть доступні тим контейнерам, які споживають їх за іменем.
Це поле є альфа-рівнем і вимагає увімкнення функції DynamicResourceAllocation.
Це поле є незмінним.
PodResourceClaim посилається на один конкретний ResourceClaim, або безпосередньо, або через вказання ResourceClaimTemplate, який потім перетворюється на ResourceClaim для podʼа.
Він додає до нього імʼя, яке унікально ідентифікує ResourceClaim всередині podʼа. Контейнери, яким потрібен доступ до цього ResourceClaim, посилаються на нього за цим імʼям.
resourceClaims.name (string), обовʼязкове
Імʼя унікально ідентифікує цей ресурсний запит всередині Podʼа. Це повинно бути DNS_LABEL.
resourceClaims.resourceClaimName (string)
ResourceClaimName — це імʼя обʼєкта ResourceClaim у тому ж просторі імен, що і цей Pod.
Має бути задано точно одне з ResourceClaimName та ResourceClaimTemplateName.
resourceClaims.resourceClaimTemplateName (string)
ResourceClaimTemplateName — це імʼя обʼєкта ResourceClaimTemplate у тому ж просторі імен, що і цей Pod.
Шаблон буде використаний для створення нового ResourceClaim, який буде привʼязаний до цього Podʼа. Коли цей Pod буде видалений, ResourceClaim також буде видалений. Імʼя Podʼа та імʼя ресурсу разом з згенерованим компонентом будуть використані для формування унікального імені для ResourceClaim, яке буде записано в pod.status.resourceClaimStatuses.
Це поле є незмінним, і після створення ResourceClaim панель управління не вноситиме жодних змін до відповідного ResourceClaim.
Має бути встановлено точно одне з полів ResourceClaimName або ResourceClaimTemplateName.
schedulingGates ([]PodSchedulingGate)
Patch strategy: обʼєднання за ключем name
Map: унікальні значення за ключем name будуть збережені під час обʼєднання
SchedulingGates — це непрозорий список значень, які, якщо вказані, блокуватимуть планування Podʼа. Якщо schedulingGates не порожні, Pod залишатиметься в стані SchedulingGated, і планувальник не намагатиметься його розмістити.
SchedulingGates можна встановити лише під час створення Podʼа і видаляти лише згодом.
PodSchedulingGate повʼязаний з Podʼом для захисту його планування.
schedulingGates.name (string), обовʼязкове
Імʼя шлюзу планування. Кожен шлюз планування повинен мати унікальне поле name.
Застаріле
serviceAccount (string)
DeprecatedServiceAccount — це застарілий псевдонім для ServiceAccountName. Застаріле: використовуйте serviceAccountName замість цього.
Контейнер
Один контейнер застосунка, який ви хочете запустити в Podʼі.
name (string), обовʼязково
Імʼя контейнера вказується як DNS_LABEL. Кожен контейнер в Podʼі повинен мати унікальне імʼя (DNS_LABEL). Не може бути оновлено.
Образ
image (string)
Назва образу контейнера. Докладніше: https://kubernetes.io/docs/concepts/containers/images. Це поле є необовʼязковим для того, щоб дозволити більш високому рівню управління конфігурацією використовувати стандартний образ або перевизначити образ контейнера в контролері навантаження, такому як Deployments та StatefulSets.
Масив точок входу. Виконується безпосередньо, не у середовищі оболонки. Якщо не надано, буде використано ENTRYPOINT образу контейнера. Змінні $(VAR_NAME) розширюються за допомогою середовища контейнера. Якщо змінну не вдасться розгорнути, посилання у вхідному рядку залишиться без змін. Подвійні $$ зменшуються до одного $, що дозволяє екранувати синтаксис $(VAR_NAME): наприклад, "$$(VAR_NAME)" виведе літеральний рядок "$(VAR_NAME)". Екрановані посилання ніколи не будуть розгортатися, незалежно від того, чи існує змінна, чи ні. Не може бути оновлено. Докладніше: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
args ([]string)
Atomic: буде замінено під час злиття
Аргументи точки входу. Якщо не надано, буде використано CMD образу контейнера. Змінні $(VAR_NAME) розширюються за допомогою середовища контейнера. Якщо змінну не вдасться розгорнути, посилання у вхідному рядку залишиться без змін. Подвійні $$ зменшуються до одного $, що дозволяє екранувати синтаксис $(VAR_NAME): наприклад, "$$(VAR_NAME)" виведе літеральний рядок "$(VAR_NAME)". Екрановані посилання ніколи не будуть розгортатися, незалежно від того, чи існує змінна, чи ні. Не може бути оновлено. Докладніше: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
workingDir (string)
Робоча тека контейнера. Якщо не вказано, буде використано стандартне значення контейнера, яке може бути налаштоване в образі контейнера. Не може бути оновлено.
Порти
ports ([]ContainerPort)
Patch strategy: обʼєднання за ключем containerPort
Map: унікальні значення за ключами containerPort, protocol будуть збережені під час обʼєднання
Список портів, які потрібно відкрити з контейнера. Не вказання порту тут НЕ ЗАПОБІГАЄ його відкриттю. Будь-який порт, який прослуховує стандартну адресу "0.0.0.0" всередині контейнера, буде доступний з мережі. Зміна цього масиву за допомогою стратегічного патча злиття може пошкодити дані. Для отримання додаткової інформації дивіться https://github.com/kubernetes/kubernetes/issues/108255. Не може бути оновлено.
ContainerPort представляє мережевий порт в одному контейнері.
ports.containerPort (int32), обовʼязково
Номер порту для відкриття на IP-адресі контейнера. Це повинен бути дійсний номер порту, 0 < x < 65536.
ports.hostIP (string)
IP-адреса хоста, що звʼязується з зовнішнім портом.
ports.hostPort (int32)
Номер порту для відкриття на хості. Якщо вказано, це повинен бути дійсний номер порту, 0 < x < 65536. Якщо вказано HostNetwork, це значення повинно збігатися з ContainerPort. Більшість контейнерів цього не потребують.
ports.name (string)
Якщо вказано, це повинен бути IANA_SVC_NAME і єдиним в межах Podʼа. Кожен іменований порт в Podʼі повинен мати унікальне імʼя. Назва порту, на яку можна посилатися з Service.
ports.protocol (string)
Протокол для порту. Повинен бути UDP, TCP або SCTP. Стандартне значення — "TCP".
Змінні середовища
env ([]EnvVar)
Patch strategy: обʼєднання за ключем name
Map: унікальні значення за ключем name будуть збережені під час обʼєднання
Список змінних середовища для встановлення в контейнері. Не може бути оновлено.
EnvVar представляє змінну середовища, присутню в контейнері.
env.name (string), обовʼязково
Назва змінної середовища. Повинно бути C_IDENTIFIER.
env.value (string)
Змінні посилання $(VAR_NAME) розгортаються за допомогою попередньо визначених змінних середовища в контейнері та будь-яких змінних середовища Service. Якщо змінну не вдається розʼязати, посилання відносно введеного рядка буде незмінним. Подвійний $$ зменшується до одного $, що дозволяє екранувати синтаксис $(VAR_NAME): тобто "$$(VAR_NAME)" буде створювати літеральний рядок "$(VAR_NAME)". Екрановані посилання ніколи не будуть розгорнуті, незалежно від того, чи існує змінна, чи ні. Стандартне значення — "".
env.valueFrom (EnvVarSource)
Джерело значення змінної середовища. Не може бути використано, якщо значення не є пустим.
Вибирає ресурс контейнера: наразі підтримуються лише обмеження і запити ресурсів (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory та requests.ephemeral-storage).
Зазначає, чи має бути визначений Secret або його ключ
envFrom ([]EnvFromSource)
Atomic: буде замінено під час злиття
Список джерел для заповнення змінних середовища в контейнері. Ключі, визначені в межах джерела, повинні бути C_IDENTIFIER. Усі хибні ключі будуть повідомлені як подія при запуску контейнера. Коли ключ існує в декількох джерелах, значення, що асоціюється з останнім джерелом, буде мати пріоритет. Значення, визначене за допомогою Env з дубльованим ключем, буде мати пріоритет. Не може бути оновлено.
EnvFromSource представляє джерело набору ConfigMaps
envFrom.configMapRef (ConfigMapEnvSource)
ConfigMap для вибору з
ConfigMapEnvSource вибирає ConfigMap для заповнення змінними середовища.
Зміст поля Data цільового ConfigMap буде представлено в парах ключ-значення як змінні середовища.
Map: унікальні значення за ключем mountPath будуть збережені під час обʼєднання
Томи, які будуть змонтовані в файлову систему контейнера. Не може бути оновлено.
VolumeMount описує монтування Тому всередині контейнера.
volumeMounts.mountPath (string), обовʼязково
Шлях всередині контейнера, за яким повинен бути змонтований том. Не повинен містити ':'.
volumeMounts.name (string), обовʼязково
Повинно відповідати імені Тому.
volumeMounts.mountPropagation (string)
mountPropagation визначає, як монтування розповсюджуються від хоста до контейнера і навпаки. Коли не встановлено, використовується MountPropagationNone. Це поле є бета-версією в 1.10. Коли RecursiveReadOnly встановлено в IfPossible або Enabled, MountPropagation повинен бути None або не вказаним (стандартно None).
volumeMounts.readOnly (boolean)
Змонтований як тільки для читання, якщо true, для читання/запису в іншому випадку (false або не вказано). Стандартне значення — false.
volumeMounts.recursiveReadOnly (string)
RecursiveReadOnly вказує, чи слід обробляти монтування тільки для читання рекурсивно.
Якщо ReadOnly встановлено в false, це поле не має значення і не має бути вказаним.
Якщо ReadOnly дорівнює true, і це поле встановлено в Disabled, монтування не стає рекурсивним тільки для читання. Якщо це поле встановлено в IfPossible, монтування стає рекурсивним тільки для читання, якщо це підтримується середовищем виконання контейнерів. Якщо це поле встановлено в Enabled, монтування стає рекурсивним тільки для читання, якщо це підтримується середовищем виконання контейнерів; в іншому випадку, pod не буде запущено і буде згенеровано помилку, щоб вказати причину.
Якщо це поле встановлено в IfPossible або Enabled, MountPropagation має бути встановлено в None (або бути не вказаним, що стандартно дорівнює None).
Якщо це поле не вказано, воно вважається еквівалентом Disabled.
volumeMounts.subPath (string)
Шлях всередині тому, з якого має бути змонтований том контейнера. Стандартне значення — "" (корінь тому).
volumeMounts.subPathExpr (string)
Розгорнутий шлях всередині тому, з якого має бути змонтований том контейнера. Поводиться схоже до SubPath, але посилання на змінні середовища $(VAR_NAME) розгортаються за допомогою середовища контейнера. Стандартне значення — "" (корінь тому). SubPathExpr і SubPath є взаємовиключними.
volumeDevices ([]VolumeDevice)
Patch strategy: обʼєднання за ключем devicePath
Map: унікальні значення за ключем devicePath будуть збережені під час обʼєднання
volumeDevices — це список блочних пристроїв, які будуть використані контейнером.
volumeDevice описує зіставлення необробленого блочного пристрою всередині контейнера.
volumeDevices.devicePath (string), обовʼязково
devicePath — це шлях всередині контейнера, на який буде зіставлено пристрій.
volumeDevices.name (string), обовʼязково
name повинно відповідати імені persistentVolumeClaim в Podʼі.
ResourceRequirements описує вимоги до обчислювальних ресурсів.
resources.claims ([]ResourceClaim)
Map: унікальні значення за ключем будуть збережені під час обʼєднання
Claims містить назви ресурсів, визначених в spec.resourceClaims, які використовуються цим контейнером.
Це поле альфа-версії і вимагає включення функціоналу DynamicResourceAllocation.
Це поле є незмінним. Його можна встановити тільки для контейнерів.
ResourceClaim посилається на один запис в PodSpec.ResourceClaims.
resources.claims.name (string), обовʼязково
Імʼя повинно відповідати імені одного запису в pod.spec.resourceClaims Podʼа, де використовується це поле. Це робить цей ресурс доступним всередині контейнера.
resources.claims.request (string)
Request — це імʼя, вибране для запиту в зазначеній заявці. Якщо поле порожнє, буде доступно все з заявки; в іншому випадку, доступний буде лише результат цього запиту.
Requests описує мінімальну кількість обчислювальних ресурсів, що потрібна. Якщо Requests відсутній для контейнера, він стандартно встановлюється в Limits, якщо це явно вказано, інакше — у значення, визначеного реалізацією. Requests не може перевищувати Limits. Докладніше: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
resizePolicy ([]ContainerResizePolicy)
Atomic: буде замінено під час обʼєднання
Політика зміни розміру ресурсів для контейнера.
ContainerResizePolicy представляє політику зміни розміру ресурсів для контейнера.
resizePolicy.resourceName (string), обовʼязково
Назва ресурсу, до якого застосовується ця політика зміни розміру ресурсу. Підтримувані значення: cpu, memory.
resizePolicy.restartPolicy (string), обовʼязково
Політика перезапуску, яку застосовувати при зміні розміру вказаного ресурсу. Якщо не вказано, то стандартно встановлюється NotRequired.
Життєвий цикл
lifecycle (Lifecycle)
Дії, які система управління повинна виконати у відповідь на події життєвого циклу контейнера. Не може бути оновлено.
Lifecycle описує дії, які система управління повинна виконати у відповідь на події життєвого циклу контейнера. Для обробників життєвого циклу PostStart і PreStop управління контейнером блокується, поки дія не буде завершена, якщо процес контейнера виявляється несправним, тоді обробник переривається.
PreStop викликається негайно перед тим, як контейнер буде завершено через запит API або подію управління, таку як невдача проби справності/запуску, випередження, скорочення ресурсів тощо. Обробник не викликається, якщо контейнер впаде або закінчить роботу. Період перебігу належного завершення підраховується до виконання хуку PreStop. Незалежно від результату обробника, контейнер в кінцевому підсумку завершиться протягом періоду належного завершення Pod (якщо він не буде затриманий завершенням залишкових операцій). Інше управління контейнером блокується, поки хук не завершиться або досягне періоду належного завершення. Докладніше: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
terminationMessagePath (string)
Необовʼязково: Шлях, за яким файл, до якого буде записано повідомлення про завершення контейнера, буде вмонтовано в файлову систему контейнера. Записане повідомлення, призначено для короткого кінцевого статусу, наприклад, повідомлення про помилку виразу. Якщо воно більше 4096 байт, то вузол скоротить його. Загальна довжина повідомлення по всіх контейнерах буде обмежена 12 кб. Стандартне значення — /dev/termination-log. Не може бути оновлено.
terminationMessagePolicy (string)
Вказує, як має бути заповнене повідомлення про завершення. File використовуватиме вміст terminationMessagePath для заповнення повідомлення про статус контейнера при успіху і невдачі. FallbackToLogsOnError використовуватиме останній шматок виводу логу контейнера, якщо файл повідомлення про завершення пустий і контейнер завершився з помилкою. Вивід логу обмежено 2048 байтами або 80 рядками, якщо це менше. Стандартне значення — File. Не може бути оновлено.
StartupProbe вказує, що Pod успішно ініціалізовано. Якщо вказано, інші проби не виконуються, поки ця не закінчиться успіхом. Якщо цей тест не вдасться, Pod буде перезапущено, так само, як і в разі невдачі livenessProbe. Це може бути використано для надання різних параметрів проби на початку життєвого циклу Podʼа, коли завантаження даних або оновлення кешу може займати довгий час, ніж під час регулярної роботи. Це не може бути оновлено. Докладніше: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle#container-probes
restartPolicy (string)
RestartPolicy визначає поведінку перезапуску окремих контейнерів у Podʼі. Це поле може бути встановлено тільки для контейнерів ініціалізації, і єдине допустиме значення — "Always". Для інших контейнерів, відмінних від контейнерів ініціалізації, або коли це поле не вказано, поведінка перезапуску визначається політикою перезапуску Podʼа і типом контейнера. Встановлення RestartPolicy як "Always" для контейнера ініціалізації матиме наступний ефект: цей контейнер ініціалізації буде постійно перезапускатися при виході, поки всі звичайні контейнери не завершаться. Як тільки всі звичайні контейнери завершаться, всі контейнери ініціалізації з RestartPolicy "Always" будуть вимкнені. Цей життєвий цикл відрізняється від звичайних контейнерів ініціалізації і часто називається "sidecar" контейнер. Хоча цей контейнер ініціалізації все ще запускається у послідовності контейнерів ініціалізації, він не чекає на завершення роботи контейнера, перш ніж переходити до наступного контейнера ініціалізації . Натомість, наступний контейнер ініціалізації запускається одразу після запуску цього контейнера ініціалізації або після успішного завершення будь-якого startupProbe.
SecurityContext містить конфігурацію безпеки, яка буде застосована до контейнера. Деякі поля присутні як у SecurityContext, так і в PodSecurityContext. Якщо обидва встановлені, значення в SecurityContext мають пріоритет.
AllowPrivilegeEscalation контролює, чи може процес отримати більше привілеїв, ніж його батьківський процес. Цей булевий параметр безпосередньо контролює, чи буде встановлено прапоркць no_new_privs для процесу контейнера. AllowPrivilegeEscalation завжди має значення true, коли контейнер:
Запускається з привілеями (Privileged)
Має CAP_SYS_ADMIN
Зверніть увагу, що це поле не може бути встановлене, коли spec.os.name дорівнює windows.
securityContext.appArmorProfile (AppArmorProfile)
appArmorProfile — це параметри AppArmor, які використовуються цим контейнером. Якщо встановлено, цей профіль переважає профіль AppArmor podʼа. Зверніть увагу, що це поле не може бути встановлене, коли spec.os.name дорівнює windows.
AppArmorProfile визначає налаштування AppArmor для podʼа або контейнера.
localhostProfile вказує профіль, завантажений на вузлі, який слід використовувати. Профіль має бути попередньо налаштований на вузлі для коректної роботи. Назва профілю повинна відповідати завантаженій назві. Це поле повинно бути встановлене, якщо і тільки якщо тип дорівнює "Localhost".
securityContext.capabilities (Capabilities)
Можливості для додавання/видалення під час запуску контейнерів. Стандарто використовується набір можливостей, наданих середовищем виконання контейнера. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
Додає та видаляє можливості POSIX з працюючих контейнерів.
securityContext.capabilities.add ([]string)
Atomic: буде замінено під час обʼєднання
Додані можливості.
securityContext.capabilities.drop ([]string)
Atomic: буде замінено під час обʼєднання
Видалені можливості.
securityContext.procMount (string)
procMount вказує тип монтування файлової системи /proc, який слід використовувати для контейнерів. Стандартне значення — Default, що використовує стандартні налаштування середовища виконання контейнерів для шляхів тільки для читання та замаскованих шляхів. Це вимагає ввімкнення функціональної можливості ProcMountType. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
securityContext.privileged (boolean)
Запуск контейнера у привілейованому режимі. Процеси у привілейованих контейнерах по суті еквівалентні root на хості. Стандартно дорівнює false. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
securityContext.readOnlyRootFilesystem (boolean)
Чи має цей контейнер кореневу файлову систему тільки для читання. Стандартно дорівнює false. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
securityContext.runAsUser (int64)
UID, з яким запускається початковий процес контейнера. Стандартно використовується користувач, вказаний у метаданих образу, якщо не вказано інше. Також може бути встановлено в PodSecurityContext. Якщо значення встановлено як у SecurityContext, так і в PodSecurityContext, пріоритет має значення, зазначене в SecurityContext. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
securityContext.runAsNonRoot (boolean)
Вказує, що контейнер повинен запускатися як користувач, який не є root. Якщо значення true, Kubelet перевірить образ під час виконання, щоб гарантувати, що він не запускається з UID 0 (root), і не запустить контейнер, якщо це не так. Якщо поле не встановлено або має значення false, така перевірка не виконується. Також може бути налаштовано в SecurityContext. Якщо значення встановлено як у SecurityContext, так і в PodSecurityContext, пріоритет має значення, вказане в SecurityContext.
securityContext.runAsGroup (int64)
GID, під яким запускається початковий процес контейнера. Якщо не встановлено, використовується стандартне значення для середовища виконання. Також може бути вказано в SecurityContext. Якщо значення встановлено як у SecurityContext, так і в PodSecurityContext, пріоритет має значення, зазначене в SecurityContext для цього контейнера. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
securityContext.seLinuxOptions (SELinuxOptions)
Контекст SELinux, який буде застосований до контейнера. Якщо не вказано, середовище виконання контейнера призначить випадковий контекст SELinux для кожного контейнера. Може також бути встановлено в PodSecurityContext. Якщо встановлено в обох SecurityContext і PodSecurityContext, пріоритет має значення, вказане в SecurityContext. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
SELinuxOptions — це мітки, що застосовуються до контейнера
securityContext.seLinuxOptions.level (string)
Level є міткою рівня SELinux, що застосовується до контейнера.
securityContext.seLinuxOptions.role (string)
Role є міткою ролі SELinux, що застосовується до контейнера.
securityContext.seLinuxOptions.type (string)
Type є міткою типу SELinux, що застосовується до контейнера.
securityContext.seLinuxOptions.user (string)
User є міткою користувача SELinux, що застосовується до контейнера.
securityContext.seccompProfile (SeccompProfile)
Параметри seccomp для використання контейнерами в цьому Podʼі. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
SeccompProfile визначає налаштування профілю seccomp для Podʼа/контейнера. Може бути встановлено лише одне джерело профілю.
localhostProfile вказує, що має бути використаний профіль, визначений у файлі на вузлі. Профіль має бути попередньо налаштований на вузлі, щоб працювати. Має бути низхідний шлях, відносно до налаштованого розташування профілю seccomp kubelet. Має бути встановлено, якщо тип "Localhost". НЕ має бути встановлено для будь-якого іншого типу.
Специфічні налаштування для Windows, які застосовуються до всіх контейнерів. Якщо не вказано, використовуються опції з PodSecurityContext. Якщо встановлено в обох SecurityContext і PodSecurityContext, пріоритет має значення, вказане в SecurityContext. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є linux.
WindowsSecurityContextOptions містять специфічні для Windows параметри та облікові дані.
HostProcess визначає, чи слід запускати контейнер як контейнер ʼHost Processʼ. Усі контейнери Pod повинні мати однакове значення HostProcess (не дозволено мати суміш контейнерів HostProcess та не-HostProcess). Крім того, якщо HostProcess є true, то HostNetwork також повинен бути встановлений у true.
Імʼя користувача в Windows для запуску точки входу процесу контейнера. Стандартно використовується користувач, вказаний у метаданих образу, якщо не вказано. Може також бути встановлено в PodSecurityContext. Якщо встановлено в обох SecurityContext і PodSecurityContext, пріоритет має значення, вказане в SecurityContext.
Налагодження
stdin (boolean)
Чи повинен цей контейнер виділяти буфер для stdin у середовищі виконання контейнера. Якщо це не встановлено, читання з stdin у контейнері завжди буде призводити до EOF. Стандартно — false.
stdinOnce (boolean)
Чи повинне середовище виконання контейнера закрити канал stdin після того, як він був відкритий одним підключенням. Коли stdin дорівнює true, потік stdin залишатиметься відкритим протягом декількох сеансів підключення. Якщо stdinOnce встановлено у true, stdin відкривається під час запуску контейнера, залишається порожнім до першого підключення клієнта до stdin, а потім залишається відкритим і приймає дані до відключення клієнта, після чого stdin закривається і залишається закритим до перезапуску контейнера. Якщо цей прапорець встановлено у false, процеси контейнера, що читають з stdin, ніколи не отримають EOF. Стандартно — false.
tty (boolean)
Чи повинен цей контейнер виділяти для себе TTY, також вимагає, щоб 'stdin' був true. Стандартно — false.
Ефемерний контейнер
Ефемерний контейнер — це тимчасовий контейнер, який ви можете додати до існуючого Pod для ініційованих користувачем дій, таких як налагодження. Ефемерні контейнери не мають гарантій щодо ресурсів або планування, і вони не будуть перезапускатися після завершення роботи або при видаленні чи перезапуску Pod. Kubelet може виселити Pod, якщо ефемерний контейнер спричинить перевищення виділених ресурсів для Pod.
Щоб додати ефемерний контейнер, використовуйте субресурс ephemeralcontainers поточного Pod. Ефемерні контейнери не можуть бути видалені або перезапущені.
name (string), обовʼязкове
Імʼя ефемерного контейнера, вказане як DNS_LABEL. Це імʼя повинно бути унікальним серед усіх контейнерів, контейнерів ініціалізації та ефемерних контейнерів.
targetContainerName (string)
Якщо встановлено, імʼя контейнера з PodSpec, на який націлюється цей ефемерний контейнер. Ефемерний контейнер буде працювати в тих самих просторах імен (IPC, PID тощо), що і цей контейнер. Якщо не встановлено, то ефемерний контейнер використовує простори імен, налаштовані в специфікації Pod.
Середовище виконання контейнера повинно підтримувати цю функцію. Якщо середовище виконання не підтримує націлювання простору імен, то результат налаштування цього поля є невизначеним.
Масив команд для точки входу. Не виконується в оболонці. Використовується ENTRYPOINT образу, якщо це не задано. Змінні $(VAR_NAME) розширюються за допомогою середовища контейнера. Якщо змінну не вдасться розгорнути, посилання у вхідному рядку залишиться без змін. Подвійні $$ зменшуються до одного $, що дозволяє екранувати синтаксис $(VAR_NAME): наприклад, "$$(VAR_NAME)" виведе літеральний рядок "$(VAR_NAME)". Екрановані посилання ніколи не будуть розгортатися, незалежно від того, чи існує змінна, чи ні. Не може бути оновлено. Докладніше: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
args ([]string)
Atomic: буде замінено під час злиття
Аргументи для точки входу. Якщо не надано, буде використано CMD образу контейнера. Змінні $(VAR_NAME) розширюються за допомогою середовища контейнера. Якщо змінну не вдасться розгорнути, посилання у вхідному рядку залишиться без змін. Подвійні $$ зменшуються до одного $, що дозволяє екранувати синтаксис $(VAR_NAME): наприклад, "$$(VAR_NAME)" виведе літеральний рядок "$(VAR_NAME)". Екрановані посилання ніколи не будуть розгортатися, незалежно від того, чи існує змінна, чи ні. Не може бути оновлено. Докладніше: https://kubernetes.io/docs/tasks/inject-data-application/define-command-argument-container/#running-a-command-in-a-shell
workingDir (string)
Робоча тека контейнера. Якщо не вказано, буде використано стандартне значення контейнера, яке може бути налаштоване в образі контейнера. Не може бути оновлено.
Змінні середовища
env ([]EnvVar)
Patch strategy: обʼєднання за ключем name
Map: унікальні значення ключа name будуть збережені під час злиття
Список змінних середовища для передачі в контейнер. Не може бути оновлено.
EnvVar представляє змінну середовища, присутню в контейнері.
name (string), обовʼязково
Назва змінної середовища. Повинно бути C_IDENTIFIER.
value (string)
Змінні посилання $(VAR_NAME) розгортаються за допомогою попередньо визначених змінних середовища в контейнері та будь-яких змінних середовища Service. Якщо змінну не вдається розʼязати, посилання відносно введеного рядка буде незмінним. Подвійний $$ зменшується до одного $, що дозволяє екранувати синтаксис $(VAR_NAME): тобто "$$(VAR_NAME)" буде створювати літеральний рядок "$(VAR_NAME)". Екрановані посилання ніколи не будуть розгорнуті, незалежно від того, чи існує змінна, чи ні. Стандартне значення — "".
env.valueFrom (EnvVarSource)
Джерело значення змінної середовища. Не може бути використано, якщо значення не є пустим.
Вибирає ресурс контейнера: наразі підтримуються лише обмеження і запити ресурсів (limits.cpu, limits.memory, limits.ephemeral-storage, requests.cpu, requests.memory та requests.ephemeral-storage).
Зазначає, чи має бути визначений Secret або його ключ
envFrom ([]EnvFromSource)
Atomic: буде замінено під час злиття
Список джерел для заповнення змінних середовища в контейнері. Ключі, визначені в межах джерела, повинні бути C_IDENTIFIER. Усі хибні ключі будуть повідомлені як подія при запуску контейнера. Коли ключ існує в декількох джерелах, значення, що асоціюється з останнім джерелом, буде мати пріоритет. Значення, визначене за допомогою Env з дубльованим ключем, буде мати пріоритет. Не може бути оновлено.
EnvFromSource представляє джерело набору ConfigMaps
envFrom.configMapRef (ConfigMapEnvSource)
ConfigMap для вибору з
ConfigMapEnvSource вибирає ConfigMap для заповнення змінними середовища.
Зміст поля Data цільового ConfigMap буде представлено в парах ключ-значення як змінні середовища.
Map: унікальні значення ключа mountPath будуть збережені під час злиття
Томи Podʼів для монтування у файлову систему контейнера. Субшляхи монтування в ефемерних контейнерах не дозволяються. Не може бути оновлено.
VolumeMount описує монтування Тому всередині контейнера.
volumeMounts.mountPath (string), обовʼязково
Шлях всередині контейнера, за яким повинен бути змонтований том. Не повинен містити ':'.
volumeMounts.name (string), обовʼязково
Повинно відповідати імені Тому.
volumeMounts.mountPropagation (string)
mountPropagation визначає, як монтування розповсюджуються від хоста до контейнера і навпаки. Коли не встановлено, використовується MountPropagationNone. Це поле є бета-версією в 1.10. Коли RecursiveReadOnly встановлено на IfPossible або Enabled, MountPropagation повинно бути None або невказаним (що стандартно дорівнює None).
volumeMounts.readOnly (boolean)
Змонтований як тільки для читання, якщо true, для читання/запису в іншому випадку (false або не вказано). Стандартне значення — false.
volumeMounts.recursiveReadOnly (string)
RecursiveReadOnly визначає, чи повинні змонтовані в режимі "тільки для читання" ресурси оброблятися рекурсивно.
Якщо ReadOnly дорівнює false, це поле не має значення і не повинно бути вказаним.
Якщо ReadOnly дорівнює true і це поле встановлено на Disabled, монтування не виконується рекурсивно в режимі "тільки для читання". Якщо це поле встановлено на IfPossible, монтування виконується рекурсивно в режимі "тільки для читання", якщо це підтримується контейнерним середовищем. Якщо це поле встановлено на Enabled, монтування виконується рекурсивно в режимі "тільки для читання", якщо це підтримується контейнерним середовищем, інакше pod не буде запущено, і буде згенеровано помилку з відповідною причиною.
Якщо це поле встановлено на IfPossible або Enabled, значення MountPropagation повинно бути встановлено на None (або бути невказаним, що стандартно дорівнює None).
Якщо це поле не вказано, воно вважається еквівалентним до Disabled.
volumeMounts.subPath (string)
Шлях всередині тому, з якого має бути змонтований том контейнера. Стандартне значення — "" (корінь тому).
volumeMounts.subPathExpr (string)
Розгорнутий шлях всередині тому, з якого має бути змонтований том контейнера. Поводиться схоже до SubPath, але посилання на змінні середовища $(VAR_NAME) розгортаються за допомогою середовища контейнера. Стандартне значення — "" (корінь тому). SubPathExpr і SubPath є взаємовиключними.
volumeDevices ([]VolumeDevice)
Patch strategy: обʼєднання за ключем devicePath
Map: унікальні значення ключа devicePath будуть збережені під час злиття
volumeDevices — це список блочних пристроїв, які будуть використані контейнером.
volumeDevice описує зіставлення необробленого блочного пристрою всередині контейнера.
volumeDevices.devicePath (string), обовʼязково
devicePath — це шлях всередині контейнера, на який буде зіставлено пристрій.
volumeDevices.name (string), обовʼязково
name повинно відповідати імені persistentVolumeClaim в Podʼі.
Ресурси
resizePolicy ([]ContainerResizePolicy)
Atomic: буде замінено під час обʼєднання
Політика зміни розміру ресурсів для контейнера.
ContainerResizePolicy представляє політику зміни розміру ресурсів для контейнера.
resizePolicy.resourceName (string), обовʼязково
Назва ресурсу, до якого застосовується ця політика зміни розміру ресурсу. Підтримувані значення: cpu, memory.
resizePolicy.restartPolicy (string), обовʼязково
Політика перезапуску, яку застосовувати при зміні розміру вказаного ресурсу. Якщо не вказано, то стандартно встановлюється NotRequired.
Життєвий цикл
terminationMessagePath (string)
Необовʼязково: Шлях, за яким файл, до якого буде записано повідомлення про завершення контейнера, буде вмонтовано в файлову систему контейнера. Записане повідомлення, призначено для короткого кінцевого статусу, наприклад, повідомлення про помилку виразу. Якщо воно більше 4096 байт, то вузол скоротить його. Загальна довжина повідомлення по всіх контейнерах буде обмежена 12 кб. Стандартне значення — /dev/termination-log. Не може бути оновлено.
terminationMessagePolicy (string)
Вказує, як має бути заповнене повідомлення про завершення. File використовуватиме вміст terminationMessagePath для заповнення повідомлення про статус контейнера при успіху і невдачі. FallbackToLogsOnError використовуватиме останній шматок виводу логу контейнера, якщо файл повідомлення про завершення пустий і контейнер завершився з помилкою. Вивід логу обмежено 2048 байтами або 80 рядками, якщо це менше. Стандартне значення — File. Не може бути оновлено.
restartPolicy (string)
RestartPolicy визначає поведінку перезапуску окремих контейнерів у Podʼі. Це поле може бути встановлено тільки для контейнерів ініціалізації. Ви не можете встановити це поле для ефемерних контейнерів.
Налагодження
stdin (boolean)
Чи повинен цей контейнер виділяти буфер для stdin у середовищі виконання контейнера. Якщо це не встановлено, читання з stdin у контейнері завжди буде призводити до EOF. Стандартно — false.
stdinOnce (boolean)
Чи повинне середовище виконання контейнера закрити канал stdin після того, як він був відкритий одним підключенням. Коли stdin дорівнює true, потік stdin залишатиметься відкритим протягом декількох сеансів підключення. Якщо stdinOnce встановлено у true, stdin відкривається під час запуску контейнера, залишається порожнім до першого підключення клієнта до stdin, а потім залишається відкритим і приймає дані до відключення клієнта, після чого stdin закривається і залишається закритим до перезапуску контейнера. Якщо цей прапорець встановлено у false, процеси контейнера, що читають з stdin, ніколи не отримають EOF. Стандартно — false.
tty (boolean)
Чи повинен цей контейнер виділяти для себе TTY, також вимагає, щоб 'stdin' був true. Стандартно — false.
SecurityContext містить конфігурацію безпеки, яка буде застосована до контейнера. Деякі поля присутні як у SecurityContext, так і в PodSecurityContext. Якщо обидва встановлені, значення в SecurityContext мають пріоритет.
AllowPrivilegeEscalation керує тим, чи може процес отримати більше привілеїв, ніж батьківський процес. Це булеве значення безпосередньо контролює, чи буде встановлений прапорець no_new_privs для процесу контейнера.
AllowPrivilegeEscalation завжди має значення true за наступних умов:
Контейнер запускається в привілейованому режимі (Privileged).
Контейнер має CAP_SYS_ADMIN.
Зверніть увагу, що це поле не можна встановити, якщо spec.os.name дорівнює windows.
securityContext.appArmorProfile (AppArmorProfile)
appArmorProfile визначає параметри AppArmor, які використовуються для цього контейнера. Якщо встановлено, цей профіль замінює профіль AppArmor для всього podʼа. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
AppArmorProfile визначає налаштування AppArmor для podʼа або контейнера.
localhostProfile вказує профіль, завантажений на вузлі, який слід використовувати. Профіль має бути попередньо налаштований на вузлі для коректної роботи. Назва профілю повинна відповідати завантаженій назві. Це поле повинно бути встановлене, якщо і тільки якщо тип дорівнює "Localhost".
securityContext.capabilities (Capabilities)
Можливості для додавання/видалення під час запуску контейнерів. Стандарто використовується набір можливостей, наданих середовищем виконання контейнера. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
Додає та видаляє можливості POSIX з працюючих контейнерів.
securityContext.capabilities.add ([]string)
Atomic: буде замінено під час злиття
Додані можливості.
securityContext.capabilities.drop ([]string)
Atomic: буде замінено під час злиття
Видалені можливості.
securityContext.procMount (string)
procMount позначає тип монтування proc, який слід використовувати для контейнерів. Стандартне значення — Default, яке використовує стандартні налаштування середовища виконання контейнера для шляхів тільки для читання та змаскованих шляхів. Це вимагає увімкнення прапорця функції ProcMountType. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
securityContext.privileged (boolean)
Запуск контейнера у привілейованому режимі. Процеси у привілейованих контейнерах по суті еквівалентні root на хості. Стандартно дорівнює false. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
securityContext.readOnlyRootFilesystem (boolean)
Чи має цей контейнер кореневу файлову систему тільки для читання. Стандартно дорівнює false. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
securityContext.runAsUser (int64)
UID, з яким запускається початковий процес контейнера. Стандартно використовується користувач, вказаний у метаданих образу, якщо не вказано інше. Також може бути встановлено в PodSecurityContext. Якщо значення встановлено як у SecurityContext, так і в PodSecurityContext, пріоритет має значення, зазначене в SecurityContext. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
securityContext.runAsNonRoot (boolean)
Вказує, що контейнер повинен запускатися як користувач, який не є root. Якщо значення true, Kubelet перевірить образ під час виконання, щоб гарантувати, що він не запускається з UID 0 (root), і не запустить контейнер, якщо це не так. Якщо поле не встановлено або має значення false, така перевірка не виконується. Також може бути налаштовано в SecurityContext. Якщо значення встановлено як у SecurityContext, так і в PodSecurityContext, пріоритет має значення, вказане в SecurityContext.
securityContext.runAsGroup (int64)
GID, під яким запускається початковий процес контейнера. Якщо не встановлено, використовується стандартне значення для середовища виконання. Також може бути вказано в SecurityContext. Якщо значення встановлено як у SecurityContext, так і в PodSecurityContext, пріоритет має значення, зазначене в SecurityContext для цього контейнера. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
securityContext.seLinuxOptions (SELinuxOptions)
Контекст SELinux, який буде застосований до контейнера. Якщо не вказано, середовище виконання контейнера призначить випадковий контекст SELinux для кожного контейнера. Може також бути встановлено в PodSecurityContext. Якщо встановлено в обох SecurityContext і PodSecurityContext, пріоритет має значення, вказане в SecurityContext. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є windows.
SELinuxOptions — це мітки, що застосовуються до контейнера
securityContext.seLinuxOptions.level (string)
Level є міткою рівня SELinux, що застосовується до контейнера.
securityContext.seLinuxOptions.role (string)
Role є міткою ролі SELinux, що застосовується до контейнера.
securityContext.seLinuxOptions.type (string)
Type є міткою типу SELinux, що застосовується до контейнера.
securityContext.seLinuxOptions.user (string)
User є міткою користувача SELinux, що застосовується до контейнера.
securityContext.seccompProfile (SeccompProfile)
Параметри seccomp для використання контейнерами в цьому Podʼі. Зверніть увагу, що це поле не можна встановити, коли spec.os.name — windows.
SeccompProfile визначає налаштування профілю seccomp для Podʼа/контейнера. Може бути встановлено лише одне джерело профілю.
localhostProfile вказує, що має бути використаний профіль, визначений у файлі на вузлі. Профіль має бути попередньо налаштований на вузлі, щоб працювати. Має бути низхідний шлях, відносно до налаштованого розташування профілю seccomp kubelet. Має бути встановлено, якщо тип "Localhost". НЕ має бути встановлено для будь-якого іншого типу.
Специфічні налаштування для Windows, які застосовуються до всіх контейнерів. Якщо не вказано, використовуються опції з PodSecurityContext. Якщо встановлено в обох SecurityContext і PodSecurityContext, пріоритет має значення, вказане в SecurityContext. Зверніть увагу, що це поле не може бути встановлено, коли spec.os.name є linux.
WindowsSecurityContextOptions містять специфічні для Windows параметри та облікові дані.
HostProcess визначає, чи слід запускати контейнер як контейнер ʼHost Processʼ. Усі контейнери Pod повинні мати однакове значення HostProcess (не дозволено мати суміш контейнерів HostProcess та не-HostProcess). Крім того, якщо HostProcess є true, то HostNetwork також повинен бути встановлений у true.
Імʼя користувача в Windows для запуску точки входу процесу контейнера. Стандартно використовується користувач, вказаний у метаданих образу, якщо не вказано. Може також бути встановлено в PodSecurityContext. Якщо встановлено в обох SecurityContext і PodSecurityContext, пріоритет має значення, вказане в SecurityContext.
Не дозволяються
ports ([]ContainerPort)
Patch strategy: обʼєднання за ключем containerPort
Map: унікальні значення за ключами containerPort, protocol будуть збережені під час обʼєднання
Для ефемерних контейнерів визначення портів не дозволяється.
ContainerPort представляє мережевий порт в одному контейнері.
ports.containerPort (int32), обовʼязково
Номер порту для відкриття на IP-адресі контейнера. Це повинен бути дійсний номер порту, 0 < x < 65536.
ports.hostIP (string)
IP-адреса хоста, що звʼязується з зовнішнім портом.
ports.hostPort (int32)
Номер порту для відкриття на хості. Якщо вказано, це повинен бути дійсний номер порту, 0 < x < 65536. Якщо вказано HostNetwork, це значення повинно збігатися з ContainerPort. Більшість контейнерів цього не потребують.
ports.name (string)
Якщо вказано, це повинен бути IANA_SVC_NAME і єдиним в межах Podʼа. Кожен іменований порт в Podʼі повинен мати унікальне імʼя. Назва порту, на яку можна посилатися з Service.
ports.protocol (string)
Протокол для порту. Повинен бути UDP, TCP або SCTP. Стандартне значення — "TCP".
resources (ResourceRequirements)
Для ефемерних контейнерів заборонено використовувати ресурси. Ефемерні контейнери використовують вільні ресурси, вже виділені для Podʼа.
resources.claims ([]ResourceClaim)
Map: унікальні значення за ключем будуть збережені під час обʼєднання
Claims містить назви ресурсів, визначених в spec.resourceClaims, які використовуються цим контейнером.
Це поле альфа-версії і вимагає включення функціоналу DynamicResourceAllocation.
Це поле є незмінним. Його можна встановити тільки для контейнерів.
ResourceClaim посилається на один запис в PodSpec.ResourceClaims.
resources.claims.name (string), обовʼязково
Імʼя повинно відповідати імені одного запису в pod.spec.resourceClaims Podʼа, де використовується це поле. Це робить цей ресурс доступним всередині контейнера.
resources.claims.request (string)
Request — це імʼя, вибране для запиту в зазначеній заявці. Якщо поле порожнє, буде доступно все з заявки; в іншому випадку, доступний буде лише результат цього запиту.
Requests описує мінімальну кількість обчислювальних ресурсів, що потрібна. Якщо Requests відсутній для контейнера, він стандартно встановлюється в Limits, якщо це явно вказано, інакше — у значення, визначеного реалізацією. Requests не може перевищувати Limits. Докладніше: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
lifecycle (Lifecycle)
Для ефемерних контейнерів заборонено використовувати lifecycle.
Lifecycle описує дії, які система управління повинна виконати у відповідь на події життєвого циклу контейнера. Для обробників життєвого циклу PostStart і PreStop управління контейнером блокується, поки дія не буде завершена, якщо процес контейнера виявляється несправним, тоді обробник переривається.
PreStop викликається негайно перед тим, як контейнер буде завершено через запит API або подію управління, таку як невдача проби справності/запуску, випередження, скорочення ресурсів тощо. Обробник не викликається, якщо контейнер впаде або закінчить роботу. Період перебігу належного завершення підраховується до виконання хуку PreStop. Незалежно від результату обробника, контейнер в кінцевому підсумку завершиться протягом періоду належного завершення Pod (якщо він не буде затриманий завершенням залишкових операцій). Інше управління контейнером блокується, поки хук не завершиться або досягне періоду належного завершення. Докладніше: https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks
Обробник життєвого циклу (LifecycleHandler) визначає конкретну дію, яку слід виконати в хуці життєвого циклу. Має бути вказане тільки одне з полів, за винятком TCPSocket.
exec (ExecAction)
Exec визначає дію, яку слід виконати.
ExecAction описує дію "виконати в контейнері".
exec.command ([]string)
Atomic: буде замінено під час злиття
Command — це командний рядок для виконання всередині контейнера, робоча тека для команди — корінь ('/') у файловій системі контейнера. Команда виконується безпосередньо, а не в оболонці, тому традиційні команди оболонки ('|', тощо) не працюватимуть. Для використання оболонки потрібно явно викликати цю оболонку. Статус виходу 0 вважається готовим/справним, а ненульовий — несправним.
httpGet (HTTPGetAction)
HTTPGet визначає HTTP-запит, який слід виконати.
HTTPGetAction описує дію на основі HTTP Get-запитів.
httpGet.port (IntOrString), обовʼязково
Назва або номер порту для доступу до контейнера. Номер повинен бути в діапазоні від 1 до 65535. Назва повинна бути IANA_SVC_NAME.
IntOrString — це тип, який може містити int32 або рядок. Під час перетворення з/у JSON або YAML він створює або споживає внутрішній тип. Це дозволяє мати, наприклад, поле JSON, яке може приймати назву або номер.
httpGet.host (string)
Імʼя хосту для підключення, стандартно використовується IP-адреса Podʼа. Ймовірно, вам потрібно встановити "Host" в httpHeaders замість цього.
httpGet.httpHeaders ([]HTTPHeader)
Atomic: буде замінено під час злиття
Власні заголовки для встановлення в запиті. HTTP дозволяє повторювані заголовки.
HTTPHeader описує власний заголовок, який буде використовуватись в HTTP-пробах.
httpGet.httpHeaders.name (string), обовʼязково
Назва поля заголовка. Воно буде канонізовано при виведенні, тому імена, що відрізняються регістром, будуть сприйматись як один і той самий заголовок.
httpGet.httpHeaders.value (string), обовʼязково
Значення поля заголовка.
httpGet.path (string)
Шлях для доступу до HTTP-сервера.
httpGet.scheme (string)
Схема для підключення до хоста. Стандартне значення — HTTP.
sleep (SleepAction)
Sleep представляє тривалість, протягом якої контейнер повинен бездіяти перед завершенням.
SleepAction описує дію "sleep".
sleep.seconds (int64), обовʼязково
Seconds — кількість секунд для sleep.
tcpSocket (TCPSocketAction)
Застаріло. TCPSocket НЕ підтримується як обробник життєвого циклу та зберігається для зворотної сумісності. Валідації цього поля не проводиться, і хуки життєвого циклу зазнають невдачі під час виконання, коли вказано обробник tcp.
TCPSocketAction описує дію на основі відкриття сокета
tcpSocket.port (IntOrString), обовʼязково
Номер або назва порту для доступу до контейнера. Номер повинен бути в діапазоні від 1 до 65535. Назва повинна бути IANA_SVC_NAME.
IntOrString — це тип, який може містити int32 або рядок. Під час перетворення з/у JSON або YAML він створює або споживає внутрішній тип. Це дозволяє мати, наприклад, поле JSON, яке може приймати назву або номер.
tcpSocket.host (string)
Додатково: Імʼя хоста для підключення, стандартно використовується IP-адреса Podʼа.
NodeAffinity
Node affinity — це група правил планування вузлів за спорідненістю.
Планувальник надаватиме перевагу розміщенню Podʼів на вузлах, які відповідають виразам спорідненості, зазначеним у цьому полі, але може вибрати вузол, який порушує один або кілька цих виразів. Найбільш пріоритетним є вузол із найбільшою сумою ваг, тобто для кожного вузла, який відповідає всім вимогам планування (запит ресурсів, вирази спорідненості requiredDuringScheduling тощо), обчислюється сума шляхом ітерації через елементи цього поля та додавання "ваги" до суми, якщо вузол відповідає відповідним matchExpressions; вузол(и) з найвищою сумою є найпріоритетнішими.
Порожній термін пріоритету планування відповідає всім об’єктам з неявною вагою 0 (тобто, він не діє). Нульовий термін пріоритету планування не відповідає жодному обʼєкту (тобто, також не діє).
Термін селектора вузлів, пов’язаний з відповідною вагою.
Нульовий або порожній термін селектора вузлів не відповідає жодному обʼєкту. Вимоги до них обʼєднані за допомогою операції AND. Тип TopologySelectorTerm реалізує підмножину NodeSelectorTerm.
Якщо вимоги спорідненості, зазначені в цьому полі, не будуть виконані під час планування, Pod не буде розміщено на вузлі. Якщо вимоги спорідненості, зазначені в цьому полі, перестануть виконуватися в якийсь момент під час виконання Podʼа (наприклад, через оновлення), система може або не може спробувати врешті-решт виселити Pod з його вузла.
Селектор вузлів представляє обʼєднання результатів одного або кількох запитів за мітками до набору вузлів; тобто він представляє OR селекторів, представлених термінами селектора вузлів.
Обов’язковий. Список термінів селектора вузлів. Терміни обʼєднані за допомогою операції OR.
Null або порожній термін селектора вузла не відповідає жодному об'єкту. Вимоги до них складаються за принципом AND. Тип TopologySelectorTerm реалізує підмножину NodeSelectorTerm.
Планувальник надаватиме перевагу розміщенню Podʼів на вузлах, які відповідають виразам спорідненості, зазначеним у цьому полі, але може вибрати вузол, який порушує один або кілька з цих виразів. Найбільш пріоритетним є вузол із найбільшою сумою ваг, тобто для кожного вузла, який відповідає всім вимогам планування (запит ресурсів, вирази спорідненості requiredDuringScheduling тощо), обчислюється сума шляхом ітерації через елементи цього поля та додавання "ваги" до суми, якщо на вузлі є Podʼи, які відповідають відповідному podAffinityTerm; вузол(и) з найвищою сумою є найпріоритетнішими.
Ваги всіх відповідних полів WeightedPodAffinityTerm додаються для кожного вузла, щоб знайти найпріоритетніший(і) вузол(и).
Обов’язковий. Термін спорідненості Podʼа, пов’язаний з відповідною вагою.
Визначає набір Podʼів (тобто тих, які відповідають labelSelector у стосунку до заданих простірів імен), з якими цей Pod має бути розміщений разом (спорідненість) або не разом (анти-спорідненість), де розміщення разом визначається як виконання на вузлі, значення мітки якого з ключем <topologyKey> збігається з будь-яким вузлом, на якому виконується Pod з набору Podʼів.
Цей Pod має бути розміщений разом (спорідненість) або не разом (анти-спорідненість) з Podʼами, які відповідають labelSelector у зазначених просторах імен, де розміщення разом визначається як виконання на вузлі, значення мітки якого з ключем topologyKey збігається з будь-яким вузлом, на якому виконується будь-який з вибраних Podʼів. Порожній topologyKey не допускається.
MatchLabelKeys — це набір ключів міток podʼів для вибору podʼів, які будуть враховані. Ключі використовуються для пошуку значень у мітках вхідних podʼів, ці мітки ключ-значення обʼєднуються з labelSelector як key in (value), щоб вибрати групу існуючих podʼів, які будуть враховані для (анти)спорідненості вхідного podʼа. Ключі, яких немає у вхідних мітках podʼів, ігноруються. Стандартне значення – порожнє. Один і той же ключ не може існувати як у matchLabelKeys, так і в labelSelector. Також matchLabelKeys не може бути встановлено, якщо labelSelector не встановлений. Це бета-поле і вимагає увімкнення функціональної можливості MatchLabelKeysInPodAffinity (стандартно увімкнено).
MismatchLabelKeys — це набір ключів міток podʼів для вибору podʼів, які будуть враховані. Ключі використовуються для пошуку значень у мітках вхідних podʼів, ці мітки ключ-значення обʼєднуються з labelSelector як key notin (value), щоб вибрати групу існуючих podʼів, які будуть враховані для (анти)спорідненості вхідного podʼа. Ключі, яких немає у вхідних мітках podʼів, ігноруються. Стандартне значення — порожнє. Один і той же ключ не може існувати як у mismatchLabelKeys, так і в labelSelector. Також mismatchLabelKeys не може бути встановлено, якщо labelSelector не встановлений. Це бета-поле і вимагає увімкнення функціональної можливості MatchLabelKeysInPodAffinity (стандартно увімкнено).
Запит за мітками до набору просторів імен, до яких застосовується термін. Термін застосовується до обʼєднання просторів імен, вибраних цим полем, і тих, що зазначені в полі namespaces. Нульовий селектор і нульовий або порожній список просторів імен означає "простір імен цього Podʼа". Порожній селектор ({}) відповідає всім просторам імен.
Простори імен визначають статичний список назв просторів імен, до яких застосовується термін. Термін застосовується до обʼєднання просторів імен, зазначених у цьому полі, і тих, що вибрані namespaceSelector. Нульовий або порожній список просторів імен і нульовий namespaceSelector означає "простір імен цього Podʼа".
Якщо вимоги спорідненісті, зазначені в цьому полі, не будуть виконані під час планування, Pod не буде розміщено на вузлі. Якщо вимоги спорідненісті, зазначені в цьому полі, перестануть виконуватися в якийсь момент під час виконання Podʼа (наприклад, через оновлення міток Podʼа), система може або не може спробувати врешті-решт виселити Pod з його вузла. Коли є кілька елементів, списки вузлів, що відповідають кожному podAffinityTerm, перетинаються, тобто всі терміни мають бути виконані.
Визначає набір Podʼів (тобто тих, які відповідають labelSelector у стосунку до заданих простірів імен), з якими цей Pod має бути розміщений разом (спорідненість) або не разом (анти-спорідненість), де розміщення разом визначається як виконання на вузлі, значення мітки якого з ключем <topologyKey> збігається з будь-яким вузлом, на якому виконується Pod з набору Podʼів.
Цей Pod має бути розміщений разом (спорідненість) або не разом (анти-спорідненість) з Podʼами, які відповідають labelSelector у зазначених просторах імен, де розміщення разом визначається як виконання на вузлі, значення мітки якого з ключем topologyKey збігається з будь-яким вузлом, на якому виконується будь-який з вибраних Podʼів. Порожній topologyKey не допускається.
MatchLabelKeys — це набір ключів міток podʼів для вибору podʼів, які будуть враховані. Ключі використовуються для пошуку значень у мітках вхідних podʼів, ці мітки ключ-значення обʼєднуються з labelSelector як key in (value), щоб вибрати групу існуючих podʼів, які будуть враховані для (анти)спорідненості вхідного podʼа. Ключі, яких немає у вхідних мітках podʼів, ігноруються. Стандартне значення – порожнє. Один і той же ключ не може існувати як у matchLabelKeys, так і в labelSelector. Також matchLabelKeys не може бути встановлено, якщо labelSelector не встановлений. Це бета-поле і вимагає увімкнення функціональної можливості MatchLabelKeysInPodAffinity (стандартно увімкнено).
MismatchLabelKeys — це набір ключів міток podʼів для вибору podʼів, які будуть враховані. Ключі використовуються для пошуку значень у мітках вхідних podʼів, ці мітки ключ-значення обʼєднуються з labelSelector як key notin (value), щоб вибрати групу існуючих podʼів, які будуть враховані для (анти)спорідненості вхідного podʼа. Ключі, яких немає у вхідних мітках podʼів, ігноруються. Стандартне значення — порожнє. Один і той же ключ не може існувати як у mismatchLabelKeys, так і в labelSelector. Також mismatchLabelKeys не може бути встановлено, якщо labelSelector не встановлений. Це бета-поле і вимагає увімкнення функціональної можливості MatchLabelKeysInPodAffinity (стандартно увімкнено).
Запит за мітками до набору просторів імен, до яких застосовується термін. Термін застосовується до обʼєднання просторів імен, вибраних цим полем, і тих, що зазначені в полі namespaces. Нульовий селектор і нульовий або порожній список просторів імен означає "простір імен цього Podʼа". Порожній селектор ({}) відповідає всім просторам імен.
Простори імен визначають статичний список назв просторів імен, до яких застосовується термін. Термін застосовується до обʼєднання просторів імен, зазначених у цьому полі, і тих, що вибрані namespaceSelector. Нульовий або порожній список просторів імен і нульовий namespaceSelector означає "простір імен цього Podʼа".
PodAntiAffinity
Pod anti affinity — це група правил планування між Podʼами за анти-спорідненістю.
Планувальник надаватиме перевагу розміщенню Podʼів на вузлах, які відповідають виразам анти-спорідненості, зазначеним у цьому полі, але може вибрати вузол, який порушує один або кілька з цих виразів. Найбільш пріоритетним є вузол із найбільшою сумою ваг, тобто для кожного вузла, який відповідає всім вимогам планування (запит ресурсів, вирази анти-спорідненості requiredDuringScheduling тощо), обчислюється сума шляхом ітерації через елементи цього поля та додавання "ваги" до суми, якщо на вузлі є Podʼи, які відповідають відповідному podAffinityTerm; вузол(и) з найвищою сумою є найпріоритетнішими.
Ваги всіх відповідних полів WeightedPodAffinityTerm додаються для кожного вузла, щоб знайти найпріоритетніший(і) вузол(и).
Обов’язковий. Термін спорідненості Podʼа, пов’язаний з відповідною вагою.
Визначає набір Podʼів (тобто тих, які відповідають labelSelector у стосунку до заданих простірів імен), з якими цей Pod має бути розміщений разом (спорідненість) або не разом (анти-спорідненість), де розміщення разом визначається як виконання на вузлі, значення мітки якого з ключем <topologyKey> збігається з будь-яким вузлом, на якому виконується Pod з набору Podʼів.
Цей Pod повинен бути розміщений разом (спорідненість) або не разом (анти-спорідненість) з Podʼами, які відповідають labelSelector у зазначених просторах імен. Розміщення разом визначається як виконання на вузлі, значення мітки якого з ключем topologyKey збігається з будь-яким вузлом, на якому виконується будь-який з вибраних Podʼів. Порожній topologyKey не допускається.
MatchLabelKeys — це набір ключів міток podʼів для вибору podʼів, які будуть враховані. Ключі використовуються для пошуку значень у мітках вхідних podʼів, ці мітки ключ-значення обʼєднуються з labelSelector як key in (value), щоб вибрати групу існуючих podʼів, які будуть враховані для (анти)спорідненості вхідного podʼа. Ключі, яких немає у вхідних мітках podʼів, ігноруються. Стандартне значення – порожнє. Один і той же ключ не може існувати як у matchLabelKeys, так і в labelSelector. Також matchLabelKeys не може бути встановлено, якщо labelSelector не встановлений. Це бета-поле і вимагає увімкнення функціональної можливості MatchLabelKeysInPodAffinity (стандартно увімкнено).
MismatchLabelKeys — це набір ключів міток podʼів для вибору podʼів, які будуть враховані. Ключі використовуються для пошуку значень у мітках вхідних podʼів, ці мітки ключ-значення обʼєднуються з labelSelector як key notin (value), щоб вибрати групу існуючих podʼів, які будуть враховані для (анти)спорідненості вхідного podʼа. Ключі, яких немає у вхідних мітках podʼів, ігноруються. Стандартне значення — порожнє. Один і той же ключ не може існувати як у mismatchLabelKeys, так і в labelSelector. Також mismatchLabelKeys не може бути встановлено, якщо labelSelector не встановлений. Це бета-поле і вимагає увімкнення функціональної можливості MatchLabelKeysInPodAffinity (стандартно увімкнено).
Запит за мітками до набору просторів імен, до яких застосовується термін. Термін застосовується до обʼєднання просторів імен, вибраних цим полем, і тих, що зазначені в полі namespaces. Нульовий селектор і нульовий або порожній список просторів імен означає "простір імен цього Podʼа". Порожній селектор ({}) відповідає всім просторам імен.
Простори імен визначають статичний список назв просторів імен, до яких застосовується термін. Термін застосовується до обʼєднання просторів імен, зазначених у цьому полі, і тих, що вибрані namespaceSelector. Нульовий або порожній список просторів імен і нульовий namespaceSelector означає "простір імен цього Podʼа".
Якщо вимоги анти-спорідненості, зазначені в цьому полі, не будуть виконані під час планування, Pod не буде розміщено на вузлі. Якщо вимоги анти-спорідненості, зазначені в цьому полі, перестануть виконуватися в якийсь момент під час виконання Podʼа (наприклад, через оновлення міток Podʼа), система може або не може спробувати врешті-решт виселити Pod з його вузла. Коли є кілька елементів, списки вузлів, що відповідають кожному podAffinityTerm, перетинаються, тобто всі терміни мають бути виконані.
Визначає набір Podʼів (тобто тих, які відповідають labelSelector у стосунку до заданих простірів імен), з якими цей Pod має бути розміщений разом (спорідненість) або не разом (анти-спорідненість), де розміщення разом визначається як виконання на вузлі, значення мітки якого з ключем <topologyKey> збігається з будь-яким вузлом, на якому виконується Pod з набору Podʼів.
Цей Pod має бути розміщений разом (спорідненість) або не разом (анти-спорідненість) з Podʼами, які відповідають labelSelector у зазначених просторах імен. Розміщення разом визначається як виконання на вузлі, значення мітки якого з ключем topologyKey збігається з будь-яким вузлом, на якому виконується будь-який з вибраних Podʼів. Порожній topologyKey не допускається.
MatchLabelKeys — це набір ключів міток podʼів для вибору podʼів, які будуть враховані. Ключі використовуються для пошуку значень у мітках вхідних podʼів, ці мітки ключ-значення обʼєднуються з labelSelector як key in (value), щоб вибрати групу існуючих podʼів, які будуть враховані для (анти)спорідненості вхідного podʼа. Ключі, яких немає у вхідних мітках podʼів, ігноруються. Стандартне значення – порожнє. Один і той же ключ не може існувати як у matchLabelKeys, так і в labelSelector. Також matchLabelKeys не може бути встановлено, якщо labelSelector не встановлений. Це бета-поле і вимагає увімкнення функціональної можливості MatchLabelKeysInPodAffinity (стандартно увімкнено).
MismatchLabelKeys — це набір ключів міток podʼів для вибору podʼів, які будуть враховані. Ключі використовуються для пошуку значень у мітках вхідних podʼів, ці мітки ключ-значення обʼєднуються з labelSelector як key notin (value), щоб вибрати групу існуючих podʼів, які будуть враховані для (анти)спорідненості вхідного podʼа. Ключі, яких немає у вхідних мітках podʼів, ігноруються. Стандартне значення — порожнє. Один і той же ключ не може існувати як у mismatchLabelKeys, так і в labelSelector. Також mismatchLabelKeys не може бути встановлено, якщо labelSelector не встановлений. Це бета-поле і вимагає увімкнення функціональної можливості MatchLabelKeysInPodAffinity (стандартно увімкнено).
Запит за мітками до набору просторів імен, до яких застосовується термін. Термін застосовується до обʼєднання просторів імен, вибраних цим полем, і тих, що зазначені в полі namespaces. Нульовий селектор і нульовий або порожній список просторів імен означає "простір імен цього Podʼа". Порожній селектор ({}) відповідає всім просторам імен.
Простори імен визначають статичний список назв просторів імен, до яких застосовується термін. Термін застосовується до обʼєднання просторів імен, зазначених у цьому полі, і тих, що вибрані namespaceSelector. Нульовий або порожній список просторів імен і нульовий namespaceSelector означає "простір імен цього Podʼа".
Проба
Проба описує перевірку стану, яка виконується для контейнера, щоб визначити, чи він справний або готовий приймати трафік.
exec (ExecAction)
Exec визначає дію, яку потрібно виконати.
ExecAction описує дію "виконати в контейнері".
exec.command ([]string)
Atomic: буде замінено під час злиття
Command — це командний рядок для виконання всередині контейнера, робоча тека для команди — корінь ('/') у файловій системі контейнера. Команда виконується безпосередньо, а не в оболонці, тому традиційні команди оболонки ('|', тощо) не працюватимуть. Для використання оболонки потрібно явно викликати цю оболонку. Статус виходу 0 вважається готовим/справним, а ненульовий — несправним.
httpGet (HTTPGetAction)
HTTPGet визначає HTTP-запит для виконання.
HTTPGetAction описує дію на основі HTTP GET запитів.
httpGet.port (IntOrString), обовʼязково
Назва або номер порту для доступу до контейнера. Номер повинен бути в діапазоні від 1 до 65535. Назва повинна бути IANA_SVC_NAME.
IntOrString — це тип, який може містити int32 або рядок. Під час перетворення з/у JSON або YAML він створює або споживає внутрішній тип. Це дозволяє мати, наприклад, поле JSON, яке може приймати назву або номер.
httpGet.host (string)
Імʼя хосту для підключення, стандартно використовується IP-адреса Podʼа. Ймовірно, вам потрібно встановити "Host" в httpHeaders замість цього.
httpGet.httpHeaders ([]HTTPHeader)
Atomic: буде замінено під час злиття
Власні заголовки для встановлення в запиті. HTTP дозволяє повторювані заголовки.
HTTPHeader описує власний заголовок, який буде використовуватись в HTTP-пробах.
httpGet.httpHeaders.name (string), обовʼязково
Назва поля заголовка. Воно буде канонізовано при виведенні, тому імена, що відрізняються регістром, будуть сприйматись як один і той самий заголовок.
httpGet.httpHeaders.value (string), обовʼязково
Значення поля заголовка.
httpGet.path (string)
Шлях для доступу на HTTP сервері.
httpGet.scheme (string)
Схема для підключення до хоста. Стандартне значення — HTTP.
tcpSocket (TCPSocketAction)
TCPSocket визначає дію, що включає TCP-порт.
TCPSocketAction описує дію на основі відкриття сокету.
tcpSocket.port (IntOrString), обовʼязково
Номер або назва порту для доступу до контейнера. Номер повинен бути в діапазоні від 1 до 65535. Назва повинна бути IANA_SVC_NAME.
IntOrString — це тип, який може містити int32 або рядок. Під час перетворення з/у JSON або YAML він створює або споживає внутрішній тип. Це дозволяє мати, наприклад, поле JSON, яке може приймати назву або номер.
tcpSocket.host (string)
Додатково: Імʼя хоста для підключення, стандартно використовується IP-адреса Podʼа.
Необовʼязкова тривалість у секундах, необхідна для завершення роботи Podʼа після збою перевірки. Період належного завершення — це тривалість у секундах після того, як процесам у Podʼі надіслано сигнал про завершення і час до примусової зупинки процесів сигналом kill. Встановіть цю величину більше, ніж очікуваний час завершення вашого процесу. Якщо це значення є nil, буде використано terminationGracePeriodSeconds Podʼа. В іншому випадку, це значення перекриває значення, надане у специфікації Podʼа. Значення має бути невідʼємним числом. Значення нуль означає негайну зупинку через сигнал kill (без можливості завершення). Це поле є бета-функцією і вимагає увімкнення gate ProbeTerminationGracePeriod. Мінімальне значення — 1. Якщо не встановлено, використовується spec.terminationGracePeriodSeconds.
periodSeconds (int32)
Як часто (у секундах) виконувати перевірку. Стандартне значення — 10 секунд. Мінімальне значення — 1.
Мінімальна кількість послідовних збоїв, щоб перевірка вважалася невдалою після того, як вона вже пройшла успішно. Стандартне значення — 3. Мінімальне значення — 1.
successThreshold (int32)
Мінімальна кількість послідовних успішних перевірок, щоб вважати перевірку успішною після того, як вона не вдалася. Стандартне значення — 1. Має бути 1 для liveness та startup. Мінімальне значення — 1.
grpc (GRPCAction)
GRPC визначає дію, що включає GRPC-порт.
**
grpc.port (int32), обовʼязково
Номер порту GRPC сервісу. Номер має бути в діапазоні від 1 до 65535.
Якщо це не вказано, то стандартна поведінка визначається GRPC.
PodStatus
PodStatus представляє інформацію про стан Podʼа. Стан може відставати від фактичного стану системи, особливо якщо вузол, на якому розміщений Pod, не може звʼязатися з панеллю управління.
nominatedNodeName (string)
nominatedNodeName встановлюється тільки тоді, коли цей Pod випереджає інші Podʼи на вузлі, але не може бути негайно розміщений, оскільки жертвам випередження надається час для завершення роботи. Це поле не гарантує, що Pod буде розміщений на цьому вузлі. Планувальник може вирішити розмістити Pod в іншому місці, якщо інші вузли стануть доступними раніше. Планувальник також може вирішити надати ресурси на цьому вузлі Podʼу вищого пріоритету, який створюється після вилучення. В результаті це поле може відрізнятися від PodSpec.nodeName, коли Pod розміщується.
hostIP (string)
hostIP містить IP-адресу хоста, до якого призначено Pod. Пусте, якщо Pod ще не запущено. Pod може бути призначений на вузол, у якого є проблема з kubelet, що означає, що HostIP не буде оновлено, навіть якщо вузол призначено Podʼу.
hostIPs ([]HostIP)
Patch strategy: злиття за ключем ip
Atomic: буде замінено під час злиття
hostIPs містить IP-адреси, виділені хосту. Якщо це поле задано, перший запис повинен відповідати полю hostIP. Цей список пустий, якщо Pod ще не запущено. Pod може бути призначений на вузол, у якого є проблема з kubelet, що означає, що HostIPs не буде оновлено, навіть якщо вузол призначено цьому Podʼу.
HostIP представляє одну IP-адресу, виділену хосту.
hostIPs.ip (string), обовʼязково
IP — це IP-адреса, призначена хосту.
startTime (Time)
RFC 3339 дата і час, коли обʼєкт був підтверджений Kubelet. Це відбувається перед тим, як Kubelet завантажив образ контейнера(ів) для Podʼа.
Time — це обгортка навколо time.Time, яка підтримує правильну серіалізацію в YAML і JSON. Надаються обгортки для багатьох фабричних методів, які пропонує пакет time.
phase (string)
phase Podʼа — це просте, високорівневе резюме про те, на якому етапі свого життєвого циклу знаходиться Pod. Массив умов, поля reason і message, а також масиви статусів окремих контейнерів містять більше деталей про стан Podʼа. Існує пʼять можливих значень фаз:
Pending: Pod прийнято системою Kubernetes, але один або більше образів контейнерів ще не створено. Це включає час до розміщення, а також час, витрачений на завантаження образів через мережу, що може зайняти деякий час.
Running: Pod був привʼязаний до вузла, і всі контейнери були створені. Принаймні один контейнер все ще працює або знаходиться в процесі запуску чи перезапуску.
Succeeded: всі контейнери в Podʼі завершили роботу успішно і не будуть перезапускатися.
Failed: всі контейнери в Podʼі завершили роботу, і принаймні один контейнер завершився з помилкою. Контейнер або завершився з ненульовим статусом, або був завершений системою.
Unknown: з якоїсь причини стан Podʼа не вдалося отримати, зазвичай через помилку у звʼязку з хостом Podʼа.
Повідомлення, зрозуміле людині, що вказує на деталі, чому Pod знаходиться в цьому стані.
reason (string)
Коротке повідомлення у форматі CamelCase, що вказує на деталі, чому Pod знаходиться в цьому стані, наприклад, ʼEvictedʼ.
podIP (string)
podIP — IP-адреса, виділена Podʼа. Доступна для маршрутизації принаймні в межах кластера. Пусте, якщо ще не виділено.
podIPs ([]PodIP)
Patch strategy: злиття за ключем ip
Map: унікальні значення ключа ip будуть збережені під час злиття
podIPs містить IP-адреси, виділені Podʼу. Якщо це поле задано, 0-й запис повинен відповідати полю podIP. Podʼам може бути виділено не більше одного значення для кожного з IPv4 та IPv6. Цей список пустий, якщо IP-адреси ще не виділено.
PodIP представляє одну IP-адресу, виділену Podʼу.
podIPs.ip (string), обовʼязково
IP — це IP-адреса, призначена Podʼу.
conditions ([]PodCondition)
Patch strategy: злиття за ключем type
Map: унікальні значення ключа type будуть збережені під час злиття
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.lastTransitionTime (Time)
Останній час, коли стан перейшов з одного статусу в інший.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
Повідомлення, зрозуміле людині, що вказує на деталі останнього переходу.
conditions.reason (string)
Унікальна, однослівна, у CamelCase причина останнього переходу умови.
AllocatedResources представляє обчислювальні ресурси, виділені для цього контейнера вузлом. Kubelet встановлює це значення у Container.Resources.Requests після успішного допуску podʼа та після успішного допуску бажаного масштабування podʼа.
Map: унікальні значення ключа resourceID будуть збережені під час злиття
Список унікальних станів ресурсів. Кожен елемент списку містить унікальний ідентифікатор ресурсу та стан ресурсу. Мінімум, ResourceID має унікально ідентифікувати ресурс, виділений podʼу на вузлі протягом життя podʼа. Дивіться тип ResourceID для його визначення.
ResourceHealth представляє стан справності ресурсу. Він містить останню інформацію про стан пристрою. Це частина KEP https://kep.k8s.io/4680, і планується додавання історичних змін стану справності в майбутніх ітераціях KEP.
Unhealthy: повідомлено про несправний стан. Ми вважаємо це тимчасовою проблемою зі справністю, оскільки наразі у нас немає механізму для розрізнення тимчасових і постійних проблем.
Unknown: статус не можна визначити. Наприклад, втулок пристрою було відключено і він не був повторно зареєстрований з того часу.
В майбутньому ми можемо ввести статус PermanentlyUnhealthy.
initContainerStatuses.containerID (string)
ContainerID є ідентифікатором контейнера у форматі '<type>://<container_id>'. Де type є ідентифікатором середовища виконання контейнера, що повертається з виклику Version API CRI (наприклад, "containerd").
initContainerStatuses.image (string), обовʼязково
Image є назвою образу контейнера з якого запущений у контейнері. Образ контейнера може не збігатися з образом, що використовується в PodSpec, оскільки він міг бути розвʼязаний середовищем виконання. Докладніше: https://kubernetes.io/docs/concepts/containers/images
ImageID є ідентифікатором образу контейнера. Ідентифікатор образу може не збігатися з ідентифікатором образу, що використовується в PodSpec, оскільки він міг бути розвʼязаний середовищем виконання.
initContainerStatuses.lastState (ContainerState)
LastTerminationState містить останній стан завершення контейнера, щоб допомогти в налагодженні аварійних зупинок та перезапусків контейнера. Це поле не заповнюється, якщо контейнер все ще запущений і RestartCount дорівнює 0.
ContainerState містить можливий стан контейнера. Може бути зазначено лише один з його членів. Якщо жоден з них не вказано, стандартно використовується ContainerStateWaiting.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
Час, коли розпочалося попереднє виконання контейнера
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
Name є DNS_LABEL, що представляє унікальну назву контейнера. Кожен контейнер в podʼі повинен мати унікальну назву серед усіх типів контейнерів. Не можна оновити.
Ready вказує, чи контейнер наразі проходить перевірку готовності. Значення змінюватиметься, оскільки перевірки готовності продовжують виконуватися. Якщо перевірки готовності не вказані, це поле стандартно буде true, як тільки контейнер буде повністю запущений (див. поле Started).
Значення зазвичай використовується для визначення, чи контейнер готовий приймати трафік.
Resources представляє запити та ліміти обчислювальних ресурсів, які були успішно застосовані до працюючого контейнера після його запуску або успішного масштабування.
ResourceRequirements описує вимоги до обчислювальних ресурсів.
Name має відповідати назві одного запису в pod.spec.resourceClaims podʼа, де використовується це поле. Це робить ресурс доступним всередині контейнера.
Requests описує мінімальну кількість обчислювальних ресурсів, необхідних для контейнера. Якщо Requests не вказано для контейнера, воно стандартно дорівнює Limits, якщо вони явно вказані, інакше — значенню, визначеному реалізацією. Requests не може перевищувати Limits. Докладніше: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
RestartCount містить кількість разів, коли контейнер був перезапущений. Kubelet намагається завжди збільшувати це значення, але є випадки, коли стан може бути втрачено через перезавантаження вузла, і тоді значення може бути скинуто на 0. Значення ніколи не є відʼємним.
initContainerStatuses.started (boolean)
Started вказує, чи контейнер завершив свій хук життєвого циклу postStart і пройшов перевірку запуску. Ініціалізується як false, стає true після того, як перевірка запуску вважається успішною. Скидається на false, коли контейнер перезапускається або якщо kubelet тимчасово втрачає стан. У обох випадках перевірки запуску будуть виконані знову. Завжди true, коли перевірка запуску не визначена і контейнер запущений та пройшов хук життєвого циклу postStart. Значення null слід трактувати так само, як false.
initContainerStatuses.state (ContainerState)
State містить деталі про поточний стан контейнера.
ContainerState містить можливий стан контейнера. Може бути зазначено лише один з його членів. Якщо жоден з них не вказано, стандартно використовується ContainerStateWaiting.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
Час, коли розпочалося попереднє виконання контейнера
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
Linux містить інформацію про ідентифікацію користувача, спочатку прикріплену до першого процесу контейнерів у Linux. Зверніть увагу, що фактична ідентичність, яка виконується, може змінюватися, якщо процес має достатні привілеї для цього.
LinuxContainerUser представляє інформацію про ідентифікацію користувача в контейнерах Linux
RecursiveReadOnly має бути встановлено на Disabled, Enabled або unspecified (для монтувань відмінних "тільки для читання"). Значення IfPossible в оригінальному VolumeMount повинно бути перетворено на Disabled або Enabled, залежно від результату монтування.
AllocatedResources представляє обчислювальні ресурси, виділені для цього контейнера вузлом. Kubelet встановлює це значення у Container.Resources.Requests після успішного допуску podʼа та після успішного допуску бажаного масштабування podʼа.
Map: унікальні значення ключа resourceID будуть збережені під час злиття
Список унікальних станів ресурсів. Кожен елемент списку містить унікальний ідентифікатор ресурсу та стан ресурсу. Мінімум, ResourceID має унікально ідентифікувати ресурс, виділений podʼу на вузлі протягом життя podʼа. Дивіться тип ResourceID для його визначення.
ResourceHealth представляє стан справності ресурсу. Він містить останню інформацію про стан пристрою. Це частина KEP https://kep.k8s.io/4680, і планується додавання історичних змін стану справності в майбутніх ітераціях KEP.
Unhealthy: повідомлено про несправний стан. Ми вважаємо це тимчасовою проблемою зі справністю, оскільки наразі у нас немає механізму для розрізнення тимчасових і постійних проблем.
Unknown: статус не можна визначити. Наприклад, втулок пристрою було відключено і він не був повторно зареєстрований з того часу.
В майбутньому ми можемо ввести статус PermanentlyUnhealthy.
containerStatuses.containerID (string)
ContainerID є ідентифікатором контейнера у форматі '<type>://<container_id>'. Де type є ідентифікатором середовища виконання контейнера, що повертається з виклику Version API CRI (наприклад, "containerd").
containerStatuses.image (string), обовʼязково
Image є назвою образу контейнера з якого запущений у контейнері. Образ контейнера може не збігатися з образом, що використовується в PodSpec, оскільки він міг бути розвʼязаний середовищем виконання. Докладніше: https://kubernetes.io/docs/concepts/containers/images
containerStatuses.imageID (string), обовʼязково
ImageID є ідентифікатором образу контейнера. Ідентифікатор образу може не збігатися з ідентифікатором образу, що використовується в PodSpec, оскільки він міг бути розвʼязаний середовищем виконання.
containerStatuses.lastState (ContainerState)
LastTerminationState містить останній стан завершення контейнера, щоб допомогти в налагодженні аварійних зупинок та перезапусків контейнера. Це поле не заповнюється, якщо контейнер все ще запущений і RestartCount дорівнює 0.
ContainerState містить можливий стан контейнера. Може бути зазначено лише один з його членів. Якщо жоден з них не вказано, стандартно використовується ContainerStateWaiting.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
Час, коли розпочалося попереднє виконання контейнера
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
Name є DNS_LABEL, що представляє унікальну назву контейнера. Кожен контейнер в podʼі повинен мати унікальну назву серед усіх типів контейнерів. Не можна оновити.
containerStatuses.ready (boolean), обовʼязково
Ready вказує, чи контейнер наразі проходить перевірку готовності. Значення змінюватиметься, оскільки перевірки готовності продовжують виконуватися. Якщо перевірки готовності не вказані, це поле стандартно буде true, як тільки контейнер буде повністю запущений (див. поле Started).
Значення зазвичай використовується для визначення, чи контейнер готовий приймати трафік.
Resources представляє запити та ліміти обчислювальних ресурсів, які були успішно застосовані до працюючого контейнера після його запуску або успішного масштабування.
ResourceRequirements описує вимоги до обчислювальних ресурсів.
Name має відповідати назві одного запису в pod.spec.resourceClaims podʼа, де використовується це поле. Це робить ресурс доступним всередині контейнера.
Requests описує мінімальну кількість обчислювальних ресурсів, необхідних для контейнера. Якщо Requests не вказано для контейнера, воно стандартно дорівнює Limits, якщо вони явно вказані, інакше — значенню, визначеному реалізацією. Requests не може перевищувати Limits. Докладніше: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
RestartCount містить кількість разів, коли контейнер був перезапущений. Kubelet намагається завжди збільшувати це значення, але є випадки, коли стан може бути втрачено через перезавантаження вузла, і тоді значення може бути скинуто на 0. Значення ніколи не є відʼємним.
containerStatuses.started (boolean)
Started вказує, чи контейнер завершив свій хук життєвого циклу postStart і пройшов перевірку запуску. Ініціалізується як false, стає true після того, як перевірка запуску вважається успішною. Скидається на false, коли контейнер перезапускається або якщо kubelet тимчасово втрачає стан. У обох випадках перевірки запуску будуть виконані знову. Завжди true, коли перевірка запуску не визначена і контейнер запущений та пройшов хук життєвого циклу postStart. Значення null слід трактувати так само, як false.
containerStatuses.state (ContainerState)
State містить деталі про поточний стан контейнера.
ContainerState містить можливий стан контейнера. Може бути зазначено лише один з його членів. Якщо жоден з них не вказано, стандартно використовується ContainerStateWaiting.
ContainerStateRunning є станом контейнера, який запущений.
containerStatuses.state.running.startedAt (Time)
Час, коли контейнер був востаннє (пере)запущений.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
Час, коли розпочалося попереднє виконання контейнера
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
ContainerStateWaiting є станом контейнера, що очікує.
containerStatuses.state.waiting.message (string)
Повідомлення про причину, чому контейнер ще не запущений.
containerStatuses.state.waiting.reason (string)
(коротка) причина, чому контейнер ще не запущений
containerStatuses.user (ContainerUser)
User представляє інформацію про ідентифікацію користувача, спочатку прикріплену до першого процесу контейнера
ContainerUser представляє інформацію про ідентифікацію користувача
containerStatuses.user.linux (LinuxContainerUser)
Linux містить інформацію про ідентифікацію користувача, спочатку прикріплену до першого процесу контейнерів у Linux. Зверніть увагу, що фактична ідентичність, яка виконується, може змінюватися, якщо процес має достатні привілеї для цього.
LinuxContainerUser представляє інформацію про ідентифікацію користувача в контейнерах Linux
RecursiveReadOnly має бути встановлено на Disabled, Enabled або unspecified (для монтувань відмінних "тільки для читання"). Значення IfPossible в оригінальному VolumeMount повинно бути перетворено на Disabled або Enabled, залежно від результату монтування.
ephemeralContainerStatuses ([]ContainerStatus)
Atomic: буде замінено під час злиття
Статус будь-яких ефемерних контейнерів, які працювали в цьому Podʼі.
ContainerStatus містить деталі поточного стану цього контейнера.
AllocatedResources представляє обчислювальні ресурси, виділені для цього контейнера вузлом. Kubelet встановлює це значення у Container.Resources.Requests після успішного допуску podʼа та після успішного допуску бажаного масштабування podʼа.
Map: унікальні значення ключа resourceID будуть збережені під час злиття
Список унікальних станів ресурсів. Кожен елемент списку містить унікальний ідентифікатор ресурсу та стан ресурсу. Мінімум, ResourceID має унікально ідентифікувати ресурс, виділений podʼу на вузлі протягом життя podʼа. Дивіться тип ResourceID для його визначення.
ResourceHealth представляє стан справності ресурсу. Він містить останню інформацію про стан пристрою. Це частина KEP https://kep.k8s.io/4680, і планується додавання історичних змін стану справності в майбутніх ітераціях KEP.
Unhealthy: повідомлено про несправний стан. Ми вважаємо це тимчасовою проблемою зі справністю, оскільки наразі у нас немає механізму для розрізнення тимчасових і постійних проблем.
Unknown: статус не можна визначити. Наприклад, втулок пристрою було відключено і він не був повторно зареєстрований з того часу.
В майбутньому ми можемо ввести статус PermanentlyUnhealthy.
ephemeralContainerStatuses.containerID (string)
ContainerID є ідентифікатором контейнера у форматі '<type>://<container_id>'. Де type є ідентифікатором середовища виконання контейнера, що повертається з виклику Version API CRI (наприклад, "containerd").
Image є назвою образу контейнера з якого запущений у контейнері. Образ контейнера може не збігатися з образом, що використовується в PodSpec, оскільки він міг бути розвʼязаний середовищем виконання. Докладніше: https://kubernetes.io/docs/concepts/containers/images
ImageID є ідентифікатором образу контейнера. Ідентифікатор образу може не збігатися з ідентифікатором образу, що використовується в PodSpec, оскільки він міг бути розвʼязаний середовищем виконання.
LastTerminationState містить останній стан завершення контейнера, щоб допомогти в налагодженні аварійних зупинок та перезапусків контейнера. Це поле не заповнюється, якщо контейнер все ще запущений і RestartCount дорівнює 0.
ContainerState містить можливий стан контейнера. Може бути зазначено лише один з його членів. Якщо жоден з них не вказано, стандартно використовується ContainerStateWaiting.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
Час, коли розпочалося попереднє виконання контейнера
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
Name є DNS_LABEL, що представляє унікальну назву контейнера. Кожен контейнер в podʼі повинен мати унікальну назву серед усіх типів контейнерів. Не можна оновити.
Ready вказує, чи контейнер наразі проходить перевірку готовності. Значення змінюватиметься, оскільки перевірки готовності продовжують виконуватися. Якщо перевірки готовності не вказані, це поле стандартно буде true, як тільки контейнер буде повністю запущений (див. поле Started).
Значення зазвичай використовується для визначення, чи контейнер готовий приймати трафік.
Resources представляє запити та ліміти обчислювальних ресурсів, які були успішно застосовані до працюючого контейнера після його запуску або успішного масштабування.
ResourceRequirements описує вимоги до обчислювальних ресурсів.
Name має відповідати назві одного запису в pod.spec.resourceClaims podʼа, де використовується це поле. Це робить ресурс доступним всередині контейнера.
Requests описує мінімальну кількість обчислювальних ресурсів, необхідних для контейнера. Якщо Requests не вказано для контейнера, воно стандартно дорівнює Limits, якщо вони явно вказані, інакше — значенню, визначеному реалізацією. Requests не може перевищувати Limits. Докладніше: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
RestartCount містить кількість разів, коли контейнер був перезапущений. Kubelet намагається завжди збільшувати це значення, але є випадки, коли стан може бути втрачено через перезавантаження вузла, і тоді значення може бути скинуто на 0. Значення ніколи не є відʼємним.
ephemeralContainerStatuses.started (boolean)
Started вказує, чи контейнер завершив свій хук життєвого циклу postStart і пройшов перевірку запуску. Ініціалізується як false, стає true після того, як перевірка запуску вважається успішною. Скидається на false, коли контейнер перезапускається або якщо kubelet тимчасово втрачає стан. У обох випадках перевірки запуску будуть виконані знову. Завжди true, коли перевірка запуску не визначена і контейнер запущений та пройшов хук життєвого циклу postStart. Значення null слід трактувати так само, як false.
ephemeralContainerStatuses.state (ContainerState)
State містить деталі про поточний стан контейнера.
ContainerState містить можливий стан контейнера. Може бути зазначено лише один з його членів. Якщо жоден з них не вказано, стандартно використовується ContainerStateWaiting.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
Час, коли розпочалося попереднє виконання контейнера
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
Linux містить інформацію про ідентифікацію користувача, спочатку прикріплену до першого процесу контейнерів у Linux. Зверніть увагу, що фактична ідентичність, яка виконується, може змінюватися, якщо процес має достатні привілеї для цього.
LinuxContainerUser представляє інформацію про ідентифікацію користувача в контейнерах Linux
RecursiveReadOnly має бути встановлено на Disabled, Enabled або unspecified (для монтувань відмінних "тільки для читання"). Значення IfPossible в оригінальному VolumeMount повинно бути перетворено на Disabled або Enabled, залежно від результату монтування.
resourceClaimStatuses ([]PodResourceClaimStatus)
Patch strategies: retainKeys, обʼєднання по ключу name
Map: унікальні значення по ключу name будуть збережені під час обʼєднання
Статус ресурсних заявок.
PodResourceClaimStatus зберігається у PodStatus для кожної PodResourceClaim, яка посилається на ResourceClaimTemplate. Він зберігає згенеровану назву для відповідної ResourceClaim.
resourceClaimStatuses.name (string), обовʼязково
Імʼя унікально ідентифікує цю ресурсну заявку всередині Podʼа. Воно має відповідати імені в pod.spec.resourceClaims, що означає, що рядок повинен бути DNS_LABEL.
resourceClaimStatuses.resourceClaimName (string)
ResourceClaimName є назвою ResourceClaim, яка була згенерована для podʼа в просторі імен podʼа. Якщо це поле не встановлено, то створення ResourceClaim не було необхідним. У цьому випадку запис pod.spec.resourceClaims можна ігнорувати.
resize (string)
Статус бажаної зміни розміру ресурсів для контейнерів Podʼа. Він порожній, якщо немає очікуваної зміни розміру ресурсів. Будь-які зміни в ресурсах контейнера автоматично встановлять це на "Proposed".
Контейнер, для якого потрібно виводити логи. Стандартно виводяться тільки логи контейнера, якщо в Podʼі є тільки один контейнер.
follow (у запиті): boolean
Слідкувати за потоком логу Podʼа. Стандартне значення — false.
insecureSkipTLSVerifyBackend (у запиті): boolean
insecureSkipTLSVerifyBackend вказує, що apiserver не повинен підтверджувати дійсність сертифікату обслуговуючого програмного забезпечення, з яким він зʼєднується. Це зробить HTTPS-зʼєднання між apiserver та обслуговуючим програмним забезпеченням ненадійним. Це означає, що apiserver не може підтвердити, що дані логу, які він отримує, отримано від реального kubelet. Якщо kubelet налаштований для підтвердження уповноваження TLS apiserver, це не означає, що зʼєднання з реальним kubelet вразливе до атаки посередника (наприклад, зловмисник не зможе перехопити фактичні дані логу, що надходять від реального kubelet).
limitBytes (у запиті): integer
Якщо задано, кількість байтів, які слід прочитати з сервера, перш ніж завершити виведення логу. Це може не показувати повністю останню лінію логу, і може повернути трохи більше або трохи менше, ніж вказаний обмежувач.
Повертати логи попередньо завершених контейнерів. Стандартне значення — false.
sinceSeconds (у запиті): integer
Відносний час у секундах до поточного часу, з якого показувати логи. Якщо це значення передує часу запуску Podʼа, будуть повернуті лише логи з часу запуску Podʼа. Якщо це значення в майбутньому, жодних логів не буде повернено. Можна вказати тільки один з sinceSeconds або sinceTime.
tailLines (у запиті): integer
Якщо задано, кількість рядків з кінця логу, які слід показати. Якщо не вказано, логи показуються з моменту створення контейнера, або відносно sinceSeconds або sinceTime.
timestamps (у запиті): boolean
Якщо true, додаємо часову мітку RFC3339 або RFC3339Nano на початок кожного рядка виводу логу. Стандартне значення — false.
Відповідь
200 (string): OK
401: Unauthorized
get отримати статус вказаного Podʼа
HTTP запит
GET /api/v1/namespaces/{namespace}/pods/{name}/status
Звʼязування привʼязує один обʼєкт до іншого; наприклад, Pod привʼязується до вузла планувальником.
apiVersion: v1
import "k8s.io/api/core/v1"
Binding
Binding звʼязує один обʼєкт з іншим; наприклад, Pod звʼязується з вузлом за допомогою планувальника. Застаріло у версії 1.7, будь ласка, використовуйте субресурс bindings для Podʼів замість цього.
ReplicationControllerSpec — це специфікація контролера реплікації.
selector (map[string]string)
Selector — це запит міток (label query) з Podʼів, які повинні відповідати кількості реплік. Якщо Selector порожній, стандартно встановлюються мітки, які присутні в шаблоні Pod. Ключі та значення міток, які повинні збігатись для контролю цим контролером реплікації, за відсутності стандартних значень встановлюються мітки з шаблону Pod. Додаткова інформація: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/#label-selectors
Мінімальна кількість секунд, протягом яких новий створений Pod повинен бути готовим без збоїв жодного з його контейнерів, щоб його вважати доступним. Стандартне значення — 0 (Pod буде вважатися доступним, як тільки він буде готовий)
ReplicationControllerStatus
ReplicationControllerStatus представляє поточний статус контролера реплікації.
Кількість доступних реплік (готових принаймні протягом minReadySeconds) для цього контролера реплікації.
readyReplicas (int32)
Кількість готових реплік для цього контролера реплікації.
fullyLabeledReplicas (int32)
Кількість Podʼів, які мають мітки, що відповідають міткам шаблону Pod контролера реплікації.
conditions ([]ReplicationControllerCondition)
Patch strategy: обʼєднання за ключем type
Map: унікальні значення ключа type будуть збережені під час злиття
Представляє останні доступні спостереження поточного стану контролера реплікації.
ReplicationControllerCondition описує стан контролера реплікації в певний момент.
conditions.status (string), обовʼязково
Статус стану, одне з True, False, Unknown.
conditions.type (string), обовʼязково
Тип стану контролера реплікації.
conditions.lastTransitionTime (Time)
Останній час переходу стану з одного статусу в інший.
Time є обгорткою навколо time.Time, яка підтримує правильне перетворення в YAML та JSON. Надаються обгортки для багатьох методів створення, які пропонує пакет time.
conditions.message (string)
Повідомлення, зрозуміле людині, із зазначенням деталей про перехід.
conditions.reason (string)
Причина останнього переходу умови.
observedGeneration (int64)
ObservedGeneration показує покоління останнього спостереження контролера реплікації.
ReplicationControllerList
ReplicationControllerList — це колекція контролерів реплікації.
Мінімальна кількість секунд, протягом яких новий створений Pod повинен бути готовим без збоїв жодного з його контейнерів, щоб його вважати доступним. Стандартне значення — 0 (Pod буде вважатися доступним, як тільки він буде готовий)
ReplicaSetStatus
ReplicaSetStatus відображає поточний стан ReplicaSet.
Кількість доступних реплік (готових протягом принаймні minReadySeconds) для цього набору реплік.
readyReplicas (int32)
readyReplicas — це кількість Podʼів в стані Ready, на які спрямовується цей ReplicaSet.
fullyLabeledReplicas (int32)
Кількість Podʼів, які мають мітки, що відповідають міткам шаблону Podʼа набору реплік.
conditions ([]ReplicaSetCondition)
Patch strategy: злиття за ключем type
Map: унікальні значення ключа type будуть збережені під час злиття
Представляє останні доступні спостереження поточного стану набору реплік.
ReplicaSetCondition описує стан набору реплік в певний момент часу.
conditions.status (string), обовʼязково
Статус стану, одне з: True, False, Unknown.
conditions.type (string), обовʼязково
Тип стану набору реплік.
conditions.lastTransitionTime (Time)
Останній раз, коли стан переходив з одного статусу в інший.
Time - це обгортка навколо time.Time, яка підтримує правильне перетворення у YAML і JSON. Надаються обгортки для багатьох методів, які пропонує пакет time.
conditions.message (string)
Повідомлення, зрозуміле людині, із зазначенням деталей про перехід.
conditions.reason (string)
Причина останнього переходу умови.
observedGeneration (int64)
ObservedGeneration показує покоління останнього зафіксованого ReplicaSet.
Селектор міток для Podʼів. Наявні ReplicaSets, чиї Podʼи вибрані за допомогою цього селектора, будуть ті, які будуть змінені цим Deployment. Він повинен відповідати міткам шаблону Podʼа.
Шаблон описує Podʼи, які будуть створені. Єдине допустиме значення для template.spec.restartPolicy — "Always".
replicas (int32)
Кількість бажаних Podʼів. Це вказівник для розрізнення між явним нулем і не вказаним значенням. Стандартне значення — 1.
minReadySeconds (int32)
Мінімальна кількість секунд, протягом яких новий створений Pod повинен бути готовим без збоїв жодного з його контейнерів, щоб його вважати доступним. Стандартне значення — 0 (Pod буде вважатися доступним, як тільки він буде готовий)
strategy (DeploymentStrategy)
Patch strategy: retainKeys
Стратегія розгортання, яку слід використовувати для заміни наявних Podʼів на нові.
DeploymentStrategy описує, як замінити наявні Podʼи новими.
strategy.type (string)
Тип розгортання. Може бути "Recreate" або "RollingUpdate". Стандартне значення — RollingUpdate.
strategy.rollingUpdate (RollingUpdateDeployment)
Параметри конфігурації постійного оновлення. Присутні лише, якщо DeploymentStrategyType = RollingUpdate.
Spec для управління бажаною поведінкою постійного оновлення.
strategy.rollingUpdate.maxSurge (IntOrString)
Максимальна кількість Podʼів, які можуть бути заплановані понад бажану кількість Podʼів. Значення може бути абсолютним числом (наприклад, 5) або відсотком від кількості бажаних Podʼів (наприклад, 10%). Це не може бути 0, якщо MaxUnavailable дорівнює 0. Абсолютне число обчислюється з відсотком, округленим вверх. Стандартне значення — 25%. Наприклад: якщо встановлено 30%, новий ReplicaSet може бути масштабований вгору відразу після початку постійного оновлення, так що загальна кількість старих і нових Podʼів не перевищує 130% від бажаних Podʼів. Після примусового завершення роботи старих Podʼів, новий ReplicaSet можна додатково масштабувати, гарантуючи, що загальна кількість Podʼів, запущених в будь-який момент під час оновлення, становить не більше 130% від бажаної кількості Podʼів
IntOrString — це тип, який може містити int32 або рядок. При використанні перетворення з/в JSON або YAML він виробляє або споживає внутрішній тип. Це дозволяє вам мати, наприклад, поле JSON, яке може приймати імʼя або число.
Максимальна кількість Podʼів, які можуть бути недоступні під час оновлення. Значення може бути абсолютним числом (наприклад, 5) або відсотком від бажаних Podʼів (наприклад, 10%). Абсолютне число обчислюється з відсотком шляхом округлення у меншу сторону. Це не може бути 0, якщо MaxSurge дорівнює 0. Стандартне значення — 25%. Наприклад: коли це встановлено на 30%, старий ReplicaSet може бути масштабований вниз до 70% від бажаних Podʼів відразу після початку постійного оновлення. Як тільки нові Podʼи готові, старий ReplicaSet може бути додатково масштабований вниз, разом з масштабованням вгору нового ReplicaSet, забезпечуючи, що загальна кількість Podʼів, доступних у будь-який час під час оновлення, становить принаймні 70% від кількості бажаних Podʼів.
IntOrString — це тип, який може містити int32 або рядок. При використанні перетворення з/в JSON або YAML він виробляє або споживає внутрішній тип. Це дозволяє вам мати, наприклад, поле JSON, яке може приймати імʼя або число.
revisionHistoryLimit (int32)
Кількість старих ReplicaSets, які слід зберігати для можливості відкату. Це вказівник для розрізнення між явним нулем і не вказаним значенням. Стандартне значення — 10.
progressDeadlineSeconds (int32)
Максимальний час у секундах для Deployment для досягнення прогресу, перш ніж вважати його невдалим. Контролер розгортання буде продовжувати обробляти невдалі Deployment, і у статусі Deployment буде сповіщено причину ProgressDeadlineExceeded. Зверніть увагу, що прогрес не буде оцінюватися під час паузи Deployment. Стандартне значення — 600 с.
paused (boolean)
Показує, що Deployment призупинено.
DeploymentStatus
DeploymentStatus — це найостанніший спостережуваний статус Deployment.
replicas (int32)
Загальна кількість Podʼів, що не завершили роботу, які є ціллю цього Deployment (їх мітки відповідають селектору).
availableReplicas (int32)
Загальна кількість доступних Podʼів (готових принаймні minReadySeconds), які є ціллю цього Deployment.
readyReplicas (int32)
Кількість Podʼів, які є ціллю цього Deployment в стані Ready.
unavailableReplicas (int32)
Загальна кількість недоступних Podʼів, які є ціллю цього Deployment. Це загальна кількість Podʼів, які все ще необхідні для того, щоб Deployment мав 100% доступну потужність. Вони можуть бути Podʼами, які працюють, але ще не доступні, або Podʼами, які ще не були створені.
updatedReplicas (int32)
Загальна кількість незавершених Podʼів, які є ціллю цього Deployment та мають бажаний шаблон специфікацій.
collisionCount (int32)
Кількість колізій хешів для Deployment. Контролер Deployment використовує це поле як механізм уникнення колізій, коли йому потрібно створити імʼя для нового ReplicaSet.
conditions ([]DeploymentCondition)
Patch strategy: злиття за ключем type
Map: унікальні значення ключа type будуть збережені під час злиття
Представляє останні доступні спостереження про поточний стан Deployment.
DeploymentCondition описує стан Deployment в певний момент.
conditions.status (string), обовʼязково
Статус стану, одне з True, False, Unknown.
conditions.type (string), обовʼязково
Тип стану Deployment.
conditions.lastTransitionTime (Time)
Останній час, коли стан переходив з одного статусу в інший.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.lastUpdateTime (Time)
Останній раз, коли цей стан було оновлено.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
Повідомлення, зрозуміле людині, із зазначенням деталей про перехід.
conditions.reason (string)
Причина останнього зміни стану.
observedGeneration (int64)
Генерація, що спостерігається контролером Deployment.
Status — це поточний стан Podʼів у цьому StatefulSet. Ці дані можуть бути застарілими на певний проміжок часу.
StatefulSetSpec
StatefulSetSpec — це специфікація StatefulSet.
serviceName (string), обовʼязково
serviceName — це назва Service, який керує цим StatefulSet. Цей сервіс повинен існувати до створення StatefulSet і відповідає за мережеву ідентичність набору. Podʼи отримують DNS/hostnames, які відповідають шаблону: pod-specific-string.serviceName.default.svc.cluster.local, де "pod-specific-string" управляється контролером StatefulSet.
template — це обʼєкт, який описує Pod, що буде створений у випадку недостатньої кількості реплік. Кожен Pod, створений StatefulSet, буде відповідати цьому шаблону, але матиме унікальну ідентичність у порівнянні з іншими Podʼами StatefulSet. Кожен Pod буде названий за форматом <statefulsetname>-<podindex>. Наприклад, Pod у StatefulSet з імʼям "web" з індексом номер "3" буде називатися "web-3". Єдине дозволене значення для template.spec.restartPolicy — "Always".
replicas (int32)
replicas — це бажана кількість реплік даного шаблону. Це репліки в тому сенсі, що вони є екземплярами одного і того ж шаблону, але кожна репліка також має постійну ідентичність. Якщо не вказано, стандартне значення — 1.
updateStrategy (StatefulSetUpdateStrategy)
updateStrategy вказує на StatefulSetUpdateStrategy, яка буде використовуватися для оновлення Podʼів у StatefulSet при внесенні змін до шаблону.
StatefulSetUpdateStrategy вказує стратегію, яку контролер StatefulSet буде використовувати для виконання оновлень. Вона включає будь-які додаткові параметри, необхідні для виконання оновлення для зазначеної стратегії.
updateStrategy.type (string)
Type вказує тип StatefulSetUpdateStrategy. Стандартне значення — RollingUpdate.
Максимальна кількість Podʼів, які можуть бути недоступні під час оновлення. Значення може бути абсолютним числом (наприклад, 5) або відсотком від бажаної кількості Podʼів (наприклад, 10%). Абсолютна кількість розраховується від відсотків шляхом округлення в більшу сторону. Це не може бути 0. Стандартне значення — 1. Це поле є альфа-рівнем і враховується лише серверами, які підтримують функцію MaxUnavailableStatefulSet. Поле застосовується до всіх Podʼів у діапазоні від 0 до Replicas-1. Це означає, що якщо будь-який Pod у діапазоні від 0 до Replicas-1 недоступний, він буде враховуватися як MaxUnavailable.
IntOrString — це тип, який може містити int32 або рядок. Під час перетворення з/у JSON або YAML він створює або споживає внутрішній тип. Це дозволяє мати, наприклад, поле JSON, яке може приймати назву або номер.
updateStrategy.rollingUpdate.partition (int32)
Partition вказує порядковий номер, на якому StatefulSet повинен бути розділений для оновлень. Під час rolling update всі Podʼи від порядкового номера Replicas-1 до Partition оновлюються. Всі Podʼи від порядкового номера Partition-1 до 0 залишаються незмінними. Це корисно для проведення канаркового розгортання. Стандартне значення — 0.
podManagementPolicy (string)
podManagementPolicy контролює, як Podʼи створюються під час початкового масштабування, при заміні Podʼів на вузлах або при масштабуванні вниз. Стандартне значення — OrderedReady, коли Podʼи створюються в порядку зростання (pod-0, потім pod-1 і т.д.), і контролер чекатиме, поки кожен Pod буде готовий, перш ніж продовжити. При масштабуванні вниз Podʼи видаляються у зворотному порядку. Альтернативною політикою є Parallel, яка створює Podʼи паралельно для досягнення бажаного масштабу без очікування, а при масштабуванні вниз видаляє всі Podʼи одночасно.
revisionHistoryLimit (int32)
revisionHistoryLimit — це максимальна кількість ревізій, які будуть зберігатися в історії ревізій StatefulSet. Історія ревізій складається з усіх ревізій, які не представлені поточною застосованою версією StatefulSetSpec. Стандартне значення — 10.
volumeClaimTemplates — це список запитів, до яких Podʼи можуть звертатися. Контролер StatefulSet відповідає за призначення мережевих ідентичностей запитам таким чином, щоб зберігати ідентичність Podʼа. Кожен запит у цьому списку повинен мати принаймні один відповідний (за імʼям) volumeMount в одному з контейнерів в шаблоні. Запит у цьому списку має пріоритет над будь-якими volumes у шаблоні з таким самим імʼям.
minReadySeconds (int32)
Мінімальна кількість секунд, протягом яких новий створений Pod повинен бути готовим без збоїв жодного з його контейнерів, щоб його вважати доступним. Стандартне значення — 0 (Pod буде вважатися доступним, як тільки він буде готовий)
persistentVolumeClaimRetentionPolicy описує життєвий цикл запитів на постійні томи, створених з volumeClaimTemplates. Стандартно усі запити на постійні томи створюються за необхідності та зберігаються до ручного видалення. Ця політика дозволяє змінювати життєвий цикл, наприклад, видаляючи запити на постійні томи під час видалення їх StatefulSet або при масштабуванні вниз Podʼів. Для цього потрібно включити функцію StatefulSetAutoDeletePVC, яка є бета-рівнем.
StatefulSetPersistentVolumeClaimRetentionPolicy описує політику, яка використовується для PVC, створених з VolumeClaimTemplates StatefulSet.
WhenDeleted визначає, що відбувається з PVC, створеними з VolumeClaimTemplates StatefulSet, коли StatefulSet видаляється. Стандартна політика Retain призводить до того, що на PVC не впливає видалення StatefulSet. Політика Delete призводить до видалення таких PVC.
WhenScaled визначає, що відбувається з PVC, створеними з VolumeClaimTemplates StatefulSet, коли StatefulSet масштабується вниз. Стандартна політика Retain призводить до того, що на PVC не впливає масштабування вниз. Політика Delete призводить до видалення відповідних PVC для будь-яких зайвих Podʼів, що перевищують кількість реплік.
ordinals (StatefulSetOrdinals)
ordinals контролює нумерацію індексів реплік у StatefulSet. Стандартна поведінка ordinals призначає індекс "0" першій репліці та збільшує індекс на одиницю для кожної додаткової запитаної репліки.
StatefulSetOrdinals описує політику, яка використовується для призначення порядкових номерів реплік у цьому StatefulSet.
ordinals.start (int32)
start — це число, що представляє індекс першої репліки. Його можна використовувати для нумерації реплік з альтернативного індексу (наприклад, з 1) замість стандартної індексації з 0, або для організації поступового переміщення реплік з одного StatefulSet до іншого. Якщо встановлено, індекси реплік будуть у діапазоні:
Якщо не встановлено, стандартне значення — 0. Індекси реплік будуть у діапазоні:
[0, .spec.replicas].
StatefulSetStatus
StatefulSetStatus представляє поточний стан StatefulSet.
replicas (int32), обовʼязково
replicas — це кількість Podʼів, створених контролером StatefulSet.
readyReplicas (int32)
readyReplicas — це кількість Podʼів, створених для цього StatefulSet, які мають стан Ready.
currentReplicas (int32)
currentReplicas — це кількість Podʼів, створених контролером StatefulSet з версії StatefulSet, зазначеної в currentRevision.
updatedReplicas (int32)
updatedReplicas — це кількість Podʼів, створених контролером StatefulSet з версії StatefulSet, зазначеної в updateRevision.
availableReplicas (int32)
Загальна кількість доступних Podʼів (готових принаймні minReadySeconds), на які спрямований цей statefulset.
collisionCount (int32)
collisionCount — це кількість хеш-колізій для StatefulSet. Контролер StatefulSet використовує це поле як механізм уникнення колізій при створенні імені для найновішого ControllerRevision.
conditions ([]StatefulSetCondition)
Patch strategy: злиття за ключем type
Map: унікальні значення ключа type будуть збережені під час злиття
Представляє останні доступні спостереження поточного стану StatefulSet.
StatefulSetCondition описує стан StatefulSet у певний момент часу.
conditions.status (string), обовʼязково
Статус стану, один з True, False, Unknown.
conditions.type (string), обовʼязково
Тип стану StatefulSet.
conditions.lastTransitionTime (Time)
Останній час, коли стан переходив з одного статусу в інший.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
Повідомлення, зрозуміле людині, із зазначенням деталей про перехід.
conditions.reason (string)
Причина останнього переходу умови.
currentRevision (string)
currentRevision, якщо не порожній, вказує версію StatefulSet, яка використовується для створення Podʼів у послідовності [0,currentReplicas].
updateRevision (string)
updateRevision, якщо не порожній, вказує версію StatefulSet, яка використовується для створення Podʼів у послідовності [replicas-updatedReplicas,replicas]
observedGeneration (int64)
observedGeneration — останнє покоління, яке спостерігалося для цього StatefulSet. Воно відповідає поколінню StatefulSet, яке оновлюється при зміні сервером API.
ControllerRevision впроваджує незмінюваний знімок даних стану.
apiVersion: apps/v1
import "k8s.io/api/apps/v1"
ControllerRevision
ControllerRevision впроваджує незмінюваний знімок даних стану. Клієнти відповідають за серіалізацію та десеріалізацію обʼєктів, які містять їх внутрішній стан. Після успішного створення ControllerRevision, його не можна оновити. API Server не пройде валідацію всіх запитів, які намагаються змінити поле Data. Однак ControllerRevision може бути видалено. Зверніть увагу, що через використання цього обʼєкта обома контролерами DaemonSet і StatefulSet для оновлення та відкату, він знаходиться на стадії бета-тестування. З усім тим, його назва та представлення можуть змінюватися в майбутніх версіях, і клієнти не повинні покладатися на його стабільність. Він призначений головним чином для внутрішнього використання контролерами.
поле revision показує номер ревізії стану представленого в Data.
data (RawExtension)
Data є серіалізованим представленням стану.
RawExtension використовується для утримання розширень у зовнішніх версіях.
Щоб використовувати це, створіть поле, яке має RawExtension як тип у вашій зовнішній, версійній структурі, і Object у вашій внутрішній структурі. Вам також потрібно зареєструвати різні типи втулків.
// Внутрішній пакет:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"` MyPlugin runtime.Object `json:"myPlugin"`}
type PluginA struct {
AOption string`json:"aOption"`}
// Зовнішній пакет:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"` MyPlugin runtime.RawExtension `json:"myPlugin"` }
type PluginA struct {
AOption string`json:"aOption"`}
Що ж відбувається? Спочатку декодування використовує json або yaml для перетворення серіалізованих даних у вашу зовнішню структуру MyAPIObject. Це призводить до збереження сирого JSON, але не до його розпакування. Наступним кроком є копіювання (використовуючи pkg/conversion) у внутрішню структуру. У пакеті runtime, функції перетворення, встановлені в DefaultScheme, розпакують JSON, збережений у RawExtension, перетворюючи його в правильний тип обʼєкта і зберігаючи його в Object. (TODO: У випадку, якщо обʼєкт невідомого типу, буде створено обʼєкт runtime.Unknown і збережено.)
ControllerRevisionList
ControllerRevisionList — це ресурс, що містить список обʼєктів ControllerRevision.
Обʼєкт, який описує Pod, який буде створено. DaemonSet створює рівно одну копію цього Pod на кожному вузлі, який відповідає селектору вузлів шаблону (або на кожному вузлі, якщо селектор вузлів не вказано). Єдине допустиме значення параметра restartPolicy шаблону — "Always". Докладніше: https://kubernetes.io/docs/concepts/workloads/controllers/replicationcontroller#pod-template
minReadySeconds (int32)
Мінімальна кількість секунд, протягом яких новий Pod DaemonSet має бути готовим без збоїв будь-якого з його контейнерів, щоб вважатися доступним. Стандартне значення — 0 (Pod вважається доступним, як тільки він буде готовим).
updateStrategy (DaemonSetUpdateStrategy)
Стратегія оновлення для заміни поточних Podʼів DaemonSet новими Podʼами.
DaemonSetUpdateStrategy є структурою, що використовується для управління стратегією оновлення для DaemonSet.
updateStrategy.type (string)
Тип оновлення набору демонів. Може бути "RollingUpdate" або "OnDelete". Стандартне значення — RollingUpdate.
Максимальна кількість вузлів з навним доступним Pod DaemonSet, яка може мати оновлений Pod DaemonSet під час оновлення. Значення може бути абсолютним числом (наприклад, 5) або відсотком від бажаних Podʼів (наприклад, 10%). Це не може бути 0, якщо MaxUnavailable дорівнює 0. Абсолютне число обчислюється з відсотка, округленого в більшу сторону до мінімуму 1. Стандартне значення — 0. Наприклад: коли це встановлено на 30%, як максимум 30% від загальної кількості вузлів, повинні мати Pod демона (тобто status.desiredNumberScheduled), можуть мати свій новий Pod створений до того, як старий Pod буде видалений. Оновлення починається з запуску нових Podʼів на 30% вузлів. Як тільки оновлений Pod доступний (готовий протягом принаймні minReadySeconds), старий Pod DaemonSet на цьому вузлі позначається як видалений. Якщо старий Pod стає недоступним з будь-якої причини (готовність переходить у false, його виселяють або переносять з вузла), на цьому вузлі негайно створюється оновлений Pod без урахування обмежень по сплеску навантаження. Дозвіл на сплеск означає можливість подвоєння ресурсів, які використовуються DaemonSet на будь-якому вузлі, якщо перевірка готовності не вдається, тому ресурсомісткі DaemonSet повинні враховувати, що вони можуть спричинити виселення під час розладу.
IntOrString — це тип, який може містити int32 або рядок. При використанні перетворення з/в JSON або YAML він виробляє або споживає внутрішній тип. Це дозволяє вам мати, наприклад, поле JSON, яке може приймати імʼя або число.
Максимальна кількість Podʼів DaemonSet, які можуть бути недоступні під час оновлення. Значення може бути абсолютним числом (наприклад, 5) або відсотком від загальної кількості Podʼів DaemonSet на початок оновлення (наприклад, 10%). Абсолютне число обчислюється з відсотка, округленого в більшу сторону. Це не може бути 0, якщо MaxSurge дорівнює 0. Стандартне значення — 1. Наприклад: коли це встановлено на 30%, максимум 30% від загальної кількості вузлів, які повинні виконувати Pod демона (тобто status.desiredNumberScheduled), можуть мати свої Pod зупинені для оновлення в будь-який час. Оновлення починається з зупинки не більше 30% цих Podʼів DaemonSet і потім запускає нові Pod DaemonSet на їх місця. Після того, як нові Pod стануть доступними, вони продовжують роботу з іншими Podʼами DaemonSet, забезпечуючи тим самим, що принаймні 70% від початкової кількості Podʼів DaemonSet доступні.
IntOrString — це тип, який може містити int32 або рядок. При використанні перетворення з/в JSON або YAML він виробляє або споживає внутрішній тип. Це дозволяє вам мати, наприклад, поле JSON, яке може приймати імʼя або число.
revisionHistoryLimit (int32)
Кількість версій історії, яку потрібно зберегти, щоб дозволити відкат. Це вказівник для розрізнення між явним нулем та не вказаним значенням. Стандартне значення — 10.
DaemonSetStatus
DaemonSetStatus представляє поточний стан DaemonSet.
numberReady (int32), обовʼязково
Кількість вузлів, на яких має бути запущений Pod демона й один або кілька з них у стані Ready.
numberAvailable (int32)
Кількість вузлів, на яких має бути запущений Pod демона й один або кілька з них запущені та доступні (готові щонайменше протягом spec.minReadySeconds).
numberUnavailable (int32)
Кількість вузлів, на яких має бути запущений Pod демона, але жоден з них не запущений і доступний (готовий щонайменше протягом spec.minReadySeconds).
Загальна кількість вузлів, на яких запущено оновлений Pod демона.
collisionCount (int32)
Кількість колізій хешів для DaemonSet. Контролер DaemonSet використовує це поле як механізм уникнення колізій при створенні імені для найновішого ControllerRevision.
conditions ([]DaemonSetCondition)
Patch strategy: злиття за ключем type
Map: унікальні значення ключа type будуть збережені під час злиття
Представляє останні доступні спостереження поточного стану DaemonSet.
DaemonSetCondition описує стан DaemonSet у певний момент часу.
conditions.status (string), обовʼязково
Статус стану, один із True, False, Unknown.
conditions.type (string), обовʼязково
Тип стану DaemonSet.
conditions.lastTransitionTime (Time)
Час останнього зміни стану з одного статусу до іншого.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
Повідомлення, зрозуміле людині, із зазначенням деталей про перехід.
conditions.reason (string)
Причина останньої зміни стану.
observedGeneration (int64)
Останнє покоління, яке спостерігається контролером набору демонів.
Визначає максимальну бажану кількість Podʼів, які завдання повинно виконувати в будь-який момент часу. Фактична кількість Podʼів, що працюють в стабільному стані, буде меншою за цю кількість, коли ((.spec.completions - .status.successful) < .spec.parallelism), тобто коли залишилося менше роботи, ніж максимально дозволена паралельність. Детальніше: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
Життєвий цикл
completions (int32)
Визначає бажану кількість успішно завершених Podʼів, які має виконати завдання. Встановлення null означає, що успіх будь-якого Podʼа сигналізує про успіх усіх Podʼів і дозволяє паралельності мати будь-яке позитивне значення. Встановлення значення 1 означає, що паралельність обмежується до 1 і успіх цього Podʼа сигналізує про успіх завдання. Детальніше: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/
completionMode (string)
completionMode визначає, як відстежуються завершення Podʼів. Може бути NonIndexed (стандартно) або Indexed.
NonIndexed означає, що завдання вважається завершеним, коли успішно завершено кількість Podʼів вказана у .spec.completions. Кожне завершення Podʼа є аналогічним до іншого.
Indexed означає, що Podʼи завдання отримують асоційований індекс завершення від 0 до (.spec.completions — 1), доступний в анотації batch.kubernetes.io/job-completion-index. Завдання вважається завершеним, коли для кожного індексу є один успішно завершений Pod. Коли значення Indexed, .spec.completions має бути вказано, а .spec.parallelism має бути менше або дорівнювати 10^5. Крім того, імʼя Podʼа має форму $(job-name)-$(index)-$(random-string), а імʼя хоста Podʼа має форму $(job-name)-$(index).
У майбутньому можуть бути додані інші режими завершення. Якщо контролер завдання спостерігає режим, який він не розпізнає, що можливо під час оновлень через різницю версій, контролер пропускає оновлення для завдання.
backoffLimit (int32)
Визначає кількість спроб перед тим, як відзначити завдання таким, що не вдалося. Стандартне значення — 6.
activeDeadlineSeconds (int64)
Визначає тривалість у секундах відносно startTime, протягом якої завдання може бути активним, перш ніж система спробує його завершити; значення має бути додатним цілим числом. Якщо завдання призупинено (під час створення або через оновлення), цей таймер фактично зупиняється і скидається, коли завдання знову відновлюється.
ttlSecondsAfterFinished (int32)
ttlSecondsAfterFinished обмежує термін життя завдання, яке завершило виконання (або Complete, або Failed). Якщо це поле встановлено, то через ttlSecondsAfterFinished після завершення завдання воно може бути автоматично видалене. Коли завдання видаляється, його життєвий цикл (наприклад, завершувачі) буде враховуватись. Якщо це поле не встановлено, завдання не буде автоматично видалено. Якщо це поле встановлено на нуль, завдання може бути видалене відразу після завершення.
suspend (boolean)
suspend визначає, чи повинен контролер завдання створювати Podʼи чи ні. Якщо завдання створюється з параметром suspend, встановленим на true, контролер завдання не створює Podʼи. Якщо завдання призупиняється після створення (тобто прапорець змінюється з false на true), контролер завдання видалить усі активні Podʼи, повʼязані з цим завданням. Користувачі повинні спроєктувати своє робоче навантаження так, щоб воно могло правильно обробляти це. Призупинення завдання скине поле StartTime завдання, фактично скидаючи таймер ActiveDeadlineSeconds. Стандартне значення — false.
manualSelector керує генерацією міток Podʼів і селекторів Podʼів. Залиште manualSelector невстановленим, якщо ви не впевнені, що робите. Коли значення false або невстановлене, система вибирає унікальні мітки для цього завдання та додає ці мітки до шаблону Podʼа. Коли значення true, користувач відповідає за вибір унікальних міток і вказування селектора. Невдача у виборі унікальної мітки може спричинити некоректну роботу цього та інших завдань. Однак ви можете побачити manualSelector=true у завданнях, створених за допомогою старого API extensions/v1beta1. Детальніше: https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/#specifying-your-own-pod-selector
Бета-рівень
podFailurePolicy (PodFailurePolicy)
Визначає політику обробки невдалих Podʼів. Зокрема, дозволяє вказати набір дій та умов, які повинні бути виконані для виконання повʼязаної дії. Якщо це поле порожнє, застосовується стандартна поведінка — лічильник невдалих Podʼів, представлений полем .status.failed завдання, збільшується і перевіряється з backoffLimit. Це поле не можна використовувати в комбінації з restartPolicy=OnFailure.
PodFailurePolicy описує, як невдалі Podʼи впливають на backoffLimit.
Список правил політики невдач Podʼів. Правила оцінюються послідовно. Як тільки правило відповідає невдачі Podʼа, решта правил ігнорується. Якщо жодне правило не відповідає невдачі Podʼа, застосовується стандартна обробка — лічильник невдач Podʼів збільшується і перевіряється з backoffLimit. Максимально дозволено 20 елементів.
PodFailurePolicyRule описує, як обробляється невдача Podʼа, коли виконуються вимоги. Одне з onExitCodes і onPodConditions, але не обидва, можуть бути використані в кожному правилі.
Визначає дію, яка виконується при невдачі Podʼа, коли виконуються вимоги. Можливі значення:
FailJob: означає, що завдання Podʼа позначається як Failed і всі
запущені Podʼи завершуються.
FailIndex: означає, що індекс Podʼа позначається як Failed і не буде
перезапущений. Це значення рівня бета. Воно може бути використане, коли ввімкнено
прапорець JobBackoffLimitPerIndex (стандартно увімкнено).
Ignore: означає, що лічильник по відношенню до .backoffLimit не збільшується і створюється Pod заміна.
Count: означає, що Pod обробляється стандартним способом — лічильник .backoffLimit збільшується.
Додаткові значення можуть бути додані в майбутньому. Клієнти повинні реагувати на невідому дію, пропускаючи правило.
Представляє вимогу до кодів завершення контейнера.
PodFailurePolicyOnExitCodesRequirement описує вимогу для обробки невдалого Podʼа на основі кодів завершення його контейнера. Зокрема, перевіряється .state.terminated.exitCode для кожного контейнера застосунку та init-контейнера, представленого полями .status.containerStatuses і .status.initContainerStatuses у статусі Podʼа відповідно. Контейнери, завершені успішно (код завершення 0), виключаються з перевірки вимоги.
Представляє стосунок між кодом(ами) завершення контейнера та зазначеними значеннями. Контейнери, завершені успішно (код завершення 0), виключаються з перевірки вимоги. Можливі значення:
In: вимога задовольняється, якщо хоча б один код завершення контейнера (може бути кілька, якщо є кілька контейнерів, не обмежених полем 'containerName') входить до набору зазначених значень.
NotIn: вимога задовольняється, якщо хоча б один код завершення контейнера (може бути кілька, якщо є кілька контейнерів, не обмежених полем 'containerName') не входить до набору зазначених значень.
Додаткові значення можуть бути додані в майбутньому. Клієнти повинні реагувати на невідомий оператор, вважаючи, що вимога не задоволена.
Set: унікальні значення зберігатимуться під час обʼєднання
Визначає набір значень. Кожен повернутий код завершення контейнера (може бути кілька у випадку кількох контейнерів) перевіряється щодо цього набору значень з урахуванням оператора. Список значень має бути впорядкованим і не містити дублікатів. Значення '0' не може бути використано для оператора In. Потрібен принаймні один елемент. Максимально дозволено 255 елементів.
Обмежує перевірку кодів завершення контейнера контейнером з зазначеним імʼям. Коли null, правило застосовується до всіх контейнерів. Коли зазначено, воно має відповідати одному з імен контейнерів або init-контейнерів у шаблоні Podʼа.
Представляє вимогу до стану Podʼа. Вимога представлена як список шаблонів стан Podʼа. Вимога задовольняється, якщо хоча б один шаблон відповідає фактичному стану Podʼа. Максимально дозволено 20 елементів.
PodFailurePolicyOnPodConditionsPattern описує шаблон для відповідності фактичний стан Podʼа.
Визначає необхідний статус стану Podʼа. Для відповідності стану Podʼа потрібно, щоб зазначений статус відповідав статусу стану Podʼа. Стандартне значення — True.
Визначає необхідний тип стану Podʼа. Для відповідності стану Podʼа потрібно, щоб зазначений тип відповідав типу стану Podʼа.
successPolicy (SuccessPolicy)
successPolicy вказує політику, коли Job може бути оголошено успішним. Якщо це поле порожнє, застосовується стандартна поведінка — Job вважається успішним лише тоді, коли кількість успішно виконаних podʼів дорівнює значенню completions. Якщо поле вказане, воно має бути незмінним і працює тільки для Indexed Jobs. Після того, як Job відповідає SuccessPolicy, невикористані podʼи завершуються.
Це поле має рівень beta. Для використання цього поля потрібно увімкнути функцію JobSuccessPolicy (стандартно увімкнена).
SuccessPolicy описує, коли Job може бути оголошено успішним на основі успішності деяких показників.
rules представляє список альтернативних правил для оголошення Jobs успішними до того, як .status.succeeded >= .spec.completions. Як тільки будь-яке з правил виконується, додається умова "SucceededCriteriaMet", і невикористані podʼи видаляються. Кінцевий стан для такого Job матиме стан "Complete". Ці правила оцінюються по порядку; як тільки Job відповідає одному з правил, інші ігноруються. Дозволено не більше 20 елементів.
SuccessPolicyRule описує правило для оголошення Job успішним. Кожне правило повинно мати вказаний принаймні один із параметрів: "succeededIndexes" або "succeededCount".
successPolicy.rules.succeededCount (int32)
succeededCount вказує мінімальний необхідний розмір фактичного набору успішно завершених індексів для Job. Коли succeededCount використовується разом із succeededIndexes, перевірка обмежується лише індексами, зазначеними в succeededIndexes. Наприклад, якщо succeededIndexes встановлено як "1-4", succeededCount дорівнює "3", а індекси, що були завершені — "1", "3" і "5", Job не оголошується успішним, оскільки враховуються лише індекси "1" і "3" згідно з цими правилами. Якщо це поле є null, воно не має стандартного значення і ніколи не оцінюється. Якщо вказано, воно повинно бути додатним цілим числом.
successPolicy.rules.succeededIndexes (string)
succeededIndexes вказує набір індексів, які повинні бути у фактичному наборі успішно завершених індексів для Job. Список індексів має бути в межах від 0 до ".spec.completions-1" і не повинен містити дублікатів. Потрібен щонайменше один елемент. Індекси представлені у вигляді інтервалів, розділених комами. Інтервали можуть бути десятковими числами або парою десяткових чисел, розділених дефісом. Числа представляються як перший і останній елемент серії, розділені дефісом. Наприклад, якщо індекси, які були завершені — 1, 3, 4, 5 і 7, вони представлені як "1,3-5,7". Якщо це поле є null, воно не має стандартного значення і ніколи не оцінюється.
Альфа-рівень
backoffLimitPerIndex (int32)
Визначає ліміт кількості повторних спроб в межах індексу перед тим, як позначити цей індекс як невдалий. Коли цей параметр увімкнений, кількість невдач по індексу зберігається в анотації Podʼа batch.kubernetes.io/job-index-failure-count. Це поле можна встановити лише при completionMode=Indexed для завдання, і політика перезапуску Podʼа повинна бути Never. Поле незмінне. Це поле на рівні бета. Воно може бути використане, коли ввімкнено прапорець JobBackoffLimitPerIndex (стандартно увімкнено).
managedBy (string)
Поле ManagedBy вказує контролер, який керує Job. Контролер Job у Kubernetes синхронізує jobʼи, які не мають цього поля взагалі або якщо значення поля — зарезервований рядок kubernetes.io/job-controller, але пропускає синхронізацію Job із власними значенням у цьому полі. Значення має бути дійсним шляхом із префіксом домену (наприклад, acme.io/foo) — усі символи перед першим "/" мають бути дійсним піддоменом відповідно до RFC 1123. Усі символи після першого "/" мають бути дійсними символами HTTP-шляху згідно з RFC 3986. Значення не може перевищувати 63 символів. Це поле є незмінним.
Це поле має рівень alpha. Контролер job приймає встановлення цього поля, коли ввімкнено функцію JobManagedBy (стандартно вимкнено).
maxFailedIndexes (int32)
Визначає максимальну кількість невдалих індексів перед тим, як позначити завдання як невдале, коли backoffLimitPerIndex встановлено. Як тільки кількість невдалих індексів перевищує це число, все завдання позначається як Failed і його виконання припиняється. Якщо залишити null, завдання продовжує виконання всіх своїх індексів і позначається станом завдання Complete. Це поле можна вказати лише, коли встановлено backoffLimitPerIndex. Воно може бути null або дорівнювати кількості completions. Воно обовʼязково і повинно бути менше або дорівнювати 10^4, коли кількість completions більша за 10^5. Це поле на рівні бета. Воно може бути використане, коли ввімкнено прапорець JobBackoffLimitPerIndex (стандартно увімкнено).
podReplacementPolicy (string)
podReplacementPolicy визначає, коли створювати нові Podʼи на заміну. Можливі значення:
TerminatingOrFailed означає, що ми створюємо Podʼи повторно, коли вони завершуються (мають metadata.deletionTimestamp) або не зазнали збою.
Failed означає, що потрібно чекати, поки раніше створений Pod повністю завершиться (має phase Failed або Succeeded) перед створенням нового Podʼа на заміну.
При використанні podFailurePolicy, Failed є єдиним допустимим значенням. TerminatingOrFailed і Failed є допустимими значеннями, коли podFailurePolicy не використовується. Це поле на рівні бета. Щоб скористатися цією функцією, увімкніть функцію JobPodReplacementPolicy. Стандартно увімкнено.
JobStatus
JobStatus представляє поточний стан Job.
startTime (Time)
Представляє час, коли контролер Job почав обробку завдання. Коли Job створюється в призупиненому стані, це поле не встановлюється до першого відновлення. Це поле скидається кожного разу, коли Job відновлюється після призупинення. Воно представлене у форматі RFC3339 і є в UTC.
Якщо поле встановлено, його можна видалити лише після призупинення завдання. Поле не можна змінити, поки завдання не призупинено або не завершено.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
completionTime (Time)
Представляє час, коли завдання було завершено. Це поле може не встановлюватися в порядку "відбувається перед" у різних операціях. Воно представлене у форматі RFC3339 і є в UTC. Час завершення встановлюється, коли завдання успішно завершується, і тільки тоді. Значення не можна оновити або видалити. Значення вказує на той самий або пізніший момент часу, що і поле startTime.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
active (int32)
Кількість Podʼів в стані очікування та працюючих Podʼів, які не завершуються (без мітки видалення). Значення дорівнює нулю для завершених завдань.
failed (int32)
Кількість Podʼів, які досягли фази Failed. Значення зростає монотонно.
succeeded (int32)
Кількість Podʼів, які досягли фази Succeeded. Значення монотонно зростає для даної специфікації. Однак воно може зменшуватись у відповідь на скорочення кількості job, що еластично індексуються.
completedIndexes (string)
completedIndexes містить завершені індекси, коли .spec.completionMode = "Indexed" у текстовому форматі. Індекси представлені у вигляді десяткових чисел, розділених комами. Числа перелічені у порядку зростання. Три або більше послідовних числа стискаються і представлені першим і останнім елементами серії, розділеними дефісом. Наприклад, якщо завершені індекси 1, 3, 4, 5 і 7, вони представлені як "1,3-5,7".
conditions ([]JobCondition)
Patch strategy: обʼєднання за ключем type
Atomic: буде замінено під час обʼєднання
Останні доступні спостереження за поточним станом обʼєкта. Коли Job не вдається, один зі станів матиме тип "Failed" і статус true. Коли Job призупинено, один зі станів матиме тип "Suspended" і статус true; коли Job відновлюється, статус цього стану стає false. Коли Job завершено, один з станів матиме тип "Complete" і статус true.
Завдання вважається завершеним, коли воно перебуває в термінальному стані "Complete" або "Failed". Завдання не може мати одночасно стан "Complete" і "Failed". Крім того, воно не може перебувати в станах "Complete" і "FailureTarget". Умови "Complete", "Failed" і "FailureTarget" не можуть бути відключені.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.lastTransitionTime (Time)
Останній раз, коли стан переходила з одного статусу в інший.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
Повідомлення, зрозуміле людині, із зазначенням деталей останнього переходу.
conditions.reason (string)
(коротка) причина останнього переходу стану.
uncountedTerminatedPods (UncountedTerminatedPods)
uncountedTerminatedPods містить UID Podʼів, які завершили роботу, але контролер завдань ще не врахував їх у статусних лічильниках.
Контролер завдань створює Podʼи з завершувачем. Коли Pod завершується (успішно або з помилкою), контролер виконує три кроки для врахування його у статусі завдання:
Додає UID Podʼа до масивів у цьому полі.
Видаляє завершувач Podʼа.
Видаляє UID Podʼа з масивів, збільшуючи відповідний лічильник.
Старі завдання можуть не відстежуватися з використанням цього поля, у такому випадку поле залишається порожнім. Структура порожня для завершених завдань .
UncountedTerminatedPods містить UID Podʼів, які завершили роботу, але ще не враховані в лічильниках статусу завдання.
uncountedTerminatedPods.failed ([]string)
Set: унікальні значення зберігатимуться під час обʼєднання
failed містить UID Podʼів, що завершилися з помилкою.
uncountedTerminatedPods.succeeded ([]string)
Set: унікальні значення зберігатимуться під час обʼєднання
succeeded містить UID Podʼів, що завершилися успішно.
Бета-рівень
ready (int32)
Кількість активних Podʼів, які мають стан Ready та не завшуються (без deletionTimestamp)
Альфа-рівень
failedIndexes (string)
FailedIndexes зберігає невдалі індекси, коли spec.backoffLimitPerIndex є набором. Індекси представлені у текстовому форматі, аналогічному до поля completedIndexes, тобто вони зберігаються як десяткові цілі числа, розділені комами. Числа подані в порядку зростання. Три або більше послідовних числа стискаються і представлені першим та останнім елементом серії, розділеними дефісом. Наприклад, якщо невдалі індекси: 1, 3, 4, 5 і 7, вони представлені як "1,3-5,7". Набір невдалих індексів не може перетинатися з набором завершених індексів.
Це поле знаходиться на бета-рівні. Його можна використовувати, коли ввімкнено функцію JobBackoffLimitPerIndex (стандартно увімкнено).
terminating (int32)
Кількість Podʼів, які завершуються (у фазі Pending або Running та мають deletionTimestamp).
Це поле знаходиться на бета-рівні. Контролер завдань заповнює це поле, коли ввімкнено функцію JobPodReplacementPolicy (стандартно увімкнено).
Назва часового поясу для вказаного розкладу, див. https://en.wikipedia.org/wiki/List_of_tz_database_time_zones. Якщо не вказано, то буде використовуватись часовий пояс процесу kube-controller-manager. Допустимі назви часових поясів і зміщення завантажуються з системної бази даних часових поясів API-сервером під час валідації CronJob і контролером під час виконання. Якщо системна база даних часових поясів недоступна, використовується вбудована версія цієї бази. Якщо назва часового поясу стає недійсною протягом життєвого циклу CronJob або через зміну конфігурації хосту, контролер перестане створювати нові задачі та створить системну подію з причиною UnknownTimeZone. Додаткову інформацію можна знайти в https://kubernetes.io/docs/concepts/workloads/controllers/cron-jobs/#time-zones.
concurrencyPolicy (string)
Визначає, як обробляти одночасні виконання задачі. Допустимі значення:
"Allow" (стандартно): дозволяє CronJobs запускати задачі одночасно;
"Forbid": забороняє одночасні виконання, пропускаючи наступний запуск, якщо попередній ще не завершився;
"Replace": скасовує поточну задачу і замінює її новою.
startingDeadlineSeconds (int64)
Необовʼязковий термін у секундах для запуску задачі, якщо вона пропустить запланований час з будь-якої причини. Пропущені виконання задач будуть вважатися неуспішними.
suspend (boolean)
Цей прапорець каже контролеру призупиняти подальші виконання, він не застосовується до вже запущених виконань. Стандартне значення — false.
successfulJobsHistoryLimit (int32)
Кількість успішно завершених задач, які потрібно зберегти. Значення повинно бути не відʼємним цілим числом. Стандартне значення — 3.
failedJobsHistoryLimit (int32)
Кількість невдало завершених задач, які потрібно зберегти. Значення повинно бути не відʼємним цілим числом. Стандартне значення — 1.
Інформація про час останнього успішного запуску задачі.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
lastSuccessfulTime (Time)
Інформація про час останнього успішного завершення задачі.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
посилання на масштабований ресурс; горизонтальний автомасштабувальник Podʼів буде вивчати поточне використання ресурсу і встановлювати бажану кількість Podʼів за допомогою його субресурсу Scale (масштаб).
CrossVersionObjectReference містить достатньо інформації для ідентифікації зазначеного ресурсу.
minReplicas — нижня межа для кількості реплік, до яких може масштабуватися автомасштабувальник. Стандартне значення — 1 Pod. minReplicas може бути 0, якщо увімкнутий альфа-функціонал HPAScaleToZero і налаштовано принаймні одну метрику Object або External. Масштабування активне, поки є принаймні значення однієї метрики.
targetCPUUtilizationPercentage (int32)
targetCPUUtilizationPercentage — це цільове середнє використання CPU (представлене як відсоток від запитаного показника CPU) для всіх Podʼів; якщо не вказано, буде використана стандартна політика автоматичного масштабування.
HorizontalPodAutoscalerStatus
Поточний статус горизонтального автомасштабування Podʼів.
currentReplicas (int32), обовʼязково
currentReplicas — поточна кількість реплік Podʼів, що керуються цим автомасштабувальником.
desiredReplicas (int32), обовʼязково
desiredReplicas — бажана кількість реплік Podʼів, що керуються цим автомасштабувальником.
currentCPUUtilizationPercentage (int32)
currentCPUUtilizationPercentage — поточне середнє використання CPU у всіх Podʼах, виражене як відсоток від запитаної кількості CPU; наприклад, значення 70 означає, що в середньому Pod використовує зараз 70% свого запитаного CPU.
lastScaleTime (Time)
lastScaleTime — час останнього масштабування HorizontalPodAutoscaler кількості Podʼів; використовується автомасштабувальником для контролю частоти змін кількості Podʼів.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
observedGeneration (int64)
observedGeneration — останнє покоління, сяке спостерігається цим автомасштабувальником.
HorizontalPodAutoscalerList
Список обʼєктів горизонтального автомасштабування Podʼів.
HorizontalPodAutoscaler — це конфігурація для горизонтального автомасштабування, яка автоматично керує кількістю реплік будь-якого ресурсу, що реалізує субресурс масштабування, на основі вказаних метрик.
apiVersion: autoscaling/v2
import "k8s.io/api/autoscaling/v2"
HorizontalPodAutoscaler
HorizontalPodAutoscaler — це конфігурація для горизонтального автомасштабування, яка автоматично керує кількістю реплік будь-якого ресурсу, що реалізує субресурс масштабування, на основі вказаних метрик.
minReplicas — нижня межа кількості реплік, до якої може масштабуватись автомасштабувальник. Стандартне значення — 1 Pod. minReplicas може бути 0, якщо ввімкнути альфа-функцію HPAScaleToZero і налаштувати щонайменше одну метрику типу Object або External. Масштабування активне, поки є принаймні одне значення метрики.
behavior (HorizontalPodAutoscalerBehavior)
behavior — налаштовує поведінку масштабування цільового ресурсу як в напрямку збільшення, так і в напрямку зменшення (поля scaleUp та scaleDown відповідно). Якщо не вказано, будуть використані типові правила масштабування HPAScalingRules для збільшення і зменшення.
HorizontalPodAutoscalerBehavior налаштовує поведінку масштабування цільового ресурсу як в напрямку збільшення, так і в напрямку зменшення (поля scaleUp та scaleDown відповідно).
behavior.scaleDown (HPAScalingRules)
scaleDown — політика масштабування для зменшення. Якщо не встановлено, типове значення дозволяє зменшувати до minReplicas Podʼів з вікном стабілізації 300 секунд (тобто використовується найкраще рекомендоване значення за останні 300 секунд).
HPAScalingRules налаштовує поведінку масштабування для одного напрямку. Ці правила застосовуються після обчислення бажаної кількості реплік з метрик для HPA. Вони можуть обмежувати швидкість масштабування, вказуючи політики масштабування, та запобігати "повзучості" за допомогою визначення вікна стабілізації, щоб кількість реплік не встановлювалась миттєво, а вибирався найбезпечніше значення з вікна стабілізації.
behavior.scaleDown.policies ([]HPAScalingPolicy)
Atomic: will be replaced during a merge
policies — список потенційних політик масштабування, які можуть використовуватись під час масштабування. Принаймні одна політика повинна бути вказана, інакше HPAScalingRules буде відкинуто як недійсне
HPAScalingPolicy — це одна політика, яка повинна виконуватися для вказаного інтервалу в минулому.
periodSeconds — визначає вікно часу, протягом якого політика повинна бути true. PeriodSeconds повинен бути більше нуля і менше або рівний 1800 (30 хвилин).
behavior.scaleDown.selectPolicy (string)
selectPolicy — використовується для зазначення того, яка політика повинна бути використана. Якщо не встановлено, використовується типове значення Max.
stabilizationWindowSeconds — кількість секунд, протягом яких враховуються попередні рекомендації під час збільшення або зменшення масштабування. stabilizationWindowSeconds повинен бути більше або рівний нулю і менше або рівний 3600 (одна година). Якщо не встановлено, використовуються типові значення:
Для збільшення масштабування: 0 (тобто стабілізація не виконується).
Для зменшення масштабування: 300 (тобто вікно стабілізації 300 секунд).
behavior.scaleUp (HPAScalingRules)
scaleUp — це політика масштабування вгору. Якщо не встановлено, використовується стандартне значення, яке є найбільшим з:
збільшення не більше ніж на 4 Podʼи за 60 секунд
подвоєння кількості Podʼів за 60 секунд
Стабілізація не використовується.
HPAScalingRules налаштовує поведінку масштабування в одному напрямку. Ці правила застосовуються після обчислення DesiredReplicas з метрик для HPA. Вони можуть обмежити швидкість масштабування, вказуючи політики масштабування. Вони можуть запобігти нестабільному масштабуванню, вказуючи вікно стабілізації, щоб кількість реплік не змінювалася миттєво, а вибиралося найбезпечніше значення з вікна стабілізації.
behavior.scaleUp.policies ([]HPAScalingPolicy)
Atomic: буде замінено під час обʼєднання
policies — це список можливих політик масштабування, які можуть бути використані під час масштабування. Має бути вказана принаймні одна політика, інакше HPAScalingRules буде вважатися недійсним.
HPAScalingPolicy — це окрема політика, якої треба має бути true протягом заданого інтервалу в минулому.
periodSeconds визначає вікно часу, протягом якого політика має бути true. PeriodSeconds має бути більше нуля та менше або дорівнювати 1800 (30 хвилин).
behavior.scaleUp.selectPolicy (string)
selectPolicy використовується для вказівки, яка політика має бути використана. Якщо не встановлено, використовується стандартне значення Max.
stabilizationWindowSeconds — це кількість секунд, протягом яких минулі рекомендації мають враховуватися під час масштабування вгору або вниз. StabilizationWindowSeconds має бути більше або дорівнювати нулю та менше або дорівнювати 3600 (одна година). Якщо не встановлено, використовуються стандартні значення:
Для масштабування вгору: 0 (тобто стабілізація не виконується).
Для масштабування вниз: 300 (тобто вікно стабілізації триває 300 секунд).
metrics ([]MetricSpec)
Atomic: буде замінено під час обʼєднання
metrics містить специфікації для обчислення бажаної кількості реплік (буде використана максимальна кількість реплік за всіма метриками). Бажана кількість реплік обчислюється множенням відношення між цільовим значенням та поточним значенням на поточну кількість Podʼів. Таким чином, метрики, що використовуються, мають зменшуватися зі збільшенням кількості Podʼів, і навпаки. Дивіться індивідуальні типи джерел метрик для отримання додаткової інформації про те, як кожен тип метрик має реагувати. Якщо не встановлено, стандартна метрика з буде встановлена на 80% середнього використання CPU.
MetricSpec визначає, як масштабуватися на основі однієї метрики (лише type та одне інше відповідне поле мають бути встановлені одночасно).
metrics.type (string), обовʼязково
type — тип джерела метрики. Має бути одним з "ContainerResource", "External", "Object", "Pods" або "Resource", кожен з яких відповідає відповідному полю в обʼєкті. Примітка: тип "ContainerResource" доступний лише за умови, що увімкнено функцію HPAContainerMetrics.
containerResource стосується метрики ресурсу (наприклад, ті, що вказані в запитах і лімітах), відомої Kubernetes, яка описує один контейнер у кожному Podʼі поточного цільового масштабу (наприклад, CPU або памʼять). Такі метрики вбудовані в Kubernetes і мають спеціальні параметри масштабування на додаток до тих, що доступні для звичайних метрик на кожен Pod за допомогою джерела "pods". Це альфа-функція і може бути увімкнена прапорцем функції HPAContainerMetrics.
ContainerResourceMetricSource вказує, як масштабуватися на основі метрики ресурсу, відомої Kubernetes, як вказано в запитах і лімітах, описуючи кожен Pod у поточному цільовому масштабі (наприклад, CPU або памʼять). Значення будуть усереднені перед порівнянням з цільовим значенням. Такі метрики вбудовані в Kubernetes і мають спеціальні параметри масштабування на додаток до тих, що доступні для звичайних метрик на кожен Pod за допомогою джерела "pods". Має бути встановлений лише один тип "target".
averageUtilization — це цільове значення середнього значення метрики ресурсу по всім відповідним Podʼам, представлене у відсотках від запитуваного значення ресурсу для Podʼів. Наразі дійсно лише для типу джерела метрики Resource.
value — це цільове значення метрики (як кількість).
metrics.external (ExternalMetricSource)
external стосується глобальної метрики, яка не повʼязана з жодним обʼєктом Kubernetes. Це дозволяє автоматичне масштабування на основі інформації, що надходить від компонентів, які працюють за межами кластера (наприклад, довжина черги у хмарному сервісі обміну повідомленнями або QPS від балансувальника навантаження, що працює за межами кластера).
ExternalMetricSource вказує, як масштабуватися на основі метрики, не повʼязаної з жодним обʼєктом Kubernetes (наприклад, довжина черги у хмарному сервісі обміну повідомленнями або QPS від балансувальника навантаження, що працює за межами кластера).
selector — це строкове кодування стандартного селектора міток Kubernetes для даної метрики. Якщо встановлено, він передається як додатковий параметр серверу метрик для більш специфічного вибору метрик. Якщо не встановлено, для збору метрик буде використовуватися лише назва метрики.
averageUtilization — це цільове значення середнього значення метрики ресурсу по всім відповідним Podʼам, представлене у відсотках від запитуваного значення ресурсу для Podʼів. Наразі дійсно лише для типу джерела метрики Resource.
value – це цільове значення метрики (як кількість).
metrics.object (ObjectMetricSource)
object — стосується метрики, що описує один обʼєкт Kubernetes (наприклад, кількість запитів на секунду на обʼєкті Ingress).
ObjectMetricSource вказує, як масштабуватися на основі метрики, що описує обʼєкт Kubernetes (наприклад, кількість запитів на секунду на обʼєкті Ingress).
selector — це строкове кодування стандартного селектора міток Kubernetes для даної метрики. Якщо встановлено, він передається як додатковий параметр серверу метрик для більш специфічного вибору метрик. Якщо не встановлено, для збору метрик буде використовуватися лише назва метрики.
metrics.object.target (MetricTarget), обовʼязково
target — визначає цільове значення для даної метрики.
MetricTarget визначає цільове значення, середнє значення або середнє використання певної метрики.
metrics.object.target.type (string), обовʼязково
type — представляє, чи є тип метрики Utilization, Value або AverageValue.
metrics.object.target.averageUtilization (int32)
averageUtilization — цільове значення середнього значення метрики ресурсу по всім відповідним Podʼам, представлене у відсотках від запитуваного значення ресурсу для Podʼів. Наразі дійсно лише для типу джерела метрики Resource.
pods — стосується метрики, що описує кожен Pod у поточному цільовому масштабі (наприклад, кількість транзакцій на секунду). Значення будуть усереднені перед порівнянням з цільовим значенням.
PodsMetricSource вказує, як масштабуватися на основі метрики, що описує кожен Pod у поточному цільовому масштабі (наприклад, кількість транзакцій на секунду). Значення будуть усереднені перед порівнянням з цільовим значенням.
selector — це строкове кодування стандартного селектора міток Kubernetes для даної метрики. Якщо встановлено, він передається як додатковий параметр серверу метрик для більш специфічного вибору метрик. Якщо не встановлено, для збору метрик буде використовуватися лише назва метрики.
metrics.pods.target (MetricTarget), обовʼязково
target визначає цільове значення для даної метрики.
MetricTarget визначає цільове значення, середнє значення або середнє використання певної метрики.
metrics.pods.target.type (string), обовʼязково
type — представляє, чи є тип метрики Utilization, Value або AverageValue.
metrics.pods.target.averageUtilization (int32)
averageUtilization — це цільове значення середнього значення метрики ресурсу по всім відповідним Podʼам, представлене у відсотках від запитуваного значення ресурсу для Podʼів. Наразі дійсно лише для типу джерела метрики Resource.
value — це цільове значення метрики (як кількість).
metrics.resource (ResourceMetricSource)
resource — стосується метрики ресурсу (наприклад, ті, що вказані в запитах і лімітах), відомої Kubernetes, яка описує кожен у поточному цільовому масштабі (наприклад, CPU або памʼять). Такі метрики вбудовані в Kubernetes і мають спеціальні параметри масштабування на додаток до тих, що доступні для звичайних метрик на кожен за допомогою джерела "pods".
ResourceMetricSource вказує, як масштабуватися на основі метрики ресурсу, відомої Kubernetes, як вказано в запитах і лімітах, описуючи кожен у поточному цільовому масштабі (наприклад, CPU або памʼять). Значення будуть усереднені перед порівнянням з цільовим значенням. Такі метрики вбудовані в Kubernetes і мають спеціальні параметри масштабування на додаток до тих, що доступні для звичайних метрик на кожен под за допомогою джерела "pods". Повинен бути встановлений лише один тип "target".
averageUtilization — це цільове значення середнього значення метрики ресурсу по всім відповідним Podʼам, представлене у відсотках від запитуваного значення ресурсу для Podʼів. Наразі дійсно лише для типу джерела метрики Resource.
value —це цільове значення метрики (як кількість).
HorizontalPodAutoscalerStatus
HorizontalPodAutoscalerStatus описує поточний стан горизонтального автомасштабувальника Podʼів.
desiredReplicas (int32), обовʼязково
desiredReplicas — це бажана кількість реплік Podʼів, якими керує цей автомасштабувальник, відповідно до останнього обчислення автомасштабувальника.
conditions ([]HorizontalPodAutoscalerCondition)
Patch strategy: обʼєднання за ключем type
Map: під час обʼєднання зберігатимуться унікальні значення за ключем type
conditions — це набір станів, необхідних для масштабування цільового обʼєкта автомасштабувальником, та вказує, чи було їх досягнуто.
HorizontalPodAutoscalerCondition описує стан HorizontalPodAutoscaler у певний момент часу.
conditions.status (string), обовʼязково
status — це статус стану (True, False, Unknown)
conditions.type (string), обовʼязково
type описує поточний стан
conditions.lastTransitionTime (Time)
lastTransitionTime — це останній час, коли стан перейшла з одного стану в інший
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
message - це зрозуміле людині пояснення, що містить деталі про зміну стану
conditions.reason (string)
reason — це причина останньї зміни стану.
currentMetrics ([]MetricStatus)
Atomic: буде замінено під час обʼєднання
currentMetrics — це останній прочитаний статус метрик, які використовує цей автомасштабувальник.
MetricStatus описує останній прочитаний статус окремої метрики.
currentMetrics.type (string), обовʼязково
type — це тип джерела метрики. Це буде один з "ContainerResource", "External", "Object", "Pods" або "Resource", кожен з яких відповідає відповідному полю в обʼєкті. Примітка: тип "ContainerResource" доступний лише за увімкненого прапора функції HPAContainerMetrics.
container resource стосується метрики ресурсу (такої як зазначено в запитах та обмеженнях), відомої Kubernetes, що описує окремий контейнер у кожному Podʼі в поточному цільовому масштабуванні (наприклад, CPU або памʼять). Такі метрики вбудовані в Kubernetes і мають спеціальні опції масштабування, окрім тих, що доступні для звичайних метрик на кожен Pod, використовуючи джерело "pods".
ContainerResourceMetricStatus вказує поточне значення метрики ресурсу, відомої Kubernetes, як зазначено в запитах та обмеженнях, що описує окремий контейнер у кожному Podʼі в поточному цільовому масштабуванні (наприклад, CPU або памʼять). Такі метрики вбудовані в Kubernetes і мають спеціальні опції масштабування, окрім тих, що доступні для звичайних метрик на кожен Pod, використовуючи джерело "pods".
currentAverageUtilization — це поточне значення середнього використання метрики ресурсу серед усіх відповідних Podʼів, представлене у відсотках від запитаного значення ресурсу для Podʼів.
external стосується глобальної метрики, яка не повʼязана з жодним обʼєктом Kubernetes. Вона дозволяє автомасштабування на основі інформації, що надходить від компонентів, що працюють за межами кластера (наприклад, довжина черги у хмарному сервісі обміну повідомленнями або QPS від балансувальника навантаження, що працює за межами кластера).
ExternalMetricStatus вказує поточне значення глобальної метрики, не повʼязаної з жодним обʼєктом Kubernetes.
currentAverageUtilization — це поточне значення середнього використання метрики ресурсу серед усіх відповідних Podʼів, представлене у відсотках від запитаного значення ресурсу для Podʼів.
selector — це строково-кодована форма стандартного селектора міток Kubernetes для даної метрики. Коли встановлено, він передається як додатковий параметр до сервера метрик для більш специфічного вибору метрик. Коли не встановлено, буде використано лише metricName для збору метрик.
currentMetrics.object (ObjectMetricStatus)
object стосується метрики, що описує окремий обʼєкт Kubernetes (наприклад, кількість запитів на секунду для обʼєкта Ingress).
ObjectMetricStatus вказує поточне значення метрики, що описує обʼєкт Kubernetes (наприклад, кількість запитів на секунду для обʼєкта Ingress).
currentAverageUtilization — це поточне значення середнього використання метрики ресурсу серед усіх відповідних Podʼів, представлене у відсотках від запитаного значення ресурсу для Podʼів.
selector — це строково-кодована форма стандартного селектора міток Kubernetes для даної метрики. Коли встановлено, він передається як додатковий параметр до сервера метрик для більш специфічного вибору метрик. Коли не встановлено, буде використано лише metricName для збору метрик.
currentMetrics.pods (PodsMetricStatus)
pods — стосується метрики, що описує кожен Pod у поточному цільовому масштабуванні (наприклад, кількість оброблених транзакцій на секунду). Значення буде усереднено перед порівнянням з цільовим значенням.
PodsMetricStatus вказує поточне значення метрики, що описує кожен Pod у поточному цільовому масштабуванні (наприклад, кількість оброблених транзакцій на секунду).
currentAverageUtilization — це поточне значення середнього використання метрики ресурсу серед усіх відповідних Podʼів, представлене у відсотках від запитаного значення ресурсу для Podʼів.
selector — це строково-кодована форма стандартного селектора міток Kubernetes для даної метрики. Коли встановлено, він передається як додатковий параметр до сервера метрик для більш специфічного вибору метрик. Коли не встановлено, буде використано лише metricName для збору метрик.
currentMetrics.resource (ResourceMetricStatus)
resource — стосується метрики ресурсу (такої як зазначено в запитах та обмеженнях), відомої Kubernetes, що описує кожен Pod у поточному цільовому масштабуванні (наприклад, CPU або памʼять). Такі метрики вбудовані в Kubernetes і мають спеціальні опції масштабування, окрім тих, що доступні для звичайних метрик на кожен Pod, використовуючи джерело "pods".
ResourceMetricStatus вказує поточне значення метрики ресурсу, відомої Kubernetes, як зазначено в запитах та обмеженнях, що описує кожен Pod у поточному цільовому масштабуванні (наприклад, CPU або памʼять). Такі метрики вбудовані в Kubernetes і мають спеціальні опції масштабування, окрім тих, що доступні для звичайних метрик на кожен Pod, використовуючи джерело "pods".
currentAverageUtilization — це поточне значення середнього використання метрики ресурсу серед усіх відповідних Podʼів, представлене у відсотках від запитаного значення ресурсу для Podʼів.
currentReplicas — це поточна кількість реплік Podʼів, якими керує цей автомасштабувальник, як це було останній раз спостережено автомасштабувальником.
lastScaleTime (Time)
lastScaleTime — це останній час, коли HorizontalPodAutoscaler масштабував кількість Podʼів, використовується автомасштабувальником для контролю частоти зміни кількості Podʼів.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
observedGeneration (int64)
observedGeneration — це останнє покоління, яке спостерігав цей автомасштабувальник.
HorizontalPodAutoscalerList
HorizontalPodAutoscalerList — це список обʼєктів горизонтального автомасштабувальника Podʼів.
Представляє ціле значення цього класу пріоритету. Це фактичний пріоритет, який отримують Podʼи, коли вони мають імʼя цього класу у їхній специфікації.
description (string)
Опис є довільним рядком, який зазвичай надає вказівки про те, коли слід використовувати цей клас пріоритету.
globalDefault (boolean)
Визначає, чи слід вважати цей PriorityClass за стандартний пріоритет для Podʼів, які не мають жодного класу пріоритету. Може бути встановлено лише один PriorityClass як globalDefault. Однак, якщо існує більше одного PriorityClass з полем globalDefault, встановленим на true, то за стандартний пріоритет буде використовувати найменше значення серед таких глобальних пріоритетних класів.
preemptionPolicy (string)
Політика для випередження Podʼів з нижчим пріоритетом. Один із варіантів: Never, PreemptLowerPriority. Стандартно використовується PreemptLowerPriority, якщо не встановлено жодного значення.
Обʼєкти PodSchedulingContext містять інформацію, необхідну для планування Pod з ResourceClaims, що використовують режим виділення "WaitForFirstConsumer".
apiVersion: resource.k8s.io/v1alpha3
import "k8s.io/api/resource/v1alpha3"
PodSchedulingContext
Обʼєкти PodSchedulingContext містять інформацію, необхідну для планування Pod з ResourceClaims, що використовують режим виділення "WaitForFirstConsumer".
Це тип альфа-версії та потребує включення функціональних можливостей DRAControlPlaneController.
Статус описує, де можуть бути виділені ресурси для Pod.
PodSchedulingContextSpec
PodSchedulingContextSpec описує, де потрібні ресурси для Pod.
potentialNodes ([]string)
Atomic: буде замінено під час злиття
PotentialNodes перелічує вузли, де можливий запуск Pod.
Розмір цього поля обмежений 128. Цього достатньо для багатьох кластерів. В більших кластерах може знадобитися більше спроб для знаходження вузла, що відповідає всім очікуваним ресурсам. В майбутньому це обмеження може бути збільшено, але не зменшено.
selectedNode (string)
SelectedNode — це вузол, для якого буде виконана спроба виділити ресурси, на які посилається Pod і які використовують виділення "WaitForFirstConsumer".
PodSchedulingContextStatus
PodSchedulingContextStatus описує, де можуть бути виділені ресурси для Pod.
resourceClaims ([]ResourceClaimSchedulingStatus)
Map: унікальні значення за ключем будуть збережені під час обʼєднання
ResourceClaims описує доступність ресурсів для кожного входження pod.spec.resourceClaims, де відповідний ResourceClaim використовує режим виділення "WaitForFirstConsumer".
ResourceClaimSchedulingStatus містить інформацію про конкретний ResourceClaim з режимом виділення "WaitForFirstConsumer".
resourceClaims.name (string), обовʼязково
Імʼя відповідає полю pod.spec.resourceClaims[*].Name.
resourceClaims.unsuitableNodes ([]string)
Atomic: буде замінено під час злиття
UnsuitableNodes перелічує вузли, для яких ResourceClaim не може бути виділено.
Розмір цього поля обмежений 128, так само як і для PodSchedulingSpec.PotentialNodes. Це обмеження може бути збільшено в майбутньому, але не зменшено.
PodSchedulingContextList
PodSchedulingContextList є колекцією обʼєктів планування Pod.
ResourceClaim описує запит на доступ до ресурсів у кластері для використання робочими навантаженнями.
apiVersion: resource.k8s.io/v1alpha3
import "k8s.io/api/resource/v1alpha3"
ResourceClaim
ResourceClaim описує запит на доступ до ресурсів у кластері, для використання робочими навантаженнями. Наприклад, якщо робоче навантаження потребує пристрою-акселератора з конкретними властивостями, ось як виражається цей запит. Розділ статусу відстежує, чи було задоволено цей запит і які саме ресурси були виділені.
Це альфа-тип і потребує увімкнення функціональної можливості DynamicResourceAllocation.
Status описує, чи заявка готова до використання і що було виділено.
ResourceClaimSpec
ResourceClaimSpec визначає, що запитується в ResourceClaim і як це налаштувати.
controller (string)
Controller — це імʼя драйвера DRA, який призначений для обробки розподілу цієї заявки. Якщо поле порожнє, розподіл обробляється планувальником під час планування podʼа.
Має бути піддоменом DNS і закінчуватися доменом DNS, що належить постачальнику драйвера.
Це альфа-поле і вимагає активації функціональної можливості DRAControlPlaneController.
devices (DeviceClaim)
Devices визначає як запитувати пристрої.
DeviceClaim визначає, як запитувати пристрої за допомогою ResourceClaim.
devices.config ([]DeviceClaimConfiguration)
Atomic: буде замінено під час злиття
Це поле містить конфігурацію для декількох потенційних драйверів, які можуть задовольнити запити у цій заявці. Воно ігнорується під час призначення заявки.
DeviceClaimConfiguration використовується для параметрів конфігурації у DeviceClaim.
devices.config.opaque (OpaqueDeviceConfiguration)
Opaque надає специфічні для драйвера параметри конфігурації.
OpaqueDeviceConfiguration містить параметри конфігурації драйвера у форматі, визначеному постачальником драйвера.
Параметри можуть містити довільні дані. Відповідальність за перевірку та керування версіями покладається на розробника драйверів. Зазвичай це включає самоідентифікацію та версію ("kind" + "apiVersion" для типів Kubernetes), а також конвертацію між різними версіями.
RawExtension використовується для зберігання розширень у зовнішніх версіях.
Щоб використовувати це, створіть поле, яке має тип RawExtension у вашій зовнішній, версійованій структурі, і Object у вашій внутрішній структурі. Також потрібно зареєструвати ваші різні типи втулків.
// Внутрішній пакунок:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"` MyPlugin runtime.Object `json:"myPlugin"`}
type PluginA struct {
AOption string`json:"aOption"`}
// Зовнішній пакунок:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"` MyPlugin runtime.RawExtension `json:"myPlugin"`}
type PluginA struct {
AOption string`json:"aOption"`}
Що відбувається? Спочатку декодування використовує json або yaml для десеріалізації даних у ваш зовнішній MyAPIObject. Це призводить до зберігання необробленого JSON, але без розпакування. Наступний крок — копіювання (за допомогою pkg/conversion) у внутрішню структуру. Функції перетворення, встановлені в DefaultScheme пакета runtime, розпаковують JSON, збережений у RawExtension, перетворюючи його в правильний тип обʼєкта і зберігаючи його в Object. (TODO: У випадку, коли обʼєкт має невідомий тип, буде створено і збережено обʼєкт runtime.Unknown.)
devices.config.requests ([]string)
Atomic: буде замінено під час злиття
Requests перераховує назви запитів, до яких застосовується конфігурація. Якщо поле порожнє, конфігурація застосовується до всіх запитів.
devices.constraints ([]DeviceConstraint)
Atomic: буде замінено під час злиття
Ці обмеження повинні задовольнятися набором пристроїв, які виділяються для заявки.
DeviceConstraint повинен мати рівно одне поле, крім Requests.
devices.constraints.matchAttribute (string)
MatchAttribute вимагає, щоб усі пристрої, про які йдеться, мали цей атрибуту, а його тип і значення були однаковими для всіх цих пристроїв.
Наприклад, якщо ви вказали "dra.example.com/numa" (гіпотетичний приклад!), то будуть обрані лише пристрої в одному й тому самому NUMA-вузлі. Пристрій, який не має цього атрибуту, не буде обраний. Усі пристрої повинні використовувати значення одного типу для цього атрибуту, оскільки це є частиною його специфікації, але якщо якийсь пристрій цього не робить, він також не буде обраний.
Має включати доменний кваліфікатор.
devices.constraints.requests ([]string)
Atomic: буде замінено під час злиття
Requests — це список з одного або більше запитів у цій заявці, які мають спільно задовольняти цю умову. Якщо запит виконується кількома пристроями, то всі пристрої повинні відповідати цій умові. Якщо це не вказано, ця умова застосовується до всіх запитів у заявці.
devices.requests ([]DeviceRequest)
Atomic: буде замінено під час злиття
Requests представляють індивідуальні запити на окремі пристрої, які мають бути задоволені. Якщо список порожній, то не потрібно виділяти жодних ресурсів.
DeviceRequest — це запит на пристрої, необхідні для заявки. Зазвичай це запит на один ресурс, такий як пристрій, але також може включати запит на кілька однакових пристроїв.
Поле DeviceClassName наразі є обов’язковим. Клієнти повинні перевірити, чи воно дійсно встановлене. Його відсутність свідчить про зміни, які ще не підтримуються клієнтом, і в такому випадку клієнт повинен відмовитися від обробки запиту.
DeviceClassName посилається на конкретний DeviceClass, який може визначати додаткові налаштування та селектори, що будуть успадковані цим запитом.
Клас є обов’язковим. Доступність класів залежить від кластера.
Адміністратори можуть використовувати це, щоб обмежити доступні для запитів пристрої, встановлюючи класи лише з селекторами для дозволених пристроїв. Якщо користувачі можуть вільно запитувати будь-що без обмежень, адміністратори можуть створити порожній DeviceClass для використання користувачами.
devices.requests.name (string), обовʼязково
Name може бути використане для посилання на цей запит у записі pod.spec.containers[].resources.claims та в умові заявки.
Має бути міткою DNS.
devices.requests.adminAccess (boolean)
AdminAccess вказує, що це заявка на адміністративний доступ до пристрою(їв). Заявки з AdminAccess очікується використовувати для моніторингу або інших сервісів управління пристроєм. Вони ігнорують усі звичайні заявки на пристрій щодо режимів доступу та будь-яких розподілів ресурсів.
devices.requests.allocationMode (string)
AllocationMode та пов’язані з ним поля визначають, як пристрої виділяються для виконання цього запиту. Підтримувані значення:
ExactCount: Цей запит на конкретну кількість пристроїв. Це значення використовується стандартно. Точна кількість вказується в полі count.
All: Цей запит на всі пристрої, що відповідають умовам, у пулі. Виділення не вдасться, якщо деякі пристрої вже виділені, за винятком випадків, коли запитується adminAccess.
Якщо AllocationMode не вказано, стандатний режим — ExactCount. Якщо режим — ExactCount і кількість не вказана, стандартна кількість один. Будь-які інші запити повинні вказати це поле.
Можуть бути додані нові режими в майбутньому. Клієнти повинні відмовитися від обробки запитів із невідомими режимами.
devices.requests.count (int64)
Поле Count використовується лише тоді, коли режим підрахунку — "ExactCount". Має бути більше нуля. Якщо AllocationMode встановлено як ExactCount і це поле не вказано, стандартне значення — один.
devices.requests.selectors ([]DeviceSelector)
Atomic: буде замінено під час злиття
Селектори визначають критерії, які має задовольнити конкретний пристрій, щоб він був розглянутий для цього запиту. Усі селектори повинні бути виконані, щоб пристрій був прийнятий до розгляду.
DeviceSelector повинен мати рівно одне встановлене поле.
Вираз є виразом CEL, який оцінює один пристрій. Він має оцінюватися як true, коли пристрій відповідає бажаним критеріям, і як false, коли не відповідає. Будь-який інший результат є помилкою і призводить до зупинки надання пристроїв.
Вхідні дані виразу — це обʼєкт з назвою "device", який має наступні властивості:
driver (рядок): імʼя драйвера, який визначає цей пристрій.
attributes (map[string]object): атрибути пристрою, згруповані за префіксом (наприклад, device.attributes["dra.example.com"] оцінюється як обʼєкт з усіма атрибутами, які були префіксовані "dra.example.com").
capacity (map[string]object): обсяги пристрою, згруповані за префіксом.
Приклад: Розглянемо пристрій з driver="dra.example.com", який надає два атрибути з назвою "model" та "ext.example.com/family" і один обсяг з назвою "modules". Вхідні дані для цього виразу будуть мати такі поля:
Поле device.driver можна використовувати для перевірки конкретного драйвера, або як загальну попередню умову (тобто ви хочете розглядати лише пристрої від цього драйвера), або як частину виразу з кількома умовами, який призначений для розгляду пристроїв з різних драйверів.
Тип значення кожного атрибута визначається визначенням пристрою, і користувачі, які пишуть ці вирази, повинні звертатися до документації для своїх конкретних драйверів. Тип значення кожного обсягу — Quantity.
Якщо невідомий префікс використовується для запиту в device.attributes або device.capacity, буде повернено порожній map. Будь-яке посилання на невідоме поле спричинить помилку оцінки і зупинку виділення.
Робочий вираз має перевіряти наявність атрибутів перед їх використанням.
Для зручності використання доступна функція cel.bind(), яка може бути використана для спрощення виразів, що звертаються до кількох атрибутів з одного домену. Наприклад:
ResourceClaimStatus відстежує, чи було виділено ресурс і яким був результат.
allocation (AllocationResult)
Allocation встановлюється після успішного розподілу заявки.
AllocationResult містить атрибути виділеного ресурсу.
allocation.controller (string)
controller — це імʼя драйвера DRA, який обробив виділення. Цей драйвер також відповідає за деалокацію заявки. Воно порожнє, коли заявку можна деалокувати без залучення драйвера.
Драйвер може виділяти пристрої, надані іншими драйверами, тому імʼя цього драйвера може відрізнятися від імен драйверів, зазначених у результатах.
Це альфа-поле і вимагає активації функціональної можливості DRAControlPlaneController.
allocation.devices (DeviceAllocationResult)
Devices є результатом виділення пристроїів.
DeviceAllocationResult — результат виділення пристроїв.
Це поле є комбінацією всіх параметрів конфігурації заявки та класу. Драйвери можуть розрізняти ці параметри за допомогою прапорця.
Воно включає параметри конфігурації для драйверів, які не мають виділених пристроїв у результаті, оскільки драйвери самостійно визначають, які параметри конфігурації вони підтримують. Вони можуть мовчки ігнорувати невідомі параметри конфігурації.
DeviceAllocationConfiguration gets embedded in an AllocationResult.
Параметри можуть містити довільні дані. Відповідальність за перевірку та керування версіями покладається на розробника драйверів. Зазвичай це включає самоідентифікацію та версію ("kind" + "apiVersion" для типів Kubernetes), а також конвертацію між різними версіями.
RawExtension використовується для зберігання розширень у зовнішніх версіях.
Щоб використовувати це, створіть поле, яке має тип RawExtension у вашій зовнішній, версійованій структурі, і Object у вашій внутрішній структурі. Також потрібно зареєструвати ваші різні типи втулків.
// Внутрішній пакунок:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"` MyPlugin runtime.Object `json:"myPlugin"`}
type PluginA struct {
AOption string`json:"aOption"`}
// Зовнішній пакунок:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"` MyPlugin runtime.RawExtension `json:"myPlugin"`}
type PluginA struct {
AOption string`json:"aOption"`}
Що відбувається? Спочатку декодування використовує json або yaml для десеріалізації даних у ваш зовнішній MyAPIObject. Це призводить до зберігання необробленого JSON, але без розпакування. Наступний крок — копіювання (за допомогою pkg/conversion) у внутрішню структуру. Функції перетворення, встановлені в DefaultScheme пакета runtime, розпаковують JSON, збережений у RawExtension, перетворюючи його в правильний тип обʼєкта і зберігаючи його в Object. (TODO: У випадку, коли обʼєкт має невідомий тип, буде створено і збережено обʼєкт runtime.Unknown.)
allocation.devices.config.requests ([]string)
Atomic: буде замінено під час злиття
Requests перераховує назви запитів, до яких застосовується конфігурація. Якщо поле порожнє, конфігурація застосовується до всіх запитів.
Request — це імʼя запиту в заявці, який спричинив виділення цього пристрою. Для одного запиту може бути виділено кілька пристроїв.
allocation.nodeSelector (NodeSelector)
NodeSelector визначає, де доступні виділені ресурси. Якщо не встановлено, ресурси доступні скрізь.
Селектор вузлів представляє об'єднання результатів одного або кількох запитів міток над набором вузлів; тобто, він представляє логічне OR селекторів, які представлені термінами селектора вузлів.
Обов’язкове поле. Список термінів селектора вузлів. Термінів застосовується логічне OR.
Null або порожній термін селектора вузла не відповідає жодному об'єкту. Вимоги до них складаються за принципом AND. Тип TopologySelectorTerm реалізує підмножину NodeSelectorTerm.
Вказує на те, що заявку потрібно деалокувати. Поки це поле встановлене, нові споживачі не можуть бути додані до ReservedFor.
Використовується лише у випадках, коли заявку потрібно деалокувати за допомогою драйвера DRA. Цей драйвер повинен деалокувати заявку та скинути це поле разом із очищенням поля Allocation.
Це альфа-поле і вимагає активації функціональної можливості DRAControlPlaneController.
reservedFor ([]ResourceClaimConsumerReference)
Patch strategy: злиття за ключем uid
Map: унікальні значення ключа uid будуть збережені під час злиття
ReservedFor вказує, які сутності в даний момент можуть використовувати заявку. Pod, який посилається на ResourceClaim, що не зарезервована для цього Podʼа, не буде запущений. Заявка, яка використовується або може бути використана, оскільки вона зарезервована, не повинна бути деалокована.
У кластері з кількома екземплярами планувальника два podʼи можуть бути заплановані одночасно різними планувальниками. Коли вони посилаються на один і той же ResourceClaim, який вже досяг максимального числа споживачів, лише один pod може бути запланований.
Обидва планувальники намагаються додати свій pod до поля claim.status.reservedFor, але лише оновлення, яке досягає API-сервера першим, зберігається. Інше оновлення зазнає помилки, і планувальник, який його надіслав, знає, що потрібно повернути pod у чергу, чекаючи, поки ResourceClaim знову стане доступним.
Може бути не більше 32 таких резервувань. Це число може бути збільшено в майбутньому, але не зменшено.
ResourceClaimConsumerReference містить достатньо інформації, щоб знайти споживача ResourceClaim. Користувач має бути ресурсом в тому ж просторі імен, що і ResourceClaim.
reservedFor.name (string), обовʼязково
Name — це імʼя ресурсу, на який посилаються.
reservedFor.resource (string), обовʼязково
Resource — це тип ресурсу, на який посилаються, наприклад, "pods".
reservedFor.uid (string), обовʼязково
UID ідентифікує саме одну інкарнацію ресурсу.
reservedFor.apiGroup (string)
APIGroup — це група для ресурсу, на який посилаються. Вона порожня для основного API. Це відповідає групі в APIVersion, яка використовується при створенні ресурсів.
ResourceClaim описує запит на доступ до ресурсів у кластері для використання робочими навантаженнями.
apiVersion: resource.k8s.io/v1beta1
import "k8s.io/api/resource/v1beta1"
ResourceClaim
ResourceClaim описує запит на доступ до ресурсів у кластері, для використання робочими навантаженнями. Наприклад, якщо робоче навантаження потребує пристрою-акселератора з конкретними властивостями, ось як виражається цей запит. Розділ статусу відстежує, чи було задоволено цей запит і які саме ресурси були виділені.
Це альфа-тип і потребує увімкнення функціональної можливості DynamicResourceAllocation.
Status описує, чи заявка готова до використання і що було виділено.
ResourceClaimSpec
ResourceClaimSpec визначає, що запитується в ResourceClaim і як це налаштувати.
controller (string)
Controller — це імʼя драйвера DRA, який призначений для обробки розподілу цієї заявки. Якщо поле порожнє, розподіл обробляється планувальником під час планування podʼа.
Має бути піддоменом DNS і закінчуватися доменом DNS, що належить постачальнику драйвера.
Це альфа-поле і вимагає активації функціональної можливості DRAControlPlaneController.
devices (DeviceClaim)
Devices визначає як запитувати пристрої.
DeviceClaim визначає, як запитувати пристрої за допомогою ResourceClaim.
devices.config ([]DeviceClaimConfiguration)
Atomic: буде замінено під час злиття
Це поле містить конфігурацію для декількох потенційних драйверів, які можуть задовольнити запити у цій заявці. Воно ігнорується під час призначення заявки.
DeviceClaimConfiguration використовується для параметрів конфігурації у DeviceClaim.
devices.config.opaque (OpaqueDeviceConfiguration)
Opaque надає специфічні для драйвера параметри конфігурації.
OpaqueDeviceConfiguration містить параметри конфігурації драйвера у форматі, визначеному постачальником драйвера.
Параметри можуть містити довільні дані. Відповідальність за перевірку та керування версіями покладається на розробника драйверів. Зазвичай це включає самоідентифікацію та версію ("kind" + "apiVersion" для типів Kubernetes), а також конвертацію між різними версіями.
RawExtension використовується для зберігання розширень у зовнішніх версіях.
Щоб використовувати це, створіть поле, яке має тип RawExtension у вашій зовнішній, версійованій структурі, і Object у вашій внутрішній структурі. Також потрібно зареєструвати ваші різні типи втулків.
// Внутрішній пакунок:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"` MyPlugin runtime.Object `json:"myPlugin"` }
type PluginA struct {
AOption string`json:"aOption"` }
// Зовнішній пакунок:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"` MyPlugin runtime.RawExtension `json:"myPlugin"` }
type PluginA struct {
AOption string`json:"aOption"` }
Що відбувається? Спочатку декодування використовує json або yaml для десеріалізації даних у ваш зовнішній MyAPIObject. Це призводить до зберігання необробленого JSON, але без розпакування. Наступний крок — копіювання (за допомогою pkg/conversion) у внутрішню структуру. Функції перетворення, встановлені в DefaultScheme пакета runtime, розпаковують JSON, збережений у RawExtension, перетворюючи його в правильний тип обʼєкта і зберігаючи його в Object. (TODO: У випадку, коли обʼєкт має невідомий тип, буде створено і збережено обʼєкт runtime.Unknown.)
devices.config.requests ([]string)
Atomic: буде замінено під час злиття
Requests перераховує назви запитів, до яких застосовується конфігурація. Якщо поле порожнє, конфігурація застосовується до всіх запитів.
devices.constraints ([]DeviceConstraint)
Atomic: буде замінено під час злиття
Ці обмеження повинні задовольнятися набором пристроїв, які виділяються для заявки.
DeviceConstraint повинен мати рівно одне поле, крім Requests.
devices.constraints.matchAttribute (string)
MatchAttribute вимагає, щоб усі пристрої, про які йдеться, мали цей атрибуту, а його тип і значення були однаковими для всіх цих пристроїв.
Наприклад, якщо ви вказали "dra.example.com/numa" (гіпотетичний приклад!), то будуть обрані лише пристрої в одному й тому самому NUMA-вузлі. Пристрій, який не має цього атрибуту, не буде обраний. Усі пристрої повинні використовувати значення одного типу для цього атрибуту, оскільки це є частиною його специфікації, але якщо якийсь пристрій цього не робить, він також не буде обраний.
Має включати доменний кваліфікатор.
devices.constraints.requests ([]string)
Atomic: буде замінено під час злиття
Requests — це список з одного або більше запитів у цій заявці, які мають спільно задовольняти цю умову. Якщо запит виконується кількома пристроями, то всі пристрої повинні відповідати цій умові. Якщо це не вказано, ця умова застосовується до всіх запитів у заявці.
devices.requests ([]DeviceRequest)
Atomic: буде замінено під час злиття
Requests представляють індивідуальні запити на окремі пристрої, які мають бути задоволені. Якщо список порожній, то не потрібно виділяти жодних ресурсів.
DeviceRequest — це запит на пристрої, необхідні для заявки. Зазвичай це запит на один ресурс, такий як пристрій, але також може включати запит на кілька однакових пристроїв.
Поле DeviceClassName наразі є обов’язковим. Клієнти повинні перевірити, чи воно дійсно встановлене. Його відсутність свідчить про зміни, які ще не підтримуються клієнтом, і в такому випадку клієнт повинен відмовитися від обробки запиту.
DeviceClassName посилається на конкретний DeviceClass, який може визначати додаткові налаштування та селектори, що будуть успадковані цим запитом.
Клас є обов’язковим. Доступність класів залежить від кластера.
Адміністратори можуть використовувати це, щоб обмежити доступні для запитів пристрої, встановлюючи класи лише з селекторами для дозволених пристроїв. Якщо користувачі можуть вільно запитувати будь-що без обмежень, адміністратори можуть створити порожній DeviceClass для використання користувачами.
devices.requests.name (string), обовʼязково
Name може бути використане для посилання на цей запит у записі pod.spec.containers[].resources.claims та в умові заявки.
Має бути міткою DNS.
devices.requests.adminAccess (boolean)
AdminAccess вказує, що це заявка на адміністративний доступ до пристрою(їв). Заявки з AdminAccess очікується використовувати для моніторингу або інших сервісів управління пристроєм. Вони ігнорують усі звичайні заявки на пристрій щодо режимів доступу та будь-яких розподілів ресурсів.
devices.requests.allocationMode (string)
AllocationMode та пов’язані з ним поля визначають, як пристрої виділяються для виконання цього запиту. Підтримувані значення:
ExactCount: Цей запит на конкретну кількість пристроїв. Це значення використовується стандартно. Точна кількість вказується в полі count.
All: Цей запит на всі пристрої, що відповідають умовам, у пулі. Виділення не вдасться, якщо деякі пристрої вже виділені, за винятком випадків, коли запитується adminAccess.
Якщо AllocationMode не вказано, стандатний режим — ExactCount. Якщо режим — ExactCount і кількість не вказана, стандартна кількість один. Будь-які інші запити повинні вказати це поле.
Можуть бути додані нові режими в майбутньому. Клієнти повинні відмовитися від обробки запитів із невідомими режимами.
devices.requests.count (int64)
Поле Count використовується лише тоді, коли режим підрахунку — "ExactCount". Має бути більше нуля. Якщо AllocationMode встановлено як ExactCount і це поле не вказано, стандартне значення — один.
devices.requests.selectors ([]DeviceSelector)
Atomic: буде замінено під час злиття
Селектори визначають критерії, які має задовольнити конкретний пристрій, щоб він був розглянутий для цього запиту. Усі селектори повинні бути виконані, щоб пристрій був прийнятий до розгляду.
DeviceSelector повинен мати рівно одне встановлене поле.
Вираз є виразом CEL, який оцінює один пристрій. Він має оцінюватися як true, коли пристрій відповідає бажаним критеріям, і як false, коли не відповідає. Будь-який інший результат є помилкою і призводить до зупинки надання пристроїв.
Вхідні дані виразу — це обʼєкт з назвою "device", який має наступні властивості:
driver (рядок): імʼя драйвера, який визначає цей пристрій.
attributes (map[string]object): атрибути пристрою, згруповані за префіксом (наприклад, device.attributes["dra.example.com"] оцінюється як обʼєкт з усіма атрибутами, які були префіксовані "dra.example.com").
capacity (map[string]object): обсяги пристрою, згруповані за префіксом.
Приклад: Розглянемо пристрій з driver="dra.example.com", який надає два атрибути з назвою "model" та "ext.example.com/family" і один обсяг з назвою "modules". Вхідні дані для цього виразу будуть мати такі поля:
Поле device.driver можна використовувати для перевірки конкретного драйвера, або як загальну попередню умову (тобто ви хочете розглядати лише пристрої від цього драйвера), або як частину виразу з кількома умовами, який призначений для розгляду пристроїв з різних драйверів.
Тип значення кожного атрибута визначається визначенням пристрою, і користувачі, які пишуть ці вирази, повинні звертатися до документації для своїх конкретних драйверів. Тип значення кожного обсягу — Quantity.
Якщо невідомий префікс використовується для запиту в device.attributes або device.capacity, буде повернено порожній map. Будь-яке посилання на невідоме поле спричинить помилку оцінки і зупинку виділення.
Робочий вираз має перевіряти наявність атрибутів перед їх використанням.
Для зручності використання доступна функція cel.bind(), яка може бути використана для спрощення виразів, що звертаються до кількох атрибутів з одного домену. Наприклад:
ResourceClaimStatus відстежує, чи було виділено ресурс і яким був результат.
allocation (AllocationResult)
Allocation встановлюється після успішного розподілу заявки.
AllocationResult містить атрибути виділеного ресурсу.
allocation.controller (string)
controller — це імʼя драйвера DRA, який обробив виділення. Цей драйвер також відповідає за деалокацію заявки. Воно порожнє, коли заявку можна деалокувати без залучення драйвера.
Драйвер може виділяти пристрої, надані іншими драйверами, тому імʼя цього драйвера може відрізнятися від імен драйверів, зазначених у результатах.
Це альфа-поле і вимагає активації функціональної можливості DRAControlPlaneController.
allocation.devices (DeviceAllocationResult)
Devices є результатом виділення пристроїів.
DeviceAllocationResult — результат виділення пристроїв.
Це поле є комбінацією всіх параметрів конфігурації заявки та класу. Драйвери можуть розрізняти ці параметри за допомогою прапорця.
Воно включає параметри конфігурації для драйверів, які не мають виділених пристроїв у результаті, оскільки драйвери самостійно визначають, які параметри конфігурації вони підтримують. Вони можуть мовчки ігнорувати невідомі параметри конфігурації.
DeviceAllocationConfiguration gets embedded in an AllocationResult.
Параметри можуть містити довільні дані. Відповідальність за перевірку та керування версіями покладається на розробника драйверів. Зазвичай це включає самоідентифікацію та версію ("kind" + "apiVersion" для типів Kubernetes), а також конвертацію між різними версіями.
RawExtension використовується для зберігання розширень у зовнішніх версіях.
Щоб використовувати це, створіть поле, яке має тип RawExtension у вашій зовнішній, версійованій структурі, і Object у вашій внутрішній структурі. Також потрібно зареєструвати ваші різні типи втулків.
// Внутрішній пакунок:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"` MyPlugin runtime.Object `json:"myPlugin"`}
type PluginA struct {
AOption string`json:"aOption"`}
// Зовнішній пакунок:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"` MyPlugin runtime.RawExtension `json:"myPlugin"`}
type PluginA struct {
AOption string`json:"aOption"`}
Що відбувається? Спочатку декодування використовує json або yaml для десеріалізації даних у ваш зовнішній MyAPIObject. Це призводить до зберігання необробленого JSON, але без розпакування. Наступний крок — копіювання (за допомогою pkg/conversion) у внутрішню структуру. Функції перетворення, встановлені в DefaultScheme пакета runtime, розпаковують JSON, збережений у RawExtension, перетворюючи його в правильний тип обʼєкта і зберігаючи його в Object. (TODO: У випадку, коли обʼєкт має невідомий тип, буде створено і збережено обʼєкт runtime.Unknown.)
allocation.devices.config.requests ([]string)
Atomic: буде замінено під час злиття
Requests перераховує назви запитів, до яких застосовується конфігурація. Якщо поле порожнє, конфігурація застосовується до всіх запитів.
Request — це імʼя запиту в заявці, який спричинив виділення цього пристрою. Для одного запиту може бути виділено кілька пристроїв.
allocation.nodeSelector (NodeSelector)
NodeSelector визначає, де доступні виділені ресурси. Якщо не встановлено, ресурси доступні скрізь.
Селектор вузлів представляє об'єднання результатів одного або кількох запитів міток над набором вузлів; тобто, він представляє логічне OR селекторів, які представлені термінами селектора вузлів.
Обов’язкове поле. Список термінів селектора вузлів. Термінів застосовується логічне OR.
Null або порожній термін селектора вузла не відповідає жодному об'єкту. Вимоги до них складаються за принципом AND. Тип TopologySelectorTerm реалізує підмножину NodeSelectorTerm.
Вказує на те, що заявку потрібно деалокувати. Поки це поле встановлене, нові споживачі не можуть бути додані до ReservedFor.
Використовується лише у випадках, коли заявку потрібно деалокувати за допомогою драйвера DRA. Цей драйвер повинен деалокувати заявку та скинути це поле разом із очищенням поля Allocation.
Це альфа-поле і вимагає активації функціональної можливості DRAControlPlaneController.
reservedFor ([]ResourceClaimConsumerReference)
Patch strategy: злиття за ключем uid
Map: унікальні значення ключа uid будуть збережені під час злиття
ReservedFor вказує, які сутності в даний момент можуть використовувати заявку. Pod, який посилається на ResourceClaim, що не зарезервована для цього Podʼа, не буде запущений. Заявка, яка використовується або може бути використана, оскільки вона зарезервована, не повинна бути деалокована.
У кластері з кількома екземплярами планувальника два podʼи можуть бути заплановані одночасно різними планувальниками. Коли вони посилаються на один і той же ResourceClaim, який вже досяг максимального числа споживачів, лише один pod може бути запланований.
Обидва планувальники намагаються додати свій pod до поля claim.status.reservedFor, але лише оновлення, яке досягає API-сервера першим, зберігається. Інше оновлення зазнає помилки, і планувальник, який його надіслав, знає, що потрібно повернути pod у чергу, чекаючи, поки ResourceClaim знову стане доступним.
Може бути не більше 32 таких резервувань. Це число може бути збільшено в майбутньому, але не зменшено.
ResourceClaimConsumerReference містить достатньо інформації, щоб знайти споживача ResourceClaim. Користувач має бути ресурсом в тому ж просторі імен, що і ResourceClaim.
reservedFor.name (string), обовʼязково
Name — це імʼя ресурсу, на який посилаються.
reservedFor.resource (string), обовʼязково
Resource — це тип ресурсу, на який посилаються, наприклад, "pods".
reservedFor.uid (string), обовʼязково
UID ідентифікує саме одну інкарнацію ресурсу.
reservedFor.apiGroup (string)
APIGroup — це група для ресурсу, на який посилаються. Вона порожня для основного API. Це відповідає групі в APIVersion, яка використовується при створенні ресурсів.
Специфікація для ResourceClaim. Весь вміст копіюється без змін в ResourceClaim, який створюється з цього шаблону. Ті ж самі поля, що й в ResourceClaim, є дійсними тут.
ObjectMeta може містити мітки та анотації, які будуть скопійовані до PVC при створенні його. Інші поля не дозволені і будуть відхилені під час перевірки на валідність.
ResourceClaimTemplateList
ResourceClaimTemplateList є колекцією шаблонів заявок.
Специфікація для ResourceClaim. Весь вміст копіюється без змін в ResourceClaim, який створюється з цього шаблону. Ті ж самі поля, що й в ResourceClaim, є дійсними тут.
ObjectMeta може містити мітки та анотації, які будуть скопійовані до PVC при створенні його. Інші поля не дозволені і будуть відхилені під час перевірки на валідність.
ResourceClaimTemplateList
ResourceClaimTemplateList є колекцією шаблонів заявок.
ResourceSlice представляє один або декілька ресурсів у пулі подібних ресурсів, керованих спільним драйвером.
apiVersion: resource.k8s.io/v1alpha3
import "k8s.io/api/resource/v1alpha3"
ResourceSlice
ResourceSlice представляє один або кілька ресурсів у пулі подібних ресурсів, що управляються спільним драйвером. Пул може охоплювати більше ніж один ResourceSlice, і точна кількість ResourceSlices, що складають пул, визначається драйвером.
Наразі підтримуються лише пристрої з атрибутами та ємностями (capacities). Кожен пристрій у певному пулі, незалежно від кількості ResourceSlices, повинен мати унікальне імʼя. ResourceSlice, в якому пристрій публікується, може змінюватися з часом. Унікальний ідентифікатор для пристрою — це кортеж <імʼя драйвера>, <імʼя пулу>, <імʼя пристрою>.
Щоразу, коли драйверу потрібно оновити пул, він інкрементує номер pool.Spec.Pool.Generation і оновлює всі ResourceSlices з новим номером і новими визначеннями ресурсів. Споживач повинен використовувати лише ResourceSlices з найвищим номером покоління та ігнорувати всі інші.
При виділенні всіх ресурсів в пулі, що відповідають певним критеріям, або при пошуку найкращого рішення серед кількох різних альтернатив, споживач повинен перевірити кількість ResourceSlices у пулі (включену в кожен ResourceSlice), щоб визначити, чи є його погляд на пул повним, і, якщо ні, чекати, поки драйвер завершить оновлення пулу.
Для ресурсів, які не є локальними для вузла, імʼя вузла не встановлюється. Замість цього драйвер може використовувати селектор вузлів для вказівки, де пристрої доступні.
Це альфа-тип і вимагає активації функціональної можливості DynamicResourceAllocation.
Зміна специфікації автоматично інкрементує номер metadata.generation.
ResourceSliceSpec
ResourceSliceSpec містить інформацію, опубліковану драйвером в одному ResourceSlice.
driver (string), обовʼязково
Driver ідентифікує драйвер DRA, який надає інформацію про ємність. Можна використовувати селектор полів для переліку лише об'єктів ResourceSlice з певним імʼям драйвера.
Має бути піддоменом DNS і закінчуватися доменом DNS, що належить постачальнику драйвера. Це поле є незмінним.
pool (ResourcePool), обовʼязково
Pool описує пул, до якого належить цей ResourceSlice.
ResourcePool описує пул, до якого належать ResourceSlices.
pool.generation (int64), обовʼязково
Generation відстежує зміни в пулі з часом. Щоразу, коли драйвер змінює щось в одному або кількох ресурсах у пулі, він повинен змінити покоління у всіх ResourceSlices, які є частиною цього пулу. Споживачі ResourceSlices повинні враховувати лише ресурси з пулу з найвищим номером покоління. Покоління може бути скинуто драйверами, що має бути прийнятно для споживачів, за умови, що всі ResourceSlices у пулі оновлені, щоб відповідати новому поколінню або видалені.
Поєднаний з ResourceSliceCount, цей механізм дозволяє споживачам виявляти пули, які складаються з кількох ResourceSlices і знаходяться в неповному стані.
pool.name (string), обовʼязково
Name використовується для ідентифікації пулу. Для локальних на вузлі пристроїв це часто є імʼя вузла, але це не є обовʼязковим.
Не повинно перевищувати 253 символи і повинно складатися з одного або кількох піддоменів DNS, розділених косими рисками. Це поле є незмінним.
pool.resourceSliceCount (int64), обовʼязково
ResourceSliceCount — це загальна кількість ResourceSlices у пулі на цьому номері покоління. Має бути більше нуля.
Споживачі можуть використовувати це для перевірки, чи вони бачили всі ResourceSlices, що належать одному й тому ж пулу.
allNodes (boolean)
AllNodes вказує на те, що всі вузли мають доступ до ресурсів у пулі.
Має бути встановлено точно одне з полів NodeName, NodeSelector або AllNodes.
devices ([]Device)
Atomic: буде замінено під час злиття
Devices перераховує деякі або всі пристрої в цьому пулі.
Не повинно бути більше ніж 128 записів.
Device представляє один індивідуальний апаратний екземпляр, який може бути вибраний на основі його атрибутів. Окрім імені, має бути встановлено точно одне поле.
devices.name (string), обовʼязково
Name є унікальним ідентифікатором серед усіх пристроїв, які управляються драйвером у пулі. Має бути піддоменом DNS.
Capacity визначає набір ємностей для цього пристрою. Імʼя кожної ємності повинно бути унікальним у цьому наборі.
Максимальна кількість атрибутів та ємностей разом — 32.
nodeName (string)
NodeName ідентифікує вузол, який надає ресурси в цьому пулі. Селектор полів можна використовувати для переліку лише обʼєктів ResourceSlice, що належать певному вузлу.
Це поле може використовуватися для обмеження доступу з вузлів до ResourceSlices з тим же іменем вузла. Воно також вказує автомасштабувальникам, що додавання нових вузлів того ж типу, що й старий вузол, може також зробити нові ресурси доступними.
Має бути встановлено точно одне з полів NodeName, NodeSelector або AllNodes. Це поле є незмінним.
nodeSelector (NodeSelector)
NodeSelector визначає, які вузли мають доступ до ресурсів у пулі, коли цей пул не обмежений до одного вузла.
Має бути використано точно один термін.
Має бути встановлено точно одне з полів NodeName, NodeSelector або AllNodes.
Селектор вузлів представляє обʼєднання результатів одного або кількох запитів міток по набору вузлів; тобто, він представляє логічну операцію OR селекторів, представлених термінами селектора вузлів.
Обовʼязково. Список термінів селектора вузлів. Терміни обʼєднуються операцією OR.
Null або порожній термін селектора вузла не відповідає жодному об'єкту. Вимоги до них складаються за принципом AND. Тип TopologySelectorTerm реалізує підмножину NodeSelectorTerm.
ResourceSlice представляє один або декілька ресурсів у пулі подібних ресурсів, керованих спільним драйвером.
apiVersion: resource.k8s.io/v1beta1
import "k8s.io/api/resource/v1beta1"
ResourceSlice
ResourceSlice представляє один або кілька ресурсів у пулі подібних ресурсів, що управляються спільним драйвером. Пул може охоплювати більше ніж один ResourceSlice, і точна кількість ResourceSlices, що складають пул, визначається драйвером.
Наразі підтримуються лише пристрої з атрибутами та ємностями (capacities). Кожен пристрій у певному пулі, незалежно від кількості ResourceSlices, повинен мати унікальне імʼя. ResourceSlice, в якому пристрій публікується, може змінюватися з часом. Унікальний ідентифікатор для пристрою — це кортеж <імʼя драйвера>, <імʼя пулу>, <імʼя пристрою>.
Щоразу, коли драйверу потрібно оновити пул, він інкрементує номер pool.Spec.Pool.Generation і оновлює всі ResourceSlices з новим номером і новими визначеннями ресурсів. Споживач повинен використовувати лише ResourceSlices з найвищим номером покоління та ігнорувати всі інші.
При виділенні всіх ресурсів в пулі, що відповідають певним критеріям, або при пошуку найкращого рішення серед кількох різних альтернатив, споживач повинен перевірити кількість ResourceSlices у пулі (включену в кожен ResourceSlice), щоб визначити, чи є його погляд на пул повним, і, якщо ні, чекати, поки драйвер завершить оновлення пулу.
Для ресурсів, які не є локальними для вузла, імʼя вузла не встановлюється. Замість цього драйвер може використовувати селектор вузлів для вказівки, де пристрої доступні.
Це альфа-тип і вимагає активації функціональної можливості DynamicResourceAllocation.
Зміна специфікації автоматично інкрементує номер metadata.generation.
ResourceSliceSpec
ResourceSliceSpec містить інформацію, опубліковану драйвером в одному ResourceSlice.
driver (string), обовʼязково
Driver ідентифікує драйвер DRA, який надає інформацію про ємність. Можна використовувати селектор полів для переліку лише об'єктів ResourceSlice з певним імʼям драйвера.
Має бути піддоменом DNS і закінчуватися доменом DNS, що належить постачальнику драйвера. Це поле є незмінним.
pool (ResourcePool), обовʼязково
Pool описує пул, до якого належить цей ResourceSlice.
ResourcePool описує пул, до якого належать ResourceSlices.
pool.generation (int64), обовʼязково
Generation відстежує зміни в пулі з часом. Щоразу, коли драйвер змінює щось в одному або кількох ресурсах у пулі, він повинен змінити покоління у всіх ResourceSlices, які є частиною цього пулу. Споживачі ResourceSlices повинні враховувати лише ресурси з пулу з найвищим номером покоління. Покоління може бути скинуто драйверами, що має бути прийнятно для споживачів, за умови, що всі ResourceSlices у пулі оновлені, щоб відповідати новому поколінню або видалені.
Поєднаний з ResourceSliceCount, цей механізм дозволяє споживачам виявляти пули, які складаються з кількох ResourceSlices і знаходяться в неповному стані.
pool.name (string), обовʼязково
Name використовується для ідентифікації пулу. Для локальних на вузлі пристроїв це часто є імʼя вузла, але це не є обовʼязковим.
Не повинно перевищувати 253 символи і повинно складатися з одного або кількох піддоменів DNS, розділених косими рисками. Це поле є незмінним.
pool.resourceSliceCount (int64), обовʼязково
ResourceSliceCount — це загальна кількість ResourceSlices у пулі на цьому номері покоління. Має бути більше нуля.
Споживачі можуть використовувати це для перевірки, чи вони бачили всі ResourceSlices, що належать одному й тому ж пулу.
allNodes (boolean)
AllNodes вказує на те, що всі вузли мають доступ до ресурсів у пулі.
Має бути встановлено точно одне з полів NodeName, NodeSelector або AllNodes.
devices ([]Device)
Atomic: буде замінено під час злиття
Devices перераховує деякі або всі пристрої в цьому пулі.
Не повинно бути більше ніж 128 записів.
Device представляє один індивідуальний апаратний екземпляр, який може бути вибраний на основі його атрибутів. Окрім імені, має бути встановлено точно одне поле.
devices.name (string), обовʼязково
Name є унікальним ідентифікатором серед усіх пристроїв, які управляються драйвером у пулі. Має бути піддоменом DNS.
Capacity визначає набір ємностей для цього пристрою. Імʼя кожної ємності повинно бути унікальним у цьому наборі.
Максимальна кількість атрибутів та ємностей разом — 32.
nodeName (string)
NodeName ідентифікує вузол, який надає ресурси в цьому пулі. Селектор полів можна використовувати для переліку лише обʼєктів ResourceSlice, що належать певному вузлу.
Це поле може використовуватися для обмеження доступу з вузлів до ResourceSlices з тим же іменем вузла. Воно також вказує автомасштабувальникам, що додавання нових вузлів того ж типу, що й старий вузол, може також зробити нові ресурси доступними.
Має бути встановлено точно одне з полів NodeName, NodeSelector або AllNodes. Це поле є незмінним.
nodeSelector (NodeSelector)
NodeSelector визначає, які вузли мають доступ до ресурсів у пулі, коли цей пул не обмежений до одного вузла.
Має бути використано точно один термін.
Має бути встановлено точно одне з полів NodeName, NodeSelector або AllNodes.
Селектор вузлів представляє обʼєднання результатів одного або кількох запитів міток по набору вузлів; тобто, він представляє логічну операцію OR селекторів, представлених термінами селектора вузлів.
Обовʼязково. Список термінів селектора вузлів. Терміни обʼєднуються операцією OR.
Null або порожній термін селектора вузла не відповідає жодному об'єкту. Вимоги до них складаються за принципом AND. Тип TopologySelectorTerm реалізує підмножину NodeSelectorTerm.
Service — це іменована абстракція служб програмного забезпечення (наприклад, mysql), що складається з локального порту (наприклад, 3306), який прослуховує проксі, і селектора, який визначає, які Podʼи будуть відповідати на запити, надіслані через проксі.
apiVersion: v1
import "k8s.io/api/core/v1"
Service
Service — це іменована абстракція служб програмного забезпечення (наприклад, mysql), що складається з локального порту (наприклад, 3306), який прослуховує проксі, і селектора, який визначає, які Podʼи будуть відповідати на запити, надіслані через проксі.
ServiceSpec описує атрибути, які користувач створює для служби.
selector (map[string]string)
Направляє трафік до Podʼів з ключами та значеннями міток, які відповідають цьому селектору. Якщо селектор порожній або не вказаний, передбачається, що Service має зовнішній процес, який керує його точками доступу, і Kubernetes не буде їх змінювати. Застосовується лише до типів ClusterIP, NodePort і LoadBalancer. Ігнорується, якщо тип — ExternalName. Більше інформації: https://kubernetes.io/docs/concepts/services-networking/service/
ports ([]ServicePort)
Patch strategy: злиття по ключу port
Map: унікальні значення за ключами port, protocol зберігатимуться під час злиття
Номер або імʼя порту для доступу до Podʼів, на які спрямовано Service. Номер повинен бути в діапазоні від 1 до 65535. Імʼя повинно бути IANA_SVC_NAME. Якщо це рядок, він буде шукатися як іменований порт у портах контейнера цільового Podʼа. Якщо не вказано, використовується значення поля ʼportʼ (identity map). Це поле ігнорується для Service із clusterIP=None і має бути пропущене або встановлене рівним полю ʼportʼ. Більше інформації: https://kubernetes.io/docs/concepts/services-networking/service/#defining-a-service
IntOrString — це тип, який може містити int32 або рядок. При використанні перетворення з/в JSON або YAML він виробляє або споживає внутрішній тип. Це дозволяє вам мати, наприклад, поле JSON, яке може приймати імʼя або число.
ports.protocol (string)
IP-протокол для цього порту. Підтримуються "TCP", "UDP" і "SCTP". Стандартне значення — TCP.
ports.name (string)
Імʼя цього порту в Service. Воно повинно бути DNS_LABEL. Усі порти в межах ServiceSpec повинні мати унікальні імена. При аналізі точок доступу для Service, вони повинні відповідати полю ʼnameʼ в EndpointPort. Необовʼязкове, якщо визначено лише один ServicePort для цього Service.
ports.nodePort (int32)
Порт на кожному вузлі, на якому цей Service буде доступний, коли тип — NodePort або LoadBalancer. Зазвичай призначається системою. Якщо значення вказано, знаходиться в діапазоні та не використовується, воно буде використано, інакше операція завершиться невдачею. Якщо не вказано, порт буде виділено, якщо Service його потребує. Якщо це поле вказано під час створення Service, яка не потребує його, створення не вдасться. Це поле буде видалено під час оновлення Service, щоб більше не потребувати його (наприклад, змінюючи тип з NodePort на ClusterIP). Більше інформації: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport
ports.appProtocol (string)
Протокол застосунків для цього порту. Він використовується як підказка для реалізацій, щоб запропонувати багатший функціонал для протоколів, які вони розуміють. Це поле відповідає стандартному синтаксису міток Kubernetes. Допустимі значення - або:
Інші протоколи повинні використовувати імена з префіксами, визначеними реалізацією, такі як mycompany.com/my-custom-protocol.
type (string)
Тип визначає, як Service буде відкрито. Стандартне значення — ClusterIP. Допустимі варіанти: ExternalName, ClusterIP, NodePort та LoadBalancer. "ClusterIP" виділяє точкам доступу внутрішню IP-адресу кластера для балансування навантаження. Точки доступу визначаються селектором або, якщо його не вказано, ручним створенням обʼєкта Endpoints або обʼєктів EndpointSlice. Якщо clusterIP має значення "None", жодна віртуальна IP-адреса не виділяється, і точки доступу публікуються як набір точок доступу, а не віртуальна IP-адреса. "NodePort" базується на ClusterIP і виділяє порт на кожному вузлі, який маршрутизується до тих самих точок доступу, що і clusterIP. "LoadBalancer" базується на NodePort і створює зовнішній балансувальник навантаження (якщо підтримується в поточній хмарі), який маршрутизується до тих самих точок доступу, що і clusterIP. "ExternalName" привʼязує цей Service до вказаного externalName. Декілька інших полів не застосовуються до Service ExternalName. Більше інформації: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
ipFamilies ([]string)
Atomic: буде замінено під час злиття
IPFamilies — це список IP-сімейств (наприклад, IPv4, IPv6), призначених цьому Serviceʼу. Це поле зазвичай призначається автоматично на основі конфігурації кластера та поля ipFamilyPolicy. Якщо це поле вказано вручну, запитане сімейство доступне в кластері, і ipFamilyPolicy дозволяє це, воно буде використане; інакше створення Service не вдасться. Це поле змінюється відповідно до умов: дозволяє додавати або видаляти вторинне IP-сімейство, але не дозволяє змінювати первинне IP-сімейство Service. Допустимі значення: "IPv4" і "IPv6". Це поле застосовується лише до Service типів ClusterIP, NodePort та LoadBalancer, і не застосовується до "headless" Service. Це поле буде очищено під час оновлення Service до типу ExternalName.
Це поле може містити максимум два записи (двостекові сімейство, у будь-якому порядку). Ці сімейства повинні відповідати значенням поля clusterIPs, якщо вказано. Поля clusterIPs та ipFamilies керуються полем ipFamilyPolicy.
ipFamilyPolicy (string)
IPFamilyPolicy представляє вимоги до подвійного стека для цього Service. Якщо значення не надано, це поле буде встановлено на SingleStack. Service можуть бути "SingleStack" (одне IP-сімейство), "PreferDualStack" (два IP-сімейства в конфігураціях з подвійним стеком або одне IP-сімейство в конфігураціях з одним стеком) або "RequireDualStack" (два IP-сімейства в конфігураціях з подвійним стеком, інакше буде збій). Поля ipFamilies та clusterIPs залежать від значення цього поля. Це поле буде очищено під час оновлення Service до типу ExternalName.
clusterIP (string)
clusterIP — це IP-адреса Service, яка зазвичай призначається випадковим чином. Якщо адреса вказана вручну, знаходиться в діапазоні (згідно з конфігурацією системи) і не використовується, вона буде виділена Service; інакше створення Service не вдасться. Це поле не може бути змінено через оновлення, якщо тип поля також не змінюється на ExternalName (що вимагає, щоб це поле було порожнім) або тип поля змінюється з ExternalName (у цьому випадку це поле може бути зазначено опціонально, як описано вище). Допустимі значення: "None", порожній рядок (""), або дійсна IP-адреса. Встановлення цього значення в "None" створює "headless service" (без віртуальної IP-адреси), що корисно, коли потрібні прямі зʼєднання з точками доступу, і проксіювання не потрібне. Застосовується лише до типів ClusterIP, NodePort і LoadBalancer. Якщо це поле вказано під час створення Service типу ExternalName, створення не вдасться. Це поле буде очищено під час оновлення Service до типу ExternalName. Більше інформації: https://kubernetes.io/docs/concepts/services-networking/service/#virtual-ips-and-service-proxies
clusterIPs ([]string)
Atomic: буде замінено під час злиття
ClusterIPs — це список IP-адрес, призначених Service, і зазвичай вони призначаються випадковим чином. Якщо адреса вказана вручну, знаходиться в діапазоні (згідно з конфігурацією системи) і не використовується, вона буде виділена Service; інакше створення Service не вдасться. Це поле не може бути змінено через оновлення, якщо тип поля також не змінюється на ExternalName (що вимагає, щоб це поле було порожнім) або тип поля змінюється з ExternalName (у цьому випадку це поле може бути зазначено опціонально, як описано вище). Допустимі значення: "None", порожній рядок (""), або дійсна IP-адреса. Встановлення цього значення на "None" створює "headless service" (без віртуальної IP-адреси), що корисно, коли потрібні прямі зʼєднання з точками доступу, і проксіювання не потрібно. Застосовується лише до типів ClusterIP, NodePort і LoadBalancer. Якщо це поле вказано під час створення Service типу ExternalName, створення не вдасться. Це поле буде очищено під час оновлення Service до типу ExternalName. Якщо це поле не вказано, воно буде ініціалізовано з поля clusterIP. Якщо це поле вказано, клієнти повинні переконатися, що clusterIPs[0] і clusterIP мають однакове значення.
externalIPs — це список IP-адрес, для яких вузли в кластері також будуть приймати трафік для цього Service. Ці IP-адреси не керуються Kubernetes. Користувач несе відповідальність за забезпечення того, щоб трафік надходив на вузол з цією IP-адресою. Загальний приклад — зовнішні балансувальники навантаження, які не є частиною системи Kubernetes.
Застосовується лише до типу Service: LoadBalancer. Ця функція залежить від того, чи підтримує базовий хмарний провайдер вказівку loadBalancerIP під час створення балансувальника навантаження. Це поле буде ігноруватися, якщо постачальник хмари не підтримує цю функцію. Застаріле: це поле було недостатньо описане, і його значення варіюється залежно від реалізацій. Використання його не є переносимим і може не підтримувати подвійний стек. Користувачам рекомендується використовувати анотації специфічні для реалізації, коли це можливо.
loadBalancerClass — це клас реалізації балансувальника навантаження, до якого належить Service. Якщо вказано, значення цього поля повинно бути ідентифікатором у стилі мітки з опціональним префіксом, наприклад, "internal-vip" або "example.com/internal-vip". Імена без префіксів зарезервовані для кінцевих користувачів. Це поле можна встановити лише при створенні або оновленні Service до типу ʼLoadBalancerʼ. Якщо не встановлено, використовується стандартна реалізація балансувальника навантаження, сьогодні це зазвичай робиться через інтеграцію з постачальником хмари, але має застосовуватися до будь-якої стандартної реалізації. Якщо встановлено, вважається, що реалізація балансувальника навантаження стежить за Service з відповідним класом. Будь-яка стандартна реалізація балансувальника навантаження (наприклад, постачальники хмари) повинна ігнорувати Service, які встановлюють це поле. Це поле можна встановити лише при створенні або оновленні Service до типу ʼLoadBalancerʼ. Після встановлення його не можна змінити. Це поле буде очищено при оновленні Service до типу, відмінного від ʼLoadBalancerʼ.
externalName (string)
externalName — це зовнішнє посилання, яке механізми виявлення будуть повертати як псевдонім для цього Service (наприклад, запис DNS CNAME). Проксіювання не буде. Повинно бути вказано в нижньому регістрі відповідно до RFC-1123 hostname (https://tools.ietf.org/html/rfc1123) і вимагає type бути "ExternalName".
externalTrafficPolicy (string)
externalTrafficPolicy описує, як вузли розподіляють трафік, який вони отримують на одній з "зовнішньо спрямованих" адрес Service (NodePorts, ExternalIPs і LoadBalancer IPs). Якщо встановлено значення "Local", проксі налаштує Service так, що передбачається, що зовнішні балансувальники навантаження будуть піклуватися про балансування трафіку Service між вузлами, і тому кожен вузол буде доставляти трафік лише до локальних точок доступу вузла цього Service, не маскуючи IP-адресу джерела клієнта. (Трафік, помилково надісланий на вузол без точок доступу, буде відхилений.) Стандартне значення "Cluster" використовує стандартну поведінку маршрутизації до всіх точок доступу рівномірно (можливо, змінену топологією та іншими функціями). Зверніть увагу, що трафік, надісланий на External IP або LoadBalancer IP зсередини кластера, завжди буде мати семантику "Cluster", але клієнти, які надсилають на NodePort зсередини кластера, можуть враховувати політику трафіку під час вибору вузла.
internalTrafficPolicy (string)
InternalTrafficPolicy описує, як вузли розподіляють трафік, який вони отримують на ClusterIP. Якщо встановлено значення "Local", проксі вважатиме, що Podʼи хочуть спілкуватися лише з точками доступу Service на тому ж вузлі, що й Pod, відхиляючи трафік, якщо немає локальних точок доступу. Стандартне значення "Cluster" використовує стандартну поведінку маршрутизації до всіх точок доступу рівномірно (можливо, змінено топологією та іншими функціями).
healthCheckNodePort (int32)
healthCheckNodePort визначає порт вузла перевірки справності Service. Це застосовується лише при встановленні типу на LoadBalancer і зовнішньому трафіку політики на Local. Якщо вказане значення, знаходиться в діапазоні і не використовується, воно буде використано. Якщо не вказано, значення буде автоматично призначено. Зовнішні системи (наприклад, балансувальники навантаження) можуть використовувати цей порт, щоб визначити, чи містить певний вузол точки доступу для цього Service чи ні. Якщо це поле вказано під час створення Service, яка цього не потребує, створення не вдасться. Це поле буде очищено при оновленні Service, щоб більше не потребувати його (наприклад, зміна типу). Це поле не можна оновити після встановлення.
publishNotReadyAddresses (boolean)
publishNotReadyAddresses вказує, що будь-який агент, який має справу з точками доступу для цього Service, повинен ігнорувати будь-які індикатори готовності/не готовності. Основний випадок використання цього поля — для Headless Service для StatefulSet, щоб поширювати SRV DNS-записи для своїх Podʼів з метою їх виявлення. Контролери Kubernetes, які генерують ресурси Endpoints і EndpointSlice для Service, інтерпретують це як ознаку того, що всі точки доступу вважаються "готовими", навіть якщо самі Podʼи не готові. Агенти, які використовують тільки точки доступу, створені Kubernetes, через ресурси Endpoints або EndpointSlice, можуть безпечно передбачати цю поведінку.
sessionAffinityConfig (SessionAffinityConfig)
sessionAffinityConfig містить конфігурації сеансової спорідненості.
SessionAffinityConfig представляє конфігурації сеансової спорідненості.
sessionAffinityConfig.clientIP (ClientIPConfig)
clientIP містить конфігурації сеансової спорідненості на основі IP клієнта.
ClientIPConfig представляє конфігурації сеансової спорідненості на основі IP клієнта.
timeoutSeconds задає час залипання сесії типу ClientIP у секундах. Значення повинно бути >0 && <=86400 (для 1 дня), якщо ServiceAffinity == "ClientIP". Стандартне значення — 10800 (3 години).
allocateLoadBalancerNodePorts (boolean)
allocateLoadBalancerNodePorts визначає, чи будуть автоматично виділені NodePorts для Service з типом LoadBalancer. Стандартне значення — "true". Його можна встановити у "false", якщо балансувальник навантаження кластера не покладається на NodePorts. Якщо абонент запитує конкретні NodePorts (вказуючи значення), ці запити будуть виконані, незалежно від цього поля. Це поле можна встановити лише для Service з типом LoadBalancer і воно буде очищено, якщо тип буде змінено на будь-який інший тип.
trafficDistribution (string)
TrafficDistribution надає спосіб виразити вподобання щодо того, як розподіляти трафік до точок доступу сервісу. Реалізації можуть використовувати це поле як підказку, але не зобовʼязані суворо дотримуватися вказівок. Якщо поле не встановлене, реалізація застосує свою стандартну стратегію маршрутизації. Якщо встановлено значення "PreferClose", реалізації повинні надавати пріоритет точкам доступу, які топологічно близькі (наприклад, у тій самій зоні). Це бета-поле і потребує ввімкнення функції ServiceTrafficDistribution.
ServiceStatus
ServiceStatus представляє поточний стан Service.
conditions ([]Condition)
Patch strategy: злиття за ключем type
Map: унікальні значення за ключем type зберігаються під час злиття
Поточний стан Service
Condition містить деталі для одного аспекту поточного стану цього API ресурсу.
conditions.lastTransitionTime (Time), обовʼязково
lastTransitionTime — це останній час, коли стан змінився з одного на інший. Це має бути тоді, коли змінився основний стан. Якщо це невідомо, то можна використати час, коли змінилося поле API.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string), обовʼязково
message — це повідомлення, зрозуміле людині, яке вказує на деталі про зміну стану. Це може бути порожній рядок.
conditions.reason (string), обовʼязково
reason містить програмний ідентифікатор, який вказує на причину останньоїзміни стану. Виробники специфічних типів станів можуть визначати очікувані значення та значення для цього поля, і чи вважаються значення гарантованим API. Значення має бути рядком у CamelCase. Це поле не може бути порожнім.
conditions.status (string), обовʼязково
статус стану, одне з True, False, Unknown.
conditions.type (string), обовʼязково
тип стану у CamelCase або у форматі foo.example.com/CamelCase.
conditions.observedGeneration (int64)
observedGeneration представляє .metadata.generation, на основі якої встановлено стан. Наприклад, якщо .metadata.generation наразі дорівнює 12, але .status.conditions[x].observedGeneration дорівнює 9, то стан не актуальний стосовно поточного стану екземпляра.
loadBalancer (LoadBalancerStatus)
LoadBalancer містить поточний статус балансувальника навантаження, якщо він присутній.
LoadBalancerStatus представляє статус балансувальника навантаження.
loadBalancer.ingress ([]LoadBalancerIngress)
Atomic: буде замінено під час злиття
Ingress — це список точок входу для балансувальника навантаження. Трафік, призначений для Service, має надходити до цих точок входу.
LoadBalancerIngress представляє стаnec точки входу балансувальника навантаження: трафік, призначений для Service, має надходити до точки входу.
loadBalancer.ingress.hostname (string)
Hostname встановлюється для точок входу балансувальника навантаження, які базуються на DNS (зазвичай балансувальники навантаження AWS)
loadBalancer.ingress.ip (string)
IP встановлюється для точок входу балансувальника навантаження, які базуються на IP (зазвичай балансувальники навантаження GCE або OpenStack)
loadBalancer.ingress.ipMode (string)
IPMode визначає, як поводиться IP балансувальника навантаження, і може бути вказаний лише тоді, коли вказане поле ip. Встановлення цього значення на "VIP" означає, що трафік доставляється до вузла з встановленим призначенням на IP та порт балансувальника навантаження. Встановлення цього значення на "Proxy" означає, що трафік доставляється до вузла або Pod з встановленим призначенням на IP вузла та порт вузла або на IP Podʼа та порт. Реалізації Service можуть використовувати цю інформацію для налаштування маршрутизації трафіку.
loadBalancer.ingress.ports ([]PortStatus)
Atomic: буде замінено під час злиття
Ports — це список портів Service. Якщо використовується, кожен порт, визначений у Service, повинен мати запис у цьому списку.
Набір всіх точок доступу є обʼєднанням (union) всіх субнаборів. Адреси розміщуються в субнабори відповідно до IP-адрес, які вони поділяють. Одна адреса з кількома портами, деякі з яких готові, а деякі ні (тому що вони належать різним контейнерам), буде відображатися в різних субнаборах для різних портів. Жодна адреса не зʼявиться одночасно в Addresses і NotReadyAddresses в одному субнаборі. Набори адрес і портів, які складають Service.
EndpointSubset – це група адрес з одним набором портів. Розширений набір точок доступу є декартовим добутком Addresses x Ports. Наприклад, задано:
IP-адреси, які пропонують відповідні порти, позначені як готові. Ці точки доступу повинні вважатися безпечними для використання балансувальниками навантаження та клієнтами.
EndpointAddress — це кортеж, що описує одну IP-адресу.
subsets.addresses.ip (string), обовʼязкове
IP цієї точки доступу. Не може бути loopback (127.0.0.0/8 або ::1), link-local (169.254.0.0/16 або fe80::/10), або link-local multicast (224.0.0.0/24 або ff02::/16).
subsets.addresses.hostname (string)
Імʼя хоста цієї точки доступу
subsets.addresses.nodeName (string)
Необовʼязково: Вузол, на якому знаходиться ця точка доступу. Це може бути використано для визначення точок доступу що є локальними для вузла.
IP-адреси, які пропонують відповідні порти, але наразі не позначені як готові, тому що вони ще не завершили запуск, нещодавно не пройшли перевірку готовності або нещодавно не пройшли перевірку на справність.
EndpointAddress — це кортеж, що описує одну IP-адресу.
IP цієї точки доступу. Не може бути loopback (127.0.0.0/8 або ::1), link-local (169.254.0.0/16 або fe80::/10), або link-local multicast (224.0.0.0/24 або ff02::/16).
subsets.notReadyAddresses.hostname (string)
Імʼя хоста цієї точки доступу
subsets.notReadyAddresses.nodeName (string)
Необовʼязково: Вузол, на якому знаходиться ця точка доступу. Це може бути використано для визначення точок доступу що є локальними для вузла.
Номери портів, доступні на відповідних IP-адресах.
EndpointPort — це кортеж, що описує один порт.
subsets.ports.port (int32), обовʼязкове
Номер порту точки доступу.
subsets.ports.protocol (string)
IP-протокол для цього порту. Повинен бути UDP, TCP або SCTP. За замовчуванням TCP.
subsets.ports.name (string)
Імʼя цього порту. Це повинно відповідати полю 'name' у відповідному ServicePort. Повинно бути DNS_LABEL. Необовʼязкове, лише якщо визначено один порт.
subsets.ports.appProtocol (string)
Протокол програми для цього порту. Використовується як підказка для реалізацій, щоб пропонувати багатший функціонал для протоколів, які вони розуміють. Це поле відповідає стандартному синтаксису міток Kubernetes. Дійсні значення:
EndpointSlice представляє підмножину точок доступу, які реалізують сервіс.
apiVersion: discovery.k8s.io/v1
import "k8s.io/api/discovery/v1"
EndpointSlice
EndpointSlice представляє підмножину точок доступу, які реалізують сервіс. Для даного сервісу може існувати декілька обʼєктів EndpointSlice, виділених мітками, які необхідно обʼєднати для отримання повного набору кінцевих точок.
addressType вказує тип адреси, яку містить цей EndpointSlice. Усі адреси в цьому сегменті повинні бути одного типу. Це поле є незмінним після створення. Наразі підтримуються такі типи адрес:
IPv4: Представляє адресу IPv4.
IPv6: Представляє адресу IPv6.
FQDN: Представляє повне доменне імʼя (Fully Qualified Domain Name).
endpoints ([]Endpoint), обовʼязково
Atomic: буде замінено під час злиття
endpoints — список унікальних точок доступу у цьому зрізі. Кожен зріз може містити максимум 1000 точок доступу.
Точка доступу являє собою окремий логічний “бекенд", що реалізує сервіс.
endpoints.addresses ([]string), обовʼязково
Set: унікальні значення будуть збережені під час злиття
адреси цієї точки доступу. Вміст цього поля інтерпретується згідно з відповідним полем EndpointSlice addressType. Споживачі повинні обробляти різні типи адрес у контексті власних можливостей. Це поле має містити принаймні одну адресу, але не більше 100. Вважається, що всі вони є взаємозамінними, і клієнти можуть використовувати лише перший елемент. Зверніться до: https://issue.k8s.io/106267
endpoints.conditions (EndpointConditions)
conditions містить інформацію про поточний стан точки доступу.
EndpointConditions представляє поточний стано точки доступу.
endpoints.conditions.ready (boolean)
ready вказує на те, що ця точка доступу готова приймати трафік, відповідно до системи, яка керує цією точкою доступу. Нульове значення вказує на невідомий стан. У більшості випадків споживачі повинні інтерпретувати цей невідомий стан як готовий. З міркувань сумісності значення ready ніколи не повинно бути "true" для точок доступу, що завершують роботу, за винятком випадків, коли звичайна поведінка готовності явно перевизначена, наприклад, коли пов'язана служба встановила прапорець publishNotReadyAddresses.
endpoints.conditions.serving (boolean)
serving ідентичний ready, за винятком того, що він встановлюється незалежно від завершального стану точок доступу. Ця умова має бути встановлена в true для точки доступу що має стан ready, яка завершує роботу. Якщо вона дорівнює нулю, споживачі повинні відкладати обслуговування до стану готовності.
endpoints.conditions.terminating (boolean)
terminating вказує на те, що ця точка доступу завершує роботу. Нульове значення вказує на невідомий стан. Споживачі повинні інтерпретувати цей невідомий стан як те, що точка доступу не завершує роботу.
endpoints.deprecatedTopology (map[string]string)
deprecatedTopology містить інформацію про топологію, яка є частиною v1beta1 API. Це поле є застарілим і буде вилучено, коли буде вилучено API v1beta1 (не раніше kubernetes v1.24). Хоча це поле може містити значення, воно не може бути записане через v1 API, і будь-які спроби запису до нього будуть проігноровані. Замість цього інформацію про топологію можна знайти у полях zone та nodeName.
endpoints.hints (EndpointHints)
hints містить інформацію, повʼязану з тим, як слід використовувати точку доступу.
EndpointHints надає підказки, що описують, як слід використовувати точку доступу.
endpoints.hints.forZones ([]ForZone)
Atomic: буде замінено під час злиття
forZones вказує на зону(и), до якої(их) повинна потрапити ця точка доступу, щоб увімкнути топологічно орієнтовану маршрутизацію.
ForZone надає інформацію про те, які зони повинні використовувати цю точку доступу.
ім'я хосту цієї точки доступу. Це поле може використовуватися споживачами точок доступу, щоб відрізняти їх одна від одної (наприклад, в іменах DNS). Кілька точок доступу, які використовують одне й те саме ім'я хосту, слід вважати взаємозамінними (наприклад, кілька значень A в DNS). Повинні бути малими літерами і проходити перевірку DNS-мітки (RFC 1123).
endpoints.nodeName (string)
nodeName — імʼя вузла, на якому розміщено цю точку доступу. Це може бути використано для визначення локальних для вузла точок доступу.
targetRef — посилання на обʼєкт Kubernetes, який представляє цю точку доступу.
endpoints.zone (string)
зона — назва зони, в якій існує ця точка доступу.
ports ([]EndpointPort)
Atomic: буде замінено під час злиття
ports визначає список мережевих портів, доступних для кожної точки доступу у цьому зрізі. Кожен порт повинен мати унікальну назву. Якщо параметр ports порожній, це означає, що немає визначених портів. Якщо порт визначено зі значенням nil port, це означає "all ports" (всі порти). Кожен зріз може містити максимум 100 портів.
EndpointPort представляє Port, який використовується EndpointSlice
ports.port (int32)
порт — це номер порту точки доступу. Якщо його не вказано, порти не обмежуються і повинні інтерпретуватися в контексті конкретного споживача.
ports.protocol (string)
протокол представляє IP-протокол для цього порту. Має бути UDP, TCP або SCTP. Стандартно використовується TCP.
ports.name (string)
name - імʼя цього порту. Усі порти у фрагменті EndpointSlice повинні мати унікальне імʼя. Якщо EndpointSlice є похідним від сервісу Kubernetes, це імʼя відповідає Service.ports[].name. Імʼя має бути або порожнім рядком, або пройти перевірку DNS_LABEL:
повинно мати довжину не більше 63 символів.
має складатися з малих літер та цифр або символу '-'.
повинно починатися і закінчуватися буквено-цифровим символом. Стандартно - порожній рядок.
ports.appProtocol (string)
Протокол застосунку для цього порту. Це використовується як підказка для реалізацій, щоб запропонувати багатший функціонал для протоколів, які вони розуміють. Це поле дотримується стандартного синтаксису міток Kubernetes. Допустимі значення:
Ingress — це набір правил, які дозволяють вхідним зʼєднанням досягати точок доступу, визначених бекендом.
apiVersion: networking.k8s.io/v1
import "k8s.io/api/networking/v1"
Ingress
Ingress — це набір правил, які дозволяють вхідним зʼєднанням досягати точок доступу, визначених бекендом. Ingress можна налаштувати так, щоб надавати Service зовнішні адреси, балансувати трафік, закінчувати SSL, пропонувати віртуальний хостинг на основі імен тощо.
defaultBackend — це бекенд, який повинен обробляти запити, що не відповідають жодному правилу. Якщо правила не вказані, необхідно вказати DefaultBackend. Якщо DefaultBackend не встановлено, обробка запитів, що не відповідають жодному з правил, буде відбуватись на розсуд контролера Ingress.
ingressClassName (string)
ingressClassName — це імʼя ресурсу IngressClass у кластері. Реалізації контролера Ingress використовують це поле для визначення, чи повинні вони обслуговувати цей ресурс Ingress, через транзитивний звʼязок (controller -> IngressClass -> Ingress resource). Хоча анотація kubernetes.io/ingress.class (проста константна назва) ніколи не була формально визначена, вона була широко підтримана контролерами Ingress для створення прямого звʼязку між контролером Ingress і ресурсами Ingress. Новостворені ресурси Ingress повинні надавати перевагу використанню цього поля. Однак, попри те, що анотація офіційно застаріла, з міркувань зворотної сумісності контролери Ingress все ще повинні враховувати цю анотацію, якщо вона присутня.
rules ([]IngressRule)
Atomic: буде замінено під час злиття
rules — це список правил для хостів, що використовуються для налаштування Ingress. Якщо не вказано або жодне правило не має збігів, весь трафік надсилається на стандартний бекенд.
IngressRule представляє правила, що зіставляють шляхи для зазначеного хосту з відповідними бекенд-сервісами. Вхідні запити спочатку оцінюються на відповідність хосту, а потім перенаправляються до бекенда, асоційованого з відповідним IngressRuleValue.
rules.host (string)
host — це повне доменне імʼя мережевого хосту, як визначено в RFC 3986. Зверніть увагу на такі відхилення від частини "host" в URI, як визначено в RFC 3986:
IP-адреси не допускаються. Зараз IngressRuleValue може застосовуватися лише до IP-адреси в Spec батьківського Ingress.
Двокрапка (:) як роздільник не використовується, оскільки порти не допускаються. Зараз порт Ingress неявно визначений як :80 для http і :443 для https.
Обидва ці моменти можуть змінитися в майбутньому. Вхідні запити зіставляються з хостом перед IngressRuleValue. Якщо хост не вказано, Ingress маршрутизує весь трафік на основі зазначеного IngressRuleValue.
host може бути "точним" (precise), доменним імʼям без завершальної крапки мережевого хосту (наприклад, "foo.bar.com"), або "wildcard" (маска), що є доменним імʼям з префіксом у вигляді одного символу маски (наприклад, "*.foo.com"). Символ маски '*' повинен зʼявлятися сам по собі як перша мітка DNS і відповідає лише одній мітці. Ви не можете мати мітку маски саму по собі (наприклад, Host == "*"). Запити будуть зіставлятися з полем Host наступним чином:
Якщо host є точним, запит відповідає цьому правилу, якщо заголовок http host дорівнює Host.
Якщо host є маскою, то запит відповідає цьому правилу, якщо заголовок http host дорівнює суфіксу (видаляючи першу мітку) правила маски.
rules.http (HTTPIngressRuleValue)
HTTPIngressRuleValue — це список http-селекторів, що вказують на бекенди. У прикладі: http://<host>/<path>?<searchpart> -> backend, де частини url відповідають RFC 3986, цей ресурс буде використовуватися для зіставлення з усім після останнього '/' і перед першим '?' або '#'.
rules.http.paths ([]HTTPIngressPath), обовʼязкове
Atomic: буде замінено під час злиття
paths — це набір шляхів, що зіставляють запити з бекендами.
HTTPIngressPath асоціює шлях з бекендом. Вхідні URL-адреси, що відповідають шляху, перенаправляються до бекенду.
backend визначає повʼязану точку доступу сервісу, до якого буде перенаправлено трафік.
rules.http.paths.pathType (string), обовʼязкове
pathType визначає інтерпретацію зіставлення шляху. PathType може мати одне з таких значень:
Exact: Точно відповідає URL-шляху.
Prefix: Збіг базується на префіксі шляху URL, розділеному символом '/'. Збіг перевіряється поелементно за елементами шляху. Елемент шляху — це список міток у шляху, розділених роздільником '/'. Запит вважається відповідністю для шляху p, якщо кожен елемент p є попереднім елементом відповідного елемента в кінцевому шляху запиту. Якщо це не так, то це не збіг (наприклад, /foo/bar має збіг з /foo/bar/baz, але не має з /foo/barbaz).
ImplementationSpecific: Інтерпретація зіставлення шляху визначається IngressClass. Реалізації можуть трактувати це як окремий PathType або так само як і типи шляхів Prefix або Exact.
Реалізації повинні підтримувати всі типи шляхів.
rules.http.paths.path (string)
path зіставляється зі шляхом вхідного запиту. Зараз він може містити символи, не дозволені в традиційній частині "path" URL, як визначено в RFC 3986. Шляхи повинні починатися з '/' і повинні бути присутніми при використанні PathType зі значенням "Exact" або "Prefix".
tls ([]IngressTLS)
Atomic: буде замінено під час злиття
tls представляє конфігурацію TLS. Зараз Ingress підтримує лише один TLS-порт, 443. Якщо декілька елементів цього списку вказують різні хости, вони будуть мультиплексовані на одному і тому ж порту відповідно до імені хосту, зазначеного через розширення SNI TLS, якщо контролер Ingress, що виконує Ingress, підтримує SNI.
IngressTLS описує транспортний рівень безпеки, повʼязаний з ingress.
tls.hosts ([]string)
Atomic: буде замінено під час злиття
hosts — це список хостів, включених у сертифікат TLS. Значення в цьому списку повинні відповідати іменам, використаним у tlsSecret. Типово відповідає стандартним налаштуванням хосту для контролера балансування навантаження, що виконує цей Ingress, якщо залишено незазначеним.
tls.secretName (string)
secretName — це імʼя Secret, який використовується для завершення TLS-трафіку на порту 443. Поле залишено необовʼязковим, щоб дозволити маршрутизацію TLS на основі лише імені хосту SNI. Якщо хост SNI у слухачі конфліктує з полем "Host" у заголовку, використаному IngressRule, хост SNI використовується для завершення, а значення поля "Host" використовується для маршрутизації.
IngressBackend
IngressBackend описує всі точки доступу для вказаного Service і порту.
resource — є ObjectRef на інший ресурс Kubernetes у просторі імен обʼєкта Ingress. Якщо вказано resource, не можна вказувати service.Name та service.Port. Це взаємозаперечне налаштування з "Service".
service (IngressServiceBackend)
service — посилається на Service як на бекенд. Це взаємозаперечне налаштування з "Resource".
IngressServiceBackend посилається на Kubernetes Service як на Backend.
service.name (string), обовʼязкове
name — це посилання на сервіс. Сервіс повинен існувати в тому ж просторі імен, що й обʼєкт Ingress.
service.port (ServiceBackendPort)
port вказаного сервіс. Для IngressServiceBackend потрібно вказати імʼя порту або номер порту.
ServiceBackendPort — це порт сервісу, на який посилаються.
service.port.name (string)
name — це імʼя порту на сервісі. Це взаємозаперечне налаштування з "Number".
service.port.number (int32)
number — це числовий номер порту (наприклад, 80) на сервісі. Це взаємозаперечне налаштування з "Name".
IngressStatus
IngressStatus описує поточний стан Ingress.
loadBalancer (IngressLoadBalancerStatus)
loadBalancer містить поточний статус балансувальника навантаження.
IngressLoadBalancerStatus представляє статус балансувальника навантаження.
IngressClass представляє клас Ingress, на який посилається Ingress Spec.
apiVersion: networking.k8s.io/v1
import "k8s.io/api/networking/v1"
IngressClass
IngressClass представляє клас Ingress, на який посилається Ingress Spec. Анотацію ingressclass.kubernetes.io/is-default-class можна використовувати, щоб вказати, що IngressClass слід вважати стандартним класом. Коли для одного ресурсу IngressClass ця анотація має значення true, новим ресурсам Ingress без вказаного класу буде присвоєно цей клас.
IngressClassSpec надає інформацію про клас Ingress.
controller (string)
controller вказує на імʼя контролера, який має обробляти цей клас. Це дозволяє використовувати різні "різновиди", керовані тим самим контролером. Наприклад, для одного імплементованого контролера можуть існувати різні параметри. Це повинно бути вказане як шлях з префіксом домену, не довше ніж 250 символів, наприклад, "acme.io/ingress-controller". Це поле є незмінним.
parameters (IngressClassParametersReference)
parameters це посилання на спеціалізований ресурс, що містить додаткову конфігурацію для контролера. Це необовʼязково, якщо контролер не вимагає додаткових параметрів.
IngressClassParametersReference ідентифікує обʼєкт API. Це може бути використано для вказівки на обʼєкт, що належить кластеру або області простору імен.
parameters.kind (string), обовʼязково
kind це тип ресурсу, на який вказується посилання.
parameters.name (string), обовʼязково
name це імʼя ресурсу, на який вказується посилання.
parameters.apiGroup (string)
apiGroup це група для ресурсу, на який вказується посилання. Якщо apiGroup не вказано, вказаний Kind повинен бути в основній групі API. Для будь-яких інших типів сторонніх ресурсів apiGroup є обовʼязковим.
parameters.namespace (string)
namespace це простір імен для ресурсу, на який вказується посилання. Це поле обовʼязкове, коли scope встановлено на "Namespace", і його не слід встановлювати, коли scope встановлено у "Cluster".
parameters.scope (string)
scope вказує на те, чи відноситься ресурс до кластера або простору імен. Цей параметр може мати значення "Cluster" (типово) або "Namespace".
IngressClassSpec
IngressClassSpec надає інформацію про клас Ingress.
controller (string)
controller вказує на імʼя контролера, який повинен обробляти цей клас. Це дозволяє використовувати різні "різновиди", які контролюються тим самим контролером. Наприклад, у вас можуть бути різні параметри для одного й того ж імплементаційного контролера. Це повинно бути вказано як шлях з префіксом домену довжиною не більше 250 символів, наприклад, "acme.io/ingress-controller". Це поле є незмінним.
parameters (IngressClassParametersReference)
parameters це посилання на власний ресурс, що містить додаткову конфігурацію для контролера. Це необовʼязково, якщо контролер не потребує додаткових параметрів.
IngressClassParametersReference ідентифікує обʼєкт API. Це може бути використано для {#list-list-or-watch-objects-of-kind-ingressclass}вказівки на ресурс, обмежений кластером або простором імен.
{#http-request-1}
parameters.kind (string), обовʼязково
kind це тип ресурсу, на який вказується посилання.
{#parameters-1}
parameters.name (string), обовʼязково
name це імʼя ресурсу, на який вказується посилання.
parameters.apiGroup (string)
apiGroup це група для ресурсу, на який вказується посилання. Якщо apiGroup не вказано, вказаний Kind повинен належати до основної групи API. Для будь-яких інших типів сторонніх ресурсів apiGroup є обовʼязковим.
parameters.namespace (string)
namespace це простір імен для ресурсу, на який вказується посилання. Це поле є обовʼязковим, коли scope встановлено на "Namespace", і його не слід встановлювати, коли scope встановлено на "Cluster".
parameters.scope (string)
scope вказує, чи це посилання на ресурс, обмежений кластером або простором імен. Це може бути встановлено на "Cluster" (стандартно) або "Namespace".
BinaryData містить бінарні дані. Кожен ключ повинен складатися з алфавітно-цифрових символів, '-', '_' або '.'. BinaryData може містити байтові послідовності, які не належать до діапазону UTF-8. Ключі, що зберігаються у BinaryData, не повинні збігатися з ключами у полі Data, це перевіряється під час валідації. Використання цього поля вимагатиме apiserver та kubelet версії 1.10+.
data (map[string]string)
Data містить конфігураційні дані. Кожен ключ повинен складатися з алфавітно-цифрових символів, '-', '_' або '.'. Значення з байтовими послідовностями, що не належать до діапазону UTF-8, повинні використовувати поле BinaryData. Ключі, що зберігаються у Data, не повинні збігатися з ключами у полі BinaryData, це перевіряється під час валідації.
immutable (boolean)
Immutable, якщо встановлено в true, гарантує, що дані, збережені у ConfigMap, не можуть бути оновлені (можна змінювати лише метадані обʼєкта). Якщо не встановлено в true, поле можна змінити у будь-який час. Стандартне значення — nil.
ConfigMapList
ConfigMapList — це ресурс, що містить список обʼєктів ConfigMap.
Data містить секретні дані. Кожен ключ повинен складатися з алфавітно-цифрових символів, '-', '_' або '.'. Сериалізована форма секретних даних є рядком, закодованим у base64, що представляє довільне (можливо, не рядкове) значення даних. Описано в https://tools.ietf.org/html/rfc4648#section-4.
immutable (boolean)
Immutable, якщо встановлено в true, гарантує, що дані, збережені в Secret, не можуть бути оновлені (можна змінювати лише метадані обʼєкта). Якщо не встановлено в true, поле можна змінити у будь-який час. Стандартне значення — nil.
stringData (map[string]string)
stringData дозволяє вказувати небінарні секретні дані у вигляді рядків. Це поле надається як поле вводу лише для запису для зручності. Усі ключі та значення обʼєднуються в поле data при записі, перезаписуючи будь-які наявні значення. Поле stringData ніколи не виводиться при читанні з API.
CSIDriver збирає інформацію про драйвер тома Container Storage Interface (CSI), розгорнутий в кластері.
apiVersion: storage.k8s.io/v1
import "k8s.io/api/storage/v1"
CSIDriver
CSIDriver збирає інформацію про драйвер тому Container Storage Interface (CSI), розгорнутий в кластері. Контролер приєднання та відʼєднання Kubernetes використовує цей обʼєкт для визначення необхідності приєднання. Kubelet використовує цей обʼєкт, щоб визначити, чи потрібно передавати інформацію про контейнер при монтуванні. Обʼєкти CSIDriver не має простору імен.
Стандартні метадані обʼєкта. metadata.Name вказує назву драйвера CSI, до якого відноситься цей обʼєкт; вона МАЄ бути такою ж, як імʼя, яке повертає виклик CSI GetPluginName() для цього драйвера. Назва драйвера повинна бути не більше 63 символів, починатися і закінчуватися алфавітно-цифровим символом ([a-z0-9A-Z]), з тире (-), крапками (.) та алфавітно-цифровими символами між ними. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
attachобовʼязково вказує, що цей драйвер томів CSI вимагає операцію приєднання (оскільки він реалізує метод CSI ControllerPublishVolume()), і що контролер приєднання та відʼєднання Kubernetes повинен викликати інтерфейс приєднання томів, який перевіряє статус VolumeAttachment і чекає, поки том буде приєднано, перед тим як перейти до монтування. Зовнішній attacher CSI координується з драйвером томів CSI та оновлює статус VolumeAttachment після завершення операції приєднання. Якщо увімкнено функцію CSIDriverRegistry і значення встановлено на false, операція приєднання буде пропущена. В іншому випадку операція приєднання буде викликана.
Це поле незмінне.
fsGroupPolicy (string)
fsGroupPolicy визначає, чи підтримує базовий том зміну власності та дозволів на том перед монтуванням. Додаткову інформацію дивіться у конкретних значеннях FSGroupPolicy.
Це поле було незмінним в Kubernetes < 1.29, тепер воно є змінним.
Стандартне значення ReadWriteOnceWithFSType, що дозволяє перевірити кожен том, щоб визначити, чи повинен Kubernetes змінювати власність і дозволи на том. Зі стандартною політикою визначена fsGroup буде застосована лише, якщо визначено fstype і режим доступу тому містить ReadWriteOnce.
podInfoOnMount (boolean)
podInfoOnMount вказує, що цей драйвер томів CSI вимагає додаткову інформацію про Pod (наприклад, podName, podUID тощо) під час операцій монтування, якщо встановлено true. Якщо встановлено false, інформація про Pod не буде передаватися під час монтування. Стандартне значення — false.
Драйвер CSI визначає podInfoOnMount як частину розгортання драйвера. Якщо true, Kubelet передаватиме інформацію про Pod як VolumeContext у викликах CSI NodePublishVolume(). Драйвер CSI відповідає за розбір та перевірку інформації, переданої як VolumeContext.
Наступний VolumeContext буде передано, якщо podInfoOnMount встановлено в true. Цей список може розширюватися, але буде використовуватися префікс. "csi.storage.k8s.io/pod.name": pod.Name "csi.storage.k8s.io/pod.namespace": pod.Namespace "csi.storage.k8s.io/pod.uid": string(pod.UID) "csi.storage.k8s.io/ephemeral": "true", якщо том є ефемерним інлайн-томом, визначеним CSIVolumeSource, в іншому випадку "false"
"csi.storage.k8s.io/ephemeral" — це нова функція в Kubernetes 1.16. Вона потрібна лише для драйверів, які підтримують як "Persistent", так і "Ephemeral" VolumeLifecycleMode. Інші драйвери можуть залишити інформацію про Podʼи вимкненою та/або ігнорувати це поле. Оскільки Kubernetes 1.15 не підтримує це поле, драйвери можуть підтримувати лише один режим під час розгортання на такому кластері, і Deployment визначає, який режим це буде, наприклад, через параметр командного рядка драйвера.
Це поле було незмінним в Kubernetes < 1.29, тепер воно є змінним.
requiresRepublish (boolean)
requiresRepublish вказує, що драйвер CSI хоче, щоб NodePublishVolume періодично викликали, щоб відобразити будь-які можливі зміни у змонтованому томі. Стандартне значення цього поля — false.
Примітка: після успішного початкового виклику NodePublishVolume наступні виклики NodePublishVolume повинні лише оновлювати вміст тому. Нові точки монтування не будуть видимі для запущеного контейнера.
seLinuxMount (boolean)
seLinuxMount визначає, чи підтримує драйвер CSI опцію монтування "-o context".
Коли "true", драйвер CSI повинен забезпечити, щоб усі томи, надані цим драйвером CSI, могли монтуватися окремо з різними параметрами -o context. Це типово для сховищ, які надають томи як файлові системи на блокових пристроях або як незалежні загальні томи. Kubernetes викликатиме NodeStage / NodePublish з параметром монтування "-o context=xyz" при монтуванні тому ReadWriteOncePod, який використовується в Pod, що явно встановив контекст SELinux. У майбутньому це може бути розширено до інших режимів доступу до томів. У будь-якому випадку Kubernetes забезпечить, щоб том монтувався лише з одним контекстом SELinux.
Коли "false", Kubernetes не передаватиме жодних спеціальних параметрів монтування SELinux драйверу. Це типово для томів, які представляють підтеки більшої спільної файлової системи.
Стандартне значення — "false".
storageCapacity (boolean)
storageCapacity вказує, що драйвер томів CSI хоче, щоб планування Podʼів враховувало обсяг сховища, який буде повідомлено під час розгортання драйвера шляхом створення обʼєктів CSIStorageCapacity з інформацією про місткість, якщо встановлено true.
Перевірку можна ввімкнути відразу під час розгортання драйвера. У цьому випадку створення нових томів з відкладеним привʼязуванням зупиниться, доки Deployment драйвера не опублікує деякий відповідний обʼєкт CSIStorageCapacity.
Альтернативно, драйвер можна розгорнути з невстановленим або false полем, і його можна змінити пізніше, коли буде опубліковано інформацію про місткість сховища.
Це поле було незмінним у Kubernetes <= 1.22 і тепер воно є змінним.
tokenRequests ([]TokenRequest)
Atomic: буде замінено під час злиття
tokenRequests вказує, що драйвер CSI потребує токенів службових облікових записів Podʼів, для яких він монтує том, для необхідної автентифікації. Kubelet передасть токени у VolumeContext у викликах CSI NodePublishVolume. Драйвер CSI повинен розбирати та перевіряти наступний VolumeContext:
Примітка: Аудиторія в кожному запиті токена повинна бути різною, і не більше одного токена має бути пустим рядком. Для отримання нового токена після закінчення терміну дії можна використовувати RequiresRepublish для періодичного виклику NodePublishVolume.
TokenRequest містить параметри токена службового облікового запису.
tokenRequests.audience (string), обовʼязково
audience — це призначена аудиторія токена в "TokenRequestSpec". Стандартно це аудиторії kube apiserver.
tokenRequests.expirationSeconds (int64)
expirationSeconds — це тривалість дії токена в "TokenRequestSpec". Має таке ж стандартне значення, як "ExpirationSeconds" у "TokenRequestSpec".
volumeLifecycleModes ([]string)
Set: унікальні значення будуть збережені під час злиття
volumeLifecycleModes визначає, які типи томів підтримує цей драйвер томів CSI. Стандартно, якщо список порожній, це "Persistent", що визначено специфікацією CSI та реалізовано в Kubernetes через звичайний механізм PV/PVC.
Інший режим — "Ephemeral". У цьому режимі томи визначаються інлайн у специфікації Podʼа за допомогою CSIVolumeSource, і їх життєвий цикл повʼязаний з життєвим циклом цього Podʼа. Драйвер повинен бути обізнаний про це, оскільки він отримає лише виклик NodePublishVolume для такого тому.
CSINode містить інформацію про всі драйвери CSI, встановлені на вузлі.
apiVersion: storage.k8s.io/v1
import "k8s.io/api/storage/v1"
CSINode
CSINode містить інформацію про всі драйвери CSI, встановлені на вузлі. Драйверам CSI не потрібно створювати обʼєкт CSINode безпосередньо. Якщо вони використовують sidecar контейнер node-driver-registrar, kubelet автоматично заповнить обʼєкт CSINode для драйвера CSI під час реєстрації втулка kubelet. CSINode має ту ж назву, що і вузол. Якщо обʼєкт відсутній, це означає, що або на вузлі немає доступних драйверів CSI, або версія Kubelet є достатньо низькою, щоб не створювати цей обʼєкт. CSINode має OwnerReference, яке вказує на відповідний обʼєкт вузла.
CSINodeSpec містить інформацію про специфікації всіх драйверів CSI, встановлених на вузлі.
drivers ([]CSINodeDriver), обовʼязково
Patch strategy: злиття за ключем name
Map: унікальні значення ключа name будуть збережені під час злиття
drivers — це список інформації про всі драйвери CSI, які існують на вузлі. Якщо всі драйвери в списку видалено, цей список може бути порожнім.
CSINodeDriver містить інформацію про специфікацію одного драйвера CSI, встановленого на вузлі
drivers.name (string), обовʼязково
name представляє імʼя драйвера CSI, до якого відноситься цей обʼєкт. Це МАЄ бути те саме імʼя, яке повертає виклик CSI GetPluginName() для цього драйвера.
drivers.nodeID (string), обовʼязково
nodeID вузла з погляду драйвера. Це поле дозволяє Kubernetes взаємодіяти з системами зберігання, які не використовують ту ж номенклатуру для вузлів. Наприклад, Kubernetes може називати вузол "node1", але система зберігання може називати той самий вузол "nodeA". Коли Kubernetes видає команду системі зберігання для приєднання тому до конкретного вузла, він може використовувати це поле для посилання на імʼя вузла за допомогою ID, який зрозуміє система зберігання, наприклад "nodeA" замість "node1". Це поле обовʼязкове.
drivers.allocatable (VolumeNodeResources)
allocatable представляє ресурс тому вузла, доступний для планування. Це поле є бета-версією.
VolumeNodeResources — це набір обмежень ресурсів для планування томів.
drivers.allocatable.count (int32)
count вказує максимальну кількість унікальних томів, що керуються драйвером CSI, які можна використовувати на вузлі. Том, який одночасно приєднаний і змонтований на вузлі, вважається використаним один раз, а не двічі. Те саме правило застосовується до унікального тому, який розділяється між кількома Podʼами на одному вузлі. Якщо це поле не вказано, то кількість підтримуваних томів на цьому вузлі не обмежена.
drivers.topologyKeys ([]string)
Atomic: буде замінено під час злиття
topologyKeys — це список ключів, підтримуваних драйвером. Коли драйвер ініціалізується в кластері, він надає набір ключів топології, які він розуміє (наприклад, "company.com/zone", "company.com/region"). Коли драйвер ініціалізується на вузлі, він надає ті самі ключі топології разом зі значеннями. Kubelet відображатиме ці ключі топології як мітки на своєму власному обʼєкті вузла. Коли Kubernetes виконує планування з урахуванням топології, він може використовувати цей список для визначення, які мітки він повинен отримати з обʼєкта вузла та передати назад драйверу. Для різних вузлів можуть використовуватися різні ключі топології. Це поле може бути порожнім, якщо драйвер не підтримує топологію.
CSIStorageCapacity зберігає результат одного виклику CSI GetCapacity.
apiVersion: storage.k8s.io/v1
import "k8s.io/api/storage/v1"
CSIStorageCapacity
CSIStorageCapacity зберігає результат одного виклику CSI GetCapacity. Для заданого StorageClass це описує доступну місткість у певному сегменті топології. Це можна використовувати під час розгляду місця для створення нових PersistentVolumes.
Наприклад, це може виражати такі речі:
StorageClass "standard" має "1234 GiB" доступних у "topology.kubernetes.io/zone=us-east1"
StorageClass "localssd" має "10 GiB" доступних у "kubernetes.io/hostname=knode-abc123"
Наступні три випадки означають, що місткість недоступна для певної комбінації:
не існує обʼєкта з відповідною топологією та імʼям класу зберігання
такий обʼєкт існує, але місткість не задана
такий обʼєкт існує, але місткість дорівнює нулю
Виробник цих обʼєктів може вирішити, який підхід є більш відповідним.
Вони споживаються планувальником kube-scheduler, коли драйвер CSI вибирає планування з урахуванням місткості за допомогою CSIDriverSpec.StorageCapacity. Планувальник порівнює MaximumVolumeSize із запитаним розміром очікуваних томів, щоб відфільтрувати невідповідні вузли. Якщо MaximumVolumeSize не задано, він повертається до порівняння з менш точною Capacity. Якщо і це не задано, планувальник припускає, що місткість недостатня, і пробує інший вузол.
Стандартні метадані обʼєкта. Імʼя не має особливого значення. Воно повинно бути піддоменом DNS (допускаються точки, 253 символи). Щоб уникнути конфліктів з іншими драйверами CSI у кластері, рекомендується використовувати csisc-<uuid>, згенероване імʼя або імʼя у зворотному порядку домену, яке закінчується унікальним імʼям драйвера CSI.
storageClassName представляє імʼя StorageClass, до якого відноситься звітна місткість. Воно повинно відповідати тим самим вимогам, що й імʼя обʼєкта StorageClass (не порожнє, піддомен DNS). Якщо цей обʼєкт більше не існує, обʼєкт CSIStorageCapacity застарів і повинен бути видалений його творцем. Це поле незмінне.
capacity — це значення, яке повідомляє драйвер CSI у своєму GetCapacityResponse для GetCapacityRequest з топологією і параметрами, що відповідають попереднім полям.
Семантика наразі (CSI spec 1.2) визначена як: доступна місткість у байтах сховища, яка може бути використана для створення томів. Якщо не задано, ця інформація наразі недоступна.
maximumVolumeSize — це значення, яке повідомляє драйвер CSI у своєму GetCapacityResponse для GetCapacityRequest з топологією і параметрами, що відповідають попереднім полям.
Це визначено починаючи з CSI spec 1.4.0 як найбільший розмір, який може бути використаний у полі CreateVolumeRequest.capacity_range.required_bytes для створення тому з тими самими параметрами, що й у GetCapacityRequest. Відповідне значення в API Kubernetes — це ResourceRequirements.Requests у запиті на том.
nodeTopology визначає, які вузли мають доступ до сховища, для якого була надана місткість. Якщо не задано, сховище недоступне з жодного вузла у кластері. Якщо порожнє, сховище доступне з усіх вузлів. Це поле незмінне.
CSIStorageCapacityList
CSIStorageCapacityList — це колекція обʼєктів CSIStorageCapacity.
selector — це запит мітки для томів, які слід враховувати при звʼязуванні.
resources (VolumeResourceRequirements)
resources представляє мінімальні ресурси, якими повинен володіти том. Якщо включено можливість RecoverVolumeExpansionFailure, користувачам дозволяється вказувати вимоги до ресурсів, які нижчі за попереднє значення, але все ще мають бути вищими, ніж місткість, вказана в полі статусу вимоги. Додаткова інформація: https://kubernetes.io/docs/concepts/storage/persistent-volumes#resources
VolumeResourceRequirements описує вимоги до ресурсів збереження для томів.
Requests описує мінімальну кількість обчислювальних ресурсів, що потрібна. Якщо Requests відсутній для контейнера, він стандартно встановлюється як Limits, якщо це явно вказано, інакше — як значення, визначене реалізацією. Запити не можуть перевищувати Limits. Додаткова інформація: https://kubernetes.io/docs/concepts/configuration/manage-resources-containers/
volumeName (string)
volumeName — це посилання на звʼязування з постійним томом, що підтримує цей запит.
Якщо провайдер або зовнішній контролер може підтримувати вказане джерело даних, він створить новий том на основі вмісту вказаного джерела даних. Коли вмикається функціональна властивість AnyVolumeDataSource, вміст dataSource буде скопійовано до dataSourceRef, а вміст dataSourceRef буде скопійовано до dataSource, коли не вказано dataSourceRef.namespace. Якщо вказано простір імен, то dataSourceRef не буде скопійовано до dataSource.
dataSourceRef (TypedObjectReference)
dataSourceRef вказує на обʼєкт, з якого потрібно заповнити том даними, якщо потрібний непорожній том. Це може бути будь-який обʼєкт з непорожньої API-групи (не базовий обʼєкт) або обʼєкт PersistentVolumeClaim. Коли вказано це поле, звʼязування тому вдасться тільки в тому випадку, якщо тип вказаного обʼєкта відповідає якомусь встановленому наповнювачу тому або динамічному провайдеру. Це поле замінить функціональність поля dataSource і як таке, якщо обидва поля непорожні, вони повинні мати однакове значення. Для забезпечення зворотної сумісності, коли простір імен не вказано в dataSourceRef, обидва поля (dataSource та dataSourceRef) будуть автоматично встановлені в одне значення, якщо одне з них порожнє, а інше — непорожнє. Коли простір імен вказаний в dataSourceRef, dataSource не встановлюється в те ж саме значення і повинно бути порожнім. Є три важливі відмінності між dataSource та dataSourceRef:
Поки dataSource дозволяє лише два конкретних типи обʼєктів, dataSourceRef дозволяє будь-які не базові обʼєкти, а також обʼєкти PersistentVolumeClaim.
Поки dataSource ігнорує заборонені значення (вилучаючи їх), dataSourceRef зберігає всі значення і генерує помилку, якщо вказано заборонене значення.
Поки dataSource дозволяє лише локальні обʼєкти, dataSourceRef дозволяє обʼєкти в будь-яких просторах імен.
(Бета) Використання цього поля вимагає ввімкненої властивості AnyVolumeDataSource. (Альфа) Використання поля namespace у dataSourceRef вимагає ввімкненої властивості CrossNamespaceVolumeDataSource.
**
dataSourceRef.kind (string), обовʼязково
Kind — це тип ресурсу, на який вказується
dataSourceRef.name (string), обовʼязково
Name — це назва ресурсу, на який вказується
dataSourceRef.apiGroup (string)
APIGroup — це група для ресурсу, на який вказується. Якщо APIGroup не вказано, вказаний Kind повинен бути в базовій групі API. Для будь-яких інших сторонніх типів APIGroup обовʼязковий.
dataSourceRef.namespace (string)
Namespace — це простір імен ресурсу, на який вказується. Зверніть увагу, що при вказанні простору імен для призначення namespace необхідний обʼєкт gateway.networking.k8s.io/ReferenceGrant в просторі імен-джерелі, щоб дозволити власнику цього простору імен приймати посилання. Див. документацію ReferenceGrant для отримання деталей. (Альфа) Це поле вимагає ввімкненої властивості CrossNamespaceVolumeDataSource.
volumeAttributesClassName (string)
Поле volumeAttributesClassName може бути використане для встановлення VolumeAttributesClass, який буде використано заявкою. Якщо вказано, драйвер CSI створить або оновить том із атрибутами, визначеними у відповідному VolumeAttributesClass. Це поле має інше призначення, ніж storageClassName, і може бути змінене після створення заявки. Порожнє значення означає, що жоден VolumeAttributesClass не буде застосований до заявки, однак не можна скинути це поле на порожне значпння після його встановлення. Якщо не вказано і PersistentVolumeClaim не привʼязано до конкретного PersistentVolume, то контролер томів встановить стандартний VolumeAttributesClass, якщо він існує. Якщо ресурс, на який посилається volumeAttributesClass, не існує, PersistentVolumeClaim отримає стан Pending ("Очікування"), що буде відображено в полі modifyVolumeStatus, доки такий ресурс не зʼявиться. Докладніше: https://kubernetes.io/docs/concepts/storage/volume-attributes-classes/. (Beta) Використання цього поля вимагає ввімкнення функціональної можливості VolumeAttributesClass (стандартно вимкнено).
PersistentVolumeClaimStatus
PersistentVolumeClaimStatus — це поточний статус запиту на постійний том.
allocatedResourceStatuses зберігає статус ресурсу, який змінюється для даного PVC. Імена ключів відповідають стандартному синтаксису міток Kubernetes. Допустимі значення:
Ключі без префіксу:
storage — місткість тому.
Власні ресурси повинні використовувати визначені реалізацією префіксовані імена, наприклад, "example.com/my-custom-resource".
Крім вищезазначених значень — ключі без префіксу або з префіксом kubernetes.io вважаються зарезервованими й, отже, не можуть використовуватися.
ClaimResourceStatus може бути в одному з наступних станів:
ControllerResizeInProgress: Стан встановлюється, коли контролер зміни розміру починає змінювати розмір тому в панелі управління.
ControllerResizeFailed: Стан встановлюється, коли зміна розміру не вдалася у контролері зміни розміру з термінальною помилкою.
NodeResizePending: Стан встановлюється, коли контролер зміни розміру завершив зміну розміру тому, але подальша зміна розміру тому необхідна на вузлі.
NodeResizeInProgress: Стан встановлюється, коли kubelet починає змінювати розмір тому.
NodeResizeFailed: Стан встановлюється, коли зміна розміру не вдалася у kubelet з термінальною помилкою. Тимчасові помилки не встановлюють NodeResizeFailed.
Наприклад, якщо PVC розширюється для більшої місткості, це поле може бути в одному з наступних станів:
Якщо це поле не встановлено, це означає, що операція зміни розміру для даного PVC не виконується.
Контролер, що отримує оновлення PVC з невідомим раніше resourceName або ClaimResourceStatus, повинен ігнорувати оновлення з метою, для якої він був створений. Наприклад, контролер, який відповідає лише за зміну розміру місткості тому, повинен ігнорувати оновлення PVC, які змінюють інші дійсні ресурси, повʼязані з PVC.
Це поле альфа-версії та вимагає ввімкнення властивості RecoverVolumeExpansionFailure.
allocatedResources відстежує ресурси, виділені для PVC, включаючи його місткість. Імена ключів відповідають стандартному синтаксису міток Kubernetes. Допустимі значення:
Ключі без префіксу:
storage - місткість тому.
Власні ресурси повинні використовувати визначені реалізацією префіксовані імена, наприклад, "example.com/my-custom-resource"
Крім вищезазначених значень — ключі без префіксу або з префіксом kubernetes.io вважаються зарезервованими й, отже, не можуть використовуватися.
Місткість, зазначена тут, може бути більшою за фактичну місткість, коли запит на розширення тому виконується. Для квоти на зберігання використовується більше значення з allocatedResources і PVC.spec.resources. Якщо allocatedResources не встановлено, для розрахунку квоти використовується лише PVC.spec.resources. Якщо запит на розширення місткості тому знижено, allocatedResources знижується лише в тому випадку, якщо операції розширення не виконуються і якщо фактична місткість тому дорівнює або нижча за запитану місткість.
Контролер, що отримує оновлення PVC з невідомим раніше resourceName, повинен ігнорувати оновлення з метою, для якої він був створений. Наприклад, контролер, який відповідає лише за зміну розміру місткості тому, повинен ігнорувати оновлення PVC, які змінюють інші дійсні ресурси, повʼязані з PVC.
Це поле альфа-версії та вимагає ввімкнення властивості RecoverVolumeExpansionFailure.
capacity представляє фактичні ресурси базового тому.
conditions ([]PersistentVolumeClaimCondition)
Patch strategy: злиття за ключем type
conditions — це поточний стан запиту на постійний том. Якщо базовий постійний том змінюється в розмірі, стан буде встановлено на 'Resizing'.
PersistentVolumeClaimCondition містить деталі про стан pvc
conditions.status (string), обовʼязково
conditions.type (string), обовʼязково
conditions.lastProbeTime (Time)
lastProbeTime - це час, коли ми обстежили стан.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.lastTransitionTime (Time)
lastTransitionTime — це час, коли стан перейшов з одного статусу до іншого.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
message — це зрозуміле для людини повідомлення, що вказує на деталі останнього переходу.
conditions.reason (string)
reason — це унікальний, короткий, зрозумілий для машини рядок, який вказує причину останнього переходу стану. Якщо він повідомляє "Resizing", це означає, що базовий постійний том змінюється в розмірі.
currentVolumeAttributesClassName (string)
currentVolumeAttributesClassName — це поточна назва VolumeAttributesClass, яку використовує PVC. Якщо не встановлено, то до цього PersistentVolumeClaim не застосовано жодного VolumeAttributeClass. Це бета-поле і вимагає ввімкнення функції VolumeAttributesClass (стандартно вимкнена).
modifyVolumeStatus (ModifyVolumeStatus)
ModifyVolumeStatus представляє обʼєкт статусу операції ControllerModifyVolume. Якщо не встановлено, спроба виконання операції ModifyVolume не відбувається. Це бета-поле і вимагає ввімкнення функції VolumeAttributesClass (стандартно вимкнена).
ModifyVolumeStatus представляє обʼєкт стану операції ControllerModifyVolume.
modifyVolumeStatus.status (string), required
status — це статус операції ControllerModifyVolume. Він може перебувати в одному з наступних станів:
Pending
Pending вказує на те, що PersistentVolumeClaim не може бути змінений через невиконані вимоги, такі як відсутність вказаного VolumeAttributesClass.
InProgress
InProgress вказує на те, що том наразі модифікується.
Infeasible
Infeasible вказує на те, що запит було відхилено як недійсний драйвером CSI. Щоб усунути помилку, потрібно вказати дійсний VolumeAttributesClass.
Примітка: Нові статуси можуть бути додані в майбутньому. Споживачі повинні перевіряти наявність невідомих статусів і відповідно обробляти помилки.
claimRef є частиною двостороннього звʼязування між PersistentVolume та PersistentVolumeClaim. Очікується, що він буде ненульовим при звʼязуванні. claim.VolumeName є офіційним звʼязуванням між PV та PVC. Докладніше: https://kubernetes.io/docs/concepts/storage/persistent-volumes#binding
nodeAffinity визначає обмеження, які обмежують доступ до цього тому з певних вузлів. Це поле впливає на планування Podʼів, які використовують цей том.
VolumeNodeAffinity визначає обмеження, які обмежують доступ до цього тому з певних вузлів.
nodeAffinity.required (NodeSelector)
обовʼязково визначає жорсткі обмеження на вузли, які повинні бути виконані.
Селектор вузлів представляє обʼєднання результатів одного або кількох запитів по мітках у наборі вузлів; тобто, він представляє операцію АБО для селекторів, представлених термінами селектора вузлів.
Обовʼязково. Список термінів селектора вузлів. Терміни обʼєднуються операцією OR.
Null або порожній термін селектора вузла не відповідає жодному об'єкту. Вимоги до них складаються за принципом AND. Тип TopologySelectorTerm реалізує підмножину NodeSelectorTerm.
persistentVolumeReclaimPolicy визначає, що відбувається з постійним томом після його звільнення від заявки. Валідні варіанти: Retain (стандартно для створених вручну PersistentVolumes), Delete (стандартно для динамічно наданих PersistentVolumes) та Recycle (застаріле). Recycle повинен підтримуватися втулком тому, що забезпечує роботу цього PersistentVolume. Докладніше: https://kubernetes.io/docs/concepts/storage/persistent-volumes#reclaiming
storageClassName (string)
storageClassName — це назва StorageClass, до якого належить цей постійний том. Порожнє значення означає, що цей том не належить жодному StorageClass.
volumeAttributesClassName (string)
Імʼя VolumeAttributesClass, до якого належить цей постійний том. Порожнє значення не допускається. Якщо це поле не встановлено, це означає, що цей том не належить до жодного VolumeAttributesClass. Це поле змінюване і може бути змінене драйвером CSI після успішного оновлення тому до нового класу. Для непривʼязаного PersistentVolume значення volumeAttributesClassName буде зіставлено з непривʼязаними PersistentVolumeClaim під час процесу привʼязування. Це бета-поле і вимагає ввімкнення функції VolumeAttributesClass (стандартно вимкнена).
volumeMode (string)
volumeMode визначає, чи призначений том для використання з форматованою файловою системою або залишатиметься в необробленому блочному стані. Значення Filesystem мається на увазі, якщо не включено в специфікацію.
Local
hostPath (HostPathVolumeSource)
hostPath представляє теку на хості. Надається розробником або тестувальником. Це корисно лише для одновузлової розробки та тестування! Зберігання на хості жодним чином не підтримується та НЕ ПРАЦЮВАТИМЕ у багатовузловому кластері. Докладніше: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
Представляє шлях на хості, зіставлений зі шляхом у Podʼі. Шляхи томів хосту не підтримують управління власністю або перепризначення міток SELinux.
local — це безпосередньо приєднане сховище зі спорідненістю до вузла
Local представляє безпосередньо приєднане сховище зі спорідненістю до вузла (бета-функція)
local.path (string), обовʼязкове
повний шлях до тому на вузлі. Це може бути або тека, або блоковий пристрій (диск, розділ і т.д.).
local.fsType (string)
fsType — це тип файлової системи для монтування. Застосовується лише тоді, коли Path є блоковим пристроєм. Повинен бути тип файлової системи, підтримуваний операційною системою хосту. Наприклад, "ext4", "xfs", "ntfs". Стандартне значення — автоматичний вибір файлової системи, якщо не вказано.
fsType — це тип файлової системи тому, який ви хочете монтувати. Переконайтеся, що тип файлової системи підтримується операційною системою хосту. Приклади: "ext4", "xfs", "ntfs". Передбачається "ext4", якщо не вказано інше. Докладніше: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
awsElasticBlockStore.partition (int32)
partition — це розділ у томі, який ви хочете монтувати. Якщо відсутній, то стандартно монтується за назвою тому. Приклади: Для тому /dev/sda1, ви вказуєте розділ як "1". Аналогічно, розділ тому /dev/sda є "0" (або ви можете залишити властивість пустою).
azureDisk представляє монтування Azure Data Disk на хості та звʼязане монтування у Podʼі.
Представляє монтування Azure Data Disk на хості та звʼязане монтування у Podʼі.
azureDisk.diskName (string), обовʼязково
diskName — це імʼя диска даних у сховищі blob
azureDisk.diskURI (string), обовʼязково
diskURI — це URI диска даних у сховищі blob
azureDisk.cachingMode (string)
cachingMode — це режим кешування на хості: None, Read Only, Read Write.
azureDisk.fsType (string)
fsType — тип файлової системи для монтування. Має бути типом файлової системи, підтриманим операційною системою хосту. Наприклад, "ext4", "xfs", "ntfs". Передбачається "ext4", якщо не вказано інше.
azureDisk.kind (string)
kind — очікувані значення:
Shared: декілька томів блобів на обліковому записі сховища
Dedicated: один том блобів на обліковому записі сховища
Managed: керований диск даних Azure (лише в керованому наборі доступності). Стандартне значення — shared.
azureDisk.readOnly (boolean)
readOnly — стандартне значення — false (запис/читання). Якщо тут встановлено true, то встановлюється параметр readOnly у VolumeMounts.
azureFile (AzureFilePersistentVolumeSource)
azureFile представляє монтування Azure File Service на хості та звʼязане монтування у Podʼі.
Представляє монтування Azure File Service на хості та звʼязане монтування у Podʼі.
azureFile.secretName (string), обовʼязково
secretName — це імʼя Secret, що містить імʼя та ключ облікового запису Azure Storage
azureFile.shareName (string), обовʼязково
shareName — це назва розділу Azure
azureFile.readOnly (boolean)
readOnly — стандартне значення — false (запис/читання). Якщо тут встановлено true, то встановлюється параметр readOnly в VolumeMounts.
azureFile.secretNamespace (string)
secretNamespace — це простір імен Secret, що містить імʼя та ключ облікового запису Azure. Стандартно використовується той самий простір імен, що й у Podʼа.
cephfs (CephFSPersistentVolumeSource)
cephFS представляє монтування Ceph FS на хості, яке спільно використовується з життєвим циклом Pod.
Представляє монтування файлової системи Ceph, яка існує протягом життя Podʼа. Томи Cephfs не підтримують управління власниками або перепризначення міток SELinux.
Представляє ресурс тому Cinder в OpenStack. Том Cinder повинен існувати перед монтуванням у контейнер. Том також повинен знаходитися в тому ж регіоні, що й kubelet. Томи Cinder підтримують управління власниками та перепризначення міток SELinux.
fsType — тип файлової системи для монтування. Має бути підтримуваним типом файлової системи операційної системи хосту. Приклади: "ext4", "xfs", "ntfs". Передбачається "ext4", якщо не вказано інше. Докладніше: https://examples.k8s.io/mysql-cinder-pd/README.md
cinder.readOnly (boolean)
readOnly — необовʼязково: стандартне значення — false (запис/читання). Якщо встановлено true, параметр readOnly встановлюється в VolumeMounts. Докладніше: https://examples.k8s.io/mysql-cinder-pd/README.md
cinder.secretRef (SecretReference)
secretRef — необовʼязково: посилання на обʼєкт Secret, що містить параметри для підключення до OpenStack.
SecretReference представляє посилання на Secret. Воно має достатньо інформації для отримання Secret в будь-якому просторі імен.
cinder.secretRef.name (string)
name —- унікальне імʼя в межах простору імен для посилання на ресурс Secret.
cinder.secretRef.namespace (string)
namespace — визначає простір імен, в межах якого імʼя Secret має бути унікальним.
csi (CSIPersistentVolumeSource)
csi представляє сховище, яке обробляється зовнішнім драйвером CSI (функція Beta).
Представляє сховище, яке керується зовнішнім драйвером CSI для сховища (функція Beta)
csi.driver (string), обовʼязково
driver — це назва драйвера, який використовується для цього тому. Обовʼязково.
csi.volumeHandle (string), обовʼязково
volumeHandle — це унікальне імʼя тому, яке повертається драйвером CSI для посилання на том у всіх наступних викликах. Обовʼязково.
csi.controllerExpandSecretRef (SecretReference)
controllerExpandSecretRef — посилання на обʼєкт Secret, що містить чутливу інформацію для передачі до драйвера CSI для виконання виклику CSI ControllerExpandVolume. Це поле є необовʼязковим і може бути порожнім, якщо Secret не потрібен. Якщо обʼєкт Secret містить більше ніж один ключ, всі ключі передаються.
SecretReference представляє посилання на Secret. Воно має достатньо інформації для отримання Secret в будь-якому просторі імен.
csi.controllerExpandSecretRef.name (string)
name — унікальне імʼя в межах простору імен для посилання на ресурс Secret.
csi.controllerExpandSecretRef.namespace (string)
namespace — визначає простір імен, в межах якого імʼя Secret має бути унікальним.
csi.controllerPublishSecretRef (SecretReference)
controllerPublishSecretRef — посилання на обʼєкт Secret, що містить чутливу інформацію для передачі до драйвера CSI для виконання викликів CSI ControllerPublishVolume і ControllerUnpublishVolume. Це поле є необовʼязковим і може бути порожнім, якщо секрет не потрібен. Якщо обʼєкт Secret містить більше ніж один ключ, всі ключі передаються.
SecretReference представляє посилання на Secret. Воно має достатньо інформації для отримання Secret в будь-якому просторі імен.
csi.controllerPublishSecretRef.name (string)
name — унікальне імʼя в межах простору імен для посилання на ресурс Secret.
csi.controllerPublishSecretRef.namespace (string)
namespace — визначає простір імен, в межах якого імʼя Secret має бути унікальним.
csi.fsType (string)
fsType — тип файлової системи для монтування. Має бути підтримуваним типом файлової системи операційної системи хосту. Наприклад, "ext4", "xfs", "ntfs".
csi.nodeExpandSecretRef (SecretReference)
nodeExpandSecretRef — посилання на обʼєкт Secret, що містить чутливу інформацію для передачі до драйвера CSI для виконання виклику CSI NodeExpandVolume. Це поле є необовʼязковим і може бути опущеним, якщо Secret не потрібен. Якщо обʼєкт Secret містить більше ніж один ключ, всі ключі передаються.
SecretReference представляє посилання на Secret. Воно має достатньо інформації для отримання Secret в будь-якому просторі імен.
csi.nodeExpandSecretRef.name (string)
name — унікальне імʼя в межах простору імен для посилання на ресурс Secret.
csi.nodeExpandSecretRef.namespace (string)
namespace — визначає простір імен, в межах якого імʼя Secret має бути унікальним.
csi.nodePublishSecretRef (SecretReference)
nodePublishSecretRef — посилання на обʼєкт, Secret що містить чутливу інформацію для передачі до драйвера CSI для виконання викликів CSI NodePublishVolume і NodeUnpublishVolume. Це поле є необовʼязковим і може бути порожнім, якщо Secret не потрібен. Якщо обʼєкт Secret містить більше ніж один ключ, всі ключі передаються.
SecretReference представляє посилання на Secret. Воно має достатньо інформації для отримання Secret в будь-якому просторі імен.
csi.nodePublishSecretRef.name (string)
name — унікальне імʼя в межах простору імен для посилання на ресурс Secret.
csi.nodePublishSecretRef.namespace (string)
namespace — визначає простір імен, в межах якого імʼя Secret має бути унікальним.
csi.nodeStageSecretRef (SecretReference)
nodeStageSecretRef — посилання на обʼєкт Secret, що містить чутливу інформацію для передачі до драйвера CSI для виконання викликів CSI NodeStageVolume і NodeUnstageVolume. Це поле є необовʼязковим і може бути порожнім, якщо Secret не потрібен. Якщо обʼєкт Secret містить більше ніж один ключ, всі ключі передаються.
SecretReference представляє посилання на Secret. Воно має достатньо інформації для отримання Secret в будь-якому просторі імен.
csi.nodeStageSecretRef.name (string)
name — унікальне імʼя в межах простору імен для посилання на ресурс Secret.
csi.nodeStageSecretRef.namespace (string)
namespace — визначає простір імен, в межах якого імʼя Secret має бути унікальним.
csi.readOnly (boolean)
readOnly — значення для передачі до ControllerPublishVolumeRequest. Стандартне значення — false (запис/читання).
csi.volumeAttributes (map[string]string)
volumeAttributes — атрибути тому для публікації.
fc (FCVolumeSource)
fc представляє ресурс Fibre Channel, який приєднується до хост-машини kubelet і потім експонується для використання в Podʼі.
Представляє том Fibre Channel. Томи Fibre Channel можуть бути приєднані лише як для читання/запису один раз. Томи Fibre Channel підтримують управління власниками та перепризначення міток SELinux.
fc.fsType (string)
fsType — це тип файлової системи для монтування. Має бути підтримуваним типом файлової системи операційної системи хосту. Наприклад, "ext4", "xfs", "ntfs". Передбачається "ext4", якщо не вказано інше.
fc.lun (int32)
lun — необовʼязково: номер lun.
fc.readOnly (boolean)
readOnly — необовʼязково: стандартне значення — false (запис/читання). Якщо встановлено true, встановлюється параметр readOnly у VolumeMounts.
fc.targetWWNs ([]string)
Atomic: буде замінено під час злиття
targetWWNs — необовʼязково: FC вказує всесвітні імена (worldwide names, WWN).
fc.wwids ([]string)
Atomic: буде замінено під час злиття
wwids — необовʼязково: світові ідентифікатори тома FC (WWID). Можна встановити або wwids, або комбінацію targetWWNs і lun, але не одночасно.
flexVolume (FlexPersistentVolumeSource)
flexVolume представляє загальний ресурс тома, який надається/приєднується за допомогою втулка.
FlexPersistentVolumeSource представляє загальний постійний том, який надається/приєднується за допомогою втулка.
flexVolume.driver (string), обовʼязково
driver — це імʼя драйвера, яке використовується для цього тома.
flexVolume.fsType (string)
fsType — тип файлової системи для монтування. Має бути підтримуваним типом файлової системи операційної системи хоста. Наприклад, "ext4", "xfs", "ntfs". Тип стандартної файлової системи залежить від сценарію FlexVolume.
flexVolume.options (map[string]string)
options — необовʼязково: це поле містить додаткові параметри команди, якщо такі є.
flexVolume.readOnly (boolean)
readOnly — необовʼязково: стандартне значення — false (запис/читання). Якщо встановлено true, встановлюється параметр readOnly у VolumeMounts.
flexVolume.secretRef (SecretReference)
secretRef — необовʼязково: посилання на обʼєкт Secret, що містить чутливу інформацію для передачі в сценарії втулка. Це поле може бути порожнім, якщо обʼєкт Secret не вказано. Якщо Secret містить більше одного секрету, всі вони передаються в сценарії втулка.
SecretReference представляє посилання на Secret. Воно має достатньо інформації для отримання Secret в будь-якому просторі імен.
flexVolume.secretRef.name (string)
name — унікальне імʼя в межах простору імен для посилання на ресурс Secret.
flexVolume.secretRef.namespace (string)
namespace — визначає простір імен, в межах якого імʼя Secret має бути унікальним.
flocker (FlockerVolumeSource)
flocker представляє том Flocker, приєднаний до хост-машини kubelet і експонований для використання в Podʼі. Це залежить від того, чи працює служба керування Flocker.
Представляє том Flocker, приєднаний агентом Flocker. Повинно бути встановлено одне і тільки одне значення datasetName або datasetUUID. Томи Flocker не підтримують управління власниками або перевизначення міток SELinux.
flocker.datasetName (string)
datasetName — імʼя набору даних, збережене як метадані -> імʼя для набору даних Flocker. Вважається застарілим.
flocker.datasetUUID (string)
datasetUUID — UUID набору даних. Це унікальний ідентифікатор набору даних Flocker.
Представляє постійний диск в Google Compute Engine.
Диск GCE повинен існувати перед монтуванням в контейнер. Диск також повинен знаходитися в тому ж проєкті та зоні GCE, що і kubelet. Диск GCE може бути приєднаний тільки як для читання/запису один раз або тільки для читання багато разів. Диски GCE підтримують управління власниками та перепризначення міток SELinux.
gcePersistentDisk.pdName (string), обовʼязково
pdName — унікальне імʼя ресурсу PD в GCE. Використовується для ідентифікації диска в GCE.
gcePersistentDisk.fsType (string)
fsType — тип файлової системи тома, який ви хочете монтувати. Переконайтеся, що тип файлової системи підтримується операційною системою хосту. Приклади: "ext4", "xfs", "ntfs". Передбачається "ext4", якщо не вказано інше.
gcePersistentDisk.partition (int32)
partition — розділ у томі, який ви хочете монтувати. Якщо пропущено,стандартно монтується за іменем тома. Приклади: Для тома /dev/sda1 ви вказуєте розділ як "1". Аналогічно, розділ тома для /dev/sda - "0" (або ви можете залишити властивість пустою).
gcePersistentDisk.readOnly (boolean)
readOnly — тут встановлює параметр readOnly у VolumeMounts. Стандартне значення — false.
Представляє монтування Glusterfs, яке існує протягом життєвого циклу Podʼа. Томи Glusterfs не підтримують управління власниками або перепризначенн міток SELinux.
endpointsNamespace — простір імен, який містить точку доступу Glusterfs. Якщо це поле порожнє, EndpointNamespace стандартно встановлюється в той же простір імен, що й звʼязаний PVC. Детальніше: https://examples.k8s.io/volumes/glusterfs/README.md#create-a-pod
iscsi представляє ресурс ISCSI Disk, який приєднується до хост-машини kubelet і потім експонується для використання в Podʼі. Надається адміністратором.
ISCSIPersistentVolumeSource представляє диск ISCSI. ISCSI томи можуть бути монтувані тільки один раз для читання/запису. ISCSI томи підтримують управління власниками та перепризначення міток SELinux.
iscsi.iqn (string), обовʼязково
iqn - кваліфіковане імʼя ISCSI цілі.
iscsi.lun (int32), обовʼязково
lun — номер LUN цілі ISCSI.
iscsi.targetPortal (string), обовʼязково
targetPortal — це цільовий портал ISCSI. Портал може бути IP або ip_addr:port, якщо порт відрізняється від типового (зазвичай TCP порти 860 та 3260).
iscsi.chapAuthDiscovery (boolean)
chapAuthDiscovery — визначає підтримку автентифікації CHAP для виявлення ISCSI.
iscsi.chapAuthSession (boolean)
chapAuthSession - визначає підтримку автентифікації CHAP сесії ISCSI.
iscsi.fsType (string)
fsType — тип файлової системи тому, який ви хочете монтувати. Переконайтеся, що тип файлової системи підтримується операційною системою хоста. Приклади: "ext4", "xfs", "ntfs". Передбачається "ext4", якщо не вказано інше. Детальніше: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
iscsi.initiatorName (string)
initiatorName — це спеціальне імʼя ініціатора ISCSI. Якщо initiatorName вказано одночасно з iscsiInterface, буде створено новий інтерфейс ISCSI <target portal>:<volume name> для зʼєднання.
iscsi.iscsiInterface (string)
iscsiInterface — це імʼя інтерфейсу, яке використовує транспорт ISCSI. Стандартне значення — 'default' (tcp).
iscsi.portals ([]string)
Atomic: буде замінено під час злиття
portals — список цільових порталів ISCSI. Портал може бути IP або ip_addr:port, якщо порт відрізняється від типового (зазвичай TCP порти 860 та 3260).
iscsi.readOnly (boolean)
readOnly — встановлює параметр readOnly у VolumeMounts. Стандартне значення — false.
iscsi.secretRef (SecretReference)
secretRef — це обʼєкт Secret для автентифікації цілі ISCSI та ініціатора.
SecretReference представляє посилання на Secret. Воно має достатньо інформації для отримання Secret в будь-якому просторі імен.
iscsi.secretRef.name (string)
name — унікальне імʼя в межах простору імен для посилання на ресурс Secret.
iscsi.secretRef.namespace (string)
namespace — визначає простір імен, в межах якого імʼя Secret має бути унікальним.
photonPersistentDisk представляє постійний диск Photon Controller, приєднаний і змонтований на хост-машині kubelet
Представляє ресурс постійного диска Photon Controller.
photonPersistentDisk.pdID (string), обовʼязково
pdID — це ідентифікатор, який ідентифікує постійний диск Photon Controller.
photonPersistentDisk.fsType (string)
fsType — тип файлової системи для монтування. Повинен бути типом файлової системи, який підтримується операційною системою хоста. Наприклад: "ext4", "xfs", "ntfs". Передбачається "ext4", якщо не вказано інше.
portworxVolume (PortworxVolumeSource)
portworxVolume представляє ресурс тома Portworx, приєднаний і змонтований на хост-машині kubelet
Представляє ресурс тома Portworx.
portworxVolume.volumeID (string), обовʼязково
volumeID — унікально ідентифікує том Portworx.
portworxVolume.fsType (string)
fsType — тип файлової системи для монтування. Повинен бути типом файлової системи, який підтримується операційною системою хоста. Наприклад: "ext4", "xfs". Передбачається "ext4", якщо не вказано інше.
portworxVolume.readOnly (boolean)
readOnly — стандартне значення — false (читання/запис). Якщо встановлено в true, тоді монтування тома буде тільки для читання.
quobyte (QuobyteVolumeSource)
quobyte представляє монтування Quobyte на хості, яке триває протягом життєвого циклу Podʼа.
Представляє монтування Quobyte, яке триває протягом життєвого циклу Podʼа. Quobyte томи не підтримують управління власниками або перевизначення міток SELinux.
quobyte.registry (string), обовʼязково
registry — представляє один або кілька сервісів реєстрації Quobyte, вказаних як рядок у форматі host:port (кілька записів розділяються комами), які діють як центральний реєстр для томів.
quobyte.volume (string), обовʼязково
volume — рядок, який посилається на вже створений том Quobyte за імʼям.
quobyte.group (string)
group — група для відображення доступу до тома. Стандартно група не встановлюється.
quobyte.readOnly (boolean)
readOnly — встановлює, чи має монтуватися том Quobyte тільки для читання. Стандартне значення — false.
quobyte.tenant (string)
tenant — власник вказаного тома Quobyte в Backend. Використовується з динамічно створеними томами Quobyte, значення встановлюється втулком.
quobyte.user (string)
user — користувач для відображення доступу до тома. Стандартно використовується користувач serivceaccount.
Представляє монтування Rados Block Device, яке існує протягом життєвого циклу Podʼа. RBD томи підтримують управління власниками та перевизначення міток SELinux.
fsType — тип файлової системи тому, який ви хочете змонтувати. Переконайтеся, що тип файлової системи підтримується операційною системою хоста. Приклади: "ext4", "xfs", "ntfs". Передбачається "ext4", якщо не вказано інше. Детальніше: https://kubernetes.io/docs/concepts/storage/volumes#rbd
scaleIO представляє постійний том ScaleIO, приєднаний і змонтований на вузлах Kubernetes.
ScaleIOPersistentVolumeSource представляє постійний том ScaleIO
scaleIO.gateway (string), обовʼязково
gateway — адреса хосту шлюза API ScaleIO.
scaleIO.secretRef (SecretReference), обовʼязково
secretRef — посилання на Secret для користувача ScaleIO та іншої чутливої інформації. Якщо це не надано, операція входу буде невдалою.
SecretReference представляє посилання на Secret. Воно містить достатньо інформації для отримання Secret в будь-якому просторі імен
scaleIO.secretRef.name (string)
name — унікальне імʼя ресурсу Secret в просторі імен.
scaleIO.secretRef.namespace (string)
namespace — визначає простір імен, в якому імʼя Secret повинно бути унікальним.
scaleIO.system (string), обовʼязково
system — назва системи зберігання, як налаштовано в ScaleIO.
scaleIO.fsType (string)
fsType — тип файлової системи для монтування. Повинен бути типом файлової системи, який підтримується операційною системою хоста. Наприклад: "ext4", "xfs", "ntfs". Стандартне значення — "xfs".
scaleIO.protectionDomain (string)
protectionDomain — назва домену захисту ScaleIO для налаштованого зберігання.
scaleIO.readOnly (boolean)
readOnly — стандартне значення — false (читання/запис). Якщо встановлено в true, тоді монтування тому буде тільки для читання.
scaleIO.sslEnabled (boolean)
sslEnabled — прапорець для увімкнення/вимкнення SSL-звʼязку з Gateway, стандартне значення — false.
scaleIO.storageMode (string)
storageMode — вказує, чи повинно бути зберігання для тому ThickProvisioned або ThinProvisioned. Стандартне значення — ThinProvisioned.
scaleIO.storagePool (string)
storagePool — Pool зберігання ScaleIO, повʼязаний з доменом захисту.
scaleIO.volumeName (string)
volumeName — імʼя вже створеного тому в системі ScaleIO, повʼязаного з цим джерелом тому.
fsType — тип файлової системи для монтування. Повинен бути типом файлової системи, який підтримується операційною системою хоста. Наприклад: "ext4", "xfs", "ntfs". Передбачається "ext4", якщо не вказано інше.
storageos.readOnly (boolean)
readOnly — стандартне значення — false (читання/запис). Якщо встановлено в true, то монтування тому буде тільки для читання.
secretRef - вказує на Secret, який використовується для отримання облікових даних API StorageOS. Якщо не вказано, спробує використати стандартне значення.
storageos.volumeName (string)
volumeName — імʼя тому StorageOS, зорозуміле людині. Імена томів унікальні лише в межах простору імен.
storageos.volumeNamespace (string)
volumeNamespace — визначає область тому в межах StorageOS. Якщо не вказано, використовується простір імен Podʼа. Це дозволяє відображати простори імен Kubernetes в межах StorageOS для більш тісної інтеграції. Встановіть VolumeName на будь-яке імʼя для заміни стандартної поведінки. Встановіть у "default", якщо ви не використовуєте простори імен в межах StorageOS. Простори імен, які не існують заздалегідь в межах StorageOS, будуть створені.
vsphereVolume (VsphereVirtualDiskVolumeSource)
vsphereVolume представляє том vSphere, який приєднаний і змонтований на вузлах kubelet.
Представляє ресурс тому vSphere.
vsphereVolume.volumePath (string), обовʼязково
volumePath — шлях, який ідентифікує том vSphere vmdk.
vsphereVolume.fsType (string)
fsType — тип файлової системи для монтування. Повинен бути типом файлової системи, який підтримується операційною системою хоста. Наприклад: "ext4", "xfs", "ntfs". Передбачається "ext4", якщо не вказано інше.
vsphereVolume.storagePolicyID (string)
storagePolicyID — ідентифікатор профілю управління політикою зберігання (SPBM), повʼязаний з іменем політики зберігання.
vsphereVolume.storagePolicyName (string)
storagePolicyName — імʼя профілю управління політикою зберігання (SPBM).
PersistentVolumeStatus
PersistentVolumeStatus — це поточний стан постійного тома.
lastPhaseTransitionTime (Time)
lastPhaseTransitionTime — це час, коли фаза переходила з однієї у іншу, і автоматично скидається до поточного часу кожного разу при переході фази тома.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
message (string)
message — повідомлення, зрозуміле людині, яке вказує деталі щодо причини, чому том знаходиться у цьому стані.
allowVolumeExpansion показує, чи дозволяє клас зберігання розширення тому.
allowedTopologies ([]TopologySelectorTerm)
Atomic: буде замінено під час обʼєднання
allowedTopologies обмежує топологію вузлів, де томи можуть динамічно виділятися. Кожен втулок тому визначає свої власні специфікації топології. Порожній список TopologySelectorTerm означає, що обмежень по топології немає. Це поле враховується лише серверами, які включають функцію VolumeScheduling.
Термін селектора топології представляє результат запитів до міток. Нульовий або порожній термін селектора топології не відповідає жодному обʼєкту. Вимоги до них обʼєднуються за принципом AND. Він надає підмножину функціональності як NodeSelectorTerm. Це альфа-версія функції та в майбутньому вона може змінитися.
Масив рядкових значень. Одне значення повинно відповідати мітці для вибору. Кожен запис у Values поєднується оператором OR.
mountOptions ([]string)
Atomic: буде замінено під час злиття
mountOptions контролює параметри монтування для динамічно виділених PersistentVolumes цього класу зберігання. Наприклад, ["ro", "soft"]. Не перевіряється — монтування PVs просто не вдасться, якщо один з них недійсний.
parameters (map[string]string)
parameters містить параметри для провайдера, який повинен створити томи цього класу зберігання.
reclaimPolicy (string)
reclaimPolicy контролює політику відновлення для динамічно виділених PersistentVolumes цього класу зберігання. Стандартне значення — Delete.
volumeBindingMode (string)
volumeBindingMode вказує, як PersistentVolumeClaims повинні виділятися та звʼязуватися. Якщо не встановлено, використовується VolumeBindingImmediate. Це поле враховується лише серверами, які включають функцію VolumeScheduling.
Токен, який використовується в опціях списку, щоб отримати наступну порцію обʼєктів для міграції. Коли .status.conditions вказує на те, що міграція виконується, користувачі можуть використовувати цей токен, щоб перевірити хід міграції.
resource (GroupVersionResource), обовʼязково
Ресурс, який мігрує. Мігратор надсилає запити до точки доступу, що обслуговує ресурс. Незмінний.
Імена групи, версії та ресурсу.
resource.group (string)
Імʼя групи.
resource.resource (string)
Імʼя ресурсу.
resource.version (string)
Імʼя версії.
StorageVersionMigrationStatus
Статус міграції версії сховища.
conditions ([]MigrationCondition)
Patch strategy: обʼєднання за ключем name
Map: унікальні значення ключа name будуть збережені під час злиття
Останні доступні спостереження за поточним станом міграції.
Описує стан міграції на певний момент.
conditions.status (string), обовʼязково
Статус стану, одни з: True, False, Unknown.
conditions.type (string), обовʼязково
Тип стану.
conditions.lastUpdateTime (Time)
Час, коли булі остання зміна стану.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
message містить зрозуміле для людини повідомлення з деталями про стан зміни.
conditions.reason (string)
reason умови останньої зміни.
resourceVersion (string)
ResourceVersion для порівняння з кешем GC для виконання міграції. Це поточна версія ресурсу для даної групи, версії та ресурсу, коли kube-controller-manager вперше спостерігає цей ресурс StorageVersionMigration.
PersistentVolumeClaimVolumeSource посилається на PVC користувача в тому ж просторі імен. Цей том знаходить привʼязаний PV та монтує цей том для Podʼа. PersistentVolumeClaimVolumeSource, фактично, є обгорткою навколо іншого типу тому, який належить комусь іншому (системі).
readOnly — Встановлює значення ReadOnly у VolumeMounts. Стандартне значення — false.
Проєкції
configMap (ConfigMapVolumeSource)
configMap — представляє configMap, який повинен заповнити цей том.
*Адаптує ConfigMap до тому.
Вміст поля Data цільового ConfigMap буде представлений у томі у вигляді файлів, використовуючи ключі у полі Data як назви файлів, якщо елемент items заповнений конкретними зіставленнями ключів зі шляхами. Томи ConfigMap підтримують керування власністю та перепризначення міток SELinux.
configMap.name (string)
Name — назва обʼєкта ConfigMap, повʼязаного з томом. Це поле є обов\язковим для заповнення, але для забезпечення зворотної сумісності дозволяється залишати його порожнім. Екземпляри цього типу з порожнім значенням тут майже напевно є помилковими. Додаткова інформація: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
configMap.optional (boolean)
optional — вказує, чи ConfigMap або його ключі мають бути визначені.
configMap.defaultMode (int32)
defaultMode є необовʼязковим параметром: біти режимів, які використовуються для встановлення стандартних дозволів на створені файли. Має бути вісімковим значенням між 0000 та 0777 або десятковим значенням між 0 та 511. У форматі YAML можна використовувати як вісімкові, так і десяткові значення, у форматі JSON потрібно використовувати десяткові значення для режиму бітів. Стандартне значення — 0644. Теки всередині шляху не підпадають під це налаштування. Це може суперечити іншим параметрам, які впливають на режим файлу, наприклад, fsGroup, і результат може бути встановлення інших бітів режимів.
Якщо не вказано items, кожна пара ключ-значення у полі Data зазначеного ConfigMap буде перенесена в том як файл, імʼя якого — це ключ, а вміст — значення. Якщо вказано, перераховані ключі будуть перенесені у вказані шляхи, а невказані ключі відсутні. Якщо вказано ключ, якого немає у ConfigMap, налаштування тому завершиться помилкою, якщо він не позначений як необовʼязковий. Шляхи повинні бути відносними та не можуть містити шлях '..' або починатися з '..'.
Вміст поля Data цільового Secret буде представлений у томі у вигляді файлів, використовуючи ключі у полі Data як назви файлів. Томи Secret підтримують керування власністю та перепризначення міток SELinux.*
optional — вказує, чи Secret або його ключі мають бути визначені.
secret.defaultMode (int32)
defaultMode є необовʼязковим параметром: біти режимів, які використовуються для встановлення стандартних дозволів на створені файли. Має бути вісімковим значенням між 0000 та 0777 або десятковим значенням між 0 та 511. У форматі YAML можна використовувати як вісімкові, так і десяткові значення, у форматі JSON потрібно використовувати десяткові значення для режиму бітів. Стандартне значення — 0644. Теки всередині шляху не підпадають під це налаштування. Це може суперечити іншим параметрам, які впливають на режим файлу, наприклад, fsGroup, і результат може бути встановлення інших бітів режимів.
Якщо не вказано items, кожна пара ключ-значення у полі Data зазначеного Secret буде перенесена в том як файл, імʼя якого — це ключ, а вміст — значення. Якщо вказано, перераховані ключі будуть перенесені у вказані шляхи, а невказані ключі відсутні. Якщо вказано ключ, якого немає у Secret, налаштування тому завершиться помилкою, якщо він не позначений як необовʼязковий. Шляхи повинні бути відносними та не можуть містити шлях '..' або починатися з '..'.
downwardAPI (DownwardAPIVolumeSource)
downwardAPI — представляє downward API Podʼа, який повинен заповнити цей том.
DownwardAPIVolumeSource представляє том з вмістом з downward API. Томи downward API підтримують керування власністю та перепризначення міток SELinux.
downwardAPI.defaultMode (int32)
Опційно: біти режимів, які використовуються для встановлення стандартних дозволів на створені файли. Має бути вісімковим значенням між 0000 та 0777 або десятковим значенням між 0 та 511. У форматі YAML можна використовувати як вісімкові, так і десяткові значення, у форматі JSON потрібно використовувати десяткові значення для режиму бітів. Стандартне значення — 0644. Теки всередині шляху не підпадають під це налаштування. Це може суперечити іншим параметрам, які впливають на режим файлу, наприклад, fsGroup, і результат може бути встановлення інших бітів режимів.
projected — елементи для ресурсів all-in-one Secret, ConfigMap, downward API
Представляє джерело projected тому
projected.defaultMode (int32)
defaultMode є бітами режимів, які використовуються для встановлення стандартних дозволів на створені файли. Має бути вісімковим значенням між 0000 та 0777 або десятковим значенням між 0 та 511. У форматі YAML можна використовувати як вісімкові, так і десяткові значення, у форматі JSON потрібно використовувати десяткові значення для режиму бітів. Стандартне значення — 0644. Теки всередині шляху не підпадають під це налаштування. Це може суперечити іншим параметрам, які впливають на режим файлу, наприклад, fsGroup, і результат може бути встановлення інших бітів режимів.
projected.sources ([]VolumeProjection)
Atomic: буде замінено під час злиття
sources — список джерел, які мають бути спроєцьовані. Кожен запис у цьому списку працює з одним джерелом.
Проєкція, яка може бути спроєцьована разом з іншими підтримуваними типами томів. Тільки одне з цих полів повинно бути встановлене.
ClusterTrustBundle дозволяє podʼу отримати доступ до поля .spec.trustBundle обʼєктів ClusterTrustBundle через файл з автоматичним оновленням.
Альфа-функція, контрольована через функціональну можливість ClusterTrustBundleProjection.
Обʼєкти ClusterTrustBundle можуть бути вибрані за іменем або за комбінацією імені підписувача і селектора міток.
Kubelet виконує агресивну нормалізацію вмісту PEM, записаного у файлову систему podʼа. Езотеричні функції PEM, такі як міжблочні коментарі та заголовки блоків, видаляються. Сертифікати дедуплікуються. Порядок сертифікатів у файлі довільний, і Kubelet може змінювати його з часом.
ClusterTrustBundleProjection описує, як вибрати набір обʼєктів ClusterTrustBundle і спроєктувати їх вміст у файлову систему подів.
Вибирає всі ClusterTrustBundles, які відповідають цьому селектору міток. Має ефект, тільки якщо задано signerName. Взаємовиключне з name. Якщо не задано, інтерпретується як «не збігається ні з чим». Якщо задано, але пусте, інтерпретується як «збігається з усім».
Якщо true, не блокувати запуск podʼа, якщо посилання на ClusterTrustBundle(и) недоступні. Якщо використовується імʼя, тоді дозволено відсутність вказаного ClusterTrustBundle. Якщо використовується signerName, тоді комбінація signerName і labelSelector може не відповідати жодному ClusterTrustBundle.
Виберає усі ClusterTrustBundles, які відповідають цьому імені підписувача. Взаємовиключні з name. Вміст усіх вибраних ClusterTrustBundles буде уніфіковано та дедупліковано.
projected.sources.configMap (ConfigMapProjection)
configMap — інформація про дані ConfigMap, які мають бути спроєцьовані
*Адаптує ConfigMap для projected тому
Вміст поля Data цільового ConfigMap буде представлений у projected томі у вигляді файлів, використовуючи ключі у полі даних як назви файлів, якщо елемент items заповнений конкретними зіставленнями ключів зі шляхами. Зверніть увагу, що це ідентично джерелу тому ConfigMap без стандартного режиму.*
projected.sources.configMap.name (string)
Name — назва обʼєкта на який посилаються. Це поле є обов'язковим для заповнення, але для забезпечення зворотної сумісності дозволяється залишати його порожнім. Екземпляри цього типу з порожнім значенням тут майже напевно є помилковими. Додаткова інформація: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
projected.sources.configMap.optional (boolean)
optional — вказує, чи ConfigMap або його ключі мають бути визначені.
Якщо не вказано items, кожна пара ключ-значення у полі Data зазначеного ConfigMap буде перенесена в том як файл, імʼя якого — це ключ, а вміст — значення. Якщо вказано, перераховані ключі будуть перенесені у вказані шляхи, а невказані ключі відсутні. Якщо вказано ключ, якого немає у ConfigMap, налаштування тому завершиться помилкою, якщо він не позначений як необовʼязковий. Шляхи повинні бути відносними та не можуть містити шлях '..' або починатися з '..'.
downwardAPI — інформація про дані downward API, які мають бути спроєцьовані
Представляє інформацію downward API для проєцювання у projected том. Зверніть увагу, що це ідентично джерелу тому downward API без стандартного режиму.
secret – інформація про дані Secret, які мають бути спроєцьовані
*Адаптує Secret для projected тому.
Вміст поля Data цільового Secret буде представлений у projected томі у вигляді файлів, використовуючи ключі у полі Data як назви файлів. Зверніть увагу, що це ідентично джерелу тому Secret без стандартного режиму.*
projected.sources.secret.name (string)
Name — назва обʼєкта на який посилаються. Це поле є обов'язковим для заповнення, але для забезпечення зворотної сумісності дозволяється залишати його порожнім. Екземпляри цього типу з порожнім значенням тут майже напевно є помилковими. Додаткова інформація: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names
projected.sources.secret.optional (boolean)
optional — вказує, чи Secret або його ключі мають бути визначені.
Якщо не вказано items, кожна пара ключ-значення у полі Data зазначеного Secret буде перенесена в том як файл, імʼя якого — це ключ, а вміст — значення. Якщо вказано, перераховані ключі будуть перенесені у вказані шляхи, а невказані ключі відсутні. Якщо вказано ключ, якого немає у Secret, налаштування тому завершиться помилкою, якщо він не позначений як необовʼязковий. Шляхи повинні бути відносними та не можуть містити шлях '..' або починатися з '..'.
serviceAccountToken — інформація про дані serviceAccountToken, які мають бути спроєцьовані
ServiceAccountTokenProjection представляє projected том токена службового облікового запису. Ця проєкція може бути використана для вставки токена службового облікового запису в файлову систему Podʼа для використання з API (сервера API Kubernetes або іншого).
audience — це призначений отримувач токена. Отримувач токена повинен ідентифікувати себе із вказаним ідентифікатором в аудиторії токена або, в іншому випадку, повинен відхилити токен. Стандартно audience — це ідентифікатор apiserver.
expirationSeconds — це запитаний термін дійсності токена службового облікового запису. В міру наближення до закінчення терміну дії токена, втулок томів kubelet буде працювати у режимі проактивної ротації токена службового облікового запису. Kubelet буде спробувати почати ротацію токена, якщо токен старше 80 відсотків його часу життя або якщо токен старше 24 годин. Стандартне значення — 1 година і повинно бути принаймні 10 хвилин.
Представляє порожню теку для Podʼа. Томи порожніх тек підтримують управління власністю та перепризначення міток SELinux.
emptyDir.medium (string)
medium представляє тип носія для зберігання, який повинен підтримувати цю теку. Стандартне значення — "" (порожній рядок), що означає використання стандартного носія вузла. Повинно бути порожнім рядком (стандартно) або "Memory". Додаткова інформація: Посилання на документацію Kubernetes про EmptyDir
sizeLimit — це загальна кількість локальної памʼяті, необхідна для цього тому EmptyDir. Обмеження розміру також застосовується для носія типу "Memory". Максимальне використання на носії типу "Memory" для EmptyDir буде мінімальним значенням між зазначеним тут SizeLimit та сумою обмежень памʼяті всіх контейнерів у Podʼі. Стандартне значення — nil, що означає, що обмеження не визначено. Додаткова інформація: https://kubernetes.io/docs/concepts/storage/volumes#emptydir
hostPath (HostPathVolumeSource)
hostPath представляє попередньо наявний файл або теку на хост-машині, який безпосередньо доступний контейнеру. Це зазвичай використовується для системних агентів або інших привілейованих речей, яким дозволено бачити хост-машину. Більшість контейнерів НЕ потребуватимуть цього. Додаткова інформація: https://kubernetes.io/docs/concepts/storage/volumes#hostpath
Представляє шлях хосту зіставлений з Pod. Томи hostPath не підтримують управління власністю або перевизначення міток SELinux.
Диск AWS EBS повинен існувати перед підключенням до контейнера. Диск також повинен знаходитися в тій же зоні AWS, що і kubelet. Диск AWS EBS може бути змонтований з приавами читання/запис тільки один раз. Томи AWS EBS підтримують управління власністю та перепризначення міток SELinux.*
fsType — це тип файлової системи тому, який ви хочете змонтувати. Порада: Переконайтеся, що тип файлової системи підтримується операційною системою хосту. Приклади: "ext4", "xfs", "ntfs". Якщо не вказано, неявно припускається, що це "ext4". Додаткова інформація: https://kubernetes.io/docs/concepts/storage/volumes#awselasticblockstore
awsElasticBlockStore.partition (int32)
partition — це розділ у томі, який ви хочете змонтувати. Якщо він не вказаний, то стандартно монтується за назвою тому. Приклади: Для тому /dev/sda1 ви вказуєте розділ "1". Аналогічно, розділ тому для /dev/sda є "0" (або ви можете залишити властивість порожньою).
azureDisk представляє монтування Azure Data Disk на хості та привʼязує монтування до Podʼа.
AzureDisk представляє монтування Azure Data Disk на хості та привʼязане монтування до Podʼа.
azureDisk.diskName (string), обовʼязкове
diskName — це імʼя диска даних у blob-сховищі
azureDisk.diskURI (string), обовʼязкове
diskURI — це URI диска даних у blob-сховищі
azureDisk.cachingMode (string)
cachingMode — це режим кешування хосту: None, Read Only, Read Write.
azureDisk.fsType (string)
fsType — це тип файлової системи для монтування. Повинен бути типом файлової системи, підтримуваним операційною системою хосту. Наприклад, "ext4", "xfs", "ntfs". Неявно припускається, що це "ext4", якщо не вказано інше.
azureDisk.kind (string)
Очікувані значення kind: Shared (кілька blob-дисків на один обліковий запис зберігання), Dedicated (один blob-диск на обліковий запис зберігання), Managed (azure managed data disk, тільки в керованому наборі доступності). Стандартне значення — Shared.
azureDisk.readOnly (boolean)
readOnly стандартне значення — false (читання/запис). Значення readOnly тут примусово встановлює налаштування ReadOnly у VolumeMounts.
azureFile (AzureFileVolumeSource)
azureFile представляє монтування служби файлів Azure на хості та привʼязане монтування до Podʼа.
AzureFile представляє монтування служби файлів Azure на хості та привʼязане монтування до Podʼа.
azureFile.secretName (string), обовʼязкове
secretName — це імʼя секрету, що містить імʼя та ключ облікового запису Azure Storage.
azureFile.shareName (string), обовʼязкове
shareName — це імʼя розділу Azure.
azureFile.readOnly (boolean)
readOnly стандартне значення — false (читання/запис). Значення readOnly тут примусово встановлює налаштування ReadOnly у VolumeMounts.
cephfs (CephFSVolumeSource)
cephFS представляє монтування Ceph FS на хості, яке діє впродовж життєвого циклу Podʼа.
Представляє монтування файлової системи Ceph, яке діє впродовж життєвого циклу Podʼа. Томи cephfs не підтримують управління власністю або перепризначення міток SELinux.
Представляє ресурс тому Cinder в Openstack. Том Cinder повинен існувати перед монтуванням до контейнера. Том також повинен знаходитися в тому ж регіоні, що і kubelet. Томи Cinder підтримують управління власністю та перепризначення міток SELinux.
fsType — це тип файлової системи для монтування. Повинен бути типом файлової системи, підтримуваним операційною системою хоста. Приклади: "ext4", "xfs", "ntfs". Неявно припускається, що це "ext4", якщо не вказано інше. Додаткова інформація: https://examples.k8s.io/mysql-cinder-pd/README.md
cinder.readOnly (boolean)
readOnly стандартне значення — false (читання/запис). Значення readOnly тут примусово встановлює налаштування ReadOnly у VolumeMounts. Додаткова інформація: https://examples.k8s.io/mysql-cinder-pd/README.md
secretRef є необовʼязковим: вказує на обʼєкт секрету, що містить параметри, які використовуються для підключення до OpenStack.
csi (CSIVolumeSource)
csi (Container Storage Interface) представляє ефемерне сховище, яке обробляється певними зовнішніми драйверами CSI (бета-функція).
Представляє джерело розташування тому для монтування, керованого зовнішнім драйвером CSI
csi.driver (string), обовʼязкове
driver — це імʼя драйвера CSI, який обробляє цей том. Проконсультуйтеся з адміністратором для отримання правильного імені, зареєстрованого в кластері.
csi.fsType (string)
fsType для монтування. Наприклад, "ext4", "xfs", "ntfs". Якщо не вказано, порожнє значення передається відповідному драйверу CSI, який визначить стандартну файлову систему.
nodePublishSecretRef є посиланням на обʼєкт секрету, що містить конфіденційну інформацію, яку потрібно передати драйверу CSI для завершення викликів CSI NodePublishVolume і NodeUnpublishVolume. Це поле є необовʼязковим і може бути порожнім, якщо секрет не потрібен. Якщо обʼєкт секрету містить більше одного секрету, всі посилання на секрети передаються.
csi.readOnly (boolean)
readOnly вказує на конфігурацію тільки для читання для тому. Стандартне значення — false (читання/запис).
csi.volumeAttributes (map[string]string)
volumeAttributes зберігає властивості, специфічні для драйвера, які передаються драйверу CSI. Проконсультуйтеся з документацією вашого драйвера для підтримуваних значень.
ephemeral (EphemeralVolumeSource)
ephemeral представляє том, який обробляється кластерним драйвером зберігання. Життєвий цикл тому привʼязаний до Podʼа, який його визначає — том буде створено перед запуском Podʼа і видалено після видалення Podʼа.
Використовуйте це, якщо: a) том потрібен лише під час роботи Podʼа, b) потрібні функції звичайних томів, такі як відновлення зі знімка або відстеження ємності, c) драйвер зберігання вказується через клас зберігання, і d) драйвер зберігання підтримує динамічне надання томів через PersistentVolumeClaim (див. EphemeralVolumeSource для отримання додаткової інформації про звʼязок між цим типом тому та PersistentVolumeClaim).
Використовуйте PersistentVolumeClaim або один з API, специфічних для постачальника, для томів, які зберігаються довше, ніж життєвий цикл окремого Podʼа.
Використовуйте CSI для легких локальних ефемерних томів, якщо драйвер CSI призначений для такого використання — див. документацію драйвера для отримання додаткової інформації.
Pod може одночасно використовувати як ефемерні томи, так і постійні томи.
Представляє ефемерний том, який обробляється звичайним драйвером зберігання.
Буде використовуватись для створення окремого PVC для надання тому. Pod, в якому вбудовано цей EphemeralVolumeSource, буде власником PVC, тобто PVC буде видалено разом з Podʼом. Назва PVC буде <pod name>-<volume name>, де <volume name> — це назва з масиву PodSpec.Volumes. Валідація Podʼа відхилить Pod, якщо обʼєднана назва не є дійсною для PVC (наприклад, занадто довга).
Існуючий PVC з такою назвою, який не належить Podʼу, не буде використаний для Podʼа, щоб уникнути випадкового використання неповʼязаного тому. Запуск Podʼа буде заблокований до видалення неповʼязаного PVC. Якщо такий попередньо створений PVC призначений для використання Podʼом, PVC має бути оновлено з посиланням на власника Podʼа після створення Podʼа. Зазвичай це не повинно бути необхідним, але може бути корисним при ручному відновленні зламаного кластера.
Це поле є лише для читання, і Kubernetes не вноситиме змін до PVC після його створення.
Обовʼязкове, не може бути nil.
PersistentVolumeClaimTemplate використовується для створення обʼєктів PersistentVolumeClaim як частини EphemeralVolumeSource.
Специфікація для PersistentVolumeClaim. Весь вміст копіюється без змін у PVC, який створюється з цього шаблону. Ті ж самі поля, що й у PersistentVolumeClaim, також дійсні тут.
Може містити мітки та анотації, які будуть скопійовані у PVC під час його створення. Інші поля не дозволені і будуть відхилені під час валідації.
fc (FCVolumeSource)
fc представляє ресурс Fibre Channel, що підключений до хост-машини kubelet і потім експонується для доступу у Podʼі.
Представляє том Fibre Channel. Томи Fibre Channel можуть монтуватися для запису/читання лише один раз. Томи Fibre Channel підтримують керування власністю та перепризначення міток SELinux.
fc.fsType (string)
fsType — це тип файлової системи для монтування. Має бути типом файлової системи, який підтримується операційною системою хоста. Наприклад, "ext4", "xfs", "ntfs". Неявно вважається "ext4", якщо не вказано інше.
fc.lun (int32)
lun є необовʼязковим: Номер LUN (логічної одиниці) цілі FC
fc.readOnly (boolean)
readOnly є необовʼязковим: Стандартне значення — false (читання/запис). Значення ReadOnly тут примусово встановить параметр ReadOnly у VolumeMounts.
fc.targetWWNs ([]string)
Atomic: буде замінено під час злиття
targetWWNs є необовʼязковими: FC звертається до всесвітніх імен (WWNs)
fc.wwids ([]string)
Atomic: буде замінено під час злиття
wwids є необовʼязковими: Всесвітні ідентифікатори томів FC (wwids). Або wwids, або комбінація targetWWNs і lun повинні бути встановлені, але не обидва одночасно.
flexVolume (FlexVolumeSource)
flexVolume представляє загальний ресурс тома, що створюється/підключається за допомогою втулка на основі exec.
FlexVolume представляє загальний ресурс тома, що створюється/підключається за допомогою втулка на основі exec.
flexVolume.driver (string), обовʼязково
driver — це назва драйвера, який використовується для цього тома.
flexVolume.fsType (string)
fsType — це тип файлової системи для монтування. Має бути тип файлової системи, який підтримується операційною системою хоста. Наприклад, "ext4", "xfs", "ntfs". Стандартний тип файлової системи залежить від скрипта FlexVolume.
flexVolume.options (map[string]string)
options є необовʼязковим: це поле містить додаткові командні параметри, якщо такі є.
flexVolume.readOnly (boolean)
readOnly є необовʼязковим: Стандартне значення — false (читання/запис). Значення ReadOnly тут примусово встановить параметр ReadOnly у VolumeMounts.
secretRef є необовʼязковим: secretRef — це посилання на обʼєкт секрету, що містить конфіденційну інформацію для передачі у скрипти втулка. Воно може бути порожнім, якщо обʼєкт секрету не вказаний. Якщо обʼєкт секрету містить більше одного секрету, всі секрети передаються у скрипти втулка.
flocker (FlockerVolumeSource)
flocker представляє том Flocker, приєднаний до хост-машини kubelet. Залежить від роботи служби управління Flocker.
Представляє том Flocker, змонтований агентом Flocker. Повинно бути встановлено тільки щось одне з datasetName і datasetUUID. Томи Flocker не підтримують керування власністю або перепризначення міток SELinux.
flocker.datasetName (string)
datasetName — це назва набору даних, збереженого як метадані -> name на наборі даних для Flocker слід вважати застарілим
flocker.datasetUUID (string)
datasetUUID — це UUID набору даних. Це унікальний ідентифікатор набору даних Flocker.
*Представляє ресурс постійного диска в Google Compute Engine.
Для монтування до контейнера повинен існувати диск GCE PD. Диск також повинен знаходитися в тому ж проєкті GCE та зоні, що й kubelet. Диск GCE PD може бути змонтований лише один раз для читання/запису або багато разів для читання. Диски GCE PD підтримують керування власністю та перепризначення міток SELinux.*
fsType — тип файлової системи тома, який ви хочете змонтувати. Порада: Переконайтеся, що тип файлової системи підтримується операційною системою хоста. Приклади: "ext4", "xfs", "ntfs". Неявно вважається "ext4", якщо не вказано інше. Додаткова інформація: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
gcePersistentDisk.partition (int32)
partition — це розділ у томі, який ви хочете змонтувати. Якщо пропущено, стандартно монтується за імʼям тома. Приклади: Для тому /dev/sda1 ви вказуєте розділ як "1". Так само, розділ тому для /dev/sda — "0" (або ви можете залишити властивість порожньою). Додаткова інформація: https://kubernetes.io/docs/concepts/storage/volumes#gcepersistentdisk
Представляє монтування Glusterfs, яке діє впрожовж життєвого циклу Podʼа. Томи Glusterfs не підтримують керування власністю або перепризначення міток SELinux.
iscsi представляє ресурс диска ISCSI, який приєднаний до хост-машини kubelet і потім експонується для доступу у Podʼі. Додаткова інформація: https://examples.k8s.io/volumes/iscsi/README.md
Представляє диск ISCSI. Томи ISCSI можуть бути змонтовані лише один раз для читання/запису. Томи ISCSI підтримують керування власністю та перепризначення міток SELinux.
iscsi.iqn (string), обовʼязково
iqn — це цільове Імʼя ISCSI Qualified Name.
iscsi.lun (int32), обовʼязково
lun представляє номер цільового LUN (логічної одиниці) ISCSI.
iscsi.targetPortal (string), обовʼязково
targetPortal — це цільовий портал ISCSI. Портал — це IP або ip_addr:порт, якщо порт відмінний від типового (зазвичай TCP-порти 860 і 3260).
iscsi.chapAuthDiscovery (boolean)
chapAuthDiscovery визначає, чи підтримується автентифікація CHAP для виявлення ISCSI
iscsi.chapAuthSession (boolean)
chapAuthSession визначає, чи підтримується сесійна автентифікація CHAP для ISCSI
iscsi.fsType (string)
fsType — це тип файлової системи тома, який ви хочете змонтувати. Порада: Переконайтеся, що тип файлової системи підтримується операційною системою хоста. Приклади: "ext4", "xfs", "ntfs". Неявно вважається "ext4", якщо не вказано інше. Додаткова інформація: https://kubernetes.io/docs/concepts/storage/volumes#iscsi
iscsi.initiatorName (string)
initiatorName — це власне Імʼя Ініціатора ISCSI. Якщо initiatorName вказаний одночасно з iscsiInterface, буде створено новий інтерфейс ISCSI <цільовий портал>:<імʼя тома> для підключення.
iscsi.iscsiInterface (string)
iscsiInterface — це імʼя інтерфейсу, який використовує транспорт ISCSI. Стандартне значення — 'default' (tcp).
iscsi.portals ([]string)
Atomic: буде замінено під час злиття
portals — це список цільових порталів ISCSI. Портал — це IP або ip_addr:порт, якщо порт відмінний від типового (зазвичай TCP-порти 860 і 3260).
iscsi.readOnly (boolean)
readOnly тут примусово встановить параметр ReadOnly у VolumeMounts. Стандартне значення — false.
secretRef — це Секрет CHAP для автентифікації цілі та ініціатора ISCSI.
image (ImageVolumeSource)
image представляє обʼєкт OCI (образ контейнерна або артефакт), який завантажується та монтується на хост-машині kubelet. Том призначається під час запуску Podʼа в залежності від значення PullPolicy:
Always: kubelet завжди намагається завантажити посилання. Створення контейнера завершиться невдачею, якщо завантаження не вдасться.
Never: kubelet ніколи не завантажує посилання і використовує лише локальний образ або артефакт. Створення контейнера завершиться невдачею, якщо посилання немає.
IfNotPresent: kubelet завантажує посилання, якщо воно вже не присутнє на диску. Створення контейнера завершиться невдачею, якщо посилання немає, а завантаження не вдасться.
Том буде перепризначатись, якщо pod буде видалено перестворено, що означає, що новий віддалений контент стане доступним при перестворенні Podʼа. Невдача при визначенні або завантаженні образу під час запуску Podʼа блокуватиме запуск контейнерів і може додати значну затримку. У разі невдачі будуть виконані повторні спроби за допомогою стандартного часу зворотнього відліку для томів і про них буде повідомлено у полі reason і message Podʼа.
Типи обʼєктів, які можуть бути змонтовані цим томом, визначаються реалізацією серодовища виконання контейнерів на хост-машині і, як мінімум, повинні включати всі дійсні типи, підтримувані полем image контейнера. Обʼєкт OCI монтується в одну теку (spec.containers[*].volumeMounts.mountPath), обʼєднуючи шари маніфесту так само, як і для образів контейнерів. Том буде змонтований тільки для читання (ro) та міститиме файли, які не можна виконувати (noexec). Монтування субшляхів для контейнерів не підтримуються (spec.containers[*].volumeMounts.subpath). Поле spec.securityContext.fsGroupChangePolicy не впливає на цей тип тому.
ImageVolumeSource представляє ресурс тома image.
image.pullPolicy (string)
Політика завантаження OCI об\єктів. Можливі значення:
Always: kubelet завжди намагається завантажити посилання. Створення контейнера завершиться невдачею, якщо завантаження не вдасться.
Never: kubelet ніколи не завантажує посилання і використовує лише локальний образ або артефакт. Створення контейнера завершиться невдачею, якщо посилання немає.
IfNotPresent: kubelet завантажує посилання, якщо воно вже не присутнє на диску. Створення контейнера завершиться невдачею, якщо посилання немає, а завантаження не вдасться.
Стандартно використовується значення Always, якщо вказано тег :latest, або IfNotPresent в інших випадках.
image.reference (string)
Обовʼязково: Посилання на образ або артефакт, що буде використовуватися. Працює так само, як і поле pod.spec.containers[*].image. Секрети для завантаження (pull secrets) будуть зібрані так само, як і для образу контейнера, за допомогою пошуку облікових даних вузла, секретів для завантаження образів у Service Account та секретів для завантаження образів у специфікації podʼа. Більше інформації: https://kubernetes.io/docs/concepts/containers/images.
Це поле є необовʼязковим, щоб дозволити вищим рівням керування конфігурацією використовувати стандартне значення або перевизначати образи контейнерів у контролерах робочих навантажень, таких як Deployments та StatefulSets.
photonPersistentDisk представляє постійний диск PhotonController, приєднаний та змонтований на хост-машині kubelets.
Представляє ресурс постійного диска Photon Controller.
photonPersistentDisk.pdID (string), обовʼязково
pdID — це ідентифікатор, який ідентифікує постійний диск Photon Controller.
photonPersistentDisk.fsType (string)
fsType — це тип файлової системи для монтування. Має бути тип файлової системи, який підтримується операційною системою хоста. Наприклад, "ext4", "xfs", "ntfs". Неявно вважається "ext4", якщо не вказано інше.
portworxVolume (PortworxVolumeSource)
portworxVolume представляє том Portworx, приєднаний та змонтований на хост-машині kubelets.
PortworxVolumeSource представляє ресурс тома Portworx.
portworxVolume.volumeID (string), обовʼязково
volumeID унікально ідентифікує том Portworx.
portworxVolume.fsType (string)
fsType представляє тип файлової системи для монтування. Має бути тип файлової системи, який підтримується операційною системою хоста. Наприклад, "ext4", "xfs". Неявно вважається "ext4", якщо не вказано інше.
portworxVolume.readOnly (boolean)
readOnly стандартне значення — false (читання/запис). Встановлення readOnly тут примусить встановити параметр ReadOnly у VolumeMounts.
quobyte (QuobyteVolumeSource)
quobyte представляє монтування Quobyte на хості, яке діє впродовж життєвого циклу Podʼа.
Представляє монтування Quobyte, яке діє впродовж життєвого циклу Podʼа. Томи Quobyte не підтримують керування власністю або перепризначення міток SELinux.
quobyte.registry (string), обовʼязково
registry представляє один або кілька служб реєстру Quobyte, вказаних як рядок у вигляді пари host:port (декілька записів розділяються комами), який діє як центральний реєстр для томів.
quobyte.volume (string), обовʼязково
volume — це рядок, який посилається на вже створений том Quobyte за імʼям.
quobyte.group (string)
group — група для відображення доступу до тома. Стандартне знечення — без групи.
quobyte.readOnly (boolean)
readOnly тут примусово змусить монтування тома Quobyte з правами тільки на читання. Стандартне значення — false.
quobyte.tenant (string)
tenant, який володіє вказаним томом Quobyte в Backend. Використовується з динамічно створюваними томами Quobyte, значення встановлюється втулком.
quobyte.user (string)
user — користувач для зіставлення (map) доступу до тома. Стандартне знечення — користувач serivceaccount.
Представляє монтування блочного пристрою Rados, яке діє впродовж життєвого циклу Podʼа. Томи RBD підтримують керування власністю та перепризначення міток SELinux.
fsType — це тип файлової системи тома, який ви хочете змонтувати. Порада: Переконайтеся, що тип файлової системи підтримується операційною системою хоста. Приклади: "ext4", "xfs", "ntfs". Неявно вважається "ext4", якщо не вказано інше. Додаткова інформація: https://kubernetes.io/docs/concepts/storage/volumes#rbd
rbd.keyring (string)
keyring — це шлях до вʼязки ключів користувача RBDUser. Стандартне значення — /etc/ceph/keyring. Додаткова інформація: htts://examples.k8s.io/volumes/rbd/README.md#how-to-use-it
secretRef посилається на секрет для користувача ScaleIO та іншої конфіденційної інформації. Якщо це не надано, операція входу не вдасться.
scaleIO.system (string), обовʼязково
system — це імʼя системи зберігання, налаштоване в ScaleIO.
scaleIO.fsType (string)
fsType — це тип файлової системи для монтування. Має бути тип файлової системи, який підтримується операційною системою хоста. Наприклад, "ext4", "xfs", "ntfs". Стандартне значення — "xfs".
scaleIO.protectionDomain (string)
protectionDomain — це імʼя ScaleIO Protection Domain для налаштованого зберігання.
scaleIO.readOnly (boolean)
readOnly стандартне значення — false (читання/запис). Встановлення readOnly тут примусить встановити параметр ReadOnly у VolumeMounts.
scaleIO.sslEnabled (boolean)
sslEnabled — прапорець, що ввімкнує/вимикає SSL-звʼязок з шлюзом, станддартне значення — false
scaleIO.storageMode (string)
storageMode вказує, чи повинно бути зберігання для тому ThickProvisioned чи ThinProvisioned. Стандартне значення — ThinProvisioned.
scaleIO.storagePool (string)
storagePool — це пул зберігання ScaleIO, повʼязаний з доменом захисту.
scaleIO.volumeName (string)
volumeName — це імʼя тому, вже створеного в системі ScaleIO, який повʼязаний з цим джерелом тому.
storageos (StorageOSVolumeSource)
storageos представляє том StorageOS, приєднаний та змонтований на вузлах Kubernetes.
Представляє постійний ресурс тому StorageOS.
storageos.fsType (string)
fsType — це тип файлової системи для монтування. Має бути тип файлової системи, який підтримується операційною системою хоста. Наприклад, "ext4", "xfs", "ntfs". Неявно вважається "ext4", якщо не вказано інше.
storageos.readOnly (boolean)
readOnly стандартне значення — false (читання/запис). Встановлення readOnly тут примусить встановити параметр ReadOnly у VolumeMounts.
secretRef вказує секрет для отримання облікових даних API StorageOS. Якщо не вказано, будуть спробовані стандартні значення.
storageos.volumeName (string)
volumeName — це людино-читане імʼя тому StorageOS. Імена томів є унікальними лише в межах простору імен.
storageos.volumeNamespace (string)
volumeNamespace вказує том простору імен в межах StorageOS. Якщо простір імен не вказано, тоді буде використано простір імен Pod. Це дозволяє дублювати простори імен Kubernetes у StorageOS для більш тісної інтеграції. Встановіть VolumeName на будь-яке імʼя для заміни стандартної поведінки. Встановіть на "default", якщо ви не використовуєте простори імен у StorageOS. Простори імен, які не існують заздалегідь у StorageOS, будуть створені.
vsphereVolume (VsphereVirtualDiskVolumeSource)
vsphereVolume представляє том vSphere, приєднаний та змонтований на вузлах kubelet.
Представляє ресурс тому vSphere.
vsphereVolume.volumePath (string), обовʼязково
volumePath — це шлях, який ідентифікує том vmdk vSphere.
vsphereVolume.fsType (string)
fsType — це тип файлової системи для монтування. Має бути тип файлової системи, який підтримується операційною системою хоста. Наприклад, "ext4", "xfs", "ntfs". Неявно вважається "ext4", якщо не вказано інше.
vsphereVolume.storagePolicyID (string)
storagePolicyID — це ідентифікатор профілю управління політикою зберігання (SPBM), повʼязаний з іменем StoragePolicyName.
vsphereVolume.storagePolicyName (string)
storagePolicyName — це імʼя профілю управління політикою зберігання (SPBM).
Застаріле
gitRepo (GitRepoVolumeSource)
gitRepo представляє репозиторій git на певному рівні ревізії. Застаріло: GitRepo застаріло. Для створення контейнера з репозиторієм git підключіть EmptyDir до InitContainer, який клонує репо за допомогою git, а потім підключіть EmptyDir до контейнера Pod.
*Представляє том, який заповнений вмістом репозиторію git. Томи репозиторію git не підтримують управління власниками. Томи репозиторію git підтримують перепризначення міток SELinux.
Застаріло: GitRepo застаріло. Для створення контейнера з репозиторієм git підключіть EmptyDir до InitContainer, який клонує репо за допомогою git, а потім підключіть EmptyDir до контейнера Pod.*
gitRepo.repository (string), обовʼязково
repository — це URL
gitRepo.directory (string)
directory — це назва цільової теки. Не повинен містити або починатися з '..'. Якщо '.' надано, тека тому буде репозиторієм git. В іншому випадку, якщо вказано, том буде містити репозиторій git у підтеці з вказаною назвою.
gitRepo.revision (string)
revision — це хеш коміту для вказаної ревізії.
DownwardAPIVolumeFile
DownwardAPIVolumeFile представляє інформацію для створення файлу, що містить поле pod.
path (string), обовʼязково
Обовʼязково: path — це відносний шлях до файлу, який буде створено. Не повинен бути абсолютним або містити шлях "..". Має бути закодований у кодуванні utf-8. Перший елемент відносного шляху не повинен починатися з "..".
Обовʼязково: Вибирає поле pod: підтримуються лише анотації, мітки, імʼя, uid та простір імен.
mode (int32)
Опціонально: біти режиму, які використовуються для встановлення дозволів на цей файл, повинні бути вісімковим значенням від 0000 до 0777 або десятковим значенням від 0 до 511. У YAML приймаються як вісімкові, так і десяткові значення, у JSON потрібні десяткові значення для бітів режиму. Якщо не вказано, буде використано стандартне значення для тому. Це може конфліктувати з іншими параметрами, що впливають на режим файлу, наприклад, fsGroup, і результат може бути іншим набором бітів режиму.
Вибирає ресурс контейнера: наразі підтримуються лише обмеження та запити ресурсів (limits.cpu, limits.memory, requests.cpu та requests.memory).
KeyToPath
Зіставляє ключ зі шляхом в томі.
key (string), обовʼязково
key — це ключ, який потрібно проєцювати.
path (string), обовʼязково
path — це відносний шлях файлу, який слід прикріпити до ключа. Не може бути абсолютним шляхом. Не може містити елемента шляху '..'. Не може починатися з рядка '..'.
mode (int32)
mode — опціонально: біти режиму, які використовуються для встановлення дозволів на цей файл. Має бути вісімковим значенням між 0000 та 0777 або десятковим значенням між 0 та 511. У YAML приймаються як вісімкові, так і десяткові значення, у JSON для бітів режиму потрібні десяткові значення. Якщо не вказано, буде використано стнадартне значення для тому. Це може конфліктувати з іншими параметрами, що впливають на режим файлу, такими як fsGroup, і результат може бути іншим набором бітів режиму.
5.3.11 - VolumeAttachment
VolumeAttachment фіксує намір приєднати або відʼєднати вказаний том до/від вказаного вузла.
apiVersion: storage.k8s.io/v1
import "k8s.io/api/storage/v1"
VolumeAttachment
VolumeAttachment фіксує намір приєднати або відʼєднати вказаний том до/від вказаного вузла.
Обʼєкти VolumeAttachment не належать до просторів імен.
status представляє статус запиту VolumeAttachment. Заповнюється сутністю, що завершує операцію приєднання або відʼєднання, тобто external-attacher.
VolumeAttachmentSpec
VolumeAttachmentSpec — це специфікація запиту на приєднання тому.
attacher (string), обовʼязково
attacher вказує назву драйвера тому, який МАЄ обробити цей запит. Це назва, яку повертає GetPluginName().
nodeName (string), обовʼязково
nodeName представляє вузол, до якого повинен бути приєднаний том.
source (VolumeAttachmentSource), обовʼязково
source представляє том, який повинен бути приєднаний.
VolumeAttachmentSource представляє том, який повинен бути приєднаний. Зараз лише PersistenVolumes можуть бути приєднані за допомогою зовнішнього attacherʼa, у майбутньому ми можемо дозволити також inline томи в Podʼах. Може бути встановлений лише один елемент.
inlineVolumeSpec містить всю необхідну інформацію для приєднання persistent volume, визначеного VolumeSource Podʼа. Це поле заповнюється лише для функції CSIMigration. Воно містить перетворені поля з VolumeSource Podʼа до PersistentVolumeSpec. Це поле є на рівні beta і враховується лише серверами, які включили функцію CSIMigration.
source.persistentVolumeName (string)
persistentVolumeName представляє імʼя persistent volume для приєднання.
VolumeAttachmentStatus
VolumeAttachmentStatus — це статус запиту на приєднання тому.
attached (boolean), обовʼязково
attached вказує, що том успішно приєднаний. Це поле має бути встановлено лише сутністю, яка завершує операцію приєднання, тобто external-attacher.
attachError (VolumeError)
attachError представляє останню помилку, яка виникла під час операції приєднання, якщо така була. Це поле має бути встановлено лише сутністю, яка завершує операцію приєднання, тобто external-attacher.
VolumeError фіксує помилку, яка виникла під час операції з томом.
attachError.message (string)
message представляє помилку, яка виникла під час операції приєднання або відʼєднання. Цей рядок може бути доданий в лог, тож він не повинен містити конфіденційної інформації.
attachError.time (Time)
time представляє час, коли сталася помилка.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
attachmentMetadata (map[string]string)
attachmentMetadata заповнюється будь-якою інформацією, яка повертається під час успішної операції приєднання і яка повинна бути передана в наступні виклики WaitForAttach або Mount. Це поле має бути встановлено лише сутністю, яка завершує операцію приєднання, тобто external-attacher.
detachError (VolumeError)
detachError представляє останню помилку, яка виникла під час операції відʼєднання, якщо така була. Це поле має бути встановлено лише сутністю, яка завершує операцію відʼєднання, тобто external-attacher.
VolumeError фіксує помилку, яка виникла під час операції з томом.
detachError.message (string)
message представляє помилку, яка виникла під час операції приєднання або відʼєднання. Цей рядок може бути доданий в лог, тож він не повинен містити конфіденційної інформації.
detachError.time (Time)
time представляє час, коли сталася помилка.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
VolumeAttachmentList
VolumeAttachmentList — це колекція обʼєктів VolumeAttachment.
VolumeAttributesClass представляє специфікацію змінних атрибутів тома, визначених драйвером CSI.
apiVersion: storage.k8s.io/v1beta1
import "k8s.io/api/storage/v1beta1"
VolumeAttributesClass
VolumeAttributesClass представляє специфікацію змінних атрибутів тома, визначених драйвером CSI. Клас можна вказати під час динамічного резервування PersistentVolumeClaims і змінити у специфікації PersistentVolumeClaim після резервування.
automountServiceAccountToken вказує, чи повинні Podʼи, які працюють від імені цього службового облікового запису, автоматично мати змонтований API токен. Може бути перевизначено на рівні Podʼа.
imagePullSecrets — це список посилань на Sercretʼи в тому ж просторі імен для використання при завантаженні будь-яких образів у Podʼах, які використовують цей службовий обліковий запис. ImagePullSecrets відрізняються від Secrets тим, що Secrets можуть бути змонтовані в Pod, а ImagePullSecrets доступні лише для kubelet. Докладніше: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod
Map: унікальні значення ключа name будуть збережені під час злиття
secrets — це список секретів у тому ж просторі імен, які Podʼи, що використовують цей службовий обліковий запис, можуть використовувати. Podʼи обмежуються цим списком лише у випадку, якщо цей службовий обліковий запис має анотацію "kubernetes.io/enforce-mountable-secrets" зі значенням "true". Це поле не слід використовувати для пошуку автоматично створених секретів токенів службових облікових записів для використання поза межами Podʼів. Натомість токени можна запитувати безпосередньо за допомогою API TokenRequest або секрети токенів службових облікових записів можна створювати вручну. Докладніше: https://kubernetes.io/docs/concepts/configuration/secret
ServiceAccountList
ServiceAccountList — це список обʼєктів ServiceAccount.
Status заповнюється сервером і вказує, чи може токен бути автентифікований.
TokenRequestSpec
TokenRequestSpec містить параметри запиту токена, надані клієнтом.
audiences ([]string), обовʼязково
Atomic: буде замінено під час злиття
Audiences — це цільові аудиторії токена. Отримувач токена повинен ідентифікувати себе за допомогою ідентифікатора зі списку аудиторій токена, інакше він повинен відхилити токен. Токен, виданий для кількох аудиторій, може бути використаний для автентифікації з будь-якою з вказаних аудиторій, що передбачає високий ступінь довіри між цільовими аудиторіями.
boundObjectRef (BoundObjectReference)
BoundObjectRef — це посилання на обʼєкт, до якого буде привʼязано токен. Токен буде дійсний лише до тих пір, поки існує привʼязаний обʼєкт. ПРИМІТКА: Точка доступу TokenReview сервера API перевірить BoundObjectRef, але інші аудиторії можуть цього не робити. Тримайте ExpirationSeconds маленьким, якщо ви хочете швидке відкликання.
BoundObjectReference — це посилання на обʼєкт, до якого привʼязано токен.
boundObjectRef.apiVersion (string)
Версія API посилання.
boundObjectRef.kind (string)
Тип посилання. Дійсними типами є 'Pod' та 'Secret'.
boundObjectRef.name (string)
Імʼя посилання.
boundObjectRef.uid (string)
UID посилання.
expirationSeconds (int64)
ExpirationSeconds — це запитувана тривалість дії запиту. Видавець токенів може повернути токен з іншою тривалістю дії, тому клієнт повинен перевірити поле 'expiration' у відповіді.
TokenRequestStatus
TokenRequestStatus — це результат запиту на отримання токена.
expirationTimestamp (Time), обовʼязково
ExpirationTimestamp — це час закінчення дії виданого токена.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
token (string), обовʼязково
Token — це непрозорий токен на предʼявника.
Операції
create створення токена ServiceAccount
HTTP запит
POST /api/v1/namespaces/{namespace}/serviceaccounts/{name}/token
TokenReview намагається автентифікувати токен вже відомому користувачу.
apiVersion: authentication.k8s.io/v1
import "k8s.io/api/authentication/v1"
TokenReview
TokenReview намагається автентифікувати токен вже відомому користувачу. Примітка: запити TokenReview можуть кешуватися dnekrjv автентифікації вебхука в kube-apiserver.
Status заповнюється сервером і вказує, чи можна автентифікувати запит.
TokenReviewSpec
TokenReviewSpec є описом запиту автентифікації токена.
audiences ([]string)
Atomic: буде замінено під час злиття
Audiences — це список ідентифікаторів, які сервер ресурсів, представлений токеном, розпізнає як. Автентифікатори токенів, що володіють інформацією про аудиторію, перевірять, що токен був призначений принаймні для однієї з аудиторій у цьому списку. Якщо аудиторії не надані, типово використовується аудиторія Kubernetes apiserver.
token (string)
Token — це непрозорий токен на предʼявника.
TokenReviewStatus
TokenReviewStatus — це результат запиту автентифікації токена.
audiences ([]string)
Atomic: буде замінено під час злиття
Audiences — це ідентифікатори аудиторії, обрані автентифікатором, які сумісні як з TokenReview, так і з токеном. Ідентифікатор є будь-яким ідентифікатором у перетині аудиторій TokenReviewSpec та аудиторій токена. Клієнт TokenReview API, який встановлює поле spec.audiences, повинен перевірити, що сумісний ідентифікатор аудиторії повертається в полі status.audiences, щоб переконатися, що сервер TokenReview враховує аудиторію. Якщо TokenReview повертає порожнє поле status.audience, де status.authenticated є "true", токен дійсний для аудиторії Kubernetes API server.
authenticated (boolean)
Authenticated вказує, що токен був повʼязаний з відомим користувачем.
error (string)
Error вказує, що токен не вдалося перевірити
user (UserInfo)
User — це UserInfo, повʼязаний із наданим токеном.
UserInfo містить інформацію про користувача, необхідну для реалізації інтерфейсу user.Info.
Унікальне значення, яке ідентифікує цього користувача з плином часу. Якщо цього користувача видаляють і додають іншого користувача з тим же імʼям, вони матимуть різні UID.
user.username (string)
Імʼя, яке унікально ідентифікує цього користувача серед усіх активних користувачів.
Обʼєкти CertificateSigningRequest надають механізм для отримання сертифікатів x509 шляхом подання запиту на підписання сертифіката та його асинхронного схвалення і видачі.
apiVersion: certificates.k8s.io/v1
import "k8s.io/api/certificates/v1"
CertificateSigningRequest
Обʼєкти CertificateSigningRequest надають механізм для отримання сертифікатів x509 шляхом подання запиту на підписання сертифіката та його асинхронного схвалення і видачі.
Kubelets використовують цей API для отримання:
клієнтських сертифікатів для автентифікації до kube-apiserver (з використанням signerName "kubernetes.io/kube-apiserver-client-kubelet").
серверних сертифікатів для TLS-точок доступу, до яких kube-apiserver може підключатися безпечно (з використанням signerName "kubernetes.io/kubelet-serving").
Цей API може бути використаний для запиту клієнтських сертифікатів для автентифікації до kube-apiserver (з використанням signerName "kubernetes.io/kube-apiserver-client") або для отримання сертифікатів від нестандартних підписувачів, що не належать до Kubernetes.
spec містить запит на сертифікат і є незмінним після створення. Тільки поля request, signerName, expirationSeconds та usages можуть бути встановлені під час створення. Інші поля визначаються Kubernetes і не можуть бути змінені користувачами.
status містить інформацію про те, чи запит схвалено або відхилено, а також сертифікат, виданий підписувачем, або умови збою, які вказують на збій підписувача.
CertificateSigningRequestSpec
CertificateSigningRequestSpec містить запит на сертифікат.
request ([]byte), обовʼязково
Atomic: буде замінено під час злиття
request містить x509 запит на підписання сертифіката, закодований у блоці PEM "CERTIFICATE REQUEST". При серіалізації у форматі JSON або YAML дані додатково кодуються в base64.
signerName (string), обовʼязково
signerName вказує на запитуваного підписувача і є кваліфікованим імʼям.
Запити List/watch для CertificateSigningRequests можуть фільтруватися за цим полем з використанням fieldSelector "spec.signerName=NAME".
Добре відомі підписувачі Kubernetes:
"kubernetes.io/kube-apiserver-client": видає клієнтські сертифікати, які можна використовувати для автентифікації до kube-apiserver. Запити для цього підписувача ніколи не затверджуються автоматично kube-controller-manager, можуть бути видані контролером "csrsigning" у kube-controller-manager.
"kubernetes.io/kube-apiserver-client-kubelet": видає клієнтські сертифікати, які kubelets використовують для автентифікації до kube-apiserver. Запити для цього підписувача можуть бути автоматично затверджені контролером "csrapproving" у kube-controller-manager і можуть бути видані контролером "csrsigning" у kube-controller-manager.
"kubernetes.io/kubelet-serving": видає серверні сертифікати, які kubelets використовують для обслуговування TLS-точок доступу, до яких kube-apiserver може підключатися безпечно. Запити для цього підписувача ніколи не затверджуються автоматично kube-controller-manager і можуть бути видані контролером "csrsigning" у kube-controller-manager.
Можуть також бути вказані нестандартні signerNames. Підписувач визначає:
Розповсюдження довіри: як розповсюджуються довірчі пакети (CA bundles).
Дозволені субʼєкти: та поведінка, коли запитується недозволений субʼєкт.
Обовʼязкові, дозволені або заборонені розширення x509 у запиті (включаючи те, чи дозволені subjectAltNames, які типи, обмеження на дозволені значення) та поведінка при запиті недозволеного розширення.
Обовʼязкові, дозволені або заборонені ключові використання / розширені ключові використання.
Термін дії сертифіката: чи він фіксований підписувачем, налаштовується адміністратором.
Чи дозволені запити на сертифікати CA.
expirationSeconds (int32)
expirationSeconds — це запитувана тривалість дії виданого сертифіката. Підписувач сертифіката може видати сертифікат з іншою тривалістю дії, тому клієнт повинен перевірити різницю між полями notBefore і notAfter у виданому сертифікаті, щоб визначити фактичну тривалість.
Реалізації v1.22+ вбудованих підписувачів Kubernetes дотримуватимуться цього поля, якщо запитувана тривалість не перевищує максимальну тривалість, яку вони дозволяють відповідно до прапорця CLI --cluster-signing-duration для контролера Kubernetes.
Підписувачі сертифікатів можуть не дотримуватися цього поля з різних причин:
Старий підписувач, який не знає про це поле (наприклад, вбудовані реалізації до v1.22)
Підписувач, чия налаштована максимальна тривалість коротша за запитувану тривалість
Підписувач, чия налаштована мінімальна тривалість довша за запитувану тривалість
Мінімальне дійсне значення для expirationSeconds — 600, тобто 10 хвилин.
extra (map[string][]string)
extra містить додаткові атрибути користувача, який створив CertificateSigningRequest. Заповнюється API-сервером при створенні та є незмінним.
groups ([]string)
Atomic: буде замінено під час злиття
groups містить членство в групах користувача, який створив CertificateSigningRequest. Заповнюється API-сервером при створенні та є незмінним.
uid (string)
uid містить uid користувача, який створив CertificateSigningRequest. Заповнюється API-сервером при створенні та є незмінним.
usages ([]string)
Atomic: буде замінено під час злиття
usages вказує набір запитуваних використань ключів у виданому сертифікаті.
Запити на TLS клієнтські сертифікати зазвичай запитують: "digital signature", "key encipherment", "client auth".
Запити на TLS серверні сертифікати зазвичай запитують: "key encipherment", "digital signature", "server auth".
username містить імʼя користувача, який створив CertificateSigningRequest. Заповнюється API-сервером при створенні та є незмінним.
CertificateSigningRequestStatus
CertificateSigningRequestStatus містить умови, що використовуються для позначення статусу запиту (схвалено/відхилено/не вдалося), та виданий сертифікат.
certificate ([]byte)
Atomic: буде замінено під час злиття
certificate заповнюється виданим сертифікатом підписувача після наявності умови "Approved". Це поле встановлюється через субресурс /status. Після заповнення це поле є незмінним.
Якщо запит на підписання сертифіката відхилено, додається умова типу "Denied", і це поле залишається порожнім. Якщо підписувач не може видати сертифікат, додається умова типу "Failed", і це поле залишається порожнім.
Вимоги до валідації:
certificate повинно містити один або більше PEM блоків.
Усі PEM блоки повинні мати мітку "CERTIFICATE", не містити заголовків, а закодовані дані повинні бути структурою сертифіката BER-кодованого ASN.1, як описано в розділі 4 RFC5280.
Не-PEM вміст може зʼявлятися до або після блоків PEM "CERTIFICATE" і не перевіряється, щоб дозволити пояснювальний текст, як описано в розділі 5.2 RFC7468.
Якщо в наявності більше одного блоку PEM, і визначення запитуваного spec.signerName не вказує інше, перший блок є виданим сертифікатом, а наступні блоки слід розглядати як проміжні сертифікати та представлятись під час TLS-handshake.
Сертифікат закодований у форматі PEM.
При серіалізації у форматі JSON або YAML дані додатково кодуються в base64, тому вони складаються з:
Map: унікальні значення за ключем типу зберігатимуться під час злиття
conditions, застосовані до запиту. Відомі стани: "Approved", "Denied" та "Failed".
CertificateSigningRequestCondition описує стан обʼєкта CertificateSigningRequest
conditions.status (string), обовʼязково
статус стану, одне з True, False, Unknown. Стани "Approved", "Denied" та "Failed" не можуть бути "False" або "Unknown".
conditions.type (string), обовʼязково
тип стану. Відомі стани: "Approved", "Denied" та "Failed".
Стан "Approved" додається через субресурс /approval, що вказує на те, що запит було схвалено і сертифікат повинен бути виданий підписувачем.
Стан "Denied" додається через субресурс /approval, що вказує на те, що запит було відхилено і сертифікат не повинен бути виданий підписувачем.
Стан "Failed" додається через субресурс /status, що вказує на те, що підписувачу не вдалося видати сертифікат.
Стан "Approved" та "Denied" є взаємозаперечними. Стани "Approved", "Denied" та "Failed" не можуть бути видалені після додавання.
Дозволено лише один стан певного типу.
conditions.lastTransitionTime (Time)
lastTransitionTime - це час останньої зміни стану з одного статусу до іншого. Якщо не встановлено, коли додається новий тип стану або змінюється статус поточного стану, сервер стандартно встановлює цей час на поточний.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.lastUpdateTime (Time)
lastUpdateTime — це час останнього оновлення цього стану.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
message містить зрозуміле для людини повідомлення з деталями про стан запиту.
conditions.reason (string)
reason вказує коротку причину стану запиту.
CertificateSigningRequestList
CertificateSigningRequestList — це колекція обʼєктів CertificateSigningRequest.
ClusterTrustBundle — це кластерний контейнер для X.
apiVersion: certificates.k8s.io/v1alpha1
import "k8s.io/api/certificates/v1alpha1"
ClusterTrustBundle
ClusterTrustBundle — це кластерний контейнер для довірчих якорів X.509 (кореневих сертифікатів).
Обʼєкти ClusterTrustBundle вважаються доступними для читання будь-яким автентифікованим користувачем у кластері, оскільки їх можна монтувати в Pod за допомогою проєкції clusterTrustBundle. Усі службові облікові записи типово мають доступ на читання ClusterTrustBundles. Користувачі, які мають доступ лише на рівні простору імен у кластері, можуть читати ClusterTrustBundles, використовуючи serviceaccount, до якого вони мають доступ.
Він може бути опціонально повʼязаний з певним підписувачем, у такому випадку він містить один дійсний набір довірчих якорів для цього підписувача. Підписувачі можуть мати кілька повʼязаних ClusterTrustBundles; кожен з них є незалежним набором довірчих якорів для цього підписувача. Контроль доступу використовується для забезпечення того, що лише користувачі з правами підписувача можуть створювати або змінювати відповідний набір.
spec містить підписувача (якщо є) та довірчі якорі.
ClusterTrustBundleSpec
ClusterTrustBundleSpec містить інформацію про підписувача та довірчі якорі.
trustBundle (string), обовʼязково
trustBundle містить окремі довірчі якорі X.509 для цього набору, у вигляді PEM-пакета PEM-обгорток, DER-форматованих сертифікатів X.509.
Дані повинні складатися лише з PEM-блоків сертифікатів, які розпізнаються як дійсні сертифікати X.509. Кожен сертифікат повинен містити розширення базових обмежень з встановленою позначкою CA. Сервер API відхилить обʼєкти, що містять дублюючі сертифікати або використовують заголовки блоків PEM.
Користувачі ClusterTrustBundle, включаючи Kubelet, вільні переупорядковувати та видаляти дублікати блоків сертифікатів у цьому файлі за власною логікою, а також видаляти заголовки блоків PEM та міжблокові дані.
signerName (string)
signerName вказує повʼязаного підписувача, якщо такий є.
Щоб створити або оновити ClusterTrustBundle з встановленим signerName, вам потрібно мати наступні дозволи на рівні кластера: group=certificates.k8s.io resource=signers resourceName=<імʼя підписувача> verb=attest.
Якщо signerName не порожній, тоді обʼєкт ClusterTrustBundle повинен мати імʼя, що починається з імені підписувача як префікс (перекладаючи косі на двокрапки). Наприклад, для імені підписувача example.com/foo, допустимі імена обʼєктів ClusterTrustBundle включають example.com:foo:abc та example.com:foo:v1.
Якщо signerName порожній, тоді імʼя обʼєкта ClusterTrustBundle не повинно мати такого префікса.
Запити на список/перегляд ClusterTrustBundle можуть фільтрувати за цим полем, використовуючи селектор поля spec.signerName=NAME.
ClusterTrustBundleList
ClusterTrustBundleList — це колекція обʼєктів ClusterTrustBundle.
SelfSubjectReview містить інформацію про користувача, яку має kube-apiserver про користувача, що робить цей запит.
apiVersion: authentication.k8s.io/v1
import "k8s.io/api/authentication/v1"
SelfSubjectReview
SelfSubjectReview містить інформацію про користувача, яку має kube-apiserver про користувача, що робить цей запит. При використанні імперсоніфікації, користувачі отримають інформацію про користувача, якого вони імітують. Якщо використовується імперсоніфікація або автентифікація заголовка запиту, будь-які додаткові ключі будуть ігноруватися і повертатися у нижньому регістрі.
Унікальне значення, що ідентифікує цього користувача з плином часу. Якщо цей користувач буде видалений і інший користувач з таким самим іменем буде доданий, вони матимуть різні UID.
userInfo.username (string)
Імʼя, яке унікально ідентифікує цього користувача серед усіх активних користувачів.
Операції
create створення SelfSubjectReview
HTTP запит
POST /apis/authentication.k8s.io/v1/selfsubjectreviews
LocalSubjectAccessReview перевіряє, чи може користувач або група виконати дію в заданому просторі імен.
apiVersion: authorization.k8s.io/v1
import "k8s.io/api/authorization/v1"
LocalSubjectAccessReview
LocalSubjectAccessReview перевіряє, чи може користувач або група виконати дію в заданому просторі імен. Наявність ресурсу, обмеженого простором імен, значно полегшує надання політики, обмеженої простором імен, що включає перевірку дозволів.
Специфікація містить інформацію про запит, який оцінюється. spec.namespace повинен дорівнювати простору імен, щодо якого зроблено запит. Якщо поле порожнє, встановлюється стандартне значення.
SelfSubjectAccessReview перевіряє, чи може поточний користувач виконати дію.
apiVersion: authorization.k8s.io/v1
import "k8s.io/api/authorization/v1"
SelfSubjectAccessReview
SelfSubjectAccessReview перевіряє, чи може поточний користувач виконати дію. Незаповнення spec.namespace означає "в усіх просторах імен". Self є особливим випадком, оскільки користувачі завжди повинні мати змогу перевірити, чи можуть вони виконати дію.
Статус заповнюється сервером і вказує, чи дозволено запит, чи ні.
SelfSubjectAccessReviewSpec
SelfSubjectAccessReviewSpec є описом запиту на доступ. Має бути встановлене щось одне з ResourceAuthorizationAttributes або NonResourceAuthorizationAttributes.
nonResourceAttributes (NonResourceAttributes)
NonResourceAttributes описує інформацію для запиту на доступ до не-ресурсів.
NonResourceAttributes включає атрибути авторизації, доступні для запитів до інтерфейсу Authorizer, які не стосуються ресурсів.
nonResourceAttributes.path (string)
Path — це URL-шлях запиту.
nonResourceAttributes.verb (string)
Verb — це стандартне HTTP-дієслово.
resourceAttributes (ResourceAttributes)
ResourceAuthorizationAttributes описує інформацію для запиту на доступ до ресурсу.
ResourceAttributes включає атрибути авторизації, доступні для запитів до інтерфейсу Authorizer, що стосуються ресурсів.
fieldSelector описує обмеження доступу на основі поля. Він може лише обмежувати доступ, але не розширювати його.
Це поле є на рівні альфа. Щоб використовувати це поле, ви повинні ввімкнути функціональну можливість AuthorizeWithSelectors (стандартно вимкнено).
FieldSelectorAttributes вказує на доступ, обмежений за полем. Автори вебхуків заохочуються до таких дій:
переконатися, що rawSelector і requirements не встановлені одночасно;
розглядати поле requirements, якщо воно встановлене;
не намагатися парсити або враховувати поле rawSelector, якщо воно встановлене. Це робиться для запобігання ще одній уразливості типу CVE-2022-2880 (тобто домогтися, щоб різні системи погодилися щодо того, як саме парсити запит, — це не те, чого ми прагнемо), більше деталей дивіться за посиланням https://www.oxeye.io/resources/golang-parameter-smuggling-attack.
Для точок доступу SubjectAccessReview kube-apiserver:
Якщо rawSelector порожній, а requirements порожні, запит не обмежується.
Якщо rawSelector присутній, а requirements порожні, rawSelector буде парситися та обмежуватися, якщо парсинг вдасться.
Якщо rawSelector порожній, а requirements присутні, слід враховувати вимоги.
Якщо rawSelector присутній і requirements присутні, запит є недійсним.
rawSelector — це серіалізація селектора поля, який буде включено в параметр запиту. Реалізаціям вебхуків рекомендується ігнорувати rawSelector. SubjectAccessReview у kube-apiserver буде парсити rawSelector, якщо поле requirements відсутнє.
requirements — це інтерпретація селектора поля після парсингу. Усі вимоги повинні бути виконані, щоб ресурс відповідав селектору. Реалізації вебхуків повинні обробляти requirements, але як саме їх обробляти — залишається на розсуд вебхука. Оскільки requirements можуть лише обмежувати запит, безпечно авторизувати запит як необмежений, якщо вимоги не зрозумілі.
FieldSelectorRequirement — це селектор, який містить значення, ключ та оператор, який повʼязує ключ та значення.
operator представляє стосунок ключа до набору значень. Дійсні оператори: In, NotIn, Exists, DoesNotExist. Список операторів може розширюватися в майбутньому.
values — це масив строкових значень. Якщо оператор — In або NotIn, масив values не може бути порожнім. Якщо ж оператор — Exists або DoesNotExist, масив values повинен бути порожнім.
labelSelector описує обмеження доступу на основі міток. Він може лише обмежувати доступ, але не розширювати його.
Це поле є на рівні альфа. Щоб використовувати це поле, потрібно ввімкнути функціональну можливість AuthorizeWithSelectors (стандартно вимкнено).
LabelSelectorAttributes вказує на доступ, обмежений за мітками. Автори вебхуків заохочуються до таких дій:
переконатися, що rawSelector і requirements не встановлені одночасно;
розглядати поле requirements, якщо воно встановлене;
не намагатися парсити або враховувати поле rawSelector, якщо воно встановлене. Це робиться для запобігання ще одній уразливості типу CVE-2022-2880 (тобто домогтися, щоб різні системи погодилися щодо того, як саме парсити запит, — це не те, чого ми прагнемо), більше деталей дивіться за посиланням https://www.oxeye.io/resources/golang-parameter-smuggling-attack.
Для точок доступу SubjectAccessReview kube-apiserver:
Якщо rawSelector порожній, а requirements порожні, запит не обмежується.
Якщо rawSelector присутній, а requirements порожні, rawSelector буде парситися та обмежуватися, якщо парсинг вдасться.
Якщо rawSelector порожній, а requirements присутні, слід враховувати вимоги.
Якщо rawSelector присутній і requirements присутні, запит є недійсним.
rawSelector — це серіалізація селектора поля, яка буде включена в параметр запиту. Реалізаціям вебхуків рекомендується ігнорувати rawSelector. SubjectAccessReview у kube-apiserver буде парсити rawSelector, якщо поле requirements відсутнє.
requirements — це інтерпретація селектора мітки після парсингу. Усі вимоги повинні бути виконані, щоб ресурс відповідав селектору. Реалізації вебхуків повинні обробляти requirements, але спосіб обробки залишається на розсуд вебхука. Оскільки requirements можуть лише обмежувати запит, безпечно авторизувати запит як необмежений, якщо вимоги не зрозумілі.
Вимога до селектора мітки — це селектор, який містить значення, ключ і оператор, який повʼязує ключ і значення.
values — це масив строкових значень. Якщо оператор — In або NotIn, масив values не може бути порожнім. Якщо ж оператор — Exists або DoesNotExist, масив values повинен бути порожнім. Цей масив замінюється під час стратегічного злиття патчу.
resourceAttributes.name (string)
Name — це назва ресурсу, який запитується для "отримання" ("get") або видалення для "delete". "" (порожня) означає всі.
resourceAttributes.namespace (string)
Namespace — це простір імен дії, що запитується. Наразі немає різниці між відсутністю простору імен та всіма просторами імен "" (порожньо) стандартно встановлюється з для LocalSubjectAccessReviews "" (порожньо) означає відсутність для кластерних ресурсів "" (порожньо) означає "всі" для ресурсів, обмежених простором імен, з SubjectAccessReview або SelfSubjectAccessReview.
resourceAttributes.resource (string)
Resource — це один з наявних типів ресурсів. "*" означає всі.
resourceAttributes.subresource (string)
Subresource — це один з наявних типів субресурсів. "" означає відсутність.
resourceAttributes.verb (string)
Verb — це дієслово API ресурсу Kubernetes, таке як: get, list, watch, create, update, delete, proxy. "*" означає всі.
resourceAttributes.version (string)
Version — це версія API ресурсу. "*" означає всі.
Операції
create створення SelfSubjectAccessReview
HTTP запит
POST /apis/authorization.k8s.io/v1/selfsubjectaccessreviews
SelfSubjectRulesReview перелічує набір дій, які поточний користувач може виконувати в межах простору імен.
apiVersion: authorization.k8s.io/v1
import "k8s.io/api/authorization/v1"
SelfSubjectRulesReview
SelfSubjectRulesReview перелічує набір дій, які поточний користувач може виконувати в межах простору імен. Отриманий список дій може бути неповним залежно від режиму авторизації сервера та будь-яких помилок, які виникли під час оцінки. SelfSubjectRulesReview слід використовувати інтерфейсами користувача для показу/приховування дій або швидкого надання кінцевому користувачеві можливості оцінити свої дозволи. Він НЕ ПОВИНЕН використовуватися зовнішніми системами для прийняття рішень щодо авторизації, оскільки це викликає проблеми з підміною, тривалістю життя кешу/відкликанням та правильністю. SubjectAccessReview і LocalAccessReview є правильним способом делегування рішень щодо авторизації до API сервера.
Специфікація містить інформацію про запит, який оцінюється.
status (SubjectRulesReviewStatus)
Статус заповнюється сервером і вказує на набір дій, які користувач може виконувати.
SubjectRulesReviewStatus містить результат перевірки правил. Ця перевірка може бути неповною залежно від набору авторизаторів, з якими налаштовано сервер, і будь-яких помилок, що виникли під час оцінки. Оскільки правила авторизації є адитивними, якщо правило зʼявляється у списку, можна безпечно припустити, що субʼєкт має цей дозвіл, навіть якщо цей список неповний.
status.incomplete (boolean), обовʼязково
Incomplete встановлюється у true, коли правила, повернуті цим викликом, є неповними. Це найчастіше зустрічається, коли авторизатор, такий як зовнішній авторизатор, не підтримує оцінку правил.
NonResourceRules — це список дій, які субʼєкт має право виконувати щодо не-ресурсів. Порядок у списку не є значущим, може містити дублікати та, можливо, бути неповним.
NonResourceRule містить інформацію, яка описує правило для не-ресурсу
NonResourceURLs — це набір часткових URL-адрес, до яких користувач повинен мати доступ. * допускаються, але лише як повний, кінцевий крок у шляху. "*" означає всі.
ResourceRules — це список дій, які субʼєкт має право виконувати щодо ресурсів. Порядок у списку не є значущим, може містити дублікати та, можливо, бути неповним.
ResourceRule — це список дій, які субʼєкт має право виконувати щодо ресурсів. Порядок у списку не є значущим, може містити дублікати та, можливо, бути неповним.
Verb — це список дієслів API ресурсу Kubernetes, таких як: get, list, watch, create, update, delete, proxy. "*" означає всі.
status.resourceRules.apiGroups ([]string)
Atomic: буде замінено під час злиття
APIGroups — це назва API-групи, яка містить ресурси. Якщо зазначено кілька API-груп, будь-яка дія, запитана для одного з перелічених ресурсів у будь-якій API-групі, буде дозволена. "*" означає всі.
status.resourceRules.resourceNames ([]string)
Atomic: буде замінено під час злиття
ResourceNames — це необовʼязковий білий список імен, до яких застосовується правило. Порожній набір означає, що дозволено все. "*" означає всі.
status.resourceRules.resources ([]string)
Atomic: буде замінено під час злиття
Resources — це список ресурсів, до яких застосовується це правило. "*" означає всі в зазначених apiGroups. "*/foo" представляє субресурс 'foo' для всіх ресурсів у зазначених apiGroups.
status.evaluationError (string)
EvaluationError може зʼявитися разом із Rules. Це вказує на те, що під час оцінки правил сталася помилка, наприклад, авторизатор не підтримує оцінку правил, і що ResourceRules та/або NonResourceRules можуть бути неповними.
SelfSubjectRulesReviewSpec
SelfSubjectRulesReviewSpec визначає специфікацію для SelfSubjectRulesReview.
namespace (string)
Простір імен для оцінки правил. Обовʼязково.
Операції
create створення SelfSubjectRulesReview
HTTP запит
POST /apis/authorization.k8s.io/v1/selfsubjectrulesreviews
fieldSelector описує обмеження доступу на основі поля. Він може лише обмежувати доступ, але не розширювати його.
Це поле є на рівні альфа. Щоб використовувати це поле, потрібно ввімкнути функціональну можливість AuthorizeWithSelectors (стандартно вимкнено).
FieldSelectorAttributes вказує на доступ, обмежений за полем. Автори вебхуків заохочуються до таких дій:
переконатися, що rawSelector і requirements не встановлені одночасно;
розглядати поле requirements, якщо воно встановлене;
не намагатися парсити або враховувати поле rawSelector, якщо воно встановлене. Це робиться для запобігання ще одній уразливості типу CVE-2022-2880 (тобто домогтися, щоб різні системи погодилися щодо того, як саме парсити запит, — це не те, чого ми прагнемо), більше деталей дивіться за посиланням https://www.oxeye.io/resources/golang-parameter-smuggling-attack.
Для точок доступу SubjectAccessReview kube-apiserver:
Якщо rawSelector порожній, а requirements порожні, запит не обмежується.
Якщо rawSelector присутній, а requirements порожні, rawSelector буде парситися та обмежуватися, якщо парсинг вдасться.
Якщо rawSelector порожній, а requirements присутні, слід враховувати вимоги.
Якщо rawSelector присутній і requirements присутні, запит є недійсним.
rawSelector — це серіалізація селектора поля, яка буде включена в параметр запиту. Реалізаціям вебхуків рекомендується ігнорувати rawSelector. SubjectAccessReview у kube-apiserver буде парсити rawSelector, якщо поле requirements відсутнє.
requirements — це інтерпретація селектора поля після парсингу. Усі вимоги повинні бути виконані, щоб ресурс відповідав селектору. Реалізації вебхуків повинні обробляти requirements, але спосіб їх обробки залишається на розсуд вебхука. Оскільки requirements можуть лише обмежувати запит, безпечно авторизувати запит як необмежений, якщо вимоги не зрозумілі.
FieldSelectorRequirement — це селектор, який містить значення, ключ та оператор, який повʼязує ключ та значення.
operator представляє звʼязок ключа до набору значень. Дійсні оператори: In, NotIn, Exists та DoesNotExist. Список операторів може розширюватися в майбутньому.
values — це набір значень, які відповідають ключу. Якщо оператор In або NotIn, це масив значень, які відповідають ключу. Якщо оператор Exists або DoesNotExist, це порожній масив.
labelSelector описує обмеження доступу на основі міток. Він може лише обмежувати доступ, але не розширювати його.
Це поле є на рівні альфа. Щоб використовувати це поле, потрібно ввімкнути функціональну можливість AuthorizeWithSelectors (стандартно вимкнено).
LabelSelectorAttributes вказує на доступ, обмежений за мітками. Автори вебхуків заохочуються до таких дій:
переконатися, що rawSelector і requirements не встановлені одночасно;
розглядати поле requirements, якщо воно встановлене;
не намагатися парсити або враховувати поле rawSelector, якщо воно встановлене. Це робиться для запобігання ще одній уразливості типу CVE-2022-2880 (тобто домогтися, щоб різні системи погодилися щодо того, як саме парсити запит, — це не те, чого ми прагнемо), більше деталей дивіться за посиланням https://www.oxeye.io/resources/golang-parameter-smuggling-attack.
Для точок доступу SubjectAccessReview kube-apiserver:
Якщо rawSelector порожній, а requirements порожні, запит не обмежується.
Якщо rawSelector присутній, а requirements порожні, rawSelector буде парситися та обмежуватися, якщо парсинг вдасться.
Якщо rawSelector порожній, а requirements присутні, слід враховувати вимоги.
Якщо rawSelector присутній і requirements присутні, запит є недійсним.
rawSelector — це серіалізація селектора поля, яка буде включена в параметр запиту. Реалізаціям вебхуків рекомендується ігнорувати rawSelector. SubjectAccessReview у kube-apiserver буде парсити rawSelector, якщо поле requirements відсутнє.
requirements — це інтерпретація селектора мітки після парсингу. Усі вимоги повинні бути виконані, щоб ресурс відповідав селектору. Реалізації вебхуків повинні обробляти requirements, але спосіб обробки залишається на розсуд вебхука. Оскільки requirements можуть лише обмежувати запит, безпечно авторизувати запит як необмежений, якщо вимоги не зрозумілі.
Вимога до селектора мітки — це селектор, який містить значення, ключ і оператор, який повʼязує ключ і значення.
values — це масив строкових значень. Якщо оператор — In або NotIn, масив values не може бути порожнім. Якщо ж оператор — Exists або DoesNotExist, масив values повинен бути порожнім. Цей масив замінюється під час стратегічного злиття патчу.
resourceAttributes.name (string)
Name — це імʼя ресурсу, який запитується для "отримання" ("get") або видаляється для "видалення" ("delete"). "" (порожньо) означає всі.
resourceAttributes.namespace (string)
Namespace — це простір імен дії, яка запитується. Зараз немає різниці між відсутністю простору імен та всіма просторами імен "" (порожньо) змінюється на стандартне значення для LocalSubjectAccessReviews, "" (порожньо) є порожнім для кластерних ресурсів, "" (порожньо) означає "всі" для ресурсів з простором імен у SubjectAccessReview або SelfSubjectAccessReview
resourceAttributes.resource (string)
Resource — це один з наявних типів ресурсів. "*" означає всі.
resourceAttributes.subresource (string)
Subresource - це один з наявних типів субресурсів. "" означає жоден.
resourceAttributes.verb (string)
Verb — це дієслово API ресурсу Kubernetes, таке як: get, list, watch, create, update, delete, proxy. "*" означає всі.
resourceAttributes.version (string)
Version — це версія API ресурсу. "*" означає всі.
uid (string)
UID — інформація про користувача, який робить запит.
user (string)
User — це користувач, для якого проводиться тестування. Якщо ви вказуєте "User", але не "Groups", то це інтерпретується як "Що, якщо User не є членом жодної групи?"
SubjectAccessReviewStatus
SubjectAccessReviewStatus
allowed (boolean), обовʼязково
Allowed є обовʼязковим. True, якщо дія буде дозволена, false в іншому випадку.
denied (boolean)
Denied є необовʼязковим. True, якщо дія буде заборонена, в іншому випадку false. Якщо як allowed є false, так і denied є false, тоді авторизатор не має думки щодо дозволу дії. Denied не може бути true, якщо Allowed є true.
evaluationError (string)
EvaluationError — це вказівка на те, що під час перевірки авторизації сталася якась помилка. Цілком можливо отримати помилку і мати можливість продовжити визначення статусу авторизації, не зважаючи на це. Наприклад, RBAC може не мати ролі, але достатньо ролей все ще присутні та привʼязані для розгляду запиту.
reason (string)
Reason є необовʼязковим. Він вказує, чому запит був дозволений або відхилений.
Операції
create створення SubjectAccessReview
HTTP запит
POST /apis/authorization.k8s.io/v1/subjectaccessreviews
ClusterRole — це логічне групування PolicyRules на рівні кластера, на яке можна посилатися як на єдине ціле за допомогою привʼязки RoleBinding або ClusterRoleBinding.
apiVersion: rbac.authorization.k8s.io/v1
import "k8s.io/api/rbac/v1"
ClusterRole
ClusterRole — це логічне групування PolicyRules на рівні кластера, на яке можна посилатися як на єдине ціле за допомогою привʼязки RoleBinding або ClusterRoleBinding.
AggregationRule — це необовʼязкове поле, яке описує, як створити правила для цього ClusterRole. Якщо AggregationRule встановлено, то правила управляються контролером і прямі зміни до правил будуть перезаписані контролером.
AggregationRule описує, як знайти ClusterRoles для обʼєднання у ClusterRole
ClusterRoleSelectors містить список селекторів, які будуть використані для пошуку ClusterRoles та створення правил. Якщо будь-який з селекторів збігається, тоді дозволи ClusterRole будуть додані.
rules ([]PolicyRule)
Atomic: буде замінено під час злиття
Rules містить всі PolicyRules для цього ClusterRole.
PolicyRule містить інформацію, яка описує правило політики, але не містить інформації про те, до кого застосовується правило або до якого простору імен воно відноситься.
rules.apiGroups ([]string)
Atomic: буде замінено під час злиття
APIGroups — це назва APIGroup, яка містить ресурси. Якщо вказано декілька API груп, будь-яка дія, запитана для одного з перерахованих ресурсів у будь-якій API групі, буде дозволена. "" представляє основну API групу, а "*" представляє всі API групи.
rules.resources ([]string)
Atomic: буде замінено під час злиття
Resources — це список ресурсів, до яких застосовується це правило. '*' представляє всі ресурси.
rules.verbs ([]string), обовʼязкове
Atomic: буде замінено під час злиття
Verbs — це список дієслів, які застосовуються до ВСІХ ResourceKinds, що містяться у цьому правилі. '*' представляє всі дієслова.
rules.resourceNames ([]string)
Atomic: буде замінено під час злиття
ResourceNames — це необовʼязковий білий список імен, до яких застосовується правило. Порожній набір означає, що дозволено все.
rules.nonResourceURLs ([]string)
Atomic: буде замінено під час злиття
NonResourceURLs — це набір часткових URL-адрес, до яких користувач повинен мати доступ. '*' дозволені, але тільки як повний, кінцевий крок у шляху. Оскільки не ресурсні URL-адреси не належать до простору імен, це поле застосовується тільки для ClusterRoles, на які посилається ClusterRoleBinding. Правила можуть застосовуватися або до API ресурсів (таких як "pods" або "secrets"), або до не ресурсних URL-шляхів (таких як "/api"), але не до обох одночасно.
ClusterRoleBinding посилається на ClusterRole, але не містить її.
apiVersion: rbac.authorization.k8s.io/v1
import "k8s.io/api/rbac/v1"
ClusterRoleBinding
ClusterRoleBinding посилається на ClusterRole, але не містить її. ClusterRoleBinding може посилатися на ClusterRole в глобальному просторі імен та додає інформацію про субʼєкти через Subject.
RoleRef може посилатися лише на ClusterRole в глобальному просторі імен. Якщо RoleRef не може бути розвʼязано, Авторизатор повинен повернути помилку. Це поле є незмінним.
RoleRef містить інформацію, яка посилається на використану роль
roleRef.apiGroup (string), обовʼязкове
APIGroup — це група для вказаного ресурсу
roleRef.kind (string), обовʼязкове
Kind - тип вказаного ресурсу
roleRef.name (string), обовʼязкове
Name - це імʼя вказаного ресурсу
subjects ([]Subject)
Atomic: буде замінено під час злиття
Subjects містить посилання на обʼєкти, до яких застосовується роль.
Subject містить посилання на обʼєкт або ідентифікатори користувачів, до яких застосовується привʼязка ролей. Може містити або пряме посилання на обʼєкт API, або значення для не-обʼєктів, таких як імена користувачів і груп.
subjects.kind (string), обовʼязкове
Kind — тип обʼєкта, на який посилається. Значення, визначені цією API групою, є "User", "Group" та "ServiceAccount". Якщо Авторизатор не впізнає значення kind, він повинен повідомити про помилку.
subjects.name (string), обовʼязкове
Name — імʼя обʼєкта, на який посилається.
subjects.apiGroup (string)
APIGroup — це API група вказаного субʼєкта. Стандартно "" для субʼєктів ServiceAccount. Стандартно "rbac.authorization.k8s.io" для субʼєктів User і Group.
subjects.namespace (string)
Namespace — простір імен вказаного обʼєкта. Якщо тип обʼєкта не простір імен, наприклад, "User" або "Group", і це значення не порожнє, Авторизатор повинен повідомити про помилку.
ClusterRoleBindingList
ClusterRoleBindingList — це колекція ClusterRoleBindings.
PolicyRule містить інформацію, що описує правило політики, але не містить інформації про те, до кого застосовується правило або до якого простору імен воно відноситься.
rules.apiGroups ([]string)
Atomic: буде замінено під час злиття
APIGroups — це назва APIGroup, яка містить ресурси. Якщо вказано декілька API груп, будь-яка дія, запитана для одного з перерахованих ресурсів у будь-якій API групі буде дозволена. "" представляє основну API групу, а "*" представляє всі API групи.
rules.resources ([]string)
Atomic: буде замінено під час злиття
Resources — це список ресурсів, до яких застосовується це правило. '*' представляє всі ресурси.
rules.verbs ([]string), обовʼязково
Atomic: буде замінено під час злиття
Verbs — це список дієслів, які застосовуються до ВСІХ ResourceKinds, що містяться у цьому правилі. '*' представляє всі дієслова.
rules.resourceNames ([]string)
Atomic: буде замінено під час злиття
ResourceNames — це необовʼязковий білий список імен, до яких застосовується правило. Порожній набір означає, що дозволено все.
rules.nonResourceURLs ([]string)
Atomic: буде замінено під час злиття
NonResourceURLs — це набір часткових URL-адрес, до яких користувач повинен мати доступ. '*' дозволені, але тільки як повний, кінцевий крок у шляху. Оскільки не ресурсні URL-адреси не належать до простору імен, це поле застосовується тільки для ClusterRoles, на які посилається ClusterRoleBinding. Правила можуть застосовуватися або до API ресурсів (таких як "pods" або "secrets"), або до не ресурсних URL-шляхів (таких як "/api"), але не до обох одночасно.
RoleBinding посилається на роль, але не містить її.
apiVersion: rbac.authorization.k8s.io/v1
import "k8s.io/api/rbac/v1"
RoleBinding
RoleBinding посилається на роль, але не містить її. RoleBinding може посилатися на Role в поточному просторі імен або на ClusterRole в глобальному просторі імен. RoleBinding додає інформацію про субʼєкти через Subjects і інформацію про простір імен, в якому існує. RoleBindings у визначеному просторі імен мають вплив лише в цьому просторі імен.
RoleRef може посилатися на Role в поточному просторі імен або на ClusterRole в глобальному просторі імен. Якщо RoleRef не може бути розвʼязано, Авторизатор повинен повернути помилку. Це поле є незмінним.
RoleRef містить інформацію, яка посилається на використану роль
roleRef.apiGroup (string), обовʼязкове
APIGroup — це група для вказаного ресурсу
roleRef.kind (string), обовʼязкове
Kind — тип вказаного ресурсу
roleRef.name (string), обовʼязкове
Name — це імʼя вказаного ресурсу
subjects ([]Subject)
Atomic: буде замінено під час злиття
Subjects містить посилання на обʼєкти, до яких застосовується роль.
Subject містить посилання на обʼєкт або ідентифікатори користувачів, до яких застосовується привʼязка ролей. Може містити або пряме посилання на обʼєкт API, або значення для не-обʼєктів, таких як імена користувачів і груп.
subjects.kind (string), обовʼязкове
Kind — тип обʼєкта, на який посилається. Значення, визначені цією API групою, є "User", "Group" та "ServiceAccount". Якщо Авторизатор не впізнає значення kind, він повинен повідомити про помилку.
subjects.name (string), обовʼязкове
Name — імʼя обʼєкта, на який посилається.
subjects.apiGroup (string)
APIGroup — це API група вказаного субʼєкта. Стандартно — "" для субʼєктів ServiceAccount. Стандартно — "rbac.authorization.k8s.io" для субʼєктів User і Group.
subjects.namespace (string)
Namespace — простір імен вказаного обʼєкта. Якщо тип обʼєкта не простір імен, наприклад, "User" або "Group", і це значення не порожнє, Авторизатор повинен повідомити про помилку.
FlowSchema визначає схему групи потоків. Зверніть увагу, що потік складається з набору вхідних API-запитів з подібними атрибутами та ідентифікується парою рядків: імʼям FlowSchema та "розрізнювачем потоку".
FlowSchemaSpec описує вигляд специфікації FlowSchema.
distinguisherMethod (FlowDistinguisherMethod)
distinguisherMethod визначає, як обчислюється розрізнювач потоку для запитів, які відповідають цій схемі. nil вказує на те, що розрізнювач вимкнений і завжди буде пустий рядок.
FlowDistinguisherMethod вказує на метод розрізнювача потоку.
distinguisherMethod.type (string), обовʼязково
type - це тип методу розрізнювача потоку. Підтримувані типи: "ByUser" та "ByNamespace". Обовʼязково.
matchingPrecedence (int32)
matchingPrecedence використовується для вибору серед FlowSchema, які відповідають заданому запиту. Обрана FlowSchema є серед тих, що мають чисельно найменший (який ми вважаємо логічно найвищим) MatchingPrecedence. Кожне значення MatchingPrecedence повинно бути в діапазоні [1, 10000]. Зауважте, що якщо пріоритет не вказано, він буде стандартно встановлений на 1000.
priorityLevelConfiguration повинна посилатися на PriorityLevelConfiguration в кластері. Якщо посилання не вдається вирішити, FlowSchema буде ігноруватися і позначатися як недійсна в її статусі. Обовʼязково.
PriorityLevelConfigurationReference містить інформацію, яка посилається на використання "request-priority".
name — це імʼя конфігурації рівня пріоритетів, на яку є посилання. Обовʼязково.
rules ([]PolicyRulesWithSubjects)
Atomic: буде замінено під час злиття
rules описують, які запити будуть відповідати цій схемі потоку. Ця FlowSchema відповідає запиту, якщо принаймні один член rules відповідає запиту. Якщо це порожній масив, то запити, які відповідають FlowSchema, не буде.
PolicyRulesWithSubjects визначає тест, який застосовується до запиту до apiserver. Тест враховує субʼєкт, який робить запит, дієслово, яке запитується, і ресурс, яким має бути дія. Цей PolicyRulesWithSubjects відповідає запиту, якщо і тільки якщо обидва (а) принаймні один член subjects відповідає запиту і (б) принаймні один член resourceRules або nonResourceRules відповідає запиту.
rules.subjects ([]Subject), обовʼязково
Atomic: буде замінено під час злиття
subjects — це список звичайних користувачів, службових облікових записів або груп, яких це правило стосується. У цьому зрізі повинен бути принаймні один член. Зріз, який включає як системні групи "system:authenticated" і "system:unauthenticated", відповідає кожному запиту. Обовʼязково.
Тема відповідає ініціатору запиту, визначеному системою автентифікації запиту. Існує три способи зіставлення автора; за обліковим записом користувача, групи або службового облікового запиту.
rules.subjects.kind (string), обовʼязково
kind показує, яке з полів не пусте. Обовʼязково.
rules.subjects.group (GroupSubject)
group відповідає на підставі назви групи користувачів.
GroupSubject містить детальну інформацію для субʼєкта типу групи.
namespace — це простір імен відповідних обʼєктів ServiceAccount. Обовʼязково.
rules.subjects.user (UserSubject)
user збіг на основі імені користувача.
UserSubject містить детальну інформацію для субʼєкта типу користувача.
rules.subjects.user.name (string), обовʼязково
name — це імʼя користувача, яке має збіг, або "*" для відповідності всім іменам користувачів. Обовʼязково.
rules.nonResourceRules ([]NonResourcePolicyRule)
Atomic: буде замінено під час злиття
nonResourceRules — це список NonResourcePolicyRules, які ідентифікують відповідні запити відповідно до їх дієслова і цільового URL без ресурсів.
NonResourcePolicyRule є предикатом, який відповідає запитам без ресурсів відповідно до їх дієслова і цільового URL без ресурсів. NonResourcePolicyRule відповідає запиту, якщо і тільки якщо обидва (а) принаймні один член verbs відповідає запиту і (б) принаймні один член nonResourceURLs відповідає запиту.
Set: унікальні значення будуть збережені під час злиття
nonResourceURLs — це набір префіксів URL, до яких користувач має мати доступ і не може бути порожнім. Наприклад:
"/healthz" є допустимим
"/hea*" є недійсним
"/hea" є допустимим, але не відповідає нічому
"/hea/*" також не відповідає нічому
"/healthz/*" відповідає всім перевіркам стану компонентів. "*" відповідає всім URL без ресурсів. Якщо він присутній, він повинен бути єдиним елементом. Обовʼязково.
Set: унікальні значення будуть збережені під час злиття
verbs — це список відповідних дієслів і не може бути порожнім. "*" відповідає всім дієсловам. Якщо він присутній, він повинен бути єдиним елементом. Обовʼязково.
rules.resourceRules ([]ResourcePolicyRule)
Atomic: буде замінено під час злиття
resourceRules — це зріз ResourcePolicyRules, які ідентифікують відповідні запити відповідно до їх дієслова і цільового ресурсу. Принаймні одна з resourceRules або nonResourceRules має бути не порожньою.
ResourcePolicyRule є предикатом, який відповідає деяким запитам ресурсів, перевіряючи дієслово запиту і цільовий ресурс. ResourcePolicyRule відповідає запиту ресурсу, якщо і тільки якщо: (а) принаймні один член verbs відповідає запиту, (б) принаймні один член apiGroups відповідає запиту, (в) принаймні один член resources відповідає запиту, і (г) або (d1) запит не вказує простір імен (тобто Namespace=="") і clusterScope є true або (d2) запит вказує простір імен, і принаймні один член namespaces відповідає простору імен запиту.
Set: унікальні значення будуть збережені під час злиття
apiGroups — це список відповідних API-груп і не може бути порожнім. "*" відповідає всім API-групам і, якщо він присутній, він повинен бути єдиним елементом. Обовʼязково.
Set: унікальні значення будуть збережені під час злиття
resources — це список відповідних ресурсів (тобто в нижньому регістрі та множині) і, за бажанням, субресурс. Наприклад, ["services", "nodes/status"]. Цей список не може бути порожнім. "*" відповідає всім ресурсам і, якщо він присутній, він повинен бути єдиним елементом. Обовʼязково.
rules.resourceRules.verbs ([]string), обовʼязково
Set: унікальні значення будуть збережені під час злиття
verbs — це список відповідних дієслів і не може бути порожнім. "*" відповідає всім дієсловам і, якщо він присутній, він повинен бути єдиним елементом. Обовʼязково.
rules.resourceRules.clusterScope (boolean)
clusterScope показує, чи потрібно відповідати запитам, які не вказують простір імен (це стається або тому, що ресурс не має простору імен, або запит цілісно охоплює всі простори імен). Якщо це поле відсутнє або false, то поле namespaces повинне містити не порожній список.
rules.resourceRules.namespaces ([]string)
Set: унікальні значення будуть збережені під час злиття
namespaces — це список цільових просторів імен, які обмежують збіги. Запит, який вказує на простір імен, має збіг тільки у випадку, якщо або (a) цей список містить цільовий простір імен або (b) цей список містить "*". Зверніть увагу, що "*" відповідає будь-якому вказаному простору імен, але не відповідає запиту, який не вказує простір імен (див. поле clusterScope для цього). Цей список може бути порожнім, але лише в тому випадку, якщо clusterScope є true.
FlowSchemaStatus
FlowSchemaStatus відображає поточний стан FlowSchema.
conditions ([]FlowSchemaCondition)
Patch стратегія: злиття за ключем type
Map: унікальні значення за ключем type будуть збережені під час злиття
conditions — це список поточних станів FlowSchema.
FlowSchemaCondition описує умови для FlowSchema.
conditions.lastTransitionTime (Time)
lastTransitionTime — час останнього переходу стану з одного статусу в інший.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
message — повідомлення зрозуміле людині, що вказує деталі про останній перехід.
conditions.reason (string)
reason — унікальна причина у вигляді одного слова у CamelCase для останньої зміни стану.
conditions.status (string)
status — статус стану. Може бути True, False, Unknown. Обовʼязково.
MaxLimitRequestRatio, якщо зазначено, названий ресурс повинен мати запит і обмеження, які обидва є ненульовими, де обмеження, поділене на запит, менше або дорівнює перерахованому значенню; це представляє максимальне навантаження для названого ресурсу.
scopeSelector — це також набір фільтрів, таких як scopes, які повинні відповідати кожному обʼєкту, відстежуваному квотою, але виражені за допомогою ScopeSelectorOperator у поєднанні з можливими значеннями. Для відповідності ресурсу повинні відповідати як scopes, так і scopeSelector (якщо зазначено у spec).
Селектор області застосування являє собою AND селекторів, представлених вимогами селектора ресурсу з обмеженою областю застосування.
Список вимог селектора за областю застосування ресурсів.
Вимога до селектора ресурсу з областю застосування — це селектор, який містить значення, імʼя області застосування та оператор, який повʼязує імʼя області застосування зі значеннями.
Імʼя області застосування, до якої застосовується селектор.
scopeSelector.matchExpressions.values ([]string)
Atomic: буде замінено під час злиття
Масив рядкових значень. Якщо оператор In або NotIn, масив значень не повинен бути порожнім. Якщо оператор Exists або DoesNotExist, масив значень повинен бути порожнім. Цей масив замінюється під час стратегії обʼєднання патчів.
scopes ([]string)
Atomic: буде замінено під час злиття
Набір фільтрів, які повинні відповідати кожному обʼєкту, відстежуваному квотою. Якщо не вказано, квота відповідає всім обʼєктам.
ResourceQuotaStatus
ResourceQuotaStatus визначає застосовані жорсткі обмеження та спостережуване використання.
podSelector вибирає Podʼи, до яких застосовується цей обʼєкт NetworkPolicy. Масив правил ingress застосовується до будь-яких Podʼів, вибраних цим полем. Кілька мережевих політик можуть вибирати той самий набір Podʼів. У цьому випадку правила ingress для кожного з них поєднуються. Це поле НЕ є необовʼязковим і слідує стандартним семантикам вибору міток. Порожній podSelector збігається з усіма Podʼами в цьому простору імен.
policyTypes ([]string)
Atomic: буде замінено під час злиття
policyTypes — це список типів правил, до яких відноситься NetworkPolicy. Дійсні опції включають [“Ingress"], [“Egress"] або [“Ingress", “Egress"]. Якщо це поле не вказано, воно буде визначено стандартно на основі наявності правил ingress або egress; політики, які містять розділ egress, вважаються такими, що впливають на egress, а всі політики (незалежно від того, чи містять вони розділ ingress) вважаються такими, що впливають на ingress. Якщо ви хочете написати політику тільки для egress, ви повинні явно вказати policyTypes [“Egress"]. Аналогічно, якщо ви хочете написати політику, яка визначає, що egress не дозволений, ви повинні вказати значення policyTypes, яке включає “Egress" (оскільки така політика не включатиме розділ egress і стандартно буде просто [“Ingress" ]). Це поле є рівнем бета у версії 1.8.
ingress ([]NetworkPolicyIngressRule)
Atomic: буде замінено під час злиття
ingress — це список правил ingress, які застосовуються до вибраних Podʼів. Трафік дозволено до Podʼа, якщо немає мережевих політик, які вибирають Pod (і кластерна політика інакше дозволяє трафік), АБО якщо джерелом трафіку є локальний вузол Podʼа, АБО якщо трафік відповідає принаймні одному правилу ingress серед усіх обʼєктів NetworkPolicy, чий podSelector відповідає Podʼу. Якщо це поле порожнє, ця NetworkPolicy не дозволяє жодного трафіку (і стандартно слугує виключно для того, щоб забезпечити ізоляцію вибраних Podʼів).
NetworkPolicyIngressRule описує конкретний набір трафіку, який дозволено до Podʼів, вибраних podSelector у NetworkPolicySpec. Трафік повинен відповідати як ports, так і from.
ingress.from ([]NetworkPolicyPeer)
Atomic: буде замінено під час злиття
from — це список джерел, яким дозволено доступ до Podʼів, вибраних для цього правила. Елементи в цьому списку комбінуються за допомогою логічної операції OR. Якщо це поле порожнє або відсутнє, це правило збігається з усіма джерелами (трафік не обмежений за джерелом). Якщо це поле присутнє і містить принаймні один елемент, це правило дозволяє трафік лише у разі відповідності принаймні одному елементу зі списку from.
NetworkPolicyPeer описує однорангового учасника для дозволу трафіку до/від. Допускаються лише певні комбінації полів.
ingress.from.ipBlock (IPBlock)
ipBlock визначає політику для конкретного IPBlock. Якщо це поле встановлено, то жодне інше поле не може бути встановлене.
IPBlock описує конкретний CIDR (наприклад, “192.168.1.0/24",“2001:db8::/64"), який дозволено для Podʼів, вибраних podSelector у NetworkPolicySpec. Поле except описує CIDR, які не повинні бути включені до цього правила.
ingress.from.ipBlock.cidr (string), обовʼязково
cidr — це рядок, що представляє IPBlock. Дійсні приклади: “192.168.1.0/24" або “2001:db8::/64".
ingress.from.ipBlock.except ([]string)
Atomic: буде замінено під час злиття
except — це перелік CIDR, які не повинні бути включені до IPBlock. Дійсні приклади: “192.168.1.0/24" або “2001:db8::/64". Значення except будуть відхилені, якщо вони виходять за межі діапазону cidr.
namespaceSelector вибирає простори імен за допомогою кластерних міток. Це поле слідує стандартним семантикам вибору міток; якщо присутнє, але порожнє, воно вибирає всі простори імен.
Якщо також встановлено podSelector, тоді NetworkPolicyPeer загалом вибирає Podʼи, які відповідають podSelector у просторах імен, вибраних namespaceSelector. Інакше він вибирає всі Podʼи в просторах імен, вибраних namespaceSelector.
podSelector — це вибір міток, що вибирає Podʼи. Це поле слідує стандартним семантикам вибору міток; якщо присутнє, але порожнє, воно вибирає всі Podʼи.
Якщо також встановлено namespaceSelector, тоді NetworkPolicyPeer загалом вибирає Podʼи, які відповідають podSelector у просторах імен, вибраних NamespaceSelector. Інакше він вибирає Podʼи, які відповідають podSelector у власному просторі імен політики.
ingress.ports ([]NetworkPolicyPort)
Atomic: буде замінено під час злиття
ports — це список портів, які повинні бути доступні у Podʼах, вибраних для цього правила. Кожен елемент у цьому списку комбінується за допомогою логічної операції OR. Якщо це поле порожнє або відсутнє, це правило збігається з усіма портами (трафік не обмежений за портом). Якщо це поле присутнє і містить принаймні один елемент, тоді це правило дозволяє трафік лише у разі відповідності принаймні одному порту зі списку.
NetworkPolicyPort описує порт, на якому дозволено трафік
ingress.ports.port (IntOrString)
port представляє порт на заданому протоколі. Це може бути числовий або іменований порт на Podʼі. Якщо це поле не вказане, це збігається з усіма іменами та номерами портів. Якщо присутнє, то відповідає лише трафік на вказаному протоколі ТА порті.
IntOrString — це тип, який може містити int32 або рядок. При використанні перетворення з/в JSON або YAML він виробляє або споживає внутрішній тип. Це дозволяє вам мати, наприклад, поле JSON, яке може приймати імʼя або число.
ingress.ports.endPort (int32)
endPort вказує, що діапазон портів від port до endPort, якщо встановлено, включно, повинен бути дозволений політикою. Це поле не може бути визначене, якщо поле port не визначене або якщо поле port визначене як іменований (string) порт. Поле endPort повинно бути рівним або більшим за port.
ingress.ports.protocol (string)
protocol представляє протокол (TCP, UDP або SCTP), якому повинен відповідати трафік. Якщо не вказано, це поле стандартно встановлюється у TCP.
egress ([]NetworkPolicyEgressRule)
Atomic: буде замінено під час злиття
egress — це список правил egress, які застосовуються до вибраних Podʼів. Вихідний трафік дозволений, якщо немає мережевих політик, які вибирають Pod (і кластерна політика інакше дозволяє трафік), АБО якщо трафік відповідає принаймні одному правилу egress серед усіх обʼєктів NetworkPolicy, чий podSelector відповідає Podʼу. Якщо це поле порожнє, ця NetworkPolicy обмежує весь вихідний трафік (і слугує виключно для того, щоб стандартно забезпечити ізоляцію вибраних Podʼів). Це поле є рівнем бета у версії 1.8.
NetworkPolicyEgressRule описує конкретний набір трафіку, який дозволено від Podʼів, вибраних podSelector у NetworkPolicySpec. Трафік повинен відповідати як ports, так і to. Цей тип є рівнем бета у версії 1.8.
egress.to ([]NetworkPolicyPeer)
Atomic: буде замінено під час злиття
to — це список пунктів призначення для вихідного трафіку Podʼів, вибраних для цього правила. Елементи в цьому списку комбінуються за допомогою логічної операції OR. Якщо це поле порожнє або відсутнє, це правило збігається з усіма пунктами призначення (трафік не обмежений за пунктом призначення). Якщо це поле присутнє і містить принаймні один елемент, це правило дозволяє трафік лише у разі відповідності принаймні одному елементу зі списку to.
NetworkPolicyPeer описує однорангового учасника для дозволу трафіку до/від. Допускаються лише певні комбінації полів.
egress.to.ipBlock (IPBlock)
ipBlock визначає політику для конкретного IPBlock. Якщо це поле встановлено, то жодне інше поле не може бути встановлене.
IPBlock описує конкретний CIDR (наприклад, “192.168.1.0/24",“2001:db8::/64"), який дозволено для Podʼів, вибраних podSelector у NetworkPolicySpec. Поле except описує CIDR, які не повинні бути включені до цього правила.
egress.to.ipBlock.cidr (string), обовʼязково
cidr — це рядок, що представляє IPBlock. Дійсні приклади: “192.168.1.0/24" або “2001:db8::/64".
egress.to.ipBlock.except ([]string)
Atomic: буде замінено під час злиття
except — це перелік CIDR, які не повинні бути включені до IPBlock. Дійсні приклади: “192.168.1.0/24" або “2001:db8::/64". Значення except будуть відхилені, якщо вони виходять за межі діапазону cidr.
namespaceSelector вибирає простори імен за допомогою кластерних міток. Це поле слідує стандартним семантикам вибору міток; якщо присутнє, але порожнє, воно вибирає всі простори імен.
Якщо також встановлено podSelector, тоді NetworkPolicyPeer загалом вибирає Podʼи, які відповідають podSelector у просторах імен, вибраних namespaceSelector. Інакше він вибирає всі Podʼи в просторах імен, вибраних namespaceSelector.
podSelector — це вибір міток, що вибирає Podʼи. Це поле слідує стандартним семантикам вибору міток; якщо присутнє, але порожнє, воно вибирає всі Podʼи.
Якщо також встановлено namespaceSelector, тоді NetworkPolicyPeer загалом вибирає Podʼи, які відповідають podSelector у просторах імен, вибраних NamespaceSelector. Інакше він вибирає Podʼи, які відповідають podSelector у власному просторі імен політики.
egress.ports ([]NetworkPolicyPort)
Atomic: буде замінено під час злиття
ports — це список портів призначення для вихідного трафіку. Кожен елемент у цьому списку комбінується за допомогою логічної операції OR. Якщо це поле порожнє або відсутнє, це правило збігається з усіма портами (трафік не обмежений за портом). Якщо це поле присутнє і містить принаймні один елемент, тоді це правило дозволяє трафік лише у разі відповідності принаймні одному порту зі списку.
NetworkPolicyPort описує порт, на якому дозволено трафік
egress.ports.port (IntOrString)
port представляє порт на заданому протоколі. Це може бути числовий або іменований порт у Podʼі. Якщо це поле не вказане, воно збігається з усіма іменами та номерами портів. Якщо присутнє, то відповідає лише трафік на вказаному протоколі ТА порті.
IntOrString — це тип, який може містити int32 або рядок. При використанні перетворення з/в JSON або YAML він виробляє або споживає внутрішній тип. Це дозволяє вам мати, наприклад, поле JSON, яке може приймати імʼя або число.
egress.ports.endPort (int32)
endPort вказує, що діапазон портів від port до endPort, якщо встановлено, включно, повинен бути дозволений політикою. Це поле не може бути визначене, якщо поле port не визначене або якщо поле port визначене як іменований (string) порт. Поле endPort повинно бути рівним або більшим за port.
egress.ports.protocol (string)
protocol представляє протокол (TCP, UDP або SCTP), якому повинен відповідати трафік. Якщо не вказано, це поле стандартно встановлюється у TCP.
NetworkPolicyList
NetworkPolicyList — це список обʼєктів NetworkPolicy.
apiVersion: networking.k8s.io/v1
Вказує версію API.
kind: NetworkPolicyList
Вказує тип ресурсу, в цьому випадку NetworkPolicyList.
Останній спостережуваний стан PodDisruptionBudget.
PodDisruptionBudgetSpec
PodDisruptionBudgetSpec — це опис PodDisruptionBudget.
maxUnavailable (IntOrString)
Виселення дозволяється, якщо щонайбільше "maxUnavailable" Podʼів, вибраних за допомогою "selector", є недоступними після виселення, тобто навіть за відсутності виселеного Podʼа. Наприклад, можна запобігти всім добровільним виселенням, вказавши 0. Це взаємозаперечне налаштування з "minAvailable".
IntOrString — це тип, який може містити int32 або рядок. При використанні перетворення з/в JSON або YAML він виробляє або споживає внутрішній тип. Це дозволяє вам мати, наприклад, поле JSON, яке може приймати імʼя або число.
minAvailable (IntOrString)
Виселення дозволяється, якщо щонайменше "minAvailable" Podʼів, вибраних за допомогою "selector", залишаться доступними після виселення, тобто навіть за відсутності виселеного Podʼа. Наприклад, можна запобігти всім добровільним виселенням, вказавши "100%".
IntOrString — це тип, який може містити int32 або рядок. При використанні перетворення з/в JSON або YAML він виробляє або споживає внутрішній тип. Це дозволяє вам мати, наприклад, поле JSON, яке може приймати імʼя або число.
Запит міток для Podʼів, виселення яких керується бюджетом розладів. Нульовий селектор не вибиратиме жодного Podʼа, тоді як порожній ({}) селектор вибиратиме всі Podʼи в межах простору імен.
unhealthyPodEvictionPolicy (string)
UnhealthyPodEvictionPolicy визначає критерії, коли несправні Podʼи слід вважати кандидатами на виселення. Поточна реалізація вважає справними ті Podʼи, у яких у status.conditions є елемент із type="Ready",status="True".
Дійсні політики: IfHealthyBudget і AlwaysAllow. Якщо політика не вказана, буде використано стандартну поведінку, яка відповідає політиці IfHealthyBudget.
Політика IfHealthyBudget означає, що працюючі Podʼи (status.phase="Running"), але ще не справні, можуть бути виселені лише у випадку, якщо захищений застосунок не в розладі (status.currentHealthy принаймні дорівнює status.desiredHealthy). Справні Podʼи підпадають під дію PDB для виселення.
Політика AlwaysAllow означає, що всі працюючі Podʼи (status.phase="Running"), але ще не справні, вважаються в стані розладу і можуть бути виселені незалежно від того, чи виконуються критерії у PDB. Це означає, що працюючі Podʼи застосунка в розладі можуть не мати шансу стати справними. Справні Podʼи підпадають під дію PDB для виселення.
У майбутньому можуть бути додані додаткові політики. Клієнти, які приймають рішення про виселення, повинні забороняти виселення несправних Podʼів, якщо вони стикаються з незнайомою політикою в цьому полі.
Це поле знаходиться на рівні бета. API виселення використовує це поле, коли функціональні можливості PDBUnhealthyPodEvictionPolicy увімкнені (стандартно увімкнено).
PodDisruptionBudgetStatus
PodDisruptionBudgetStatus представляє інформацію про стан PodDisruptionBudget. Статус може відставати від фактичного стану системи.
currentHealthy (int32), обовʼязково
поточна кількість справних Podʼів
desiredHealthy (int32), обовʼязково
мінімально бажана кількість справних Podʼів
disruptionsAllowed (int32), обовʼязково
Кількість розладів Podʼів, які наразі дозволені.
expectedPods (int32), обовʼязково
загальна кількість Podʼів, врахованих цим бюджетом розладів
conditions ([]Condition)
Patch strategy: обʼєднання за ключем type
Map: унікальні значення за ключем type зберігаються під час обʼєднання
Conditions містить стани для PDB. Контролер розладів встановлює стан DisruptionAllowed. Нижче наведені відомі значення для поля reason (у майбутньому можуть бути додані додаткові причини):
SyncFailed: Контролер зіткнувся з помилкою і не зміг обчислити кількість дозволених розладів. Тому розлади не дозволяються, і статус стану буде False.
InsufficientPods: Кількість Podʼів дорівнює або менша за кількість, необхідну для PodDisruptionBudget. Розлади не дозволяються, і статус стану буде False.
SufficientPods: Є більше Podʼів, ніж потрібно для PodDisruptionBudget. Стан буде True, і кількість дозволених розладів буде вказана у властивості disruptionsAllowed.
Condition містить деталі щодо одного аспекту поточного стану цього ресурсу API.
conditions.lastTransitionTime (Time), обовʼязково
lastTransitionTime — це час останнього переходу стану з одного в інший. Це має бути момент, коли змінився основний стан. Якщо це невідомо, то допустимо використовувати час, коли змінилося поле API.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string), обовʼязково
message — це повідомлення, зрозуміле людині, вказує деталі про зміну стану. Це може бути порожній рядок.
conditions.reason (string), обовʼязково
reason містить програмний ідентифікатор, що вказує причину останньої зміни стану. Виробники певних типів станів можуть визначати очікувані значення та значення для цього поля та чи вважаються ці значення гарантованими API. Значення має бути рядком у CamelCase. Це поле не може бути порожнім.
conditions.status (string), обовʼязково
статус стану, одне з True, False, Unknown.
conditions.type (string), обовʼязково
тип стану в CamelCase або у форматі foo.example.com/CamelCase.
conditions.observedGeneration (int64)
observedGeneration представляє .metadata.generation, на основі якого було встановлено стан. Наприклад, якщо .metadata.generation наразі дорівнює 12, але .status.conditions[x].observedGeneration дорівнює 9, стан застарів щодо поточного стану екземпляра.
disruptedPods (map[string]Time)
DisruptedPods містить інформацію про Podʼи, виселення яких було оброблено субресурсом виселення API-сервера, але ще не було зафіксовано контролером PodDisruptionBudget. Pod буде в цьому map з моменту, коли API-сервер обробив запит на виселення, до моменту, коли контролер PDB побачить Pod як такий, що позначений для видалення (або після тайм-ауту). Ключем у map є назва Podʼа, а значенням — час, коли API-сервер обробив запит на виселення. Якщо видалення не відбулося і Pod все ще є, він буде автоматично видалений зі списку контролером PodDisruptionBudget через певний час. Якщо все йде добре, цей map повинен бути порожнім більшу частину часу. Велика кількість записів у map може вказувати на проблеми з видаленням Podʼів.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
observedGeneration (int64)
Останнє спостережене покоління під час оновлення цього статусу PDB. DisruptionsAllowed та інша інформація про статус дійсні лише, якщо observedGeneration дорівнює поколінню обʼєкта PDB.
PriorityLevelConfigurationSpec визначає конфігурацію рівня пріоритету.
exempt (ExemptPriorityLevelConfiguration)
exempt вказує, як обробляються запити для виняткового рівня пріоритету. Це поле ПОВИННО бути порожнім, якщо type встановлено на "Limited". Це поле МОЖЕ бути не порожнім, якщо type встановлено на "Exempt". Якщо воно порожнє і type встановлено на "Exempt", застосовуються стандартне значення для ExemptPriorityLevelConfiguration.
ExemptPriorityLevelConfiguration описує настроювані аспекти обробки запитів на виключення. В обов’язковому винятковому об’єкті конфігурації значення в полях тут можуть змінювати авторизовані користувачі, на відміну від решти spec.
exempt.lendablePercent (int32)
lendablePercent вказує частку NominalCL рівня, яка може бути позичена іншими рівнями пріоритету. Значення цього поля повинно бути в діапазоні від 0 до 100 включно, стандартне значення — 0. Кількість місць, які інші рівні можуть позичати у цього рівня, визначається наступним чином:
nominalConcurrencyShares (NCS) вносить свій внесок до обчислення NominalConcurrencyLimit (NominalCL) цього рівня. Це кількість виконавчих місць, які номінально зарезервовані для цього рівня пріоритету. Це НЕ обмежує розподіл з цього рівня, але впливає на інші рівні пріоритету через механізм позичання. Ліміт конкурентності сервера (ServerCL) розподіляється серед всіх рівнів пріоритету пропорційно їх значенням NCS:
Більші значення означають більший номінальний ліміт конкурентності за рахунок інших рівнів пріоритету. Стандартно це поле має значення 0.
limited (LimitedPriorityLevelConfiguration)
limited вказує, як обробляються запити для обмеженого рівня пріоритету. Це поле повинно бути не порожнім лише тоді, коли type встановлено на "Limited".
LimitedPriorityLevelConfiguration вказує, як обробляти запити, які підлягають обмеженням. Він вирішує дві проблеми:
Які обмеження на запити для цього рівня пріоритету?
Що робити з запитами, які перевищують ліміт?
limited.borrowingLimitPercent (int32)
borrowingLimitPercent, якщо вказано, налаштовує ліміт на кількість місць, які цей рівень пріоритету може позичати від інших рівнів пріоритету. Ліміт відомий як BorrowingConcurrencyLimit (BorrowingCL) і є обмеженням на загальну кількість місць, які цей рівень може позичати одночасно. Це поле визначає співвідношення цього ліміту до номінального ліміту конкурентності рівня. Коли це поле не є нульовим, воно має вказувати невідʼємне ціле число, і ліміт обчислюється так:
Значення цього поля може перевищувати 100, що означає, що цей рівень пріоритету може позичати більше місць, ніж його власний номінальний ліміт конкурентності (NominalCL). Якщо це поле залишити nil, ліміт фактично нескінченний.
limited.lendablePercent (int32)
lendablePercent вказує частку NominalCL рівня, яка може бути позичена іншими рівнями пріоритету. Значення цього поля повинно бути в діапазоні від 0 до 100 включно, стандартно — 0. Кількість місць, які інші рівні можуть позичати у цього рівня, визначається наступним чином:
limitResponse вказує, як поводитися з запитами, які зараз не можна виконати.
LimitResponse визначає, як обробляти запити, які зараз не можна виконати.
limited.limitResponse.type (string), обовʼязково
type — "Queue" або "Reject". "Queue" означає, що запити, які зараз не можна виконати, утримуються в черзі, поки їх не буде можливо виконати або досягнуто обмеження черги. "Reject" означає, що запити, які зараз не можна виконати, відхиляються. Обовʼязковщ.
queuing містить параметри конфігурації для черги. Це поле може бути не порожнім лише тоді, коли type встановлено на "Queue".
QueuingConfiguration містить параметри конфігурації для черги
limited.limitResponse.queuing.handSize (int32)
handSize — невелике позитивне число, яке налаштовує розподіл замовлень до черг. При включенні запита на цьому рівні пріоритету ідентифікатор потоку запиту (пара рядків) хешується, і значення хеша використовується для перетасовки списку черг і роздачі руки розміру, вказаного тут. Запит поміщається в одну з найкоротших черг в цій руці. handSize не повинно бути більшим, ніж queues, і повинно бути значно меншим (щоб кілька важких потоків не насичували більшість черг). Див. документацію для користувачів для більш детальної інформації щодо налаштування цього поля. Стандартне значення — 8.
queueLengthLimit — максимальна кількість запитів, які дозволяється очікувати в заданій черзі цього рівня пріоритету одночасно; зайві запити відхиляються. Це значення повинно бути позитивним. Якщо не вказано, воно стандартно буде встановлено на 50.
limited.limitResponse.queuing.queues (int32)
queues — кількість черг для цього рівня пріоритету. Черги існують незалежно в кожному apiserver. Значення повинно бути позитивним. Встановлення його на 1 фактично виключає shufflesharding і, таким чином, робить метод відмінності асоційованих схем потоків неактуальним. Стандартно поле має значення 64.
limited.nominalConcurrencyShares (int32)
nominalConcurrencyShares (NCS) вносить свій внесок до обчислення NominalConcurrencyLimit (NominalCL) цього рівня. Це кількість виконавчих місць, доступних на цьому рівні пріоритету. Це використовується як для запитів, розподілених з цього рівня пріоритету, так і для запитів, розподілених з інших рівнів пріоритету, які позичають місця з цього рівня. Ліміт конкурентності сервера (ServerCL) розподіляється серед обмежених рівнів пріоритету в пропорції до їх значень NCS:
Більші значення означають більший номінальний ліміт конкурентності, за рахунок інших рівнів пріоритету.
Якщо не вказано, стандартно це поле має значення 30.
Встановлення цього поля в нуль підтримує створення «вʼязниці» для цього рівня пріоритету, яка використовується для утримання деяких запитів
type (string), required
type вказує, чи підлягає цей рівень пріоритету обмеженням на виконання запитів. Значення "Exempt" означає, що запити цього рівня пріоритету не підлягають обмеженням (і, отже, ніколи не ставляться в чергу) і не впливають на потужність, доступну для інших рівнів пріоритету. Значення "Limited" означає, що (a) запити цього рівня пріоритету підлягають обмеженням і (b) частина обмеженої потужності сервера доступна виключно для цього рівня пріоритету. Обовʼязкове.
PriorityLevelConfigurationStatus
PriorityLevelConfigurationStatus представляє поточний стан "пріоритету запитів".
Map: унікальні значення за ключем типу зберігатимуться під час обʼєднання
conditions - поточний стан "пріоритету запитів".
PriorityLevelConfigurationCondition визначає стан рівня пріоритету.
conditions.lastTransitionTime (Time)
lastTransitionTime — останній час, коли стан змінився з одного статусу на інший.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
message — це повідомлення, зрозуміле людині та вказує на деталі останнього переходу.
conditions.reason (string)
reason — унікальна причина, одне слово, у CamelCase причина останнього переходу стану.
conditions.status (string)
status — це стан статусу. Може бути True, False, Unknown. Обовʼязково.
conditions.type (string)
type - це тип умови. Обовʼязково.
PriorityLevelConfigurationList
PriorityLevelConfigurationList — це список обʼєктів PriorityLevelConfiguration.
Специфікація бажаної поведінки ValidatingAdmissionPolicy.
ValidatingAdmissionPolicySpec — це специфікація бажаної поведінки AdmissionPolicy.
spec.auditAnnotations ([]AuditAnnotation)
Atomic: буде замінено під час обʼєднання
auditAnnotations містить вирази CEL, які використовуються для створення анотацій аудити для події аудити запиту API. validations і auditAnnotations не можуть бути одночасно порожніми; потрібна щонайменше одна з validations або auditAnnotations.
AuditAnnotation описує, як створити анотацію аудиту для запиту API.
spec.auditAnnotations.key (string), обовʼязково
key визначає ключ анотації аудиту. Ключі анотацій аудиту ValidatingAdmissionPolicy мають бути унікальними. Ключ повинен бути кваліфікованим імʼям ([A-Za-z0-9][-A-Za-z0-9_.]*) довжиною не більше 63 байт.
Ключ поєднується з імʼям ресурсу ValidatingAdmissionPolicy для створення ключа анотації аудиту: "{ValidatingAdmissionPolicy name}/{key}".
Якщо admission webhook використовує те саме імʼя ресурсу, що й цей ValidatingAdmissionPolicy, і той самий ключ анотації аудиту, ключ анотації буде ідентичним. У цьому випадку перша анотація, написана з цим ключем, буде включена в подію аудиту, а всі наступні анотації з тим самим ключем будуть відхилені.
valueExpression представляє вираз, який оцінюється CEL для створення значення анотації аудиту. Вираз має оцінюватися або як рядок, або як значення null. Якщо вираз оцінюється як рядок, анотація аудиту включається зі значенням рядка. Якщо вираз оцінюється як null або порожній рядок, анотація аудиту буде пропущена. valueExpression може бути не довше 5 КБ. Якщо результат valueExpression перевищує 10 КБ, він буде скорочений до 10 КБ.
Якщо кілька ресурсів ValidatingAdmissionPolicyBinding відповідають запиту API, то valueExpression буде оцінено для кожного звʼязування. Усі унікальні значення, створені valueExpressions, будуть обʼєднані в список, розділений комами.
Обовʼязково.
spec.failurePolicy (string)
failurePolicy визначає, як обробляти невдачі для admission policy. Невдачі можуть виникати через помилки розбору виразів CEL, помилки перевірки типів, помилки виконання та невірні або неправильно налаштовані визначення політики або звʼязувань.
Політика вважається недійсною, якщо spec.paramKind посилається на відсутній Kind. Звʼязок вважається недійсним, якщо spec.paramRef.name посилається на нвідсутній ресурс.
failurePolicy не визначає, як обробляються перевірки, які оцінюються як false.
Коли failurePolicy встановлено на Fail, ValidatingAdmissionPolicyBinding validationActions визначають, як оцінюються невдачі.
Допустимі значення: Ignore або Fail. Стандартне значення — Fail.
spec.matchConditions ([]MatchCondition)
Patch strategy: обʼєднання за ключем name
Map: під час обʼєднання зберігаються унікальні значення за ключем name
MatchConditions — це список умов, які мають бути виконані для перевірки запиту. Умови збігу фільтрують запити, які вже відповідали правилам, namespaceSelector та objectSelector. Порожній список matchConditions відповідає всім запитам. Максимально допустимо 64 умови перевірки збігів.
Якщо надається обʼєкт параметрів, до нього можна отримати доступ за допомогою дескриптора params так само як до виразів перевірки.
Логіка точного збігу така (за порядком):
Якщо БУДЬ-ЯКА умова відповідності оцінюється як FALSE, політика оминається.
Якщо ВСІ умови відповідності оцінюються як TRUE, політика оцінюється.
Якщо будь-яка умова відповідності оцінюється як помилка (але жодна не є FALSE):
Якщо failurePolicy=Fail, запит відхиляється
Якщо failurePolicy=Ignore, політика пропускається
MatchCondition представляє умову, яка має бути виконана для надсилання запиту до webhook.
Expression представляє вираз, який буде оцінено CEL. Має оцінюватися як bool. CEL вирази мають доступ до вмісту AdmissionRequest та Authorizer, які знаходяться у змінних CEL:
'object' — Обʼєкт із вхідного запиту. Значення null для запитів DELETE. 'oldObject' — Наявний обʼєкт. Значення null для запитів CREATE. 'request' — Атрибути запиту на допуск (/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' — Авторизатор CEL. Може використовуватися для виконання перевірок авторизації для виконавця (користувача або службового облікового запису) запиту. Див. https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz 'authorizer.requestResource' — Ресурс CEL, створений із 'authorizer' і налаштований із запитним ресурсом. Документація по CEL: https://kubernetes.io/docs/reference/using-api/cel/
Обовʼязково.
spec.matchConditions.name (string), обовʼязково
Name є ідентифікатором для цієї умови збігу, використовується для стратегічного обʼєднання MatchConditions, а також для надання ідентифікатора для цілей логування. Хороше імʼя має бути описовим для повʼязаної з ним умови. Імʼя повинно бути кваліфікованим імʼям, що складається з алфавітно-цифрових символів, '-', '' або '.', і повинно починатися та закінчуватися алфавітно-цифровим символом (наприклад, 'MyName', або 'my.name', або '123-abc', регулярний вираз, що використовується для перевірки '([A-Za-z0-9][-A-Za-z0-9.]*)?[A-Za-z0-9]') з необовʼязковим префіксом DNS піддомену та '/' (наприклад, 'example.com/MyName')
Обовʼязково.
spec.matchConstraints (MatchResources)
MatchConstraints вказує, які ресурси ця політика призначена перевіряти. AdmissionPolicy піклується про запит, якщо він відповідає всім Constraints. Однак, щоб запобігти стану нестабільності кластерів, який не можна виправити через API, ValidatingAdmissionPolicy не може відповідати ValidatingAdmissionPolicy та ValidatingAdmissionPolicyBinding. Обовʼязково.
MatchResources вирішує, чи запускати політику контролю доступу до обʼєкта на основі того, чи відповідає він критеріям відповідності. Правила виключення мають пріоритет над правилами включення (якщо ресурс відповідає обом, він виключається)
ExcludeResourceRules описує, які операції над якими ресурсами/субресурсами не повинні цікавити політику ValidatingAdmissionPolicy. Правила виключення мають пріоритет над правилами включення (якщо ресурс відповідає обом правилам, він виключається)
NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.
APIGroups — це API групи, до яких належать ресурси. '*' означає всі групи. Якщо присутній симовл '*', довжина масиву повинна бути одиницею. Обовʼязково.
Operations — це операції, які цікавлять хук допуску — CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій та будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній символ '*', довжина масиву повинна бути одиницею. Обовʼязково.
Resources — це список ресурсів, до яких застосовується це правило.
Наприклад: 'pods' означає Podʼи. 'pods/log' означає субресурс логу для Podʼів. '*' означає всі ресурси, але не субресурси. 'pods/*' означає всі субресурси Podʼів. '*/scale' означає всі субресурси масштабування. '*/*' означає всі ресурси та їх субресурси.
Якщо присутній символ підстановки, правило перевірки забезпечить, що ресурси не перекривають один одного.
Залежно від обʼєкта, що охоплює, субресурси можуть бути недозволеними. Обовʼязково.
scope вказує область застосування цього правила. Допустимі значення: "Cluster", "Namespaced" і "*" "Cluster" означає, що тільки ресурси на рівні кластера відповідатимуть цьому правилу. Обʼєкти API простору імен є кластерними. "Namespaced" означає, що тільки ресурси на рівні простору імен відповідатимуть цьому правилу. "*" означає, що немає обмежень щодо області застосування. Субресурси відповідають області свого батьківського ресурсу. Стандартно — "*".
spec.matchConstraints.matchPolicy (string)
matchPolicy визначає, як використовувати список "MatchResources" для відповідності вхідним запитам. Допустимі значення: "Exact" або "Equivalent".
Exact: відповідність запиту лише в разі точного збігу з певним правилом. Наприклад, якщо розгортання (deployments) можна змінити через apps/v1, apps/v1beta1 і extensions/v1beta1, але "правила" включають лише apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], запит до apps/v1beta1 або extensions/v1beta1 не буде відправлено до ValidatingAdmissionPolicy.
Equivalent: відповідність запиту, якщо він змінює ресурс, зазначений у правилах, навіть через іншу групу або версію API. Наприклад, якщо розгортання можна змінити через apps/v1, apps/v1beta1 і extensions/v1beta1, і "правила" включають лише apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], запит до apps/v1beta1 або extensions/v1beta1 буде перетворено на apps/v1 і відправлено до ValidatingAdmissionPolicy.
NamespaceSelector визначає, чи запускати політику контролю допуску для обʼєкта на основі того, чи відповідає простір імен для цього обʼєкта селектору. Якщо сам обʼєкт є простором імен, перевірка збігу виконується для обʼєкта.metadata.labels. Якщо обʼєкт є іншим кластерним ресурсом, політика ніколи не пропускається.
Наприклад, щоб запускати вебхук для будь-яких обʼєктів, простір імен яких не повʼязаний з "runlevel" 0 або 1; ви встановите селектор наступним чином:
Якщо замість цього ви хочете запускати політику лише для будь-яких обʼєктів, простір імен яких повʼязаний з "environment" "prod" або "staging"; ви встановите селектор наступним чином:
ObjectSelector визначає, чи запускати перевірку на основі наявності в обʼєкта відповідних міток. objectSelector оцінюється щодо старого та нового обʼєктів, які будуть відправлені на cel перевірку, і вважається, що є збіг, якщо хоча б один обʼєкт має збіг з селектором. Порожній обʼєкт (oldObject у разі створення або newObject у разі видалення) або обʼєкт, який не може мати міток (наприклад, DeploymentRollback або PodProxyOptions) не вважається таким, що має збіг. Використовуйте селектор обʼєктів тільки якщо вебхук є опціональним, оскільки кінцеві користувачі можуть оминути вебхук допуску, встановивши мітки. Стандартно пустий LabelSelector, який відповідає всьому.
ResourceRules описує, які операції з якими ресурсами/субресурсами відповідають ValidatingAdmissionPolicy. Політика цікавиться операцією, якщо вона відповідає будь-якому Правилу.
NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.
APIVersions — це версії API, до яких належать ресурси. '*' означає всі версії. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
Operations — це операції, які цікавлять вебхук допуску — CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій і будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
Resources — це список ресурсів, до яких застосовується це правило.
Наприклад, 'pods' означає Podʼи, 'pods/log' означає субресурс логу Podʼів. '*' означає всі ресурси, але не субресурси. 'pods/*' означає всі субресурси Podʼів. '*/scale' означає всі субресурси масштабування. '*/*' означає всі ресурси та їх субресурси.
Якщо присутній універсальний символ, правило валідації забезпечить відсутність перекриття ресурсів.
Залежно від навколишнього обʼєкта, субресурси можуть бути недопустимими. Обовʼязково.
scope визначає область застосування цього правила. Допустимі значення — "Cluster", "Namespaced" та "*" "Cluster" означає, що правило буде застосовано тільки до ресурсів на рівні кластера. API обʼєкти простору імен є ресурсами на рівні кластера. "Namespaced" означає, що правило буде застосовано тільки до ресурсів простору імен. "*" означає, що немає обмежень на область застосування. Субресурси відповідають області застосування свого батьківського ресурсу. Стандартне значення — "*".
spec.paramKind (ParamKind)
ParamKind визначає тип ресурсів, що використовуються для параметризації цієї політики. Якщо відсутній, то для цієї політики немає параметрів і змінна param CEL не буде надана для виразів перевірки. Якщо ParamKind посилається на неіснуючий тип, ця політика налаштована неправильно і застосовується FailurePolicy. Якщо paramKind вказано, але paramRef не встановлено в ValidatingAdmissionPolicyBinding, змінна params буде null.
ParamKind є кортежем Group, Kind і Version.
spec.paramKind.apiVersion (string)
APIVersion — це версія групи API, до якої належать ресурси. У форматі "group/version". Обовʼязково.
spec.paramKind.kind (string)
Kind — це тип API, до якого належать ресурси. Обовʼязково.
spec.validations ([]Validation)
Atomic: буде замінено під час злиття
Validations містять CEL-вирази, які використовуються для застосування перевірки. Validations і AuditAnnotations не можуть обидва бути порожніми; потрібен мінімум щось одне з Validations або AuditAnnotations.
Validation визначає CEL-вираз, який використовується для перевірки.
spec.validations.expression (string), обовʼязково
Expression представляє вираз, який буде оцінюватися CEL. ref: https://github.com/google/cel-spec CEL-вирази мають доступ до вмісту запиту/відповіді API, організованих у змінні CEL, а також деякі інші корисні змінні:
'object' — Обʼєкт з вхідного запиту. Значення null для запитів DELETE.
'oldObject' — Наявний обʼєкт. Значення null для запитів CREATE.
'params' — Параметр ресурсу, на який посилається перевірка політики. Заповнюється лише, якщо політика має ParamKind.
'namespaceObject' — Обʼєкт простору імен, до якого належить вхідний обʼєкт. Значення null для ресурсів на рівні кластера.
'variables' - Map змінних, від їх назви до їхнього ледачого (lazily) оцінюваного значення. Наприклад, змінна з назвою 'foo' може бути доступна як 'variables.foo'.
'authorizer.requestResource' — CEL ResourceCheck, створений з 'authorizer' та налаштований для ресурсу запиту.
apiVersion, kind, metadata.name і metadata.generateName завжди доступні з кореня обʼєкта. Інші властивості метаданих недоступні.
Доступні лише імена властивостей у формі [a-zA-Z_.-/][a-zA-Z0-9_.-/]*. Доступні імена властивостей екрануються згідно з наступними правилами, коли доступні у виразі:
'__' екранується як 'underscores'
'.' екранується як 'dot'
'-' екранується як 'dash'
'/' екранується як 'slash'
Імена властивостей, що точно збігаються з CEL РЕЗЕРВОВАНИМИ ключовими словами, екрануються як '{keyword}'. Ключові слова включають: "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if", "import", "let", "loop", "package", "namespace", "return".
Приклади:
Вираз, що звертається до властивості з назвою "namespace": {"Expression": "object.namespace > 0"}
Вираз, що звертається до властивості з назвою "x-prop": {"Expression": "object.x__dash__prop > 0"}
Вираз, що звертається до властивості з назвою "redact__d": {"Expression": "object.redact__underscores__d > 0"}
Рівність масивів із типом списку 'set' або 'map' ігнорує порядок елементів, тобто [1, 2] == [2, 1]. Конкатенація масивів із типом списку x-kubernetes використовує семантику типу списку:
'set': X + Y виконує обʼєднання, де позиції масиву всіх елементів у X зберігаються, а елементи в Y, що не перетинаються, додаються зі збереженням їх часткового порядку.
'map': X + Y виконує злиття, де позиції масиву всіх ключів у X зберігаються, але значення замінюються значеннями з Y, коли множини ключів X та Y перетинаються. Елементи в Y з ключами, що не перетинаються з ключами, що не перетинаються, додаються зі збереженням їх часткового порядку. Обовʼязково.
spec.validations.message (string)
Message представляє повідомлення, що відображається при невдалій перевірці. Повідомлення обовʼязкове, якщо Expression містить розриви рядка. Повідомлення не повинно містити розриви рядка. Якщо не вказано, повідомлення — "failed rule: {Rule}". Наприклад, "must be a URL with the host matching spec.host" Якщо Expression містить розриви рядка, повідомлення обовʼязкове. Повідомлення не повинно містити розриви рядка. Якщо не встановлено, повідомлення — "failed Expression: {Expression}".
spec.validations.messageExpression (string)
messageExpression оголошує CEL-вираз, який оцінюється як повідомлення про невдачу перевірки, що повертається, коли це правило не виконується. Оскільки messageExpression використовується як повідомлення про невдачу, воно повинно оцінюватися як рядок. Якщо і message, і messageExpression присутні у перевірці, то messageExpression буде використано, якщо перевірка не вдалася. Якщо messageExpression призводить до помилки під час виконання, помилка записується в лог, і повідомлення про невдачу перевірки створюється так, ніби поле messageExpression не було встановлено. Якщо messageExpression оцінюється як порожній рядок, рядок з лише пробілами або рядок, що містить розриви рядка, то повідомлення про невдачу перевірки також створюється так, ніби поле messageExpression не було встановлено, і факт того, що messageExpression створило порожній рядок/рядок з лише пробілами/рядок з розривами рядка, буде записано в лог. messageExpression має доступ до всіх тих самих змінних, що і expression, за винятком 'authorizer' та 'authorizer.requestResource'. Приклад: "object.x must be less than max ("+string(params.max)+")"
spec.validations.reason (string)
Reason представляє машинно-зчитуваний опис того, чому ця перевірка не вдалася. Якщо це перша перевірка в списку, що не вдалася, ця причина, а також відповідний код відповіді HTTP, використовуються у відповіді HTTP клієнту. Наразі підтримувані причини: "Unauthorized", "Forbidden", "Invalid", "RequestEntityTooLarge". Якщо не встановлено, використовується StatusReasonInvalid у відповіді клієнту.
spec.variables ([]Variable)
Patch strategy: злиття по ключу name
Map: унікальні значення по ключу name будуть зберігатися під час злиття
Variables містять визначення змінних, які можна використовувати у складі інших виразів. Кожна змінна визначена як іменований CEL-вираз. Змінні, визначені тут, будуть доступні у variables в інших виразах політики, за винятком MatchConditions, оскільки MatchConditions оцінюються перед рештою політики.
Вираз змінної може посилатися на інші змінні, визначені раніше у списку, але не на ті, що стоять після неї. Таким чином, змінні мають бути відсортовані за порядком першої появи та ациклічно.
Variable — це визначення змінної, яка використовується для складання. Змінна визначається як іменований вираз.
spec.variables.expression (string), обовʼязково
Expression — це вираз, який буде оцінений як значення змінної. CEL-вираз має доступ до тих самих ідентифікаторів, що і CEL-вирази в Validation.
spec.variables.name (string), обовʼязково
Name — це назва змінної. Назва повинна бути дійсним ідентифікатором CEL і унікальною серед усіх змінних. Змінна може бути доступна в інших виразах через variables Наприклад, якщо name є "foo", змінна буде доступна як variables.foo.
status (ValidatingAdmissionPolicyStatus)
Статус ValidatingAdmissionPolicy, включаючи попередження, які корисні для визначення, чи працює політика відповідно до очікувань. Заповнюється системою. Тільки для читання.
ValidatingAdmissionPolicyStatus представляє статус політики перевірки допуску.
status.conditions ([]Condition)
Map: унікальні значення по ключу type будуть зберігатися під час злиття
Стани представляють останні доступні спостереження поточного стану політики.
Condition містить деталі одного аспекту поточного стану цього API-ресурсу.
lastTransitionTime — це останній час, коли стан перейшов з одного стану в інший. Це має бути, коли змінився основний стан. Якщо це невідомо, то прийнятно використовувати час, коли змінилося поле API.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
status.conditions.message (string), обовʼязково
message — це повідомлення зрозуміле людині, яке вказує деталі про зміну стану. Воно може бути порожній рядок.
status.conditions.reason (string), обовʼязково
reason містить програмний ідентифікатор, що вказує на причину останньої зміни стану. Виробники конкретних типів станів можуть визначити очікувані значення та значення для цього поля, а також чи вважаються значення гарантованим API. Значення має бути рядком у форматі CamelCase. Це поле не може бути порожнім.
status.conditions.status (string), обовʼязково
статус стану, один з True, False, Unknown.
status.conditions.type (string), обовʼязково
тип стану у форматі CamelCase або у форматі foo.example.com/CamelCase.
status.conditions.observedGeneration (int64)
observedGeneration представляє .metadata.generation, на основі якого було встановлено стан. Наприклад, якщо .metadata.generation зараз 12, але .status.conditions[x].observedGeneration - 9, стан застарів відносно поточного стану екземпляра.
status.observedGeneration (int64)
Покоління, яке спостерігалося контролером.
status.typeChecking (TypeChecking)
Результати перевірки типу для кожного виразу. Наявність цього поля вказує на завершення перевірки типу.
TypeChecking містить результати перевірки типу виразів у ValidatingAdmissionPolicy
Вміст інформації про попередження перевірки типу у формі, зручною для читання людиною. Кожен рядок попередження містить тип, за яким перевірено вираз, а потім помилку перевірки типу від компілятора.
ValidatingAdmissionPolicyList
ValidatingAdmissionPolicyList - це список ValidatingAdmissionPolicy.
ValidatingAdmissionPolicyBinding повʼязує ValidatingAdmissionPolicy з параметризованими ресурсами. ValidatingAdmissionPolicyBinding та параметризовані CRD разом визначають, як адміністратори кластерів налаштовують політики для кластерів.
Для даного запиту на допуск кожне привʼязування спричиняє оцінку його політики N разів, де N дорівнює 1 для політик/привʼязок, які не використовують параметри, або кількість параметрів, обраних привʼязкою.
CEL вирази політики повинні мати обчислену вартість CEL нижче максимально допустимого бюджету CEL. Кожна оцінка політики отримує незалежний бюджет CEL. Додавання/видалення політик, привʼязок або параметрів не може впливати на те, чи знаходиться комбінація (policy, binding, param) у своєму бюджеті CEL.
Специфікація бажаної поведінки ValidatingAdmissionPolicyBinding.
ValidatingAdmissionPolicyBindingSpec - це специфікація ValidatingAdmissionPolicyBinding.
spec.matchResources (MatchResources)
MatchResources оголошує, які ресурси відповідають цій привʼязці і будуть перевірені нею. Зауважте, що це перетинається з matchConstraints політики, тому лише запити, які відповідають політиці, можуть бути обрані. Якщо це поле не встановлено, всі ресурси, які відповідають політиці, перевіряються цією привʼязкою. Якщо resourceRules не встановлено, це не обмежує відповідність ресурсу. Якщо ресурс відповідає іншим полям цього обʼєкта, він буде перевірений. Зауважте, що це відрізняється від matchConstraints ValidatingAdmissionPolicy, де resourceRules є обовʼязковими.
MatchResources вирішує, чи запускати політику контролю допуску на обʼєкті на основі відповідності критеріям відповідності. Правила виключення мають пріоритет над правилами включення (якщо ресурс відповідає обом, він виключається).
ExcludeResourceRules описує, які операції на яких ресурсах/субресурсах ValidatingAdmissionPolicy не повинна враховувати. Правила виключення мають пріоритет над правилами включення (якщо ресурс відповідає обом, він виключається).
NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.
APIVersions — це версії API, до яких належать ресурси. '*' означає всі версії. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
Operations — це операції, які цікавлять вебхук допуску — CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій і будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
Resources — це список ресурсів, до яких застосовується це правило.
Наприклад, 'pods' означає Podʼи, 'pods/log' означає субресурс логу Podʼів. '*' означає всі ресурси, але не субресурси. 'pods/*' означає всі субресурси Podʼів. '*/scale' означає всі субресурси масштабування. '*/*' означає всі ресурси та їх субресурси.
Якщо присутній універсальний символ, правило валідації забезпечить відсутність перекриття ресурсів.
Залежно від навколишнього обʼєкта, субресурси можуть бути недопустимими. Обовʼязково.
scope визначає сферу дії цього правила. Дійсні значення — "Cluster", "Namespaced" та "*". "Cluster" означає, що тільки ресурси кластерного рівня відповідатимуть цьому правилу. Обʼєкти API namespace є ресурсами кластерного рівня. "Namespaced" означає, що тільки ресурси namespace відповідатимуть цьому правилу. "*" означає, що немає обмежень на сферу дії. Субресурси відповідають сфері дії їхнього батьківського ресурсу. Стандартне значння — "*".
spec.matchResources.matchPolicy (string)
matchPolicy визначає, як список "MatchResources" використовується для пошуку збігів з вхідними запитами. Дозволені значення — "Exact" або "Equivalent".
Exact: відповідати запиту тільки, якщо він точно відповідає зазначеному правилу. Наприклад, якщо розгортання (deployments) можна змінювати через apps/v1, apps/v1beta1 та extensions/v1beta1, але "rules" включали тільки apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], запит на apps/v1beta1 або extensions/v1beta1 не буде надіслано до ValidatingAdmissionPolicy.
Equivalent: відповідати запиту, якщо він змінює ресурс, зазначений у правилах, навіть через іншу групу або версію API. Наприклад, якщо розгортання (deployments) можна змінювати через apps/v1, apps/v1beta1 та extensions/v1beta1, і "rules" включали тільки apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], запит на apps/v1beta1 або extensions/v1beta1 буде перетворено на apps/v1 і надіслано до ValidatingAdmissionPolicy.
NamespaceSelector визначає, чи застосовувати політику контролю доступу до об’єкта на основі відповідності простору імен цього об’єкта селектору. Якщо об’єкт сам по собі є простором імен, відповідність перевіряється по обʼєкту.metadata.labels. Якщо об’єкт є іншим ресурсом на рівні кластера, він ніколи не пропускає політику.
Наприклад, щоб запустити вебхук для будь-яких об’єктів, простір імен яких не пов’язаний з "runlevel" 0 або 1, необхідно налаштувати селектор наступним чином:
Якщо натомість ви хочете застосовувати політику лише для об’єктів, простір імен яких пов’язаний з "environment" "prod" або "staging", необхідно налаштувати селектор наступним чином:
ObjectSelector визначає, чи потрібно виконувати перевірку на основі відповідності міток об’єкта. objectSelector оцінюється як для oldObject, так і для newObject, які будуть надіслані на перевірку cel, і вважається відповідним, якщо будь-який об’єкт відповідає селектору. Null обʼєкт (oldObject у випадку створення або newObject у випадку видалення) або об’єкт, який не може мати міток (наприклад, DeploymentRollback або PodProxyOptions), не вважається відповідним. Використовуйте селектор об’єктів, тільки якщо вебхук є опціональним, оскільки кінцеві користувачі можуть оминути вебхук допуску, встановивши мітки. Стандартно використовується порожній LabelSelector, який відповідає всьому.
ResourceRules описує, які операції на яких ресурсах/субресурсах відповідають ValidatingAdmissionPolicy. Політика враховує операцію, якщо вона відповідає будь-якому правилу.
NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.
APIVersions — це версії API, до яких належать ресурси. '*' означає всі версії. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
Operations — це операції, які цікавлять вебхук допуску — CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій і будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
Resources — це список ресурсів, до яких застосовується це правило.
Наприклад, 'pods' означає Podʼи, 'pods/log' означає субресурс логу Podʼів. '*' означає всі ресурси, але не субресурси. 'pods/*' означає всі субресурси Podʼів. '*/scale' означає всі субресурси масштабування. '*/*' означає всі ресурси та їх субресурси.
Якщо присутній універсальний символ, правило валідації забезпечить відсутність перекриття ресурсів.
Залежно від навколишнього обʼєкта, субресурси можуть бути недопустимими. Обовʼязково.
spec.matchResources.resourceRules.scope (string)
scope визначає область застосування цього правила. Допустимі значення — "Cluster", "Namespaced" та "*". "Cluster" означає, що правило буде застосовано тільки до ресурсів на рівні кластера. API обʼєкти простору імен є ресурсами на рівні кластера. "Namespaced" означає, що правило буде застосовано тільки до ресурсів простору імен. "*" означає, що немає обмежень на область застосування. Субресурси відповідають області застосування свого батьківського ресурсу. Стандартне значення — "*".
spec.paramRef (ParamRef)
paramRef вказує на ресурс параметра, який використовується для налаштування політики контролю допуску. Він повинен вказувати на ресурс типу, визначеного в ParamKind прив’язаної ValidatingAdmissionPolicy. Якщо політика вказує ParamKind, а ресурс, на який посилається ParamRef, не існує, ця привʼязка вважається неправильно налаштованою, і застосовується FailurePolicy ValidatingAdmissionPolicy. Якщо політика не вказує ParamKind, це поле ігнорується, і правила оцінюються без параметра.
ParamRef описує, як знайти параметри, які будуть використовуватися як вхідні дані для виразів правил, що застосовуються привʼязкою політики.
spec.paramRef.name (string)
name — це імʼя ресурсу, на який посилаються.
Одне з name або selector повинно бути встановлено, але name і selector є взаємовиключними властивостями. Якщо одне встановлено, інше повинно бути відключено.
Один параметр, який використовується для всіх запитів на допуск, можна налаштувати, встановивши поле name, залишивши selector порожнім і встановивши простір імен, якщо paramKind має простір імен.
spec.paramRef.namespace (string)
namespace — це простір імен ресурсу, на який посилаються. Дозволяє обмежити пошук параметрів певним простором імен. Застосовується як до полів name, так і до selector.
Можна використовувати параметр для кожного простору імен, вказавши простір імен для paramKind у політиці та залишивши це поле порожнім.
Якщо paramKind є кластерним, це поле МАЄ бути не встановленим. Встановлення цього поля призведе до помилки конфігурації.
Якщо paramKind має простір імен, використовується простір імен обʼєкта, який оцінюється на допуск, коли це поле залишено порожнім. Слідкуйте за тим, що якщо це поле залишити порожнім, привʼязка не повинна відповідати жодним ресурсам на рівні кластера, що призведе до помилки.
spec.paramRef.parameterNotFoundAction (string)
parameterNotFoundAction контролює поведінку привʼязки, коли ресурс існує, і імʼя або селектор є дійсними, але немає параметрів, які відповідають привʼязці. Якщо значення встановлено на Allow, тоді відсутність відповідних параметрів буде розцінюватися як успішна валідація привʼязкою. Якщо встановлено Deny, то відсутність відповідних параметрів буде підпадати під дію failurePolicy політики.
selector може бути використаний для відповідності кільком обʼєктам параметрів на основі їх міток. Поставте selector: {} для відповідності всім ресурсам ParamKind.
Якщо знайдено кілька параметрів, всі вони оцінюються за допомогою виразів політики, і результати об’єднуються логічним І.
Одне з name або selector повинно бути встановлено, але name і selector є взаємовиключними властивостями. Якщо одне встановлено, інше повинно бути відключено.
spec.policyName (string)
PolicyName посилається на ім’я ValidatingAdmissionPolicy, до якої прив’язується ValidatingAdmissionPolicyBinding. Якщо вказаний ресурс не існує, ця прив’язка вважається недійсною і буде ігнорована. Обовʼязково.
spec.validationActions ([]string)
Set: під час злиття зберігатимуться унікальні значення
validationActions визначає, як виконуються перевірки ValidatingAdmissionPolicy, на яку посилається ValidatingAdmissionPolicyBinding. Якщо перевірка оцінюється як хибна, вона завжди виконується відповідно до цих дій.
Збої, визначені FailurePolicy ValidatingAdmissionPolicy, виконуються відповідно до цих дій лише у випадку, якщо FailurePolicy встановлено на Fail, інакше збої ігноруються. Це включає помилки компіляції, помилки під час виконання та неправильні конфігурації політики.
validationActions оголошується як набір значень дій. Порядок не має значення. validationActions не можуть містити дублікатів одного й того самого значення дії.
Підтримувані значення дій:
"Deny" означає, що збій перевірки призводить до відхилення запиту.
"Warn" означає, що збій перевірки повідомляється клієнту запиту в HTTP-заголовках попередження з кодом попередження 299. Попередження можуть надсилатися як для дозволених, так і для відхилених відповідей на допуск.
"Audit" означає, що збій перевірки включається до опублікованої події аудиту для запиту. Подія аудиту міститиме анотацію аудиту validation.policy.admission.k8s.io/validation_failure зі значенням, що містить деталі збоїв перевірки, відформатовані як JSON-список об’єктів, кожен з яких має наступні поля:
expressionIndex: Індекс збоїв перевірки в ValidatingAdmissionPolicy
validationActions: Дії примусового виконання для збою перевірки Приклад анотації аудиту: "validation.policy.admission.k8s.io/validation_failure": "[{"message": "Invalid value", {"policy": "policy.example.com", {"binding": "policybinding.example.com", {"expressionIndex": "1", {"validationActions": ["Audit"]}]"
Клієнти повинні очікувати обробки додаткових значень, ігноруючи будь-які значення, які не розпізнаються.
"Deny" і "Warn" не можуть використовуватися разом, оскільки ця комбінація непотрібно дублює збій перевірки як у тілі відповіді API, так і в HTTP-заголовках попередження.
Обовʼязково.
Операції
get отримати вказану ValidatingAdmissionPolicy
HTTP запит
GET /apis/admissionregistration.k8s.io/v1/validatingadmissionpolicies/{name}
ValidatingAdmissionPolicyBinding звʼязує ValidatingAdmissionPolicy з параметризованими ресурсами.
apiVersion: admissionregistration.k8s.io/v1
import "k8s.io/api/admissionregistration/v1"
ValidatingAdmissionPolicyBinding
ValidatingAdmissionPolicyBinding повʼязує ValidatingAdmissionPolicy з параметризованими ресурсами. ValidatingAdmissionPolicyBinding і параметризовані CRD разом визначають, як адміністраторам кластерів налаштовувати політики для кластерів.
Для кожного запиту на допуск кожне звʼязування спричинить оцінку його політики N разів, де N дорівнює 1 для політик/звʼязувань, які не використовують параметри, в іншому випадку N є кількість параметрів, вибраних звʼязуванням.
CEL вирази політики повинні мати обчислену вартість CEL нижчу за максимальний бюджет CEL. Кожна оцінка політики отримує незалежний бюджет витрат CEL. Додавання/видалення політик, звʼязувань або параметрів не повинно впливати на те, чи є дана комбінація (політика, звʼязування, параметр) у межах свого бюджету CEL.
Визначення бажаної поведінки ValidatingAdmissionPolicyBinding.
ValidatingAdmissionPolicyBindingSpec є специфікацією ValidatingAdmissionPolicyBinding.
spec.matchResources (MatchResources)
MatchResources декларує, які ресурси відповідають цьому звʼязуванню і будуть перевірені ним. Зверніть увагу, що це перетинається з matchConstraints політики, тому тільки запити, які відповідають політиці, можуть бути вибрані цим звʼязуванням. Якщо це не задано, всі ресурси, що відповідають політиці, будуть перевірені цим звʼязуванням.
Коли resourceRules не задано, це не обмежує відповідність ресурсів. Якщо ресурс відповідає іншим полям цього обʼєкта, він буде перевірений. Зверніть увагу, що це відрізняється від matchConstraints ValidatingAdmissionPolicy, де resourceRules є обовʼязковими.
MatchResources визначає, чи слід застосовувати політику контролю доступу до обʼєкта на основі того, чи відповідає він критеріям відповідності. Правила виключення мають перевагу над правилами включення (якщо ресурс відповідає обом, він буде виключений).
ExcludeResourceRules описує, які операції над якими ресурсами/підресурсами ValidatingAdmissionPolicy не повинна враховувати. Правила виключення мають перевагу над правилами включення (якщо ресурс відповідає обом, він буде виключений).
NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.
APIGroups — це групи API, до яких належать ресурси. '*' — це всі групи. Якщо '*' присутній, довжина фрагменту повинна бути одиницею. Обовʼязковий параметр.
APIVersions — це версії API, до яких належать ресурси. '*' — всі версії. Якщо '*' присутній, довжина фрагменту повинна бути одиницею. Обовʼязковий параметр.
Operations — це операції, які цікавлять хук допуску - CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій і будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній символ "*", довжина фрагмента повинна бути одиницею. Обовʼязково.
Resources — список ресурсів, до яких застосовується це правило.
Наприклад: 'pods' означає podʼи. 'pods/log' означає підресурс журналу podʼів. '*' означає всі ресурси, але не підресурси. 'pods/*' означає всі підресурси podʼів. '*/scale' означає всі підресурси масштабу. '*/*' означає всі ресурси і їхні підресурси.
Якщо присутній символ підстановки, правило валідації забезпечить, щоб ресурси не перекривалися між собою.
Залежно від обʼєкта, що містить, підресурси можуть бути не дозволені. Обовʼязкове.
scope визначає область цього правила. Дійсні значення: "Cluster", "Namespaced" та "*". "Cluster" означає, що лише ресурси з областю дії кластера відповідатимуть цьому правилу. Обʼєкти API простору імен є кластерними. "Namespaced" означає, що лише ресурси з простору імен відповідатимуть цьому правилу. "*" означає, що обмежень за областю дії немає. Підресурси відповідають області їхнього батьківського ресурсу. Стандартно "*".
spec.matchResources.matchPolicy (string)
matchPolicy визначає, як список "MatchResources" використовується для відповідності вхідним запитам. Дійсні значення: "Exact" або "Equivalent".
Exact: відповідати запиту лише тоді, коли він точно відповідає зазначеному правилу. Наприклад, якщо deployments можуть бути змінені через apps/v1, apps/v1beta1 і extensions/v1beta1, але "rules" включали лише apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], запит до apps/v1beta1 або extensions/v1beta1 не буде надісланий до ValidatingAdmissionPolicy.
Equivalent: відповідати запиту, якщо він змінює ресурс, зазначений у правилах, навіть через іншу групу API або версію. Наприклад, якщо deployments можуть бути змінені через apps/v1, apps/v1beta1 і extensions/v1beta1, і "rules" включають лише apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], запит до apps/v1beta1 або extensions/v1beta1 буде перетворено на apps/v1 і надіслано до ValidatingAdmissionPolicy.
NamespaceSelector вирішує, чи слід застосовувати політику контролю доступу до обʼєкта на основі того, чи відповідає простір імен цього обʼєкта селектору. Якщо сам обʼєкт є простором імен, відповідність перевіряється за object.metadata.labels. Якщо обʼєкт є іншим ресурсом з областю кластеру, політика ніколи не пропускається.
Наприклад, щоб застосовувати вебхук до будь-яких обʼєктів, простір імен яких не асоційований з "runlevel" значенням "0" або "1", ви встановите селектор наступним чином:
Якщо ви хочете застосовувати політику лише до об'єктів, простір імен яких асоційований з "environment" значенням "prod" або "staging", ви встановите селектор наступним чином:
ObjectSelector вирішує, чи слід виконувати валідацію на основі того, чи має обʼєкт відповідні мітки. objectSelector оцінюється як для oldObject, так і для newObject, які будуть надіслані на перевірку CEL, і вважається відповідним, якщо хоча б один з обʼєктів відповідає селектору. Обʼєкт null (oldObject у випадку створення або newObject у випадку видалення) або обʼєкт, який не може мати міток (наприклад, DeploymentRollback або PodProxyOptions), не вважається таким, що мають збіг.
Використовуйте селектор обʼєкта лише якщо вебхук є опціональним, оскільки кінцеві користувачі можуть пропустити вебхук допуску, встановивши мітки. Стандартно використовується порожній LabelSelector, який відповідає всьому.
ResourceRules описує, які операції з якими ресурсами/підресурсами мають збіг ValidatingAdmissionPolicy. Політика враховує операцію, якщо вона відповідає будь-якому правилу.
NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.
APIGroups — це групи API, до яких належать ресурси. '*' — всі групи. Якщо '*' присутній, довжина фрагменту повинна бути одиницею. Обовʼязковий параметр.
APIVersions — це версії API, до яких належать ресурси. '*' — всі версії. Якщо '*' присутній, довжина фрагменту повинна бути одиницею. Обовʼязковий параметр.
Operations — це операції, які цікавлять хук допуску - CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій і будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній символ "*", довжина фрагмента повинна бути одиницею. Обовʼязково.
Resources — список ресурсів, до яких застосовується це правило.
Наприклад: 'pods' означає podʼи. 'pods/log' означає підресурс журналу podʼів. '*' означає всі ресурси, але не підресурси. 'pods/*' означає всі підресурси podʼів. '*/scale' означає всі підресурси масштабу. '*/*' означає всі ресурси і їхні підресурси.
Якщо присутній символ підстановки, правило валідації забезпечить, щоб ресурси не перекривалися між собою.
Залежно від обʼєкта, що містить, підресурси можуть бути не дозволені. Обовʼязкове.
spec.matchResources.resourceRules.scope (string)
scope визначає область цього правила. Дійсні значення: "Cluster", "Namespaced" та "*". "Cluster" означає, що лише ресурси з областю дії кластера відповідатимуть цьому правилу. Обʼєкти API простору імен є кластерними. "Namespaced" означає, що лише ресурси з простору імен відповідатимуть цьому правилу. "*" означає, що обмежень за областю дії немає. Підресурси відповідають області їхнього батьківського ресурсу. Стандартно "*".
spec.paramRef (ParamRef)
paramRef вказує на ресурс параметра, який використовується для конфігурації політики контролю доступу. Він має вказувати на ресурс типу, зазначеного в ParamKind привʼязаної ValidatingAdmissionPolicy. Якщо політика вказує ParamKind, а ресурс, на який посилається ParamRef, не існує, це привʼязування вважається неправильно налаштованим, і застосовується FailurePolicy ValidatingAdmissionPolicy. Якщо політика не вказує ParamKind, це поле ігнорується, а правила оцінюються без параметра.
ParamRef описує, як знайти параметри, які будуть використовуватися як вхідні дані для виразів правил, застосованих привʼязуванням політики.
spec.paramRef.name (string)
name — це ім'я ресурсу, на який посилаються.
Один з параметрів name або selector повинен бути заданий, але name і selector є взаємовиключними властивостями. Якщо одне з них задане, інше повинно бути не задане.
Один параметр, що використовується для всіх запитів на допуск, можна налаштувати, задавши поле name, залишивши selector порожнім і задавши простір імен, якщо paramKind має область простору імен.
spec.paramRef.namespace (string)
namespace — це простір імен ресурсу, на який посилаються. Дозволяє обмежити пошук параметрів певним простором імен. Застосовується до обох полів name і selector.
Параметр для кожного простору імен можна використовувати, вказавши у політиці paramKind для простору імен і залишивши це поле порожнім.
Якщо paramKind має область дії кластер, це поле МАЄ бути не задане. Встановлення цього поля призводить до помилки конфігурації.
Якщо paramKind має область дії простір імен, буде використано простір імен обʼєкта, що оцінюється для допуску, коли це поле залишено порожнім. Зверніть увагу, що якщо це поле залишено пустим, привʼязування не повинно відповідати жодним ресурсам з областю дії кластера, що призведе до помилки.
spec.paramRef.parameterNotFoundAction (string)
parameterNotFoundAction контролює поведінку привʼязування, коли ресурс існує, і name або selector є дійсними, але не знайдено жодних параметрів, які відповідають привʼязуванню. Якщо значення встановлено на Allow, то відсутність відповідних параметрів буде розглядатися привʼязуванням як успішна валідація. Якщо встановлено на Deny, то відсутність відповідних параметрів підлягатиме failurePolicy політиці.
selector може використовуватися для відповідності кільком обʼєктам параметрів на основі їхніх міток. Постачайте selector: {} для відповідності всім ресурсам типу ParamKind.
Якщо знайдено кілька параметрів, вони всі оцінюються за виразами політики, і результати обʼєднуються за допомогою логічного оператора AND.
Один з параметрів name або selector повинен бути заданий, але name і selector є взаємовиключними властивостями. Якщо одне з них задане, інше повинно бути не задане.
spec.policyName (string)
PolicyName посилається на імʼя ValidatingAdmissionPolicy, до якого привʼязується ValidatingAdmissionPolicyBinding. Якщо посиланий ресурс не існує, це привʼязування вважається недійсним і буде ігноруватися. Обовʼязкове.
spec.validationActions ([]string)
Set: унікальні значення будуть збережені під час злиття
validationActions визначає, як виконуються валідації вказаної ValidatingAdmissionPolicy. Якщо валідація оцінюється як невірна, вона завжди виконується відповідно до цих дій.
Помилки, визначені FailurePolicy ValidatingAdmissionPolicy, виконуються відповідно до цих дій тільки якщо FailurePolicy встановлено на Fail, в іншому випадку помилки ігноруються. Це включає помилки компіляції, помилки виконання та неправильні конфігурації політики.
validationActions оголошено як набір значень дій. Порядок не має значення. validationActions не може містити дублікатів однієї і тієї ж дії.
Підтримувані значення дій:
"Deny" вказує, що невдача валідації призводить до відмови у запиті.
"Warn" вказує, що невдача валідації повідомляється клієнту запиту в заголовках HTTP Warning з кодом попередження 299. Попередження можуть бути надіслані як для дозволених, так і для відхилених відповідей на допуск.
"Audit" вказує, що невдача валідації включена в опубліковану подію аудиту запиту. Подія аудиту буде містити анотацію аудиту validation.policy.admission.k8s.io/validation_failure зі значенням, яке містить деталі невдач валідації у форматі JSON списку обʼєктів, кожен з яких має такі поля:
Клієнти повинні очікувати обробку додаткових значень, ігноруючи будь-які нерозпізнані значення.
"Deny" та "Warn" не можуть використовуватися разом, оскільки ця комбінація зайво дублює невдачу валідації як у тілі відповіді API, так і в заголовках HTTP попередження.
Обовʼязкове.
ValidatingAdmissionPolicy
ValidatingAdmissionPolicy описує визначення політики валідації допуску, яка приймає або відхиляє обʼєкт без його зміни.
Визначення бажаної поведінки ValidatingAdmissionPolicy.
ValidatingAdmissionPolicySpec — це специфікація бажаної поведінки AdmissionPolicy.
spec.auditAnnotations ([]AuditAnnotation)
Atomic: буде замінено під час злиття
auditAnnotations містить вирази CEL, які використовуються для створення анотацій аудиту для події аудиту API-запиту. validations і auditAnnotations не можуть бути обидва порожніми; принаймні одне з них є обовʼязковим.
AuditAnnotation описує, як створити анотацію аудиту для запиту API.
spec.auditAnnotations.key (string), обовʼязково
key визначає ключ анотації аудиту. Ключі анотацій аудиту для ValidatingAdmissionPolicy повинні бути унікальними. Ключ повинен бути кваліфікованим іменем ([A-Za-z0-9][-A-Za-z0-9_.]*) довжиною не більше 63 байтів.
Ключ комбінується з іменем ресурсу ValidatingAdmissionPolicy для створення ключа анотації аудиту: "{Ім'я ValidatingAdmissionPolicy}/{ключ}".
Якщо admission webhook використовує те саме ім'я ресурсу, що і ця ValidatingAdmissionPolicy, та той же ключ анотації аудиту, ключ анотації буде ідентичним. У цьому випадку перша анотація, написана з цим ключем, буде включена в подію аудиту, а всі наступні анотації з тим же ключем будуть відкинуті.
valueExpression представляє вираз, який оцінюється CEL для створення значення анотації аудиту. Вираз має оцінюватися як рядок або null. Якщо вираз оцінюється як рядок, анотація аудиту включається з рядковим значенням. Якщо вираз оцінюється як null або порожній рядок, анотація аудиту буде пропущена. valueExpression не може перевищувати 5 КБ в довжину. Якщо результат valueExpression перевищує 10 КБ в довжину, він буде обрізаний до 10 КБ.
Якщо кілька ресурсів ValidatingAdmissionPolicyBinding відповідають API-запиту, вираз valueExpression буде оцінений для кожного привʼязування. Всі унікальні значення, отримані від valueExpressions, будуть обʼєднані в список, розділений комами.
Обовʼязкове.
spec.failurePolicy (string)
failurePolicy визначає, як обробляти помилки для політики допуску. Помилки можуть виникати через помилки парсингу виразів CEL, помилки перевірки типів, помилки виконання та неправильні або некоректно налаштовані визначення політики або привʼязки.
Політика вважається недійсною, якщо spec.paramKind посилається на неіснуючий Kind. Привʼязка є недійсною, якщо spec.paramRef.name посилається на неіснуючий ресурс.
failurePolicy не визначає, як обробляються валідації, що оцінюються як невірні.
Коли failurePolicy встановлено на Fail, ValidatingAdmissionPolicyBinding validationActions визначає, як застосовуються помилки.
Допустимі значення: Ignore або Fail. Стандартно — Fail.
spec.matchConditions ([]MatchCondition)
Patch strategy: обʼєднання за ключем name
Map: унікальні значення ключа name будуть збережені під час злиття
MatchConditions — це список умов, які повинні бути виконані для валідації запиту. Умови збігу фільтрують запити, які вже були відповідно до правил, namespaceSelector і objectSelector. Порожній список matchConditions відповідає всім запитам. Максимальна кількість умов збігу — 64.
Якщо надано обʼєкт параметра, до нього можна звертатися через дескриптор params так само, як і до виразів валідації.
Точна логіка збігу (впорядкована):
Якщо будь-яка умова matchCondition оцінюється як FALSE, політика пропускається.
Якщо всі умови matchConditions оцінюються як TRUE, політика оцінюється.
Якщо будь-яка умова matchCondition оцінюється як помилка (але жодна не є FALSE):
Якщо failurePolicy=Fail, запит відхиляється.
Якщо failurePolicy=Ignore, політика пропускається.
MatchCondition представляє умову, яка повинна бути виконана для того, щоб запит був надісланий до вебхука.
Expression представляє вираз, який буде оцінюватися CEL. Повинен оцінюватися як bool. CEL вирази мають доступ до вмісту AdmissionRequest та Authorizer, організованого у змінні CEL:
'object' — обʼєкт з вхідного запиту. Значення є null для запитів DELETE.
'oldObject' — існуючий обʼєкт. Значення є null для запитів CREATE.
'request' — атрибути запиту на допуск (/pkg/apis/admission/types.go#AdmissionRequest).
Name є ідентифікатором для цієї умови збігу, який використовується для стратегічного злиття MatchConditions, а також для надання ідентифікатора для цілей журналювання. Добре вибране імʼя повинно бути описовим для відповідного виразу. Name повинно бути кваліфікованим іменем, що складається з алфавітно-цифрових символів, '-', '_' або '.', і повинно починатися та закінчуватися алфавітно-цифровим символом (наприклад, 'MyName', 'my.name', '123-abc', регулярний вираз для перевірки — '([A-Za-z0-9][-A-Za-z0-9_.]*)?[A-Za-z0-9]') з необовʼязковим префіксом DNS піддомену та '/' (наприклад, 'example.com/MyName').
Обовʼязкове.
spec.matchConstraints (MatchResources)
MatchConstraints визначає ресурси, які ця політика має перевіряти. AdmissionPolicy турбується про запит, якщо він відповідає усім Constraints. Однак, для запобігання випадкам, коли кластер може бути переведений в нестабільний стан, з якого не можна відновитися через API, ValidatingAdmissionPolicy не може відповідати ValidatingAdmissionPolicy і ValidatingAdmissionPolicyBinding.
Обовʼязкове.
MatchResources визначає, чи потрібно застосовувати політику контролю доступу до обʼєкта на основі того, чи відповідає він критеріям збігу. Правила виключення мають пріоритет над правилами включення (якщо ресурс відповідає обом критеріям, він буде виключений).
ExcludeResourceRules описує операції над ресурсами/підресурсами, про які ValidatingAdmissionPolicy не повинна турбуватися. Правила виключення мають пріоритет над правилами включення (якщо ресурс відповідає обом критеріям, він буде виключений).
NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.
APIGroups — це групи API, до яких належать ресурси. '*' — всі групи. Якщо '*' присутній, довжина фрагменту повинна бути одиницею. Обовʼязковий параметр.
APIVersions — це версії API, до яких належать ресурси. '*' — всі версії. Якщо '*' присутній, довжина фрагменту повинна бути одиницею. Обовʼязковий параметр.
Operations — це операції, які цікавлять хук допуску - CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій і будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній символ "*", довжина фрагмента повинна бути одиницею. Обовʼязково.
Resources — список ресурсів, до яких застосовується це правило.
Наприклад: 'pods' означає podʼи. 'pods/log' означає підресурс журналу podʼів. '*' означає всі ресурси, але не підресурси. 'pods/*' означає всі підресурси podʼів. '*/scale' означає всі підресурси масштабу. '*/*' означає всі ресурси і їхні підресурси.
Якщо присутній символ підстановки, правило валідації забезпечить, щоб ресурси не перекривалися між собою.
Залежно від обʼєкта, що містить, підресурси можуть бути не дозволені. Обовʼязкове.
scope визначає область цього правила. Дійсні значення: "Cluster", "Namespaced" та "*". "Cluster" означає, що лише ресурси з областю дії кластера відповідатимуть цьому правилу. Обʼєкти API простору імен є кластерними. "Namespaced" означає, що лише ресурси з простору імен відповідатимуть цьому правилу. "*" означає, що обмежень за областю дії немає. Підресурси відповідають області їхнього батьківського ресурсу. Стандартно "*".
spec.matchConstraints.matchPolicy (string)
matchPolicy визначає, як список "MatchResources" використовується для відповідності вхідним запитам. Дійсні значення: "Exact" або "Equivalent".
Exact: відповідати запиту лише тоді, коли він точно відповідає зазначеному правилу. Наприклад, якщо deployments можуть бути змінені через apps/v1, apps/v1beta1 і extensions/v1beta1, але "rules" включали лише apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], запит до apps/v1beta1 або extensions/v1beta1 не буде надісланий до ValidatingAdmissionPolicy.
Equivalent: відповідати запиту, якщо він змінює ресурс, зазначений у правилах, навіть через іншу групу API або версію. Наприклад, якщо deployments можуть бути змінені через apps/v1, apps/v1beta1 і extensions/v1beta1, і "rules" включають лише apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], запит до apps/v1beta1 або extensions/v1beta1 буде перетворено на apps/v1 і надіслано до ValidatingAdmissionPolicy.
NamespaceSelector визначає, чи слід застосовувати політику контролю доступу до обʼєкта на основі того, чи відповідає простір імен цього обʼєкта селектору. Якщо обʼєкт сам є простором імен, то відповідність перевіряється на object.metadata.labels. Якщо обʼєкт є іншим ресурсом, що охоплює кластер, політика ніколи не пропускається.
Наприклад, щоб застосувати вебхук до будь-яких обʼєктів, простір імен яких не асоціюється з "runlevel" "0" або "1", ви повинні встановити селектор наступним чином:
Якщо ви хочете застосувати політику лише до обʼєктів, простір імен яких асоційований з "середовищем" "prod" або "staging", ви повинні налаштувати селектор таким чином:
ObjectSelector визначає, чи потрібно виконати перевірку на основі того, чи має обʼєкт відповідні мітки. ObjectSelector оцінюється як для старого обʼєкта (oldObject), так і для нового обʼєкта (newObject), які будуть надіслані для перевірки cel, і вважається, що він відповідає, якщо будь-який з обʼєктів відповідає селектору. Null-обʼєкт (oldObject у випадку створення або newObject у випадку видалення) або обʼєкт, який не може мати мітки (такі як DeploymentRollback або PodProxyOptions), не вважається таким, що має збіг. Використовуйте селектор обʼєктів лише в разі, якщо веб-хук є опційним, оскільки кінцеві користувачі можуть пропустити admission webhook, налаштувавши мітки. Стандартно використовуйте пустий LabelSelector, який відповідає всьому.
ResourceRules описує, які операції на яких ресурсах/підресурсах відповідає ValidatingAdmissionPolicy. Політика враховує операцію, якщо вона відповідає будь-якому правилу.
NamedRuleWithOperations є кортежем Operations та Resources з ResourceNames.
APIGroups — це групи API, до яких належать ресурси. '*' — всі групи. Якщо '*' присутній, довжина фрагменту повинна бути одиницею. Обовʼязковий параметр.
APIVersions — це версії API, до яких належать ресурси. '*' — всі версії. Якщо '*' присутній, довжина фрагменту повинна бути одиницею. Обовʼязковий параметр.
Operations — це операції, які цікавлять хук допуску - CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій і будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній символ "*", довжина фрагмента повинна бути одиницею. Обовʼязково.
Resources — список ресурсів, до яких застосовується це правило.
Наприклад: 'pods' означає podʼи. 'pods/log' означає підресурс журналу podʼів. '*' означає всі ресурси, але не підресурси. 'pods/*' означає всі підресурси podʼів. '*/scale' означає всі підресурси масштабу. '*/*' означає всі ресурси і їхні підресурси.
Якщо присутній символ підстановки, правило валідації забезпечить, щоб ресурси не перекривалися між собою.
Залежно від обʼєкта, що містить, підресурси можуть бути не дозволені. Обовʼязкове.
scope визначає область цього правила. Дійсні значення: "Cluster", "Namespaced" та "*". "Cluster" означає, що лише ресурси з областю дії кластера відповідатимуть цьому правилу. Обʼєкти API простору імен є кластерними. "Namespaced" означає, що лише ресурси з простору імен відповідатимуть цьому правилу. "*" означає, що обмежень за областю дії немає. Підресурси відповідають області їхнього батьківського ресурсу. Стандартно "*".
spec.paramKind (ParamKind)
ParamKind вказує тип ресурсів, які використовуються для параметризації цієї політики. Якщо відсутній, параметрів для цієї політики немає, і змінна param CEL не буде надана для виразів перевірки. Якщо ParamKind посилається на неіснуючий тип, ця конфігурація політики є неправильною, і застосовується FailurePolicy. Якщо paramKind зазначено, але paramRef не встановлено у ValidatingAdmissionPolicyBinding, змінна params буде null.
ParamKind — це кортеж Group Kind та Version.
spec.paramKind.apiVersion (string)
APIVersion - версія групи API, до якої належать ресурси. У форматі "group/version". Обовʼязковий параметр.
spec.paramKind.kind (string)
Kind — це тип API, до якого належать ресурси. Обовʼязковий параметр.
spec.validations ([]Validation)
Atomic: буде замінено під час злиття
Validations містять вирази CEL, які використовуються для застосування перевірки. Validations та AuditAnnotations не можуть бути обидва пустими; потрібно щонайменше один з Validations або AuditAnnotations.
Validation вказує вираз CEL, який використовується для застосування перевірки.
spec.validations.expression (string), обовʼязково
Expression представляє вираз, який буде оцінюватися CEL. ref: https://github.com/google/cel-spec CEL-вирази мають доступ до вмісту запиту/відповіді API, організованих у змінні CEL, а також деякі інші корисні змінні:
'object' — Обʼєкт з вхідного запиту. Значення null для запитів DELETE.
'oldObject' — Наявний обʼєкт. Значення null для запитів CREATE.
'params' — Параметр ресурсу, на який посилається перевірка політики. Заповнюється лише, якщо політика має ParamKind.
'namespaceObject' — Обʼєкт простору імен, до якого належить вхідний обʼєкт. Значення null для ресурсів на рівні кластера.
'variables' - Map змінних, від їх назви до їхнього ледачого (lazily) оцінюваного значення. Наприклад, змінна з назвою 'foo' може бути доступна як 'variables.foo'.
'authorizer.requestResource' — CEL ResourceCheck, створений з 'authorizer' та налаштований для ресурсу запиту.
apiVersion, kind, metadata.name і metadata.generateName завжди доступні з кореня обʼєкта. Інші властивості метаданих недоступні.
Доступні лише імена властивостей у формі [a-zA-Z_.-/][a-zA-Z0-9_.-/]*. Доступні імена властивостей екрануються згідно з наступними правилами, коли доступні у виразі:
'__' екранується як 'underscores'
'.' екранується як 'dot'
'-' екранується як 'dash'
'/' екранується як 'slash'
Імена властивостей, що точно збігаються з CEL РЕЗЕРВОВАНИМИ ключовими словами, екрануються як '{keyword}'. Ключові слова включають: "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if", "import", "let", "loop", "package", "namespace", "return".
Приклади:
Вираз, що звертається до властивості з назвою "namespace": {"Expression": "object.namespace > 0"}
Вираз, що звертається до властивості з назвою "x-prop": {"Expression": "object.x__dash__prop > 0"}
Вираз, що звертається до властивості з назвою "redact__d": {"Expression": "object.redact__underscores__d > 0"}
Рівність масивів із типом списку 'set' або 'map' ігнорує порядок елементів, тобто [1, 2] == [2, 1]. Конкатенація масивів із типом списку x-kubernetes використовує семантику типу списку:
'set': X + Y виконує обʼєднання, де позиції масиву всіх елементів у X зберігаються, а елементи в Y, що не перетинаються, додаються зі збереженням їх часткового порядку.
'map': X + Y виконує злиття, де позиції масиву всіх ключів у X зберігаються, але значення замінюються значеннями з Y, коли множини ключів X та Y перетинаються. Елементи в Y з ключами, що не перетинаються з ключами, що не перетинаються, додаються зі збереженням їх часткового порядку. Обовʼязково.
spec.validations.message (string)
Message представляє повідомлення, що відображається при невдалій перевірці. Повідомлення обовʼязкове, якщо Expression містить розриви рядка. Повідомлення не повинно містити розриви рядка. Якщо не вказано, повідомлення — "failed rule: {Rule}". Наприклад, "must be a URL with the host matching spec.host" Якщо Expression містить розриви рядка, повідомлення обовʼязкове. Повідомлення не повинно містити розриви рядка. Якщо не встановлено, повідомлення — "failed Expression: {Expression}".
spec.validations.messageExpression (string)
messageExpression оголошує CEL-вираз, який оцінюється як повідомлення про невдачу перевірки, що повертається, коли це правило не виконується. Оскільки messageExpression використовується як повідомлення про невдачу, воно повинно оцінюватися як рядок. Якщо і message, і messageExpression присутні у перевірці, то messageExpression буде використано, якщо перевірка не вдалася. Якщо messageExpression призводить до помилки під час виконання, помилка записується в лог, і повідомлення про невдачу перевірки створюється так, ніби поле messageExpression не було встановлено. Якщо messageExpression оцінюється як порожній рядок, рядок з лише пробілами або рядок, що містить розриви рядка, то повідомлення про невдачу перевірки також створюється так, ніби поле messageExpression не було встановлено, і факт того, що messageExpression створило порожній рядок/рядок з лише пробілами/рядок з розривами рядка, буде записано в лог. messageExpression має доступ до всіх тих самих змінних, що і expression, за винятком 'authorizer' та 'authorizer.requestResource'. Приклад: "object.x must be less than max ("+string(params.max)+")"
spec.validations.reason (string)
Reason представляє машинно-зчитуваний опис того, чому ця перевірка не вдалася. Якщо це перша перевірка в списку, що не вдалася, ця причина, а також відповідний код відповіді HTTP, використовуються у відповіді HTTP клієнту. Наразі підтримувані причини: "Unauthorized", "Forbidden", "Invalid", "RequestEntityTooLarge". Якщо не встановлено, використовується StatusReasonInvalid у відповіді клієнту.
spec.variables ([]Variable)
Patch strategy: злиття по ключу name
Map: унікальні значення по ключу name будуть зберігатися під час злиття
Variables містять визначення змінних, які можна використовувати у складі інших виразів. Кожна змінна визначена як іменований CEL-вираз. Змінні, визначені тут, будуть доступні у variables в інших виразах політики, за винятком MatchConditions, оскільки MatchConditions оцінюються перед рештою політики.
Вираз змінної може посилатися на інші змінні, визначені раніше у списку, але не на ті, що стоять після неї. Таким чином, змінні мають бути відсортовані за порядком першої появи та ациклічно.
Variable — це визначення змінної, яка використовується для складання. Змінна визначається як іменований вираз.
spec.variables.expression (string), обовʼязково
Expression — це вираз, який буде оцінений як значення змінної. CEL-вираз має доступ до тих самих ідентифікаторів, що і CEL-вирази в Validation.
spec.variables.name (string), обовʼязково
Name — це назва змінної. Назва повинна бути дійсним ідентифікатором CEL і унікальною серед усіх змінних. Змінна може бути доступна в інших виразах через variables Наприклад, якщо name є "foo", змінна буде доступна як variables.foo.
status (ValidatingAdmissionPolicyStatus)
Статус ValidatingAdmissionPolicy, включаючи попередження, які корисні для визначення, чи працює політика відповідно до очікувань. Заповнюється системою. Тільки для читання.
ValidatingAdmissionPolicyStatus представляє статус політики перевірки допуску.
status.conditions ([]Condition)
Map: унікальні значення по ключу type будуть зберігатися під час злиття
Стани представляють останні доступні спостереження поточного стану політики.
Condition містить деталі одного аспекту поточного стану цього API-ресурсу.
lastTransitionTime — це останній час, коли стан перейшов з одного стану в інший. Це має бути, коли змінився основний стан. Якщо це невідомо, то прийнятно використовувати час, коли змінилося поле API.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
status.conditions.message (string), обовʼязково
message — це повідомлення зрозуміле людині, яке вказує деталі про зміну стану. Воно може бути порожній рядок.
status.conditions.reason (string), обовʼязково
reason містить програмний ідентифікатор, що вказує на причину останньої зміни стану. Виробники конкретних типів станів можуть визначити очікувані значення та значення для цього поля, а також чи вважаються значення гарантованим API. Значення має бути рядком у форматі CamelCase. Це поле не може бути порожнім.
status.conditions.status (string), обовʼязково
статус стану, один з True, False, Unknown.
status.conditions.type (string), обовʼязково
тип стану у форматі CamelCase або у форматі foo.example.com/CamelCase.
status.conditions.observedGeneration (int64)
observedGeneration представляє .metadata.generation, на основі якого було встановлено стан. Наприклад, якщо .metadata.generation зараз 12, але .status.conditions[x].observedGeneration - 9, стан застарів відносно поточного стану екземпляра.
status.observedGeneration (int64)
Покоління, яке спостерігалося контролером.
status.typeChecking (TypeChecking)
Результати перевірки типу для кожного виразу. Наявність цього поля вказує на завершення перевірки типу.
TypeChecking містить результати перевірки типу виразів у ValidatingAdmissionPolicy
Вміст інформації про попередження перевірки типу у формі, зручною для читання людиною. Кожен рядок попередження містить тип, за яким перевірено вираз, а потім помилку перевірки типу від компілятора.
ValidatingAdmissionPolicyBindingList
ValidatingAdmissionPolicyBindingList — це список ValidatingAdmissionPolicyBinding.
CustomResourceDefinition представляє ресурс, який повинен бути експонований на сервері API. Його імʼя повинно бути у форматі <.spec.name>.<.spec.group>.
status показує фактичний стан CustomResourceDefinition.
CustomResourceDefinitionSpec
CustomResourceDefinitionSpec визначає, як користувач хоче, щоб їхні ресурси виглядали
group (string), обовʼязково
group — це API-група визначеного власного ресурсу. Власні ресурси обслуговуються як /apis/<group>/.... Повинно відповідати імені CustomResourceDefinition у форматі <names.plural>.<group>.
names вказують імена ресурсу та виду для власного ресурсу.
CustomResourceDefinitionNames вказує імена для обслуговування цього CustomResourceDefinition
names.kind (string), обовʼязково
kind — серіалізована версія виду ресурсу. Зазвичай CamelCase та однина. Екземпляри власного ресурсу використовуватимуть це значення як атрибут kind у викликах API.
names.plural (string), обовʼязково
plural — імʼя ресурсу в множині для обслуговування. Власні ресурси обслуговуються як /apis/<group>/<version>/.../<plural>. Повинно відповідати імені CustomResourceDefinition у форматі <names.plural>.<group>. Всі літери мають бути у нижньому регістрі.
names.categories ([]string)
Atomic: буде замінено під час злиття
categories — це список згрупованих ресурсів, до яких належить цей власний ресурс (наприклад, 'all'). Публікується в документах відкриття API та використовується клієнтами для підтримки викликів типу kubectl get all.
names.listKind (string)
listKind — серіалізована версія списку для цього ресурсу. Стандартне значення "kindList".
names.shortNames ([]string)
Atomic: буде замінено під час злиття
shortNames — короткі імена ресурсу, відображені в документах відкриття API та використовувані клієнтами для підтримки викликів типу kubectl get <shortname>. Всі літери мають бути у нижньому регістрі.
names.singular (string)
singular — назва ресурсу в однині. Всі літери мають бути у нижньому регістрі. Стандартно, це значення є приведеним до нижнього регістру kind.
scope (string), обовʼязково
scope вказує, чи має визначений власний ресурс область застосування, спільну для кластера або простору імен. Допустимі значення: Cluster і Namespaced.
versions — це список всіх API-версій визначеного власного ресурсу. Назви версій використовуються для визначення порядку в зазначених API-версіях. Якщо рядок версії є "kube-like", він буде вище не "kube-like" рядків версій, що упорядковуються лексикографічно. "Kube-like" версії починаються з "v", за яким слідує номер (головна версія), а потім необовʼязково рядок "alpha" або "beta" та інший номер (додаткова версія). Ці версії сортуються так: GA > beta > alpha (де GA - версія без суфікса, такого як beta або alpha), а потім порівнюються головна версія, а потім додаткова версія. Приклад відсортованого списку версій: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
CustomResourceDefinitionVersion описує версію для CRD.
versions.name (string), обовʼязково
name — це імʼя версії, наприклад "v1", "v2beta1" і т.д. Власні ресурси обслуговуються під цією версією за адресою /apis/<group>/<version>/..., якщо served встановлено в true.
versions.served (boolean), обовʼязково
served — це прапорець, що дозволяє включити/відключити цю версію для обслуговування через REST API.
versions.storage (boolean), обовʼязково
storage — вказує, що цю версію слід використовувати при збереженні власних ресурсів у сховищі. Повинна бути рівно одна версія з параметром storage=true.
priority — ціле число, що визначає відносну важливість цього стовпчика порівняно з іншими. Менші числа вважаються більш пріоритетними. Стовпці, які можуть бути пропущені в сценаріях з обмеженим простором, повинні мати пріоритет, більший за 0.
versions.deprecated (boolean)
deprecated вказує, що ця версія API для власних ресурсів застаріла. Якщо встановлено значення true, запити API до цієї версії отримають заголовок попередження у відповіді сервера. Стандартне значення — false.
versions.deprecationWarning (string)
deprecationWarning перевизначає стандартне попередження, що повертається клієнтам API. Може бути встановлене лише тоді, коли deprecated встановлено в true. Стандартне попередження вказує на те, що ця версія застаріла і рекомендує використовувати останню доступну версію з рівною або більшою стабільністю, якщо така існує.
versions.schema (CustomResourceValidation)
schema описує схему, яка використовується для валідації, обрізання та встановлення стандартних значень для цієї версії власного ресурсу.
CustomResourceValidation є переліком методів валідації для CustomResource.
jsonPath — це простий шлях JSON, який оцінюється для кожного власного ресурсу, щоб отримати значення селектора поля. Дозволяються лише JSON-шляхи без нотації масивів. Повинен вказувати на поле типу string, boolean або integer. Дозволяються типи з enum-значеннями та рядки з форматами. Якщо jsonPath посилається на відсутнє поле в ресурсі, він оцінюється як порожній рядок. Не повинен вказувати на поля метаданих. Обовʼязкове поле.
specReplicasPath визначає шлях JSON всередині власного ресурсу, який відповідає Scale spec.replicas. Допускаються тільки JSON-шляхи без нотації масиву. Повинен бути JSON-шлях у форматі .spec. Якщо у власному ресурсі немає значення за вказаним шляхом, субресурс /scale поверне помилку при виконанні GET.
statusReplicasPath визначає шлях JSON всередині власного ресурсу, який відповідає Scale status.replicas. Допускаються лише JSON-шляхи без нотації масиву. Повинен бути JSON-шлях під .status. Якщо у власному ресурсі немає значення за вказаним шляхом, значення status.replicas у субресурсі /scale буде стандартно дорівнювати 0.
labelSelectorPath визначає шлях JSON всередині власного ресурсу, який відповідає Scale status.selector. Допускаються лише JSON-шляхи без нотації масиву. Повинен бути JSON-шлях під .status або .spec. Має бути налаштований на роботу з HorizontalPodAutoscaler. Поле, на яке вказує цей JSON-шлях, має бути рядковим полем (не складною структурою селектора), яке містить серіалізований селектор міток у рядковій формі. Детальніше: https://kubernetes.io/docs/tasks/access-kubernetes-api/custom-resources/custom-resource-definitions#scale-subresource Якщо у власному ресурсі немає значення за вказаним шляхом, значення status.selector у субресурсі /scale буде стандартно дорівнювати порожньому рядку.
status вказує, що власний ресурс має обслуговувати субресурс /status. Коли ввімкнено:
запити до первинної точки доступу власного ресурсу ігнорують зміни в розділі status обʼєкта.
Запити до субресурсу /status власного ресурсу ігнорують зміни будь-чого, окрім строфи status обʼєкта.
CustomResourceSubresourceStatus визначає, як обслуговувати субресурс статусу для власних ресурсів. Статус представляється JSON-шляхом .status всередині власного ресурсу. Якщо встановлено,
відкриває субресурс /status для власного ресурсу
PUT-запити до субресурсу /status отримують обʼєкт власного ресурсу та ігнорують зміни у всьому, окрім рядка статусу
PUT/POST/PATCH запити до власного ресурсу ігнорують зміни у рядку стану
conversion (CustomResourceConversion)
conversion визначає налаштування конвертації для CRD.
CustomResourceConversion описує, як конвертувати різні версії CR.
conversion.strategy (string), обовʼязково
strategy визначає, як налаштовуються власні ресурси між версіями. Допустимі значення:
"None": Конвертер змінює тільки apiVersion і не торкається інших полів у власному ресурсі.
"Webhook": API Server викликає зовнішній webhook для виконання конвертації. Додаткова інформація потрібна для цього варіанту. Це вимагає, щоб spec.preserveUnknownFields було встановлено у false, а spec.conversion.webhook було налаштовано.
conversion.webhook (WebhookConversion)
webhook описує, як викликати конвертаційний webhook. Обовʼязково, якщо strategy встановлено на "Webhook".
WebhookConversion описує, як викликати конвертаційний webhook
conversionReviewVersions — впорядкований список пріоритетних версій ConversionReview, які очікує Webhook. API сервер використовує першу версію зі списку, яку він підтримує. Якщо жодна з версій, зазначених у цьому списку, не підтримується API сервером, конвертація для власного ресурсу не відбудеться. Якщо збережена конфігурація Webhook визначає дозволені версії та не включає жодної версії, відомої API серверу, виклики до webhook не будуть успішними.
clientConfig містить інструкції щодо виклику webhook, якщо strategy є Webhook.
WebhookClientConfig містить інформацію для встановлення TLS-зʼєднання з webhook.
conversion.webhook.clientConfig.caBundle ([]byte)
caBundle — PEM-кодований CA пакет, який буде використовуватися для перевірки сертифіката сервера webhook. Якщо не вказано, використовуються системні корені довіри на apiserver.
port — це необовʼязковий порт сервісу, за яким буде контактуватися webhook. port повинен бути дійсним номером порту (1-65535, включно). Стандартно встановлено 443 для зворотної сумісності.
conversion.webhook.clientConfig.url (string)
url вказує місце розташування webhook у стандартній URL формі (scheme://host:port/path). Потрібно вказати точно один з url або service.
host не повинен посилатися на сервіс, що працює в кластері; натомість використовуйте поле service. host може бути знайдений через зовнішній DNS на деяких apiservers (наприклад, kube-apiserver не може розвʼязати DNS у кластері, оскільки це було б порушенням рівнів). host також може бути IP-адресою.
Зверніть увагу, що використання localhost або 127.0.0.1 як host ризиковано, якщо ви не вживаєте великої обережності, щоб запустити цей webhook на всіх хостах, які можуть потребувати викликів до цього webhook. Такі установки, ймовірно, будуть непереносними, тобто їх не легко переносити в новий кластер.
Схема повинна бути "https"; URL повинен починатися з "https://".
Шлях є необовʼязковим, і якщо присутній, може бути будь-яким рядком, допустимим в URL. Ви можете використовувати шлях для передачі довільного рядка до webhook, наприклад, ідентифікатора кластера.
Спроба використати автентифікацію користувача або базову автентифікацію, наприклад, "user:password@" не дозволена. Фрагменти ("#...") та параметри запиту ("?...") також не дозволені.
preserveUnknownFields (boolean)
preserveUnknownFields вказує, що поля обʼєкта, які не зазначені в схемі OpenAPI, повинні зберігатися під час зберігання. apiVersion, kind, metadata та відомі поля всередині metadata завжди зберігаються. Це поле застаріле і замість нього слід встановлювати x-preserve-unknown-fields на true в spec.versions[*].schema.openAPIV3Schema. Деталі дивіться на https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#field-pruning.
default є стандартним значенням для невизначених полів обʼєкта. Використання стандартних значень є бета-функцією у функціональних можливостей CustomResourceDefaulting. Використання стандартних значень вимагає, щоб spec.preserveUnknownFields було встановлено у false.
JSON представляє будь-яке допустиме значення JSON. Підтримуються такі типи: bool, int64, float64, string, []interface{}, map[string]interface{} та nil.
JSONSchemaPropsOrStringArray представляє JSONSchemaProps або масив рядків.
description (string)
enum ([]JSON)
Atomic: буде замінено під час злиття
JSON представляє будь-яке допустиме значення JSON. Підтримуються такі типи: bool, int64, float64, string, []interface{}, map[string]interface{} та nil.
example (JSON)
JSON представляє будь-яке допустиме значення JSON. Підтримуються такі типи: bool, int64, float64, string, []interface{}, map[string]interface{} та nil.
exclusiveMaximum (boolean)
exclusiveMinimum (boolean)
externalDocs (ExternalDocumentation)
ExternalDocumentation дозволяє посилатися на зовнішній ресурс для розширеної документації.
externalDocs.description (string)
externalDocs.url (string)
format (string)
format — це рядок формату OpenAPI v3. Невідомі формати ігноруються. Наступні формати перевіряються:
bsonobjectid: BSON Object ID, тобто 24-символьний шістнадцятковий рядок
uri: URI, який розбирається за допомогою Golang net/url.ParseRequestURI
email: адреса електронної пошти, яка розбирається за допомогою Golang net/mail.ParseAddress
hostname: дійсне представлення імені хоста в Інтернеті, визначене RFC 1034, розділ 3.1 [RFC1034]
ipv4: IPv4 IP, який розбирається за допомогою Golang net.ParseIP
ipv6: IPv6 IP, який розбирається за допомогою Golang net.ParseIP
cidr: CIDR, який розбирається за допомогою Golang net.ParseCIDR
Mac: MAC-адреса, яка розбирається за допомогою Golang net.ParseMAC
uuid: UUID, який дозволяє великі літери та визначається регулярним виразом (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{4}-?[0-9a-f]{12}$
uuid3: UUID3, який дозволяє великі літери та визначається регулярним виразом (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?3[0-9a-f]{3}-?[0-9a-f]{4}-?[0-9a-f]{12}$
uuid4: UUID4, який дозволяє великі літери та визначається регулярним виразом (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?4[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
uuid5: UUID5, який дозволяє великі літери та визначається регулярним виразом (?i)^[0-9a-f]{8}-?[0-9a-f]{4}-?5[0-9a-f]{3}-?[89ab][0-9a-f]{3}-?[0-9a-f]{12}$
isbn: номер ISBN10 або ISBN13, наприклад, "0321751043" або "978-0321751041"
isbn10: номер ISBN10, наприклад, "0321751043"
isbn13: номер ISBN13, наприклад, "978-0321751041"
creditcard: номер кредитної картки, який визначається регулярним виразом ^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$ з будь-якими нецифровими символами
ssn: номер соціального страхування США, який відповідає регулярному виразу ^\d{3}[- ]?\d{2}[- ]?\d{4}$
hexcolor: шістнадцятковий код кольору, наприклад, "#FFFFFF", який відповідає регулярному виразу ^#?([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$
rgbcolor: код кольору RGB, наприклад, "rgb(255,255,255)"
byte: двійкові дані, закодовані в base64
password: будь-який тип рядка
date: рядок дати, наприклад, "2006-01-02", як визначено у full-date у RFC3339
duration: рядок тривалості, наприклад, "22 ns", який розбирається за допомогою Golang time.ParseDuration або сумісний з форматом тривалості Scala
datetime: рядок дати і часу, наприклад, "2014-12-15T19:30:20.000Z", як визначено у date-time у RFC3339
id (string)
items (JSONSchemaPropsOrArray)
JSONSchemaPropsOrArray представляє значення, яке може бути JSONSchemaProps або масивом JSONSchemaProps. Переважно використовується для цілей серіалізації.
x-kubernetes-embedded-resource визначає, що значення є вбудованим обʼєктом Kubernetes runtime.Object, з TypeMeta та ObjectMeta. Тип має бути object. Дозволяється подальше обмеження вбудованого обʼєкта. kind, apiVersion та metadata перевіряються автоматично. x-kubernetes-preserve-unknown-fields може бути true, але це не обовʼязково, якщо обʼєкт повністю вказаний (аж до kind, apiVersion, metadata).
x-kubernetes-int-or-string (boolean)
x-kubernetes-int-or-string вказує, що це значення є або цілим числом, або рядком. Якщо це true, дозволено порожній тип, а тип як нащадок anyOf дозволений, якщо дотримується один з наступних шаблонів:
anyOf:
type: integer
type: string
allOf:
anyOf:
type: integer
type: string
... нуль або більше
x-kubernetes-list-map-keys ([]string)
Atomic: буде замінено під час злиття
x-kubernetes-list-map-keys анотує масив з типом списку x-kubernetes map, вказуючи ключі, які використовуються як індекс map.
Цей теґ МАЄ використовуватися тільки для списків, які мають розширення "x-kubernetes-list-type" встановлене на "map". Також значення, вказані для цього атрибута, мають бути полем типу scalar структури нащадка (вкладення не підтримується).
Властивості, зазначені у цьому полі, повинні бути або обовʼязковими, або мати стандартне значення, щоб забезпечити наявність цих властивостей для всіх елементів списку.
x-kubernetes-list-type (string)
x-kubernetes-list-type анотує масив, щоб більш детально описати його топологію. Це розширення має використовуватися тільки для списків і може мати 3 можливі значення:
atomic: список розглядається як єдине ціле, як скаляр. Списки atomic будуть повністю замінені при оновленні. Це розширення може використовуватися для будь-якого типу списків (структур, скалярів тощо).
set: Набори — це списки, які не повинні мати кілька елементів з однаковим значенням. Кожне значення повинно бути скаляром, обʼєктом з x-kubernetes-map-type atomic або масивом з x-kubernetes-list-type atomic.
map: Ці списки схожі на map тим, що їх елементи мають неіндексований ключ, який використовується для їх ідентифікації. Порядок зберігається при злитті. Теґ map має використовуватися тільки для списків з елементами типу object. Стандартне значення для масивів — atomic.
x-kubernetes-map-type (string)
x-kubernetes-map-type анотує обʼєкт, щоб більш детально описати його топологію. Це розширення має використовуватися тільки, коли тип обʼєкта є object і може мати 2 можливі значення:
granular: Ці maps є справжніми map (пари ключ-значення) і кожне поле незалежне одне від одного (їх можна маніпулювати окремими акторами). Це стандартн поведінка для всіх map.
atomic: список розглядається як єдине ціле, як скаляр. Atomic maps будуть повністю замінені при оновленні.
x-kubernetes-preserve-unknown-fields (boolean)
x-kubernetes-preserve-unknown-fields зупиняє етап декодування на сервері API від видалення полів, які не вказані у схемі перевірки. Це впливає на поля рекурсивно, але повертається до нормальної поведінки видалення, якщо вкладені властивості або додаткові властивості вказані у схемі. Це може бути true або не визначено. Використання false заборонено.
x-kubernetes-validations
Patch strategy: злиття за ключем rule.
Map: унікальні значення ключа rule будуть збережені під час злиття.
x-kubernetes-validations описує список правил валідації записаних мовою CEL.
ValidationRule описує правило валідації записане мовою CEL.
Правило (rule) представляє вираз, який буде оцінюватися за допомогою CEL. Докладніше: https://github.com/google/cel-spec. Правило обмежується місцем розташування розширення x-kubernetes-validations у схемі. Змінна self у виразі CEL привʼязана до обмеженого значення. Приклад:
Правило обмежене коренем ресурсу з субресурсом status: {"rule": "self.status.actual <= self.spec.maxDesired"}
Якщо Правило обмежене обʼєктом з властивостями, доступні властивості обʼєкта вибираються через self.field, а наявність поля можна перевірити через has(self.field). Поля з нульовим значенням розглядаються як відсутні поля у виразах CEL. Якщо Правило обмежене обʼєктом з additionalProperties (тобто map), значення map доступні через self[mapKey], наявність ключа в map можна перевірити через mapKey in self, а всі записи map доступні через макроси та функції CEL, такі як self.all(...). Якщо Правило обмежене масивом, елементи масиву доступні через self[i], а також через макроси та функції. Якщо Правило обмежене скаляром, self привʼязується до значення скаляра. Приклади:
Правило обмежене картою обʼєктів: {"rule": "self.components['Widget'].priority < 10"}
Правило обмежене списком цілих чисел: {"rule": "self.values.all(value, value >= 0 && value < 100)"}
Правило обмежене рядковим значенням: {"rule": "self.startsWith('kube')"}
apiVersion, kind, metadata.name та metadata.generateName завжди доступні з кореня обʼєкта та з будь-яких обʼєктів, позначених як x-kubernetes-embedded-resource. Жодні інші властивості метаданих не доступні.
Невідомі дані, збережені у власних ресурсах через x-kubernetes-preserve-unknown-fields, не доступні у виразах CEL. Це включає:
Невідомі значення полів, що зберігаються схемами обʼєктів з x-kubernetes-preserve-unknown-fields.
Властивості обʼєкта, де схема властивості має "невідомий тип". "Невідомий тип" рекурсивно визначається як:
Схема без типу і з x-kubernetes-preserve-unknown-fields встановленим у true
Масив, де схема елементів має "невідомий тип"
Обʼєкт, де схема additionalProperties має "невідомий тип"
Доступні лише імена властивостей формату [a-zA-Z_.-/][a-zA-Z0-9_.-/]*. Доступні імена властивостей екрануються за наступними правилами, коли до них звертаються у виразі:
'__' екранується як 'underscores'
'.' екранується як 'dot'
'-' екранується як 'dash'
'/' екранується як 'slash'
Імена властивостей, які точно збігаються з зарезервованими ключовими словами CEL, екрануються як '{keyword}'. Ключові слова: "true", "false", "null", "in", "as", "break", "const", "continue", "else", "for", "function", "if", "import", "let", "loop", "package", "namespace", "return".
Приклади:
Правило, яке звертається до властивості з імʼям "namespace": {"rule": "self.namespace > 0"}
Правило, яке звертається до властивості з імʼям "x-prop": {"rule": "self.x__dash__prop > 0"}
Правило, яке звертається до властивості з імʼям "redact__d": {"rule": "self.redact__underscores__d > 0"}
Рівність масивів з x-kubernetes-list-type 'set' або 'map' ігнорує порядок елементів, тобто [1, 2] == [2, 1]. Конкатенація масивів з x-kubernetes-list-type використовує семантику типу списку:
'set': X + Y виконує обʼєднання, де позиції масиву всіх елементів у X зберігаються, а елементи в Y, що не перетинаються, додаються зі збереженням їх часткового порядку.
'map': X + Y виконує злиття, де позиції масиву всіх ключів у X зберігаються, але значення замінюються значеннями в Y, коли набори ключів X та Y перетинаються. Елементи в Y з ключами, що не перетинаються з ключами, додаються зі збереженням їх часткового порядку.
Якщо в rule використовується змінна oldSelf, це неявно означає, що це "правило переходу" (transition rule).
Стандартно, змінна oldSelf має той самий тип, що й self. Коли параметр optionalOldSelf встановлено як true, змінна oldSelf стає CEL-варіантом (optional), і її метод value() матиме той самий тип, що й self. Деталі можна знайти в документації до поля optionalOldSelf.
Правила переходу стандартно застосовуються лише до запитів UPDATE і пропускаються, якщо старе значення не було знайдено. Ви можете налаштувати безумовну оцінку правила переходу, встановивши optionalOldSelf як true.
x-kubernetes-validations.fieldPath (string)
fieldPath представляє шлях до поля, що повертається, коли перевірка не вдається. Він має бути відносним JSON шляхом (тобто з нотацією масиву), обмеженим місцем розташування цього розширення x-kubernetes-validations у схемі та посилатися на існуюче поле. Наприклад, коли перевірка перевіряє, чи існує певний атрибут foo в map testMap, fieldPath може бути встановлений як .testMap.foo. Якщо перевірка перевіряє, що два списки повинні мати унікальні атрибути, fieldPath може бути встановлений як будь-який зі списків: наприклад, .testList. Він не підтримує числовий індекс списку. Він підтримує операції з дочірніми елементами для посилання на існуюче поле. Для отримання додаткової інформації дивіться Підтримка JSONPath у Kubernetes. Числовий індекс масиву не підтримується. Для імені поля, що містить спеціальні символи, використовуйте ['specialName'] для посилання на імʼя поля. Наприклад, для атрибута foo.34$, що зʼявляється у списку testList, fieldPath може бути встановлений як .testList['foo.34$'].
x-kubernetes-validations.message (string)
message представляє повідомлення, яке відображається, коли перевірка не вдається. Повідомлення є обовʼязковим, якщо у Правилі є розриви рядків. Повідомлення не повинно містити розривів рядків. Якщо не встановлено, повідомлення буде "failed rule: {Rule}". Наприклад, "must be a URL with the host matching spec.host".
messageExpression оголошує вираз CEL, який оцінюється як повідомлення про помилку перевірки, яке повертається, коли це правило не вдається. Оскільки messageExpression використовується як повідомлення про помилку, він повинен оцінюватися як рядок. Якщо і message, і messageExpression присутні у правилі, тоді messageExpression буде використаний у разі невдалої перевірки. Якщо messageExpression призводить до помилки під час виконання, ця помилка записується в лог, і повідомлення про помилку перевірки створюється так, ніби поле messageExpression не встановлено. Якщо messageExpression оцінюється як порожній рядок, рядок, що містить лише пробіли, або рядок, що містить розриви рядків, то повідомлення про помилку перевірки також створюється так, ніби поле messageExpression не встановлено, і факт того, що messageExpression створив порожній рядок/рядок з пробілами/рядок з розривами рядків, записується в лог. messageExpression має доступ до всіх тих же змінних, що й правило; єдина відмінність — тип значення, що повертається. Приклад: "x must be less than max ("+string(self.max)+")".
optionalOldSelf використовується для того, щоб активувати оцінку правила переходу навіть під час першого створення обʼєкта або коли старий обʼєкт не містить значення.
Коли цей параметр увімкнено, змінна oldSelf стає CEL-варіантом (optional), значенням якого буде None, якщо старе значення відсутнє або обʼєкт створюється вперше.
Ви можете перевірити наявність значення у oldSelf за допомогою методу oldSelf.hasValue() і розпакувати його після перевірки за допомогою oldSelf.value(). Більше інформації можна знайти в документації CEL щодо типів Optional: https://pkg.go.dev/github.com/google/cel-go/cel#OptionalTypes
Цей параметр не може бути встановлений, якщо oldSelf не використовується в rule.
x-kubernetes-validations.reason (string)
reason забезпечує машинозчитувану причину невдачі перевірки, яка повертається до абонента, коли запит не проходить це правило перевірки. Код стану HTTP, що повертається до абонента, буде відповідати причині першого невдалого правила перевірки. Поточні підтримувані причини: "FieldValueInvalid", "FieldValueForbidden", "FieldValueобовʼязково", "FieldValueDuplicate". Якщо не встановлено, стандартно використовується "FieldValueInvalid". Усі майбутні додані причини повинні прийматися клієнтами при читанні цього значення, а невідомі причини повинні оброблятися як FieldValueInvalid.
CustomResourceDefinitionStatus
CustomResourceDefinitionStatus вказує стан CustomResourceDefinition.
acceptedNames (CustomResourceDefinitionNames)
acceptedNames — це імена, які фактично використовуються для обслуговування виявлення ресурсів. Вони можуть відрізнятися від імен у специфікації.
CustomResourceDefinitionNames вказує імена для обслуговування цього CustomResourceDefinition
acceptedNames.kind (string), обовʼязково
kind — серіалізоване імʼя типу ресурсу. Зазвичай CamelCase в однині. Екземпляри спеціальних ресурсів будуть використовувати це значення як атрибут kind у викликах API.
acceptedNames.plural (string), обовʼязково
plural — імʼя ресурсу для обслуговування в множині. Спеціальні ресурси обслуговуються як /apis/\<group>/\<version>/.../\<plural>. Має відповідати імені CustomResourceDefinition (у формі \<names.plural>.\<group>). Має бути в нижньому регістрі.
acceptedNames.categories ([]string)
Atomic: буде замінено під час злиття
categories — це список згрупованих ресурсів, до яких належить цей власний ресурс (наприклад, 'all'). Публікується у документах виявлення API і використовується клієнтами для підтримки викликів типу kubectl get all.
acceptedNames.listKind (string)
listKind — серіалізоване імʼя списку для цього ресурсу. Стандартне значення — "kindList".
acceptedNames.shortNames ([]string)
Atomic: буде замінено під час злиття
shortNames — короткі імена для ресурсу, які відображаються в документах виявлення API і використовуються клієнтами для підтримки викликів типу kubectl get \<shortname>. Мають бути в нижньому регістрі.
acceptedNames.singular (string)
singular — імʼя ресурсу в однині. Має бути в нижньому регістрі. Стандартно використовується нижній регістр kind.
conditions ([]CustomResourceDefinitionCondition)
Map: унікальні значення за типом ключа будуть збережені під час злиття
conditions — вказують стан для окремих аспектів CustomResourceDefinition
CustomResourceDefinitionCondition містить деталі поточного стану цього CustomResourceDefinition.
conditions.status (string), обовʼязково
status — статус стану. Може бути True, False або Unknown.
conditions.type (string), обовʼязково
type — тип стану. Типи включають Established, NamesAccepted і Terminating.
conditions.lastTransitionTime (Time)
lastTransitionTime — час останньої зміни стану з одного статусу в інший.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
message — текст, зрощумілий людині, що вказує деталі останньої зміни стану.
conditions.reason (string)
reason — унікальна однозначна причина в CamelCase для останньої зміни стану.
storedVersions ([]string)
Atomic: буде замінено під час злиття
storedVersions перераховує всі версії CustomResources, які коли-небудь зберігалися. Відстеження цих версій дозволяє визначити шлях міграції для збережених версій в etcd. Поле є змінним, тому контролер міграції може завершити міграцію до іншої версії (переконавшись, що у сховищі не залишилося старих обʼєктів), а потім видалити решту версій з цього списку. Версії не можна видаляти з spec.versions, доки вони існують у цьому списку.
CustomResourceDefinitionList
CustomResourceDefinitionList є списком обʼєктів CustomResourceDefinition.
DeviceClass — це ресурс, наданий постачальником або адміністратором, який містить конфігурацію пристрою та селектори.
apiVersion: resource.k8s.io/v1alpha3
import "k8s.io/api/resource/v1alpha3"
DeviceClass
DeviceClass — це ресурс, наданий постачальником або адміністратором, який містить конфігурацію пристрою та селектори. На нього можна посилатися у запитах до пристрою, щоб застосувати ці пресети. Охоплює кластер.
Це альфа-тип і вимагає увімкнення функціональної можливості DynamicResourceAllocation.
Spec визначає, що можна призначити і як це налаштувати.
Поле є змінюваним. Споживачі повинні бути готові до того, що класи можуть змінюватися в будь-який час, як через оновлення, так і через заміну. Розподілення заявок виконується один раз на основі того, що було встановлено в класах на момент виділення.
Зміна spec автоматично збільшує номер metadata.generation.
DeviceClassSpec
DeviceClassSpec використовується в [DeviceClass] для визначення того, що може бути призначено і як це налаштувати.
config ([]DeviceClassConfiguration)
Atomic: буде замінено під час злиття
Config визначає параметри конфігурації, які застосовуються до кожного пристрою, що описується у цьому класі. Деякі класи потенційно можуть задовольнятися кількома драйверами, тому кожен екземпляр конфігурації постачальника застосовується лише до одного драйвера.
Вони передаються драйверу, але не враховуються при розподілі заявки.
DeviceClassConfiguration використовується в DeviceClass.
config.opaque (OpaqueDeviceConfiguration)
Opaque надає специфічні для драйвера параметри конфігурації.
OpaqueDeviceConfiguration містить параметри конфігурації драйвера у форматі, визначеному постачальником драйвера.
config.opaque.driver (string), обовʼязково
Driver використовується для визначення, в який втулок kubelet потрібно передати ці параметри конфігурації.
Політика допуску, надана розробником драйвера, може використовувати це для прийняття рішення про те, чи потрібно перевіряти їх.
Повинен бути DNS піддоменом і закінчуватися на DNS домен, що належить постачальнику драйвера.
Параметри можуть містити довільні дані. Відповідальність за перевірку та керування версіями покладається на розробника драйверів. Зазвичай це включає самоідентифікацію та версію ("kind" + "apiVersion" для типів Kubernetes), а також конвертацію між різними версіями.
RawExtension використовується для зберігання розширень у зовнішніх версіях.
Щоб використовувати це, створіть поле, яке має тип RawExtension у вашій зовнішній, версійованій структурі, і Object у вашій внутрішній структурі. Також потрібно зареєструвати ваші різні типи втулків.
// Внутрішній пакунок:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"` MyPlugin runtime.Object `json:"myPlugin"`}
type PluginA struct {
AOption string`json:"aOption"`}
// Зовнішній пакунок:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"` MyPlugin runtime.RawExtension `json:"myPlugin"`}
type PluginA struct {
AOption string`json:"aOption"`}
Що відбувається? Спочатку декодування використовує json або yaml для десеріалізації даних у ваш зовнішній MyAPIObject. Це призводить до зберігання необробленого JSON, але без розпакування. Наступний крок — копіювання (за допомогою pkg/conversion) у внутрішню структуру. Функції перетворення, встановлені в DefaultScheme пакета runtime, розпаковують JSON, збережений у RawExtension, перетворюючи його в правильний тип обʼєкта і зберігаючи його в Object. (TODO: У випадку, коли обʼєкт має невідомий тип, буде створено і збережено обʼєкт runtime.Unknown.)
selectors ([]DeviceSelector)
Atomic: буде замінено під час злиття
Кожному селектору повинен відповідати пристрій, що заявляється в цьому класі.
DeviceSelector повинен мати рівно одне встановлене поле.
selectors.cel (CELDeviceSelector)
CEL містить вираз CEL для вибору пристрою.
CELDeviceSelector містить вираз CEL для вибору пристрою.
selectors.cel.expression (string), обовʼязковий
Вираз є виразом CEL, який оцінює один пристрій. Він має оцінюватися як true, коли пристрій відповідає бажаним критеріям, і як false, коли не відповідає. Будь-який інший результат є помилкою і призводить до зупинки надання пристроїв.
Вхідні дані виразу — це обʼєкт з назвою "device", який має наступні властивості:
driver (рядок): імʼя драйвера, який визначає цей пристрій.
attributes (map[string]object): атрибути пристрою, згруповані за префіксом (наприклад, device.attributes["dra.example.com"] оцінюється як обʼєкт з усіма атрибутами, які були префіксовані "dra.example.com").
capacity (map[string]object): обсяги пристрою, згруповані за префіксом.
Приклад: Розглянемо пристрій з driver="dra.example.com", який надає два атрибути з назвою "model" та "ext.example.com/family" і один обсяг з назвою "modules". Вхідні дані для цього виразу будуть мати такі поля:
Поле device.driver можна використовувати для перевірки конкретного драйвера, або як загальну попередню умову (тобто ви хочете розглядати лише пристрої від цього драйвера), або як частину виразу з кількома умовами, який призначений для розгляду пристроїв з різних драйверів.
Тип значення кожного атрибута визначається визначенням пристрою, і користувачі, які пишуть ці вирази, повинні звертатися до документації для своїх конкретних драйверів. Тип значення кожного обсягу — Quantity.
Якщо невідомий префікс використовується для запиту в device.attributes або device.capacity, буде повернено порожній map. Будь-яке посилання на невідоме поле спричинить помилку оцінки і зупинку виділення.
Робочий вираз має перевіряти наявність атрибутів перед їх використанням.
Для зручності використання доступна функція cel.bind(), яка може бути використана для спрощення виразів, що звертаються до кількох атрибутів з одного домену. Наприклад:
Лише вузли, що відповідають селектору, будуть враховуватися планувальником при спробі знайти Вузол, що підходить для Podʼа, коли цей Pod використовує запит, який ще не був виділений і цей запит виділяється через контролер панелі управління. Він ігнорується, коли запит не використовує контролер панелі управління для виділення.
Налаштування цього поля є необовʼязковим. Якщо не задано, всі Вузли є кандидатами.
Це поле є альфа-версією і потребує увімкнення функціональної можливості DRAControlPlaneController.
Селектор вузлів представляє об'єднання результатів одного або кількох запитів міток над набором вузлів; тобто, він представляє OR (логічне "або") селекторів, що представлені термінами селектора вузлів.
suitableNodes.nodeSelectorTerms ([]NodeSelectorTerm), обов'язково
Atomic: буде замінено під час злиття
Обов'язковий параметр. Список термів селектора вузлів. Терми обʼєднуються оператором OR.
Null або порожній термін селектора вузла не відповідає жодному об'єкту. Вимоги до них складаються за принципом AND. Тип TopologySelectorTerm реалізує підмножину NodeSelectorTerm.
DeviceClass — це ресурс, наданий постачальником або адміністратором, який містить конфігурацію пристрою та селектори.
apiVersion: resource.k8s.io/v1beta1
import "k8s.io/api/resource/v1beta1"
DeviceClass
DeviceClass — це ресурс, наданий постачальником або адміністратором, який містить конфігурацію пристрою та селектори. На нього можна посилатися у запитах до пристрою, щоб застосувати ці пресети. Охоплює кластер.
Це альфа-тип і вимагає увімкнення функціональної можливості DynamicResourceAllocation.
Spec визначає, що можна призначити і як це налаштувати.
Поле є змінюваним. Споживачі повинні бути готові до того, що класи можуть змінюватися в будь-який час, як через оновлення, так і через заміну. Розподілення заявок виконується один раз на основі того, що було встановлено в класах на момент виділення.
Зміна spec автоматично збільшує номер metadata.generation.
DeviceClassSpec
DeviceClassSpec використовується в [DeviceClass] для визначення того, що може бути призначено і як це налаштувати.
config ([]DeviceClassConfiguration)
Atomic: буде замінено під час злиття
Config визначає параметри конфігурації, які застосовуються до кожного пристрою, що описується у цьому класі. Деякі класи потенційно можуть задовольнятися кількома драйверами, тому кожен екземпляр конфігурації постачальника застосовується лише до одного драйвера.
Вони передаються драйверу, але не враховуються при розподілі заявки.
DeviceClassConfiguration використовується в DeviceClass.
config.opaque (OpaqueDeviceConfiguration)
Opaque надає специфічні для драйвера параметри конфігурації.
OpaqueDeviceConfiguration містить параметри конфігурації драйвера у форматі, визначеному постачальником драйвера.
config.opaque.driver (string), обовʼязково
Driver використовується для визначення, в який втулок kubelet потрібно передати ці параметри конфігурації.
Політика допуску, надана розробником драйвера, може використовувати це для прийняття рішення про те, чи потрібно перевіряти їх.
Повинен бути DNS піддоменом і закінчуватися на DNS домен, що належить постачальнику драйвера.
Параметри можуть містити довільні дані. Відповідальність за перевірку та керування версіями покладається на розробника драйверів. Зазвичай це включає самоідентифікацію та версію ("kind" + "apiVersion" для типів Kubernetes), а також конвертацію між різними версіями.
RawExtension використовується для зберігання розширень у зовнішніх версіях.
Щоб використовувати це, створіть поле, яке має тип RawExtension у вашій зовнішній, версійованій структурі, і Object у вашій внутрішній структурі. Також потрібно зареєструвати ваші різні типи втулків.
// Внутрішній пакунок:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"` MyPlugin runtime.Object `json:"myPlugin"`}
type PluginA struct {
AOption string`json:"aOption"`}
// Зовнішній пакунок:
type MyAPIObject struct {
runtime.TypeMeta `json:",inline"` MyPlugin runtime.RawExtension `json:"myPlugin"`}
type PluginA struct {
AOption string`json:"aOption"`}
Що відбувається? Спочатку декодування використовує json або yaml для десеріалізації даних у ваш зовнішній MyAPIObject. Це призводить до зберігання необробленого JSON, але без розпакування. Наступний крок — копіювання (за допомогою pkg/conversion) у внутрішню структуру. Функції перетворення, встановлені в DefaultScheme пакета runtime, розпаковують JSON, збережений у RawExtension, перетворюючи його в правильний тип обʼєкта і зберігаючи його в Object. (TODO: У випадку, коли обʼєкт має невідомий тип, буде створено і збережено обʼєкт runtime.Unknown.)
selectors ([]DeviceSelector)
Atomic: буде замінено під час злиття
Кожному селектору повинен відповідати пристрій, що заявляється в цьому класі.
DeviceSelector повинен мати рівно одне встановлене поле.
selectors.cel (CELDeviceSelector)
CEL містить вираз CEL для вибору пристрою.
CELDeviceSelector містить вираз CEL для вибору пристрою.
selectors.cel.expression (string), обовʼязково
Вираз є виразом CEL, який оцінює один пристрій. Він має оцінюватися як true, коли пристрій відповідає бажаним критеріям, і як false, коли не відповідає. Будь-який інший результат є помилкою і призводить до зупинки надання пристроїв.
Вхідні дані виразу — це обʼєкт з назвою "device", який має наступні властивості:
driver (рядок): імʼя драйвера, який визначає цей пристрій.
attributes (map[string]object): атрибути пристрою, згруповані за префіксом (наприклад, device.attributes["dra.example.com"] оцінюється як обʼєкт з усіма атрибутами, які були префіксовані "dra.example.com").
capacity (map[string]object): обсяги пристрою, згруповані за префіксом.
Приклад: Розглянемо пристрій з driver="dra.example.com", який надає два атрибути з назвою "model" та "ext.example.com/family" і один обсяг з назвою "modules". Вхідні дані для цього виразу будуть мати такі поля:
Поле device.driver можна використовувати для перевірки конкретного драйвера, або як загальну попередню умову (тобто ви хочете розглядати лише пристрої від цього драйвера), або як частину виразу з кількома умовами, який призначений для розгляду пристроїв з різних драйверів.
Тип значення кожного атрибута визначається визначенням пристрою, і користувачі, які пишуть ці вирази, повинні звертатися до документації для своїх конкретних драйверів. Тип значення кожного обсягу — Quantity.
Якщо невідомий префікс використовується для запиту в device.attributes або device.capacity, буде повернено порожній map. Будь-яке посилання на невідоме поле спричинить помилку оцінки і зупинку виділення.
Робочий вираз має перевіряти наявність атрибутів перед їх використанням.
Для зручності використання доступна функція cel.bind(), яка може бути використана для спрощення виразів, що звертаються до кількох атрибутів з одного домену. Наприклад:
Лише вузли, що відповідають селектору, будуть враховуватися планувальником при спробі знайти Вузол, що підходить для Podʼа, коли цей Pod використовує запит, який ще не був виділений і цей запит виділяється через контролер панелі управління. Він ігнорується, коли запит не використовує контролер панелі управління для виділення.
Налаштування цього поля є необовʼязковим. Якщо не задано, всі Вузли є кандидатами.
Це поле є альфа-версією і потребує увімкнення функціональної можливості DRAControlPlaneController.
Селектор вузлів представляє об'єднання результатів одного або кількох запитів міток над набором вузлів; тобто, він представляє OR (логічне "або") селекторів, що представлені термінами селектора вузлів.
Обов'язковий параметр. Список термів селектора вузлів. Терми обʼєднуються оператором OR.
Null або порожній термін селектора вузла не відповідає жодному об'єкту. Вимоги до них складаються за принципом AND. Тип TopologySelectorTerm реалізує підмножину NodeSelectorTerm.
AdmissionReviewVersions — це впорядкований список версій AdmissionReview, які очікує вебхук. Сервер API спробує використати першу версію зі списку, яку він підтримує. Якщо жодна з вказаних версій не підтримується сервером API, перевірка цього обʼєкта зазнає невдачі. Якщо збережена конфігурація вебхука вказує дозволені версії, але не включає жодної версії, відомої серверу API, виклики до вебхука зазнають невдачі й підпадають під політику відмови.
ClientConfig визначає, як спілкуватися з вебхуком. Обовʼязково.
WebhookClientConfig містить інформацію для встановлення TLS-зʼєднання з вебхуком.
webhooks.clientConfig.caBundle ([]byte)
caBundle — це закодований у PEM набір сертифікатів CA, який використовуватиметься для перевірки сертифіката сервера вебхука. Якщо не вказано, використовуються системні корені довіри на сервері API.
webhooks.clientConfig.service (ServiceReference)
service — це посилання на сервіс для цього вебхука. Необхідно вказати або service, або url.
Якщо вебхук працює в межах кластера, то слід використовувати service.
ServiceReference містить посилання на Service.legacy.k8s.io.
path — це необовʼязковий URL шлях, який буде надіслано в будь-якому запиті до цього сервісу.
webhooks.clientConfig.service.port (int32)
Якщо вказано, то це порт на сервісі, який є хостом вебхуку. Типово 443 для зворотної сумісності. port має бути дійсним номером порту (1-65535, включно).
webhooks.clientConfig.url (string)
url вказує місце розташування вебхука в стандартній формі URL (scheme://host:port/path). Необхідно вказати або url, або service.
host не повинен посилатися на сервіс, що працює в кластері; використовуйте поле service натомість. Хост може бути знайдений через зовнішній DNS в деяких серверах API (наприклад, kube-apiserver не може працювати з кластерним DNS, оскільки це було б порушенням розшарування). host може також бути IP-адресою.
Зверніть увагу, що використання localhost або 127.0.0.1 як host є ризикованим, якщо ви не вживаєте великих заходів обережності, щоб запустити цей вебхук на всіх хостах, що запускають сервер API, який може потребувати викликів до цього вебхука. Такі встановлення, ймовірно, будуть непереносимими, тобто їх буде важко розгорнути в новому кластері.
Схема має бути "https"; URL має починатися з "https://".
Шлях є необовʼязковим, і, якщо він присутній, може бути будь-яким рядком, допустимим в URL. Ви можете використовувати шлях для передачі довільного рядка до вебхука, наприклад, ідентифікатора кластера.
Спроба використання автентифікації користувача або базової автентифікації, наприклад, "user:password@", не дозволена. Також не дозволяються фрагменти ("#...") і параметри запиту ("?...").
webhooks.name (string), обовʼязково
Імʼя вебхуку допуску. Імʼя має бути повністю кваліфікованим, наприклад, imagepolicy.kubernetes.io, де "imagepolicy" є назвою вебхука, а kubernetes.io — назвою організації. Обовʼязково.
webhooks.sideEffects (string), обовʼязково
SideEffects вказує, чи має цей вебхук побічні ефекти. Допустимі значення: None, NoneOnDryRun (вебхуки, створені у v1beta1, також можуть вказати Some або Unknown). Вебхуки з побічними ефектами МАЮТЬ реалізувати систему узгодження, оскільки запит може бути відхилено на наступному етапі ланцюжка допуску, і побічні ефекти потрібно буде скасувати. Запити з атрибутом dryRun автоматично відхиляються, якщо вони відповідають вебхуку з sideEffects == Unknown або Some.
webhooks.failurePolicy (string)
FailurePolicy визначає, як обробляються нерозпізнані помилки від точки доступу допуску — дозволені значення: Ignore або Fail. Стандартне значення — Fail.
webhooks.matchConditions ([]MatchCondition)
Patch strategy: злиття за ключем name
Map: унікальні значення за ключем name будуть збережені під час злиття
MatchConditions — це список умов, які мають бути виконані для надсилання запиту до цього вебхука. Умови відповідності фільтрують запити, які вже були підібрані за правилами, namespaceSelector і objectSelector. Порожній список matchConditions відповідає всім запитам. Максимальна кількість умов відповідності — 64.
Логіка точного збігу така (за порядком):
Якщо БУДЬ-ЯКА умова відповідності оцінюється як FALSE, вебхук оминається.
Якщо ВСІ умови відповідності оцінюються як TRUE, вебхук викликається.
Якщо будь-яка умова відповідності оцінюється як помилка (але жодна не є FALSE):
Якщо failurePolicy=Fail, запит відхиляється
Якщо failurePolicy=Ignore, помилка ігнорується і вебхук оминається
MatchCondition представляє умову, яка має бути виконана для надсилання запиту до вебхука.
Expression представляє вираз, який буде оцінено CEL. Результат обробки — bool. Вирази CEL мають доступ до вмісту AdmissionRequest і Authorizer, організованих у змінні CEL:
'object' — Обʼєкт із вхідного запиту. Значення null для запитів DELETE. 'oldObject' — Наявний обʼєкт. Значення null для запитів CREATE. 'request' — Атрибути запиту допуску (/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' — CEL Authorizer. Може бути використано для виконання перевірок авторизації для виконавця (користувач або службового облікового запису) запиту. Див. https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz 'authorizer.requestResource' — CEL ResourceCheck, створений з 'authorizer' і налаштований із ресурсом запиту. Документація щодо CEL: https://kubernetes.io/docs/reference/using-api/cel/
Name — це ідентифікатор цієї умови відповідності, використовується для стратегії злиття умов відповідності, а також для надання ідентифікатора для цілей логування. Хороша назва має бути описовою для повʼязаного виразу. Назва має бути кваліфікованою назвою, що складається з алфавітно-цифрових символів, '-', '' або '.', і має починатися та закінчуватися алфавітно-цифровим символом (наприклад, 'MyName' або 'my.name' або '123-abc', регулярний вираз, що використовується для перевірки, — '([A-Za-z0-9][-A-Za-z0-9.]*)?[A-Za-z0-9]') з необовʼязковим префіксом DNS субдомену та '/' (наприклад, 'example.com/MyName').
Обовʼязково.
webhooks.matchPolicy (string)
matchPolicy визначає, як використовується список "rules" для відповідності вхідним запитам. Допустимі значення — "Exact" або "Equivalent".
Exact: відповідність запиту тільки в тому випадку, якщо він точно відповідає зазначеному правилу. Наприклад, якщо розгортання (deployments) можуть бути змінені через apps/v1, apps/v1beta1 і extensions/v1beta1, але "rules" включають тільки apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], запит до apps/v1beta1 або extensions/v1beta1 не буде надіслано до вебхука.
Equivalent: відповідність запиту, якщо він змінює ресурс, вказаний у правилах, навіть через іншу групу API або версію. Наприклад, якщо розгортання (deployments) можуть бути змінені через apps/v1, apps/v1beta1 і extensions/v1beta1, і "rules" включають тільки apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], запит до apps/v1beta1 або extensions/v1beta1 буде перетворений на apps/v1 і надісланий до вебхука.
NamespaceSelector визначає, чи буде вебхук працювати з обʼєктом на основі того, чи збігається простір імен для цього обʼєкта з селектором. Якщо обʼєкт сам є простором імен, перевірка збігу виконується за метаданими обʼєкта. Якщо обʼєкт є іншим ресурсом на рівні кластера, він ніколи не оминає вебхук.
Наприклад, щоб запустити вебхук для будь-яких обʼєктів, чий простір імен не повʼязаний з "runlevel" 0 або 1, потрібно налаштувати селектор наступним чином:
Якщо замість цього ви хочете запустити вебхук для будь-яких обʼєктів, чий простір імен повʼязаний з "environment" "prod" або "staging", потрібно налаштувати селектор наступним чином:
ObjectSelector визначає, чи буде вебхук працювати з обʼєктом на основі того, чи має обʼєкт відповідні мітки. ObjectSelector оцінюється як для oldObject, так і для newObject, які будуть надіслані до вебхука, і вважається відповідним, якщо будь-який з обʼєктів відповідає селектору. Нульовий обʼєкт (oldObject у випадку створення або newObject у випадку видалення) або обʼєкт, який не може мати міток (наприклад, DeploymentRollback або PodProxyOptions обʼєкт), не вважається таким, що має збіг. Використовуйте objectSelector лише якщо вебхук є опціональним, оскільки кінцеві користувачі можуть оминути вебхук допуску, встановивши мітки. Типове значення — порожній LabelSelector, який має збіг зі всім.
webhooks.reinvocationPolicy (string)
reinvocationPolicy вказує, чи має цей вебхук викликатися кілька разів у рамках однієї оцінки допуску. Допустимі значення — "Never" і "IfNeeded".
Never: вебхук не буде викликатися більше одного разу в рамках однієї оцінки допуску.
IfNeeded: вебхук буде викликаний щонайменше один додатковий раз у рамках оцінки допуску, якщо обʼєкт, який допускаєтсья, змінюється іншими втулками допуску після початкового виклику вебхука. Вебхуки, які вказують цю опцію, мають бути ідемпотентними, здатними обробляти обʼєкти, які вони попередньо прийняли. Зверніть увагу:
не гарантується, що кількість додаткових викликів буде дорівнювати одному.
якщо додаткові виклики призводять до подальших змін обʼєкта, вебхуки не гарантуються до повторного виклику.
вебхуки, що використовують цю опцію, можуть бути впорядковані для мінімізації кількості додаткових викликів.
для перевірки обʼєкта після завершення всіх змін, використовуйте вебхук для валідації допуску.
Стандартне значення — "Never".
webhooks.rules ([]RuleWithOperations)
Atomic: буде замінено під час злиття
Rules описує, які операції з якими ресурсами/субресурсами цікавлять вебхук. Вебхук цікавить операція, якщо вона відповідає будь-якому правилу. Однак, щоб запобігти тому, що ValidatingAdmissionWebhooks і MutatingAdmissionWebhooks можуть привести кластер до стану, з якого неможливо відновитися без повного вимкнення втулка, ValidatingAdmissionWebhooks і MutatingAdmissionWebhooks ніколи не викликаються на запити допуску для обʼєктів ValidatingWebhookConfiguration і MutatingWebhookConfiguration.
RuleWithOperations — це кортеж операцій і ресурсів. Рекомендується переконатися, що всі розширення кортежу є дійсними.
webhooks.rules.apiGroups ([]string)
Atomic: буде замінено під час злиття
APIGroups — це групи API, до яких належать ресурси. '*' означає всі групи. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
webhooks.rules.apiVersions ([]string)
Atomic: буде замінено під час злиття
APIVersions — це версії API, до яких належать ресурси. '*' означає всі версії. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
webhooks.rules.operations ([]string)
Atomic: буде замінено під час злиття
Operations — це операції, які цікавлять вебхук допуску — CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій і будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
webhooks.rules.resources ([]string)
Atomic: буде замінено під час злиття
Resources — це список ресурсів, до яких застосовується це правило.
Наприклад, 'pods' означає Podʼи, 'pods/log' означає субресурс логу Podʼів. '*' означає всі ресурси, але не субресурси. 'pods/*' означає всі субресурси Podʼів. '*/scale' означає всі субресурси масштабування. '*/*' означає всі ресурси та їх субресурси.
Якщо присутній універсальний символ, правило валідації забезпечить відсутність перекриття ресурсів.
Залежно від навколишнього обʼєкта, субресурси можуть бути недопустимими. Обовʼязково.
webhooks.rules.scope (string)
scope визначає область застосування цього правила. Допустимі значення — "Cluster", "Namespaced" та "*" "Cluster" означає, що правило буде застосовано тільки до ресурсів на рівні кластера. API обʼєкти простору імен є ресурсами на рівні кластера. "Namespaced" означає, що правило буде застосовано тільки до ресурсів простору імен. "*" означає, що немає обмежень на область застосування. Субресурси відповідають області застосування свого батьківського ресурсу. Стандартне значення — "*".
webhooks.timeoutSeconds (int32)
TimeoutSeconds визначає тайм-аут для цього вебхука. Після закінчення тайм-ауту виклик вебхука буде проігноровано або виклик API завершиться невдачею залежно від політики відмови. Значення тайм-ауту має бути від 1 до 30 секунд. Стандартне значення — 10 секунд.
MutatingWebhookConfigurationList
MutatingWebhookConfigurationList — це список MutatingWebhookConfiguration.
AdmissionReviewVersions — це впорядкований список бажаних версій AdmissionReview, які очікує вебхук. API сервер спробує використати першу версію у списку, яку він підтримує. Якщо жодна з версій, зазначених у цьому списку, не підтримується API сервером, валідація для цього обʼєкта зазнає невдачі. Якщо збережена конфігурація вебхука вказує дозволені версії та не включає жодних версій, відомих API серверу, виклики до вебхука зазнають невдачі і є предметом для застосування політики відмов.
ClientConfig визначає, як спілкуватися з вебхуком. Обовʼязково
WebhookClientConfig містить інформацію для встановлення TLS-зʼєднання з вебхуком
webhooks.clientConfig.caBundle ([]byte)
caBundle — це PEM-кодований набір сертифікатів CA, який буде використовуватися для перевірки сертифіката сервера вебхука. Якщо не вказано, використовуються системні корені довіри на API сервері.
webhooks.clientConfig.service (ServiceReference)
service — це посилання на сервіс для цього вебхука. Необхідно вказати або service, або url.
Якщо вебхук працює в межах кластера, тоді слід використовувати service.
ServiceReference містить посилання на Service.legacy.k8s.io
path — це необовʼязковий URL-шлях, який буде надіслано в будь-якому запиті до цього сервісу.
webhooks.clientConfig.service.port (int32)
Якщо вказано, то це порт на сервісі, який є хостом вебхуку. Типово 443 для зворотної сумісності. port має бути дійсним номером порту (1-65535, включно).
webhooks.clientConfig.url (string)
url вказує місце розташування вебхука в стандартній формі URL (scheme://host:port/path). Необхідно вказати або url, або service.
host не повинен посилатися на сервіс, що працює в кластері; використовуйте поле service натомість. Хост може бути знайдений через зовнішній DNS в деяких серверах API (наприклад, kube-apiserver не може працювати з кластерним DNS, оскільки це було б порушенням розшарування). host може також бути IP-адресою.
Зверніть увагу, що використання localhost або 127.0.0.1 як host є ризикованим, якщо ви не вживаєте великих заходів обережності, щоб запустити цей вебхук на всіх хостах, що запускають сервер API, який може потребувати викликів до цього вебхука. Такі встановлення, ймовірно, будуть непереносимими, тобто їх буде важко розгорнути в новому кластері.
Схема повинна бути "https"; URL повинен починатися з "https://".
Шлях є необовʼязковим, і, якщо він присутній, може бути будь-яким рядком, допустимим в URL. Ви можете використовувати шлях для передачі довільного рядка до вебхука, наприклад, ідентифікатора кластера.
Спроба використання автентифікації користувача або базової автентифікації, наприклад, "user:password@", не дозволена. Також не дозволяються фрагменти ("#...") і параметри запиту ("?...").
webhooks.name (string), обовʼязково
Імʼя вебхука допуску. Імʼя повинно бути повністю кваліфікованим, наприклад, imagepolicy.kubernetes.io, де "imagepolicy" — це імʼя вебхука, а kubernetes.io — це імʼя організації. Обовʼязково.
webhooks.sideEffects (string), обовʼязково
SideEffects вказує, чи має цей вебхук побічні ефекти. Допустимі значення: None, NoneOnDryRun (вебхуки, створені у v1beta1, також можуть вказати Some або Unknown). Вебхуки з побічними ефектами МАЮТЬ реалізувати систему узгодження, оскільки запит може бути відхилено на наступному етапі ланцюжка допуску, і побічні ефекти потрібно буде скасувати. Запити з атрибутом dryRun автоматично відхиляються, якщо вони відповідають вебхуку з sideEffects == Unknown або Some.
webhooks.failurePolicy (string)
FailurePolicy визначає, як обробляються нерозпізнані помилки від точки доступу допуску — дозволені значення: Ignore або Fail. Стандартне значення — Fail.
webhooks.matchConditions ([]MatchCondition)
Patch strategy: обʼєднання за ключем name
Map: під час обʼєднання будуть збережені унікальні значення за ключем name
MatchConditions — це список умов, які мають бути виконані для надсилання запиту до цього вебхука. Умови відповідності фільтрують запити, які вже були підібрані за правилами, namespaceSelector і objectSelector. Порожній список matchConditions відповідає всім запитам. Максимальна кількість умов відповідності — 64.
Логіка точного збігу така (за порядком):
1. Якщо БУДЬ-ЯКА умова відповідності оцінюється як FALSE, вебхук оминається.
2. Якщо ВСІ умови відповідності оцінюються як TRUE, вебхук викликається.
3. Якщо будь-яка умова відповідності оцінюється як помилка (але жодна не є FALSE):
- Якщо failurePolicy=Fail, запит відхиляється
- Якщо failurePolicy=Ignore, помилка ігнорується і вебхук оминається
MatchCondition представляє умову, яка повинна бути виконана для надсилання запиту до вебхука.
Expression представляє вираз, який буде оцінено CEL. Результат обробки — bool. Вирази CEL мають доступ до вмісту AdmissionRequest і Authorizer, організованих у змінні CEL:
'object' — Обʼєкт із вхідного запиту. Значення null для запитів DELETE. 'oldObject' — Наявний обʼєкт. Значення null для запитів CREATE. 'request' — Атрибути запиту допуску (/pkg/apis/admission/types.go#AdmissionRequest). 'authorizer' — CEL Authorizer. Може бути використано для виконання перевірок авторизації для виконавця (користувач або службового облікового запису) запиту. Див. https://pkg.go.dev/k8s.io/apiserver/pkg/cel/library#Authz 'authorizer.requestResource' — CEL ResourceCheck, створений з 'authorizer' і налаштований із ресурсом запиту. Документація щодо CEL: https://kubernetes.io/docs/reference/using-api/cel/
Name — це ідентифікатор цієї умови відповідності, використовується для стратегії злиття умов відповідності, а також для надання ідентифікатора для цілей логування. Хороша назва має бути описовою для повʼязаного виразу. Назва має бути кваліфікованою назвою, що складається з алфавітно-цифрових символів, '-', '' або '.', і має починатися та закінчуватися алфавітно-цифровим символом (наприклад, 'MyName' або 'my.name' або '123-abc', регулярний вираз, що використовується для перевірки, — '([A-Za-z0-9][-A-Za-z0-9.]*)?[A-Za-z0-9]') з необовʼязковим префіксом DNS субдомену та '/' (наприклад, 'example.com/MyName').
Обовʼязково.
webhooks.matchPolicy (string)
matchPolicy визначає, як використовується список "rules" для відповідності вхідним запитам. Допустимі значення — "Exact" або "Equivalent".
Exact: відповідність запиту тільки в тому випадку, якщо він точно відповідає зазначеному правилу. Наприклад, якщо розгортання (deployments) можуть бути змінені через apps/v1, apps/v1beta1 і extensions/v1beta1, але "rules" включають тільки apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], запит до apps/v1beta1 або extensions/v1beta1 не буде надіслано до вебхука.
Equivalent: відповідність запиту, якщо він змінює ресурс, вказаний у правилах, навіть через іншу групу API або версію. Наприклад, якщо розгортання (deployments) можуть бути змінені через apps/v1, apps/v1beta1 і extensions/v1beta1, і "rules" включають тільки apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"], запит до apps/v1beta1 або extensions/v1beta1 буде перетворений на apps/v1 і надісланий до вебхука.
NamespaceSelector визначає, чи буде вебхук працювати з обʼєктом на основі того, чи збігається простір імен для цього обʼєкта з селектором. Якщо обʼєкт сам є простором імен, перевірка збігу виконується за метаданими обʼєкта. Якщо обʼєкт є іншим ресурсом на рівні кластера, він ніколи не оминає вебхук.
Наприклад, щоб запустити вебхук для будь-яких обʼєктів, чий простір імен не повʼязаний з "runlevel" 0 або 1, потрібно налаштувати селектор наступним чином:
Якщо замість цього ви хочете запустити вебхук для будь-яких обʼєктів, чий простір імен повʼязаний з "environment" "prod" або "staging", потрібно налаштувати селектор наступним чином:
ObjectSelector визначає, чи буде вебхук працювати з обʼєктом на основі того, чи має обʼєкт відповідні мітки. ObjectSelector оцінюється як для oldObject, так і для newObject, які будуть надіслані до вебхука, і вважається відповідним, якщо будь-який з обʼєктів відповідає селектору. Нульовий обʼєкт (oldObject у випадку створення або newObject у випадку видалення) або обʼєкт, який не може мати міток (наприклад, DeploymentRollback або PodProxyOptions обʼєкт), не вважається таким, що має збіг. Використовуйте objectSelector лише якщо вебхук є опціональним, оскільки кінцеві користувачі можуть оминути вебхук допуску, встановивши мітки. Типове значення — порожній LabelSelector, який має збіг зі всім.
webhooks.rules ([]RuleWithOperations)
Atomic: буде замінено під час злиття
Rules описують, які операції з якими ресурсами/субресурсами цікавлять вебхук. Вебхук цікавить операція, якщо вона збігаєтьсяз БУДЬ-ЯКИМ правилом. Однак, щоб запобігти ValidatingAdmissionWebhooks і MutatingAdmissionWebhooks від приведення кластера в стан, з якого не можна вийти без повного відключення втулка, ValidatingAdmissionWebhooks і MutatingAdmissionWebhooks ніколи не викликаються для запитів на допуск для обʼєктів ValidatingWebhookConfiguration і MutatingWebhookConfiguration.
RuleWithOperations — це кортеж операцій і ресурсів. Рекомендується переконатися, що всі розширення кортежу є дійсними.
webhooks.rules.apiGroups ([]string)
Atomic: буде замінено під час обʼєднання
APIGroups — це групи API, до яких належать ресурси. '*' означає всі групи. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
webhooks.rules.apiVersions ([]string)
Atomic: буде замінено під час обʼєднання
APIVersions — це версії API, до яких належать ресурси. '*' означає всі версії. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
webhooks.rules.operations ([]string)
Atomic: буде замінено під час обʼєднання
Operations — це операції, які цікавлять вебхук допуску — CREATE, UPDATE, DELETE, CONNECT або * для всіх цих операцій і будь-яких майбутніх операцій допуску, які будуть додані. Якщо присутній символ '*', довжина списку має бути одиницею. Обовʼязково.
webhooks.rules.resources ([]string)
Atomic: буде замінено під час обʼєднання
Resources — це список ресурсів, до яких застосовується це правило.
Наприклад, 'pods' означає Podʼи, 'pods/log' означає субресурс логу Podʼів. '*' означає всі ресурси, але не субресурси. 'pods/*' означає всі субресурси Podʼів. '*/scale' означає всі субресурси масштабування. '*/*' означає всі ресурси та їх субресурси.
Якщо присутній універсальний символ, правило валідації забезпечить відсутність перекриття ресурсів.
Залежно від навколишнього обʼєкта, субресурси можуть бути недопустимими. Обовʼязково.
webhooks.rules.scope (string)
scope визначає область застосування цього правила. Допустимі значення — "Cluster", "Namespaced" та "*". "Cluster" означає, що правило буде застосовано тільки до ресурсів на рівні кластера. API обʼєкти простору імен є ресурсами на рівні кластера. "Namespaced" означає, що правило буде застосовано тільки до ресурсів простору імен. "*" означає, що немає обмежень на область застосування. Субресурси відповідають області застосування свого батьківського ресурсу. Стандартне значення — "*".
webhooks.timeoutSeconds (int32)
TimeoutSeconds визначає тайм-аут для цього вебхука. Після закінчення тайм-ауту виклик вебхука буде проігноровано або виклик API завершиться невдачею залежно від політики відмови. Значення тайм-ауту має бути від 1 до 30 секунд. Стандартне значення — 10 секунд.
ValidatingWebhookConfigurationList
ValidatingWebhookConfigurationList — це список ValidatingWebhookConfiguration.
APIServiceSpec містить інформацію для пошуку та звʼязку з сервером. Підтримується лише https, хоча ви можете вимкнути перевірку сертифіката.
groupPriorityMinimum (int32), обовʼязково
GroupPriorityMinimum — це мінімальний пріоритет, який має мати ця група. Вищий пріоритет означає, що група має перевагу для клієнтів над групами з нижчим пріоритетом. Зверніть увагу, що інші версії цієї групи можуть мати ще вищі значення GroupPriorityMinimum, що надає групі вищий пріоритет. Першочергове сортування базується на GroupPriorityMinimum, впорядкованому від найвищого до найнижчого (20 перед 10). Вторинне сортування базується на алфавітному порівнянні імені обʼєкта. (v1.bar перед v1.foo) Ми рекомендуємо щось на зразок: *.k8s.io (за винятком extensions) на 18000, а PaaS (OpenShift, Deis) рекомендується бути у 2000-х.
versionPriority (int32), обовʼязково
VersionPriority контролює впорядкування цієї версії API всередині її групи. Повинно бути більше нуля. Першочергове сортування базується на VersionPriority, впорядкованому від найвищого до найнижчого (20 перед 10). Оскільки це всередині групи, число може бути маленьким, ймовірно, у 10-х. У випадку рівних пріоритетів версій, для визначення порядку всередині групи буде використовуватися рядок версії. Якщо рядок версії "kube-like", він буде сортуватися вище за рядки версій, які не є "kube-like", які впорядковуються лексикографічно. "Kube-like" версії починаються з "v", потім йде число (основна версія), потім за бажанням рядок "alpha" або "beta" і ще одне число (другорядна версія). Ці версії сортуються спочатку за принципом GA > beta > alpha (де GA — це версія без суфікса, такого як beta або alpha), а потім порівнюються основна версія, потім другорядна версія. Приклад відсортованого списку версій: v10, v2, v1, v11beta2, v10beta3, v3beta1, v12alpha1, v11alpha2, foo1, foo10.
caBundle ([]byte)
Atomic: буде замінено під час злиття
CABundle — це PEM закодований набір сертифікатів CA, який буде використовуватися для перевірки сертифіката сервера API. Якщо не вказано, використовуються системні довірені корені на сервері API.
group (string)
Group — це назва групи API, яку хостить цей сервер
insecureSkipTLSVerify (boolean)
InsecureSkipTLSVerify вимикає перевірку сертифіката TLS при звʼязку з цим сервером. Це категорично не рекомендується. Вам слід використовувати CABundle замість цього.
service (ServiceReference)
Service — це посилання на сервіс для цього сервера API. Воно повинно спілкуватись на порту 443. Якщо Service дорівнює nil, це означає, що обробка для версії API групи виконується локально на цьому сервері. Виклик просто делегується звичайному ланцюгу обробки для виконання.
ServiceReference утримує посилання на Service.legacy.k8s.io
service.name (string)
Name — це імʼя сервісу
service.namespace (string)
Namespace — це простір імен сервісу
service.port (int32)
Якщо вказано, порт сервісу, який хостить webhook. Стандартно — 443 для зворотної сумісності. port повинен бути допустимим номером порту (1-65535 включно).
version (string)
Version — це версія API, яку хостить цей сервер. Наприклад, "v1"
APIServiceStatus
APIServiceStatus містить похідну інформацію про сервер API
conditions ([]APIServiceCondition)
Patch strategy: злиття за ключем type
Map: унікальні значення за ключем type будуть збережені під час злиття
Поточний стан сервісу apiService.
APIServiceCondition описує стан APIService у певний момент часу
conditions.status (string), обовʼязково
Status — це стан статусу. Може бути True, False, Unknown.
conditions.type (string), обовʼязково
Type — це тип статусу.
conditions.lastTransitionTime (Time)
Останній раз, коли стан статусу змінився з одного на інший.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
Повідомлення, зрозуміле людині, що вказує деталі про останню зміну статусу.
conditions.reason (string)
Унікальна, однослівна, CamelCase причина останньої зміни статусу.
Подія — це повідомлення про подію десь у кластері.
apiVersion: events.k8s.io/v1
import "k8s.io/api/events/v1"
Event
Event — це звіт про подію десь у кластері. Зазвичай це вказує на зміну стану в системі. Події мають обмежений термін зберігання, і тригери та повідомлення можуть змінюватися з часом. Споживачі подій не повинні покладатися на час події з певною причиною, що відображає послідовний тригер, або на продовження існування подій з цією причиною. До подій слід ставитися як до інформативних, можливо найкращих, додаткових даних.
eventTime — це час, коли подія вперше спостерігалась. Це обовʼязкове поле.
MicroTime — це версія Time з мікросекундною точністю.
action (string)
action — це дія, яка була виконана або яка не вдалася щодо відповідного обʼєкта. Це машинний код. Це поле не може бути порожнім для нових Подій і може містити не більше 128 символів.
deprecatedCount (int32)
deprecatedCount — застаріле поле, яке забезпечує зворотню сумісність з типом подій core.v1.
deprecatedFirstTimestamp (Time)
deprecatedFirstTimestamp — застаріле поле, яке забезпечує зворотню сумісність з типом подій core.v1.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
deprecatedLastTimestamp (Time)
deprecatedLastTimestamp — застаріле поле, яке забезпечує зворотню сумісність з типом подій core.v1.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
deprecatedSource (EventSource)
deprecatedSource — застаріле поле, яке забезпечує зворотню сумісність з типом подій core.v1.
EventSource — містить інформацію для події.
deprecatedSource.component (string)
Компонент, з якого була згенерована подія.
deprecatedSource.host (string)
Імʼя вузла, на якому була згенерована подія.
note (string)
note — опис статусу цієї операції, зрозумілий людині. Максимальна довжина примітки — 1 кБ, але бібліотеки повинні бути готові обробляти значення до 64 кБ.
reason (string)
reason — це причина виконання дії. Це текст зрозумілий людині. Це поле не може бути порожнім для нових Подій і може містити не більше 128 символів.
regarding — це обʼєкт, про який йдеться у цій Події. У більшості випадків це обʼєкт, який реалізує контролер звітів, наприклад, ReplicaSetController реалізує ReplicaSets, і ця подія випускається через те, що він діє на деякі зміни в обʼєкті ReplicaSet.
related — це необовʼязковий вторинний обʼєкт для складніших дій. Наприклад, коли обʼєкт, щодо якого йдеться, спричинює створення або видалення повʼязаного обʼєкта.
reportingController (string)
reportingController — це імʼя контролера, який випустив цю Подію, наприклад, kubernetes.io/kubelet. Це поле не може бути порожнім для нових Подій.
reportingInstance (string)
reportingInstance — це ідентифікатор інстанції контролера, наприклад, kubelet-xyzf. Це поле не може бути порожнім для нових Подій і може містити не більше 128 символів.
series (EventSeries)
series — це дані про серію Подій, яку представляє ця подія, або nil, якщо це поодинока Подія.
EventSeries — містить інформацію про серію подій, тобто процес, що триває певний час. Частота оновлення EventSeries залежить від звітування подій. Стандартний інструмент повідомлення про події в "k8s.io/client-go/tools/events/event_broadcaster.go" показує, як ця структура оновлюється на тактах та може керувати індивідуалізованими реалізаціями інструментів звітування.
series.count (int32), обовʼязково
count — це кількість випадків у цій серії до останнього часу такту.
series.lastObservedTime (MicroTime), обовʼязково
lastObservedTime — це час, коли останню Подію з серії було побачено перед останім тактом.
MicroTime — це версія Time з мікросекундною точністю.
type (string)
type — це тип цієї події (Normal, Warning), нові типи можуть бути додані у майбутньому. Це машинне кодування. Це поле не може бути порожнім для нових Подій.
IP-адреса являє собою одну IP-адресу з одного сімейства IP-адрес.
apiVersion: networking.k8s.io/v1beta1
import "k8s.io/api/networking/v1beta1"
IPAddress
IPAddress представляє одну IP-адресу одного сімейства IP. Цей обʼєкт призначений для використання API, які оперують IP-адресами. Обʼєкт використовується ядром API Service для виділення IP-адрес. IP-адресу можна представити у різних форматах. Щоб гарантувати унікальність IP-адреси, імʼя обʼєкта є IP-адреса в канонічному форматі: чотири десяткові цифри, розділені крапками без ведучих нулів для IPv4 і представлення, визначене RFC 5952 для IPv6. Дійсні: 192.168.1.5 або 2001:db8::1 або 2001:db8:aaaa:bbbb:cccc:dddd:eeee:1 Недійсні: 10.01.2.3 або 2001:db8:0:0:0::1
acquireTime — це час, коли поточну оренду було отримано.
MicroTime — це версія Time з точністю до мікросекунд.
holderIdentity (string)
holderIdentity містить ідентифікатор власника поточної оренди. Якщо використовується координований вибір лідера, ідентифікатор власника повинен відповідати значенню поля LeaseCandidate.metadata.name, яке було обране.
leaseDurationSeconds (int32)
leaseDurationSeconds — це тривалість, яку кандидати на оренду повинні чекати, щоб примусово її отримати. Вона вимірюється від часу останнього спостережуваного renewTime.
leaseTransitions (int32)
leaseTransitions — це кількість переходів оренди між власниками.
preferredHolder (string)
PreferredHolder сигналізує тримачу лізингу, що існує більш оптимальний тримач лізингу і що лізинг слід передати. Це поле може бути встановлене лише якщо також встановлена стратегія (Strategy).
renewTime (MicroTime)
renewTime — це час, коли поточний власник оренди останнього разу оновив оренду.
MicroTime — це версія Time з точністю до мікросекунд.
strategy (string)
Strategy вказує стратегію для вибору лідера в координованому виборі лідера. Якщо це поле не вказано, координування для цього лізингу не активне. (Альфа) Для використання цього поля потрібно увімкнути функціональну можливість CoordinatedLeaderElection.
LeaseCandidate визначає кандидата для об'єкта Lease.
apiVersion: coordination.k8s.io/v1alpha1
import "k8s.io/api/coordination/v1alpha1"
LeaseCandidate
LeaseCandidate визначає кандидата для обʼєкта Lease. Кандидати створюються таким чином, щоб координований вибір лідера вибрав найкращого лідера з переліку кандидатів.
LeaseName — це імʼя Lease, за який цей кандидат змагається. Це поле є незмінним.
preferredStrategies ([]string), обовʼязково
Atomic: буде замінено під час злиття
PreferredStrategies вказує на список стратегій для вибору лідера у координованому виборі лідера. Список упорядкований, і перша стратегія переважає всі інші стратегії. Цей список використовується координованим вибором лідера для прийняття рішення про остаточну стратегію виборів. Це передбачає:
Якщо всі клієнти мають стратегію X як перший елемент у цьому списку, буде використана стратегія X.
Якщо кандидат має стратегію [X], а інший кандидат має стратегію [Y, X], Y переважає X, і буде використана стратегія Y.
Якщо кандидат має стратегію [X, Y], а інший кандидат має стратегію [Y, X], це є помилкою користувача, і вибір лідера не буде здійснюватися до вирішення проблеми.
(Альфа) Для використання цього поля потрібно увімкнути функціональну можливість CoordinatedLeaderElection.
binaryVersion (string)
BinaryVersion — це бінарна версія. Вона повинна бути у форматі semver без початкової v. Це поле є обовʼязковим, коли стратегія "OldestEmulationVersion".
emulationVersion (string)
EmulationVersion —це версія емуляції. Вона повинна бути у форматі semver без початкової v. EmulationVersion повинна бути менше або дорівнювати BinaryVersion. Це поле є обовʼязковим, коли стратегія є "OldestEmulationVersion".
pingTime (MicroTime)
PingTime — це останній час, коли сервер запитував LeaseCandidate на продовження. Це виконується лише під час вибору лідера, щоб перевірити, чи стали якісь LeaseCandidates недійсними. Коли PingTime оновлюється, LeaseCandidate відповідає, оновлюючи RenewTime.
MicroTime — це версія Time з точністю до мікросекунд.
renewTime (MicroTime)
RenewTime — це час, коли LeaseCandidate був востаннє оновлений. Щоразу, коли Lease потребує вибору лідера, поле PingTime оновлюється, щоб сигналізувати LeaseCandidate про необхідність оновлення RenewTime. Старі обʼєкти LeaseCandidate також видаляються, якщо пройшло кілька годин з моменту останнього оновлення. Поле PingTime регулярно оновлюється, щоб запобігти видаленню ще активних LeaseCandidates.
MicroTime — це версія Time з точністю до мікросекунд.
NamespaceStatus — це інформація про поточний статус простору імен.
conditions ([]NamespaceCondition)
Patch strategy: злиття за ключем type
Map: унікальні значення ключа type будуть збережені під час злиття
Представляє останні доступні спостереження поточного стану простору імен.
NamespaceCondition містить деталі про стан контролера просторів імен.
conditions.status (string), обовʼязково
Статус стану, одне з True, False, Unknown.
conditions.type (string), обовʼязково
Тип стану контролера просторів імен.
conditions.lastTransitionTime (Time)
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
NodeSpec описує атрибути, з якими створюється вузол.
configSource (NodeConfigSource)
Застаріло: Раніше використовувалося для вказівки джерела конфігурації вузла для функції DynamicKubeletConfig. Цю функцію вилучено.
NodeConfigSource вказує джерело конфігурації вузла. Тільки одне підполе (без урахування метаданих) має бути не нульовим. Цей API є застарілим з версії 1.22
Namespace — metadata.namespace посилання ConfigMap. Це поле є обовʼязковим у всіх випадках.
configSource.configMap.resourceVersion (string)
ResourceVersion — metadata.ResourceVersion посилання ConfigMap. Це поле заборонено в Node.Spec, і обовʼязкове в Node.Status.
configSource.configMap.uid (string)
UID є metadata.UID посилання ConfigMap. Це поле заборонено в Node.Spec, і обовʼязково в Node.Status.
externalID (string)
Застаріло. Не всі kubelets встановлюватимуть це поле. Видаліть поле після версії 1.13. див.: https://issues.k8s.io/61966
podCIDR (string)
PodCIDR представляє діапазон IP-адрес Podʼів, призначених вузлу.
podCIDRs ([]string)
Set: унікальні значення будуть збережені під час злиття
podCIDRs представляє діапазони IP-адрес, призначених вузлу для використання Podʼами на цьому вузлі. Якщо це поле вказане, перший запис повинен відповідати полю podCIDR. Воно може містити не більше одного значення для кожного з IPv4 та IPv6.
providerID (string)
Ідентифікатор вузла, призначений постачальником хмарних послуг у форматі: <ProviderName>://<ProviderSpecificNodeID>
taints ([]Taint)
Atomic: буде замінено під час злиття
Якщо вказано, задає taints вузла.
Вузол, до якого прив’язано цей Taint, має "ефект" на будь-який Pod, який не толерує Taint.
taints.effect (string), обовʼязково
Обовʼязково. Ефект taint на Podʼи, які не толерують taint. Допустимі ефекти: NoSchedule, PreferNoSchedule і NoExecute.
taints.key (string), обовʼязково
Обовʼязково. Ключ taint, який буде застосовано до вузла.
taints.timeAdded (Time)
TimeAdded представляє час, коли taint було додано. Записується тільки для taint NoExecute.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
NodeStatus — це інформація про поточний статус вузла.
addresses ([]NodeAddress)
Patch strategy: merge on key type
Map: унікальні значення ключа type будуть збережені під час злиття
Список адрес, доступних вузлу. Запитується у постачальника хмарних послуг, якщо доступно. Докладніше: https://kubernetes.io/docs/concepts/nodes/node/#addresses Примітка: Це поле визначено як доступне для злиття, але ключ злиття не є достатньо унікальним, що може призвести до пошкодження даних при злитті. Абоненти повинні використовувати патч для повної заміни. Див. приклад на https://pr.k8s.io/79391. Споживачі повинні припускати, що адреси можуть змінюватися протягом усього життя вузла. Однак є деякі винятки, коли це може бути неможливо, наприклад, Podʼи, які наслідують адресу вузла у своєму статусі, або споживачі API (status.hostIP).
NodeAddress містить інформацію про адресу вузла.
addresses.address (string), обовʼязково
Адреса вузла.
addresses.type (string), обовʼязково
Тип адреси вузла, один із Hostname, ExternalIP або InternalIP.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.lastTransitionTime (Time)
Останній час переходу стану від одного статусу до іншого.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string)
Повідомлення, зрозуміле людині, що вказує на деталі останнього переходу.
conditions.reason (string)
(коротко) причина останнього переходу стану.
config (NodeConfigStatus)
Статус конфігурації, призначеної вузлу через функцію динамічної конфігурації Kubelet.
NodeConfigStatus описує статус конфігурації, призначеної Node.Spec.ConfigSource.
config.active (NodeConfigSource)
Active повідомляє про контрольовану конфігурацію, яку вузол активно використовує. Active представляє або поточну версію призначеної конфігурації, або поточну останню відому правильну конфігурацію, залежно від того, чи виникає помилка при спробі використати призначену конфігурацію.
NodeConfigSource вказує джерело конфігурації вузла. Тільки одне підполе (без урахування метаданих), має бути не нульовим. Цей API є застарілим з версії 1.22
Namespace — metadata.namespace посилання ConfigMap. Це поле є обовʼязковим у всіх випадках.
config.active.configMap.resourceVersion (string)
ResourceVersion — metadata.ResourceVersion посилання ConfigMap. Це поле заборонено в Node.Spec, і обовʼязкове в Node.Status.
config.active.configMap.uid (string)
UID — metadata.UID посилання ConfigMap. Це поле заборонено в Node.Spec, і обовʼязкове в Node.Status.
config.assigned (NodeConfigSource)
Assigned повідомляє про контрольовану конфігурацію, яку вузол спробує використовувати. Коли Node.Spec.ConfigSource оновлюється, вузол зберігає асоційоване конфігураційне навантаження на локальний диск разом із записом, що вказує на призначену конфігурацію. Вузол звертається до цього запису, щоб вибрати свою контрольовану конфігурацію, і повідомляє про цей запис в Assigned. Assigned оновлюється в статусі лише після того, як запис збережено на диск. Коли Kubelet перезавантажується, він намагається зробити призначену конфігурацію активною конфігурацією, завантажуючи та перевіряючи контрольоване навантаження, ідентифіковане Assigned.
NodeConfigSource вказує джерело конфігурації вузла. Тільки одне підполе (без урахування метаданих), має бути не нульовим. Цей API є застарілим з версії 1.22
ResourceVersion — metadata.ResourceVersion посилання ConfigMap. Це поле заборонено в Node.Spec, і обовʼязкове в Node.Status.
config.assigned.configMap.uid (string)
UID — metadata.UID посилання ConfigMap. Це поле заборонено в Node.Spec, і обовʼязкове в Node.Status.
config.error (string)
Error описує будь-які проблеми під час узгодження Spec.ConfigSource з Active конфігурацією. Помилки можуть виникати, наприклад, при спробі зберегти Spec.ConfigSource у локальний запис Assigned, при спробі зберегти повʼязане конфігураційне навантаження, при спробі завантажити або перевірити Assigned конфігурацію тощо. Помилки можуть виникати на різних етапах синхронізації конфігурації. Ранні помилки (наприклад, помилки завантаження або збереження) не призведуть до повернення до LastKnownGood і можуть бути виправлені під час повторних спроб Kubelet. Пізні помилки (наприклад, помилки завантаження або перевірки збереженої конфігурації) призведуть до повернення до LastKnownGood. У останньому випадку зазвичай можна вирішити помилку, виправивши конфігурацію, призначену в Spec.ConfigSource. Додаткову інформацію для налагодження можна знайти, шукаючи повідомлення про помилку в лозі Kubelet. Error є описом стану помилки, зрозумілим людині; машини можуть перевірити, чи порожній Error, але не повинні покладатися на стабільність тексту Error у різних версіях Kubelet.
config.lastKnownGood (NodeConfigSource)
LastKnownGood повідомляє про контрольовану конфігурацію, до якої вузол повернеться при виникненні помилки під час спроби використати Assigned конфігурацію. Assigned конфігурація стає LastKnownGood, коли вузол визначає, що Assigned конфігурація стабільна і правильна. Це наразі реалізовано як 10-хвилинний період перевірки, що починається, коли локальний запис Assigned конфігурації оновлюється. Якщо Assigned конфігурація є Active наприкінці цього періоду, вона стає LastKnownGood. Зазначте, що якщо Spec.ConfigSource скидається до nil (використовуйте стандартні локальні налаштування), LastKnownGood також негайно скидається до nil, оскільки локальна стандартна конфігурація завжди вважається правильною. Ви не повинні робити припущення про метод вузла щодо визначення стабільності та правильності конфігурації, оскільки це може змінюватися або ставати налаштовуваним у майбутньому.
NodeConfigSource вказує джерело конфігурації вузла. Тільки одне підполе (без урахування метаданих), має бути не нульовим. Цей API є застарілим з версії 1.22
Features описує набір функцій, реалізованих реалізацією CRI.
NodeFeatures описує набір функцій, реалізованих реалізацією CRI. Функції, що містяться в NodeFeatures, повинні залежати лише від реалізації CRI, незалежно від обробників під час виконання.
features.supplementalGroupsPolicy (boolean)
SupplementalGroupsPolicy встановлюється в true, якщо середовище виконання підтримує SupplementalGroupsPolicy та ContainerUser.
images ([]ContainerImage)
Atomic: буде замінено під час злиття
Список контейнерних образів на цьому вузлі.
Опис контейнерного образу
images.names ([]string)
Atomic: буде замінено під час злиття
Імена, відомі для образу. Наприклад, ["kubernetes.example/hyperkube:v1.0.7", "cloud-vendor.registry.example/cloud-vendor/hyperkube:v1.0.7"]
RuntimeClass визначає клас середовища виконання контейнерів, підтримуваних у кластері.
apiVersion: node.k8s.io/v1
import "k8s.io/api/node/v1"
RuntimeClass
RuntimeClass визначає клас середовища виконання контейнерів, підтримуваних у кластері. RuntimeClass використовується для визначення, яке середовище виконання контейнерів використовується для запуску всіх контейнерів у Podʼі. RuntimeClass визначаються вручну користувачем або провайдером кластера і посилаються в PodSpec. Kubelet відповідає за розвʼязання посилання RuntimeClassName перед запуском Podʼа. Для отримання додаткової інформації дивіться: https://kubernetes.io/docs/concepts/containers/runtime-class/
handler визначає базове середовище виконання та конфігурацію, яку реалізація CRI буде використовувати для обробки Podʼів цього класу. Можливі значення специфічні для конфігурації вузла та CRI. Припускається, що всі обробники доступні на кожному вузлі, і обробники з однаковими назвами еквівалентні на кожному вузлі. Наприклад, обробник з назвою "runc" може вказувати, що для запуску контейнерів у Podʼі буде використовуватися середовище виконання runc OCI (з використанням нативних Linux контейнерів). Handler повинен бути у нижньому регістрі, відповідати вимогам мітки DNS (RFC 1123) і бути незмінним.
podFixed представляє фіксовані накладні витрати ресурсів, повʼязані з запуском Podʼа.
scheduling (Scheduling)
scheduling містить обмеження планування, щоб забезпечити розміщення Podʼів, які працюють з цим RuntimeClass, на вузлах, які його підтримують. Якщо scheduling дорівнює nil, передбачається, що цей RuntimeClass підтримується всіма вузлами.
Scheduling визначає обмеження планування для вузлів, які підтримують RuntimeClass.
scheduling.nodeSelector (map[string]string)
nodeSelector перераховує мітки, які повинні бути присутніми на вузлах, що підтримують цей RuntimeClass. Podʼи, що використовують цей RuntimeClass, можуть бути розміщені тільки на вузлах, що відповідають цьому селектору. Селектор вузла RuntimeClass обʼєднується з наявним селектором вузла Podʼа. Будь-які конфлікти призведуть до відхилення Podʼа на етапі допуску.
scheduling.tolerations ([]Toleration)
Atomic: буде замінено під час злиття
tolerations додаються (за винятком дублікатів) до Podʼів, що працюють з цим RuntimeClass під час допуску, ефективно обʼєднуючи набір вузлів, які Pod та RuntimeClass можуть толерувати.
Pod, до якого привʼязаний цей Toleration, толерує будь-який taint, що відповідає трійці <key,value,effect> за допомогою оператора порівняння .
scheduling.tolerations.key (string)
Key — це ключ taint, до якого застосовується toleration. Порожній ключ означає відповідність всім ключам taint. Якщо ключ порожній, оператор повинен бути Exists; ця комбінація означає відповідність усім значенням та всім ключам.
scheduling.tolerations.operator (string)
Operator представляє відношення ключа до значення. Допустимі оператори: Exists і Equal. Стандартне значення — Equal. Exists еквівалентно шаблону для значення, так що Pod може толерувати всі taints певної категорії.
scheduling.tolerations.value (string)
Value — це значення taint, з яким збігається toleration. Якщо оператор Exists, значення повинно бути порожнім, інакше — це просто звичайний рядок.
scheduling.tolerations.effect (string)
Effect вказує ефект taint для порівняння. Порожній означає відповідність всім ефектам taint. Якщо вказано, допустимі значення — NoSchedule, PreferNoSchedule та NoExecute.
scheduling.tolerations.tolerationSeconds (int64)
TolerationSeconds представляє період часу, протягом якого toleration (який повинен мати ефект NoExecute, інакше це поле ігнорується) толерує taint. Стандартне значення — не встановлено, що означає толерування taint назавжди (не виселяти). Нульові та відʼємні значення будуть розглядатися системою як 0 (негайне виселення).
RuntimeClassList
RuntimeClassList — це список обʼєктів RuntimeClass.
ServiceCIDR визначає діапазон IP-адрес у форматі CIDR (наприклад, 192.168.0.0/24 або 2001:db2::/64).
apiVersion: networking.k8s.io/v1beta1
import "k8s.io/api/networking/v1beta1"
ServiceCIDR
ServiceCIDR визначає діапазон IP-адрес у форматі CIDR (наприклад, 192.168.0.0/24 або 2001:db2::/64). Цей діапазон використовується для виділення ClusterIP для обʼєктів Service.
ServiceCIDRSpec визначає CIDR, які користувач хоче використовувати для виділення ClusterIP для Services.
cidrs ([]string)
Atomic: буде замінено під час злиття
CIDRs визначає IP-блоки у нотації CIDR (наприклад, "192.168.0.0/24" або "2001:db8::/64"), з яких призначаються IP-адреси для сервісів кластера. Дозволено не більше двох CIDR, по одному для кожного сімейства IP. Це поле є незмінним.
ServiceCIDRStatus
ServiceCIDRStatus описує поточний стан ServiceCIDR.
conditions ([]Condition)
Patch strategy: злиття за ключем type
Map: унікальні значення ключа type будуть збережені під час злиття
conditions містить масив metav1.Condition, який описує стан ServiceCIDR. Поточний стан сервісу.
Condition містить деталі для одного аспекту поточного стану цього API-ресурсу.
conditions.lastTransitionTime (Time), обовʼязково
lastTransitionTime — це останній час, коли стан змінився з одного статусу на інший. Це повинно відповідати моменту, коли змінився основний стан. Якщо це невідомо, можна використовувати час, коли змінилося поле API.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
conditions.message (string), обовʼязково
message — це зрозуміле для людини повідомлення, яке надає деталі про перехід. Це може бути порожній рядок.
conditions.reason (string), обовʼязково
reason містить програмний ідентифікатор, що вказує причину останньої зміни стану. Виробники певних типів станів можуть визначати очікувані значення та значення для цього поля та чи вважаються ці значення гарантованими API. Значення має бути рядком у CamelCase. Це поле не може бути порожнім.
conditions.status (string), обовʼязково
статус стану, одне з True, False, Unknown.
conditions.type (string), обовʼязково
тип стану в CamelCase або у форматі foo.example.com/CamelCase.
conditions.observedGeneration (int64)
observedGeneration представляє .metadata.generation, на основі якого було встановлено стан. Наприклад, якщо .metadata.generation наразі дорівнює 12, але .status.conditions[x].observedGeneration дорівнює 9, стан застарів щодо поточного стану екземпляра.
ServiceCIDRList
ServiceCIDRList містить список об'єктів ServiceCIDR.
Коли параметр присутній, вказує, що зміни не повинні бути збережені. Недійсні або невизнані директиви dryRun призведуть до відповіді з помилкою і подальшої відмови в обробці запиту. Допустимі значення: - All: всі етапи випробувального запуску будуть оброблені
gracePeriodSeconds (int64)
Тривалість в секундах до видалення обʼєкта. Значення повинно бути не відʼємним цілим числом. Значення нуль означає видалення без затримки. Якщо це значення є nil, буде використовуватися стандартне значення для вказаних типів. Стандартно буде використовуватися значення для обʼєкта, якщо не вказано. Нуль означає видалення без затримки.
Застаріле: будь ласка, використовуйте PropagationPolicy, це поле буде застаріле в версії 1.7. Чи повинні бути покинуті залежні обʼєкти. Якщо true/false, завершувач "orphan" буде доданий/видалений зі списку завершувачів обʼєкта. Можна встановити або це поле, або PropagationPolicy, але не обидва.
preconditions (Preconditions)
Має бути виконано перед видаленням. Якщо це неможливо, буде повернено статус 409 Conflict.
Умови мають бути виконані перед виконанням операції (оновлення, видалення і т. д.).
preconditions.resourceVersion (string)
Вказує цільову ResourceVersion
preconditions.uid (string)
Вказує цільовий UID.
propagationPolicy (string)
Чи та як буде виконуватися збір сміття. Можна встановити або це поле, або OrphanDependents. Стандартна політика визначається наявним набором завершувачів у metadata.finalizers та стандартною політикою, що специфічна для ресурсу. Прийнятні значення: 'Orphan' — залишити залежності без батьків; 'Background' — дозволити збирачеві сміття видаляти залежності в фоновому режимі; 'Foreground' — каскадна політика, що видаляє всі залежності безпосередньо.
5.9.2 - LabelSelector
Селектор міток — є запитом на наявність міток до набору ресурсів.
import "k8s.io/apimachinery/pkg/apis/meta/v1"
Селектор міток — це запит на наявність міток до набору ресурсів. Результати matchLabels та matchExpressions поєднуються логічним І (AND). Порожній селектор міток має збіг зі всіма обʼєктам. Нульовий селектор міток не збігається з жодним обʼєктом.
matchExpressions ([]LabelSelectorRequirement)
Atomic: буде замінено під час злиття
matchExpressions — це список вимог селектора міток. Вимоги зʼєднуються логічною операцією І (AND).
Вимоги селектора міток — це селектор, що містить значення, ключ та оператор, який повʼязує ключ і значення.
matchExpressions.key (string), обовʼязково
key — це ключ мітки, до якого застосовується селектор.
matchExpressions.operator (string), обовʼязково
operator представляє стосунок ключа до набору значень. Допустимі оператори: In, NotIn, Exists та DoesNotExist.
matchExpressions.values ([]string)
Atomic: буде замінено під час злиття
values — це масив рядкових значень. Якщо оператор — In або NotIn, масив значень повинен бути не пустим. Якщо оператор — Exists або DoesNotExist, масив значень повинен бути пустим. Цей масив замінюється під час стратегічного злиття патча.
matchLabels (map[string]string)
matchLabels — це зіставлення пар {ключ, значення}. Один {ключ, значення} у зіставленні matchLabels еквівалентний елементу matchExpressions, де поле key — "key", оператор — "In", а масив значень містить лише "value". Вимоги зʼєднуються логічною операцією І (AND).
5.9.3 - ListMeta
ListMeta описує метадані, які синтетичні ресурси повинні мати, включаючи списки та різноманітні обʼєкти статусу.
import "k8s.io/apimachinery/pkg/apis/meta/v1"
ListMeta описує метадані, які синтетичні ресурси повинні мати, включаючи списки та різноманітні обʼєкти статусу. Ресурс може мати лише один з {ObjectMeta, ListMeta}.
continue (string)
continue може бути встановлено, якщо користувач встановив обмеження на кількість елементів, які повертаються, і вказує на те, що сервер має більше даних. Значення непрозоре і може бути використано для видачі іншого запиту до точки доступу, яка обслуговувала цей список, для отримання наступного набору доступних обʼєктів. Продовження стабільного списку може бути неможливим, якщо конфігурація сервера змінилася або пройшло більше декількох хвилин. Поле resourceVersion, повернене при використанні цього значення continue, буде ідентичним значенню у першій відповіді, якщо ви не отримали цей токен з повідомлення про помилку.
remainingItemCount (int64)
remainingItemCount — це кількість наступних елементів у списку, які не включені у цю відповідь списку. Якщо запит на список містив селектори міток або полів, то кількість залишених елементів невідома, і поле буде залишено невстановленим і опущено під час серіалізації. Якщо список завершено (або через те, що він не розділяється на частини, або через те, що це остання частина), то більше залишених елементів немає, і це поле буде залишено невстановленим і опущено під час серіалізації. Сервери, старші за v1.15, не встановлюють це поле. Призначене використання remainingItemCount — оцінювання розміру колекції. Клієнти не повинні покладатися на встановлення або точність remainingItemCount.
Застаріле: selfLink — це застаріле поле тільки для читання, яке більше не заповнюється системою.
5.9.4 - LocalObjectReference.
LocalObjectReference містить достатньо інформації, щоб дозволити вам знайти вказаний обʼєкт всередині того самого простору імен.
import "k8s.io/api/core/v1"
LocalObjectReference містить достатньо інформації, щоб дозволити вам знайти вказаний обʼєкт всередині того самого простору імен."
title: "LocalObjectReference
Вимоги селектора вузлів — це селектор, що містить значення, ключ та оператор, який повʼязує ключ і значення.
import "k8s.io/api/core/v1"
Вимоги селектора вузлів — це селектор, що містить значення, ключ та оператор, який повʼязує ключ і значення.
key (string), обовʼязково
key — це ключ мітки, до якого застосовується селектор.
operator (string), обовʼязково
operator представляє стосунок ключа до набору значень. Допустимі оператори: In, NotIn, Exists, DoesNotExist, Gt та Lt.
values ([]string)
Atomic: буде замінено під час злиття
values — це масив рядкових значень. Якщо оператор — In або NotIn, масив значень повинен бути не пустим. Якщо оператор — Exists або DoesNotExist, масив значень повинен бути пустим. Якщо оператор — Gt або Lt, масив значень повинен містити один елемент, який буде інтерпретовано як ціле число. Цей масив замінюється під час стратегічного злиття патча.
5.9.6 - ObjectFieldSelector
ObjectFieldSelector вибирає поле з версією API обʼєкта.
import "k8s.io/api/core/v1"
ObjectFieldSelector вибирає поле з версією API обʼєкта.
fieldPath (string), обовʼязково
Шлях поля для вибору в зазначеній версії API.
apiVersion (string)
Версія схеми, в якій виражений fieldPath, стандартне значення — "v1".
5.9.7 - ObjectMeta
ObjectMeta — це метадані, які повинні бути у всіх збережених ресурсів, включаючи всі обʼєкти, які користувачі повинні створювати.
import "k8s.io/apimachinery/pkg/apis/meta/v1"
ObjectMeta — це метадані, які повинні бути у всіх збережених ресурсів, включаючи всі обʼєкти, які користувачі повинні створювати.
name (string)
Ім’я (назва) має бути унікальним у просторі імен. Потрібне під час створення ресурсів, хоча деякі ресурси можуть дозволяти клієнту запитувати створення відповідного імені автоматично. Назва в першу чергу призначена для створення ідемпотентності та визначення конфігурації. Не може бути змінене. Більше інформації: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names
generateName (string)
GenerateName — це необов’язковий префікс, який використовується сервером для генерації унікального імені, ТІЛЬКИ ЯКЩО поле Name не було надано. Якщо використовується це поле, ім’я, що повертається клієнту, відрізнятиметься від переданого. Це значення також поєднується з унікальним суфіксом. Надане значення має ті самі правила перевірки, що й поле Name, і може бути скорочено на довжину суфікса, необхідного для того, щоб зробити значення унікальним на сервері.
Якщо це поле вказано, а згенерована назва існує, сервер поверне 409.
Простір імен визначає простір, у якому кожне ім’я має бути унікальним. Порожній простір імен еквівалентний простору імен "default", але "default" є канонічним представленням. Не всі об’єкти повинні мати область імен — значення цього поля для цих об’єктів буде порожнім.
Анотації — це неструктурований масив (map) значень ключів, що зберігається з ресурсом, який може бути заданий зовнішніми інструментами для зберігання та отримання довільних метаданих. Вони не є запитуваними та повинні зберігатися при модифікації обʼєктів. Більше інформації: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations
System
finalizers ([]string)
Set: унікальні значення будуть збережені під час злиття
Це поле повинно бути порожнім перед тим, як обʼєкт буде видалено з реєстру. Кожен запис є ідентифікатором відповідального компонента, який видалить цей запис зі списку. Якщо deletionTimestamp обʼєкта не є nil, записи у цьому списку можуть бути лише видалені. Завершувачі можуть оброблятися та видалятися у будь-якому порядку. Порядок НЕ є обовʼязковим, оскільки це створює значний ризик зависання завершувачів. Поле finalizers є спільним, будь-який актор з відповідними дозволами може змінити його порядок. Якщо список завершувачів обробляється у порядку, це може призвести до ситуації, коли компонент, відповідальний за перший завершувач у списку, чекає сигналу (значення поля, зовнішньої системи або іншого), що виробляється компонентом, відповідальним за завершувача, який знаходиться далі у списку, що призводить до тупикової ситуації. Без обовʼязкового порядку завершувачі можуть впорядковуватися самостійно та не вразливі до змін порядку у списку.
managedFields ([]ManagedFieldsEntry)
Atomic: буде замінено під час злиття
ManagedFields зіставляє ідентифікатор робочого процесу та версію з набором полів, якими керує цей робочий процес. Це здебільшого для внутрішнього ведення обліку, і користувачам зазвичай не потрібно встановлювати або розуміти це поле. Робочий процес може бути імʼям користувача, імʼям контролера або імʼям конкретного шляху застосування, як-от "ci-cd". Набір полів завжди знаходиться у версії, яку використовував робочий процес при зміні обʼєкта.
ManagedFieldsEntry — це ідентифікатор робочого процесу, набір полів (FieldSet) і версія групи ресурсу, до якого застосовується набір полів.
managedFields.apiVersion (string)
APIVersion визначає версію ресурсу, до якого застосовується цей набір полів. Формат такий самий, як у верхньорівневого поля APIVersion: "group/version". Це необхідно для відстеження версії набору полів, оскільки він не може бути автоматично конвертований.
managedFields.fieldsType (string)
FieldsType є дискримінатором для різних форматів і версій полів. На цей час можливе лише одне значення: "FieldsV1".
managedFields.fieldsV1 (FieldsV1)
FieldsV1 зберігає перший формат JSON версії, як описано в типі "FieldsV1".
*FieldsV1 зберігає набір полів у структурі даних, подібній до Trie, у форматі JSON.
Кожен ключ або представляє саму область (позначену як '.'), і завжди буде зіставлятись з порожнім набором, або є рядком, що представляє субполе або елемент. Рядок буде слідувати одному з чотирьох форматів: f:<name>, де <name> — це імʼя поля в структурі або ключа в map; v:<value>, де <value> — це точне значення у форматі JSON для елемента списку; i:<index>, де <index> — це позиція елемента у списку; k:<keys>, де <keys> — це масив (map) полів ключів елемента списку з їх унікальними значеннями. Якщо ключ зіставляється з порожнім значенням Fields, поле, яке представляє цей ключ, є частиною набору.
Точний формат визначено в sigs.k8s.io/structured-merge-diff*
managedFields.manager (string)
Manager є ідентифікатором робочого процесу, що керує цим набором полів.
managedFields.operation (string)
Operation — це тип операції, яка призвела до створення цього запису ManagedFieldsEntry. Єдині допустимі значення для цього поля — 'Apply' та 'Update'.
managedFields.subresource (string)
Subresource — це назва субресурсу, який використовується для оновлення цього обʼєкта, або порожній рядок, якщо обʼєкт було оновлено через основний ресурс. Значення цього поля використовується для розрізнення між менеджерами, навіть якщо вони мають однакові імена. Наприклад, оновлення статусу буде відрізнятися від звичайного оновлення за допомогою того самого імені менеджера. Зверніть увагу, що поле APIVersion не повʼязане з полем Subresource і завжди відповідає версії основного ресурсу.
managedFields.time (Time)
Time — це часовий відбиток, коли був доданий запис ManagedFields. Час також буде оновлено, якщо додано поле, менеджер змінює будь-яке зі значень власних полів або видаляє поле. Відмітка часу не оновлюється, коли поле видаляється з запису через те, що його взяв на себе інший менеджер.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
ownerReferences ([]OwnerReference)
Patch strategy: злиття за ключем uid
Map: унікальні значення ключа uid будуть збережені під час злиття
Список обʼєктів, від яких залежить цей обʼєкт. Якщо ВСІ обʼєкти у списку були видалені, цей обʼєкт буде прибраний в процесі збирання сміття. Якщо цей обʼєкт керується контролером, то запис у цьому списку вказуватиме на цей контролер, із полем controller встановленим в true. Не може бути більше одного керуючого контролера.
OwnerReference містить достатньо інформації, щоб дозволити вам ідентифікувати власний обʼєкт. Власний обʼєкт повинен бути в тому ж просторі імен, що й залежний, або мати область видимості кластера, тому поля namespace немає.
ownerReferences.apiVersion (string), обовʼязкове
APIVersion визначає версію ресурсу, до якого відноситься цей обʼєкт.
ownerReferences.kind (string), обовʼязкове
Kind визначає тип ресурсу, до якого відноситься цей обʼєкт. Докладніше: hhtps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds
ownerReferences.name (string), обовʼязкове
Ім’я визначає ім’я ресурсу, до якого відноситься цей обʼєкт. Докладніше: hhtps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#names
ownerReferences.uid (string), обовʼязкове
UID визначає унікальний ідентифікатор ресурсу, до якого відноситься цей обʼєкт. Докладніше: hhtps://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#uids
ownerReferences.blockOwnerDeletion (boolean)
Якщо true, І якщо у власника є pfdthoedfx "foregroundDeletion", то власника не можна видалити зі сховища ключ-значення, доки це посилання не буде видалено. Див. https://kubernetes.io/docs/concepts/architecture/garbage-collection/#foreground-deletion щодо того, як збирач сміття взаємодіє з цим полем та застосовує явне видалення. стандартно — false. Щоб встановити це поле, користувачу потрібно мати дозвіл "delete" від власника, інакше буде повернуто 422 (Unprocessable Entity).
ownerReferences.controller (boolean)
Якщо true, це посилання вказує на керуючий контролер.
Read-only
creationTimestamp (Time)
CreationTimestamp — це відмітка часу, що представляє час сервера під час створення цього обʼєкта. Немає гарантії, що вона встановлена в порядку "відбулося перед" між окремими операціями. Клієнти не можуть встановлювати це значення. Використовується формат RFC3339 та знаходиться в часовому поясі UTC.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
deletionGracePeriodSeconds (int64)
Кількість секунд, які дозволяють цьому обʼєкту завершити роботу належним чином перед тим, як він буде видалений з системи. Встановлюється лише тоді, коли також встановлено deletionTimestamp. Може бути скорочено тільки в меншу сторону. Тільки для читання.
deletionTimestamp (Time)
Час видалення (DeletionTimestamp) — це дата та час у форматі RFC 3339, коли цей ресурс буде видалено. Це поле встановлюється сервером, коли користувач запитує належне видалення, і не може бути прямо встановлене клієнтом. Ресурс очікується бути видаленим (більше не видимий у списку ресурсів та недосяжний за іменем) після часу, вказаного у цьому полі, як тільки список завершувачів (finalizers) буде порожнім. Поки список завершувачів містить елементи, видалення заблоковане. Як тільки встановлюється час видалення, це значення не можна скасувати або встановити далі в майбутнє, хоча його можна скоротити або ресурс може бути видалений раніше цього часу. Наприклад, користувач може запросити видалення Podʼа через 30 секунд. Kubelet відреагує, надіславши сигнал належного завершення роботи контейнерам у Podʼі. Після цих 30 секунд Kubelet надішле сигнал примусового завершення (SIGKILL) контейнеру й після очищення видалить Pod з API. У випадку мережевих розділень цей обʼєкт може існувати після цієї позначки часу, доки адміністратор або автоматизований процес не визначить, що ресурс повністю завершив роботу. Якщо не встановлено, належне видалення обʼєкта не було запитано.
Time — це обгортка навколо time.Time, яка підтримує коректне перетворення у YAML та JSON. Для багатьох з функцій, які пропонує пакет time, надаються обгортки.
generation (int64)
Послідовний номер, що представляє конкретну генерацію бажаного стану. Заповнюється системою. Тільки для читання.
resourceVersion (string)
Непрозоре (opaque) значення, яке представляє внутрішню версію цього обʼєкта, яке може бути використано клієнтами для визначення змін в обʼєктах. Це може використовуватися для оптимістичного одночасного виконання, виявлення змін та операції спостереження над ресурсом або набором ресурсів. Клієнти повинні розглядати ці значення як непрозорі та передавати їх незмінними назад на сервер. Вони можуть бути дійсними тільки для певного ресурсу або набору ресурсів.
Застаріле: selfLink — це застаріле поле, призначене лише для читання, яке більше не заповнюється системою.
uid (string)
UID є унікальним у часі та просторі значенням для цього об’єкта. Зазвичай він генерується сервером після успішного створення ресурсу, і його не можна змінювати під час операцій PUT.
ObjectReference містить достатньо інформації для того, щоб дозволити вам переглядати або змінювати зазначений обʼєкт.
import "k8s.io/api/core/v1"
ObjectReference містить достатньо інформації для того, щоб дозволити вам переглядати або змінювати зазначений обʼєкт.
apiVersion (string)
apiVersion — це версія API ресурсу, до якого вказує цей обʼєкт.
fieldPath (string)
Якщо потрібно посилатися на частину обʼєкта замість цілого обʼєкта, цей рядок повинен містити дійсне висловлення доступу до поля JSON/Go, наприклад, desiredState.manifest.containers[2]. Наприклад, якщо посилання на обʼєкт стосується контейнера у межах Podʼа, це прийме значення подібне: "spec.containers{name}" (де "name" вказує на імʼя контейнера, що спричинило подію), або якщо не вказано жодного імені контейнера "spec.containers[2]" (контейнер з індексом 2 у цьому Pod). Ця синтаксична конструкція вибрана лише для того, щоб мати деякий чітко визначений спосіб посилання на частину обʼєкта.
Patch надає конкретну назву та тип тілу запиту PATCH Kubernetes.
import "k8s.io/apimachinery/pkg/apis/meta/v1"
Patch надає конкретну назву та тип тілу запиту PATCH Kubernetes.
5.9.10 - Quantity
Quantity — це представлення числа з фіксованою комою.
import "k8s.io/apimachinery/pkg/api/resource"
Quantity — це представлення числа з фіксованою комою. Воно надає зручний спосіб перетворення в/з JSON та YAML, на додачу до інструментів String() та AsInt64().
Формат серіалізації виглядає наступним чином:
\<quantity> ::= \<signedNumber>\<suffix>
(Зауважте, що \<suffix> може бути порожнімy, з "" у \<decimalSI>.)
\<digit> ::= 0 | 1 | ... | 9
\<digits> ::= \<digit> | \<digit>\<digits>
\<number> ::= \<digits> | \<digits>.\<digits> | \<digits>. | .\<digits>
\<sign> ::= "+" | "-"
\<signedNumber> ::= \<number> | \<sign>\<number>
\<suffix> ::= \<binarySI> | \<decimalExponent> | \<decimalSI>
\<binarySI> ::= Ki | Mi | Gi | Ti | Pi | Ei
(Міжнародна система мір; Див: http://physics.nist.gov/cuu/Units/binary.html)
\<decimalSI> ::= m | "" | k | M | G | T | P | E
(Зауважте, що 1024 = 1Ki але 1000 = 1k; капіталізація не використовується.)
\<decimalExponent> ::= "e" \<signedNumber> | "E" \<signedNumber>
Незалежно від того, яка з трьох форм експоненти використовується, жодна кількість не може представляти число більше, ніж 2^63-1, а також не може мати більше трьох десяткових знаків. Числа, більші або точніші, будуть обмежені або округлені вгору. (Наприклад: 0.1m буде округлено до 1m.) Це може бути розширено в майбутньому, якщо ми потребуватимемо більших або менших кількостей.
Коли Quantity отримується зі строки, поканик запамʼятає тип суфікса, який він мав, і використовуватиме той самий тип знову, коли буде серіалізований.
Перед серіалізацією, Quantity буде приведено у "канонічну форму". Це означає, що експонента/суфікс буде відрегульована вгору або вниз (з відповідним збільшенням або зменшенням мантиси) таким чином, що:
Точність не буде втрачена
Дробові цифри не будуть випущені
Експонента (або суфікс) буде максимально можливою.
Знак буде опущено, якщо число не є негативним.
Приклади:
1.5 буде серіалізовано як "1500m"
1.5Gi буде серіалізовано як "1536Mi"
Зверніть увагу, що кількість НІКОЛИ не буде внутрішньо представлена числом з плаваючою комою. Це і є головна мета цього підходу.
Неканонічні значення все ще будуть проходити оцінку, якщо вони правильно сформовані, але будуть повторно випущені у своїй канонічній формі. (Отже, завжди використовуйте канонічну форму.)
Цей формат призначений для ускладнення використання цих чисел без написання спеціального коду обробки в надії на те, що це змусить реалізаторів також використовувати реалізацію чисел з фіксованою точкою.
5.9.11 - ResourceFieldSelector
ResourceFieldSelector представляє ресурси контейнера (cpu, memory) та формат їх виводу.
import "k8s.io/api/core/v1"
ResourceFieldSelector представляє ресурси контейнера (cpu, memory) та їх формат виводу.
resource (string), обовʼязково
Обовʼязково: ресурс, який потрібно вибрати.
containerName (string)
Назва контейнера: обовʼязково для томів, необовʼязково для змінних середовища.
Рекомендований HTTP-код відповіді для цього статусу, 0, якщо не встановлено.
details (StatusDetails)
Atommic: буде замінено під час злиття
Розширені дані, повʼязані з причиною. Кожна причина може визначити свої власні розширені деталі. Це поле є необовʼязковим, і дані, що повертаються, не гарантовано відповідають будь-якій схемі, крім тієї, що визначена типом причини.
StatusDetails — це набір додаткових властивостей, які МОЖУТЬ бути встановлені сервером для надання додаткової інформації про відповідь. Поле Reason обʼєкта Status визначає, які атрибути будуть встановлені. Клієнти повинні ігнорувати поля, які не відповідають визначеному типу кожного атрибута, і повинні припускати, що будь-який атрибут може бути порожнім, недійсним або невизначеним.
details.causes ([]StatusCause)
Atommic: буде замінено під час злиття
Масив Causes містить додаткові деталі, повʼязані з невдачею StatusReason. Не всі StatusReasons можуть надавати детальні причини.
StatusCause надає додаткову інформацію про невдачу api.Status, включаючи випадки, коли зустрічаються декілька помилок.
details.causes.field (string)
Поле ресурсу, яке спричинило цю помилку, назване за його серіалізацією в JSON. Може містити крапку і постфіксну нотацію для вкладених атрибутів. Масиви індексуються починаючи з нуля. Поля можуть зʼявлятися більше одного разу в масиві причин через наявність кількох помилок в полях. Необовʼязкове.
Приклади:
"name" — поле "name" поточного ресурсу
"items[0].name" — поле "name" першого елемента масиву у "items"
details.causes.message (string)
Опис причини помилки, зрозумілий для людини. Це поле може бути представлене читачеві як є.
details.causes.reason (string)
Машинозчитуваний опис причини помилки. Якщо це значення порожнє, інформація відсутня.
details.group (string)
Атрибут групи ресурсу, повʼязаний зі статусом StatusReason.
Атрибут name ресурсу, повʼязаний зі статусом StatusReason (коли є одне імʼя, яке можна описати).
details.retryAfterSeconds (int32)
Якщо вказано, час у секундах до повторного виконання операції. Деякі помилки можуть вказувати, що клієнт повинен виконати альтернативну дію — для цих помилок це поле може показати, як довго чекати перед виконанням альтернативної дії.
Машинозчитуваний опис того, чому ця операція має статус "Failure". Якщо це значення порожнє, немає доступної інформації. Причина уточнює HTTP-код стану, але не перевизначає його.
TypedLocalObjectReference містить достатньо інформації, щоб дозволити вам знаходити типізований згаданий обʼєкт всередині того ж простору імен.
import "k8s.io/api/core/v1"
TypedLocalObjectReference містить достатньо інформації, щоб дозволити вам знаходити типізований згаданий обʼєкт всередині того ж простору імен.
kind (string), обовʼязково
Kind — це тип ресурсу, на який посилаються.
name (string), обовʼязково
Name — це назва ресурсу, на який посилаються.
apiGroup (string)
APIGroup — це група для ресурсу, на який посилаються. Якщо APIGroup не вказано, вказаний Kind повинен бути в основній групі API. Для будь-яких інших сторонніх типів APIGroup є обовʼязковим.
5.10 - Загальні параметри
allowWatchBookmarks
allowWatchBookmarks запитує події спостереження з типом "BOOKMARK". Сервери, які не реалізують закладки, можуть ігнорувати цей прапорець, і закладки надсилаються на розсуд сервера. Клієнти не повинні припускати, що закладки повертаються через певні інтервали, і не можуть припускати, що сервер надішле будь-яку подію BOOKMARK під час сеансу. Якщо це не спостереження, це поле ігнорується.
continue
Опція continue повинна бути встановлена при отриманні додаткових результатів з сервера. Оскільки це значення визначається сервером, клієнти можуть використовувати значення continue лише з попереднього результату запиту з ідентичними параметрами запиту (за винятком значення continue), і сервер може відхилити значення continue, яке він не розпізнає. Якщо вказане значення continue більше не є дійсним через закінчення терміну дії (зазвичай від п’яти до п’ятнадцяти хвилин) або зміну конфігурації на сервері, сервер відповість помилкою 410 ResourceExpired разом з токеном продовження. Якщо клієнту потрібен узгоджений список, він повинен перезапустити свій список без поля continue. В іншому випадку клієнт може надіслати інший запит списку з токеном, отриманим разом із помилкою 410, сервер відповість списком, починаючи з наступного ключа, але з останнім знімком, який не узгоджується з попередніми результатами списку — об’єкти, які створені, змінені або видалені після першого запиту списку будуть включені у відповідь, якщо їх ключі знаходяться після «наступного ключа».
Це поле не підтримується, коли watch має значення true. Клієнти можуть почати спостереження з останнього значення resourceVersion, повернутого сервером, і не пропустити жодних змін.
dryRun
Якщо присутній, вказує, що зміни не повинні бути збережені. Неправильний або нерозпізнана директива dryRun призведе до помилки та припинення обробки запиту. Дійсні значення:
All: будуть оброблені всі етапи dry run
fieldManager
fieldManager — це імʼя, повʼязане з актором або субʼєктом, який вносить ці зміни. Значення має бути менше або дорівнювати 128 символам і містити лише друковані символи, як визначено https://golang.org/pkg/unicode/#IsPrint.
fieldSelector
Селектор для обмеження списку об’єктів, що повертаються, за їх полями. Стандартне значення — все.
fieldValidation
fieldValidation інструктує сервер, як обробляти обʼєкти в запиті (POST/PUT/PATCH), які містять невідомі або дубльовані поля. Дійсні значення:
Ignore: буде ігнорувати будь-які невідомі поля, які тихо видаляються з обʼєкта, і буде ігнорувати всі, крім останнього дубльованого поля, з яким стикається декодер. Це поведінка за замовчуванням до v1.23.
Warn: надішле попередження через стандартний заголовок відповіді про попередження для кожного невідомого поля, яке видаляється з обʼєкта, і для кожного дубльованого поля, з яким стикається. Запит все одно буде успішним, якщо не буде інших помилок, і зберігатиметься лише останнє з будь-яких дубльованих полів. Це стандартне значення у v1.23+
Strict: призведе до помилки BadRequest, якщо будь-які невідомі поля будуть видалені з обʼєкта, або якщо є будь-які дубльовані поля. Помилка, повернена сервером, міститиме всі невідомі та дубльовані поля, з якими стикаються.
force
Force "змушує" застосовувати запити Apply. Це означає, що користувач повторно отримуватиме конфліктні поля, що належать іншим користувачам. Прапорець force має бути скинутий для запитів на патч, які не є apply.
gracePeriodSeconds
Тривалість у секундах до того, як об’єкт повинен бути видалений. Значення має бути додатним цілим числом. Значення нуль вказує на негайне видалення. Якщо це значення є nil, буде використано стандартний період очікування для вказаного типу. Стандартне значення — значення для кожного обʼєкта, якщо не вказано інше. Нуль означає негайне видалення.
labelSelector
Селектор для обмеження списку обʼєктів, що повертаються, за їх мітками. Стандартне значення — все.
limit
limit — це максимальна кількість відповідей, які можна повернути для виклику списку. Якщо елементів більше, сервер встановить поле continue у метаданих списку у значення, яке можна використовувати з тим самим початковим запитом для отримання наступного набору результатів. Встановлення обмеження може повернути менше, ніж запитувана кількість елементів (до нуля елементів), якщо всі запитувані обʼєкти відфільтровані, і клієнти повинні використовувати лише наявність поля continue, щоб визначити, чи доступні додаткові результати. Сервери можуть не підтримувати аргумент limit і повернуть усі доступні результати. Якщо limit вказано, а поле continue порожнє, клієнти можуть припустити, що додаткових результатів немає. Це поле не підтримується, якщо watch має значення true.
Сервер гарантує, що обʼєкти, повернені при використанні continue, будуть ідентичні видачі єдиного виклику списку без обмеження — тобто жодні обʼєкти, створені, змінені або видалені після видачі першого запиту, не будуть включені в жодні подальші запити. Це іноді називають узгодженим знімком і гарантує, що клієнт, який використовує limit для отримання менших частин дуже великого результату, може бути впевнений, що він бачить всі можливі обʼєкти. Якщо обʼєкти оновлюються під час отримання сегментованого списку, повертається версія обʼєкта, яка була присутня на момент розрахунку першого результату списку.
namespace
назва обʼєкта та сфера авторизації, наприклад для команд і проєктів
pretty
Якщо 'true', вивід буде відформатовано з відступами. Стандартне значення 'false', якщо user-agent не вказує вебоглядач або інструмент командного рядка HTTP (curl та wget).
propagationPolicy
Чи буде виконуватися і як буде виконуватися збір сміття. Можна встановити це поле або OrphanDependents, але не обидва. Стандартна політика визначається наявним набором завершувачів у metadata.finalizers і стандартною політикою для конкретного ресурсу. Прийнятні значення: 'Orphan' — зробити залежні обʼєкти сиротами; 'Background' — дозволити збирачу сміття видаляти залежні обʼєкти у фоновому режимі; 'Foreground' — політика каскаду, яка видаляє всі залежні обʼєкти явно.
sendInitialEvents=true можна встановити разом із watch=true. У цьому випадку потік спостереження розпочнеться зі штучних подій для створення поточного стану об’єктів у колекції. Після того, як усі такі події будуть надіслані, буде надіслано штучну подію "Bookmark". Закладка повідомить про ResourceVersion (RV), що відповідає набору об’єктів, і буде позначена анотацією "k8s.io/initial-events-end": "true". Після цього потік спостереження продовжуватиметься як зазвичай, надсилаючи події спостереження, що відповідають змінам (після RV) об’єктів, що спостерігаються.
Коли встановлено опцію sendInitialEvents, ми вимагаємо також встановити опцію resourceVersionMatch. Семантика запиту спостереження є такою:
resourceVersionMatch = NotOlderThan інтерпретується як "дані щонайменше такі ж нові, як надані resourceVersion" і подія bookmark надсилається, коли стан синхронізується до resourceVersion принаймні такий свіжий, як той, який надається ListOptions. Якщо resourceVersion не встановлено, це інтерпретується як "послідовне читання", і подія bookmark надсилається, коли стан синхронізується щонайменше до моменту початку обробки запиту.
resourceVersionMatch встановлено на будь-яке інше значення або не встановлено — Повертається помилка Invalid.
Стандартне значення — true, якщо resourceVersion="" або resourceVersion="0" (з міркувань зворотної сумісності) і false в інших випадках.
timeoutSeconds
Тайм-аут для викликів list/watch. Це обмежує тривалість виклику, незалежно від будь-якої активності чи неактивності.
watch
Спостереження за змінами описаних ресурсів і повернення їх у вигляді потоку сповіщень про додавання, оновлення та видалення. Вкажіть resourceVersion.
6 - Інструментування
6.1 - Метрики SLI компонентів Kubernetes
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.29 [stable]
Типово Kubernetes 1.32 публікує метрики Індикаторів Рівня Обслуговування (SLI) для кожного компонентного бінарного файлу Kubernetes. Ця точка доступу метрики відкривається на порту HTTPS кожного компонента за шляхом /metrics/slis. Функціональна можливістьComponentSLIs типово увімкнена для кожного компонента Kubernetes починаючи з версії v1.27.
Метрики SLI
З увімкненими метриками SLI кожен компонент Kubernetes відкриває дві метрики, позначені для кожної перевірки стану:
вимірювач (gauge, який представляє поточний стан перевірки стану)
лічильник (counter, який записує накопичувальні підрахунки, спостережені для кожного стану перевірки стану)
Ви можете використовувати інформацію метрики для розрахунку статистики доступності кожного компонента. Наприклад, сервер API перевіряє стан etcd. Ви можете визначити та повідомити, наскільки доступним чи недоступним був etcd — як повідомляє його клієнт, сервер API.
Дані вимірювача Prometheus виглядають так:
# HELP kubernetes_healthcheck [ALPHA] Ця метрика записує результат однієї перевірки стану.
# TYPE kubernetes_healthcheck gauge
kubernetes_healthcheck{name="autoregister-completion",type="healthz"} 1
kubernetes_healthcheck{name="autoregister-completion",type="readyz"} 1
kubernetes_healthcheck{name="etcd",type="healthz"} 1
kubernetes_healthcheck{name="etcd",type="readyz"} 1
kubernetes_healthcheck{name="etcd-readiness",type="readyz"} 1
kubernetes_healthcheck{name="informer-sync",type="readyz"} 1
kubernetes_healthcheck{name="log",type="healthz"} 1
kubernetes_healthcheck{name="log",type="readyz"} 1
kubernetes_healthcheck{name="ping",type="healthz"} 1
kubernetes_healthcheck{name="ping",type="readyz"} 1
Дані лічильника виглядають так:
# HELP kubernetes_healthchecks_total [ALPHA] Ця метрика записує результати всіх перевірок стану.
# TYPE kubernetes_healthchecks_total counter
kubernetes_healthchecks_total{name="autoregister-completion",status="error",type="readyz"} 1
kubernetes_healthchecks_total{name="autoregister-completion",status="success",type="healthz"} 15
kubernetes_healthchecks_total{name="autoregister-completion",status="success",type="readyz"} 14
kubernetes_healthchecks_total{name="etcd",status="success",type="healthz"} 15
kubernetes_healthchecks_total{name="etcd",status="success",type="readyz"} 15
kubernetes_healthchecks_total{name="etcd-readiness",status="success",type="readyz"} 15
kubernetes_healthchecks_total{name="informer-sync",status="error",type="readyz"} 1
kubernetes_healthchecks_total{name="informer-sync",status="success",type="readyz"} 14
kubernetes_healthchecks_total{name="log",status="success",type="healthz"} 15
kubernetes_healthchecks_total{name="log",status="success",type="readyz"} 15
kubernetes_healthchecks_total{name="ping",status="success",type="healthz"} 15
kubernetes_healthchecks_total{name="ping",status="success",type="readyz"} 15
Використання цих даних
Точка доступу метрик компонентів SLI призначена для збору даних з високою частотою. Збір даних з високою частотою означає, що ви отримуєте більш точний сигнал вимірювача, який можна потім використовувати для розрахунку SLO. Точка доступу /metrics/slis надає необроблені дані, необхідні для розрахунку SLO доступності для відповідного компонента Kubernetes.
6.2 - Дані метрик вузла
Механізми доступу до метрик на рівні вузла, томів, Pod та контейнерів, як їх бачить kubelet.
kubelet збирає статистичні дані метрик на рівні вузла, томів, pod та контейнерів, і надає цю інформацію через
Summary API.
Ви можете надіслати запит з проксі до Summary API через сервер API Kubernetes.
Ось приклад запиту до Summary API для вузла з іменем minikube:
kubectl get --raw "/api/v1/nodes/minikube/proxy/stats/summary"
Ось той самий виклик API за допомогою curl:
# Спочатку потрібно запустити "kubectl proxy"# Змініть 8080 на порт, який призначає "kubectl proxy"curl http://localhost:8080/api/v1/nodes/minikube/proxy/stats/summary
Примітка:
Починаючи з metrics-server версії 0.6.x, metrics-server запитує кінцеву точку kubelet /metrics/resource, а не /stats/summary.
На сторінках завдань для Виправлення неполадок у кластерах обговорюється, як використовувати конвеєр метрик, який залежить від цих даних.
6.3 - Метрики Pod та Контейнерів CRI
Збір метрик Pod та контейнерів через CRI.
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.23 [alpha]
kubelet збирає метрики Pod та контейнерів через cAdvisor. Як альфа-функція, Kubernetes дозволяє налаштувати збір метрик Pod та контейнерів через Інтерфейс Виконання Контейнерів (CRI). Ви повинні увімкнути функціональну можливістьPodAndContainerStatsFromCRI та використовувати сумісну реалізацію CRI (containerd >= 1.6.0, CRI-O >= 1.23.0), щоб використовувати механізм збору через CRI.
Метрики Pod та Контейнерів CRI
З увімкненим PodAndContainerStatsFromCRI, kubelet опитує підлегле середовище виконання контейнерів для отримання статистики Pod та контейнерів замість того, щоб безпосередньо перевіряти хост-систему за допомогою cAdvisor. Переваги використання середовища виконання контейнерів для цієї інформації, на відміну від прямого збору за допомогою cAdvisor, включають:
Потенційне покращення продуктивності, якщо середовище виконання контейнерів вже збирає цю інформацію під час нормальної роботи. У цьому випадку дані можуть бути повторно використані замість того, щоб бути знову агрегованими kubelet.
Це ще більше розʼєднує kubelet і середовище виконання контейнерів, дозволяючи збирати метрики для середовищ виконання контейнерів, які не запускають процеси безпосередньо на хості з kubelet, де вони спостережувані за допомогою cAdvisor (наприклад: середовища виконання контейнерів, що використовують віртуалізацію).
6.4 - Kubernetes z-pages
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.32 [alpha]
Компоненти ядра Kubernetes можуть надавати набір z-endpoints, щоб полегшити користувачам налагодження кластера та його компонентів. Ці точки доступу мають використовуватися виключно для перевірки людиною для отримання інформації про налагодження двійкового коду компонента у реальному часі. Уникайте автоматичного отримання даних, що повертаються цими точками доступу; у Kubernetes 1.32 це альфа функція, і формат відповіді може змінитися у майбутніх випусках.
z-pages
Kubernetes v1.32 дозволяє увімкнути z-pages, які допоможуть вам усунути проблеми з компонентами основної панелі управління. Ці спеціальні налагоджувальні точки доступу надають внутрішню інформацію про запущені компоненти. У Kubernetes 1.32 компоненти обслуговують такі точки доступу (якщо їх увімкнено):
Увімкнена за допомогою функціональної можливостіComponentStatusz, точка доступу /statusz показує високорівневу інформацію про компонент, таку як версія Kubernetes, версія емуляції, час запуску тощо.
Відповідь /statusz від сервера API схожа на:
kube-apiserver statusz
Warning: This endpoint is not meant to be machine parseable, has no formatting compatibility guarantees and is for debugging purposes only.
Started: Wed Oct 16 21:03:43 UTC 2024
Up: 0 hr 00 min 16 sec
Go version: go1.23.2
Binary version: 1.32.0-alpha.0.1484+5eeac4f21a491b-dirty
Emulation version: 1.32.0-alpha.0.1484
flagz
Увімкнена за допомогою функціональної можливостіComponentFlagz, точка доступу /flagz показує вам аргументи командного рядка, які було використано для запуску компонента.
Дані /flagz для сервера API виглядають приблизно так:
kube-apiserver flags
Warning: This endpoint is not meant to be machine parseable, has no formatting compatibility guarantees and is for debugging purposes only.
advertise-address=192.168.8.2
contention-profiling=false
enable-priority-and-fairness=true
profiling=true
authorization-mode=[Node,RBAC]
authorization-webhook-cache-authorized-ttl=5m0s
authorization-webhook-cache-unauthorized-ttl=30s
authorization-webhook-version=v1beta1
default-watch-cache-size=100
6.5 - Довідник Метрик Kubernetes
Деталі щодо метрик, які експортують компоненти Kubernetes.
Метрики (v1.32)
Ця сторінка містить деталі метрик, які експортують різні компоненти Kubernetes. Ви можете запитувати точки доступу метрик для цих компонентів за допомогою HTTP-запиту та отримувати поточні дані метрик у форматі Prometheus.
Список стабільних метрик Kubernetes
Стабільні метрики дотримуються суворих API контрактів, і жодні мітки не можуть бути додані або видалені зі стабільних метрик протягом їхнього життєвого циклу.
Гістограма затримки контролера допуску в секундах, визначена за назвою та розподілена для кожної операції та ресурсу API і типу (перевірка або допуск).
Гістограма затримки вебхука в секундах, ідентифікована за назвою та розбита за кожною операцією, ресурсом API та типом (валідація або допуск).
STABLE
Histogram
nameoperationrejectedtype
apiserver_current_inflight_requests
Максимальна кількість поточних використаних запитів цього apiserver на тип запиту за останню секунду.
STABLE
Gauge
request_kind
apiserver_longrunning_requests
Вимірювач усіх активних тривалих запитів apiserver, розділених за дієсловом, групою, версією, ресурсом, областю та компонентом. Не всі запити відстежуються таким чином.
STABLE
Gauge
componentgroupresourcescopesubresourceverbversion
apiserver_request_duration_seconds
Розподіл затримки відповіді в секундах для кожного дієслова, значення dry run, групи, версії, ресурсу, субресурсу, області застосування та компонента.
Час між запланованим запуском cronjob і створенням відповідного завдання
STABLE
Histogram
job_controller_job_pods_finished_total
Кількість завершених Podʼів, які повністю відстежуються
STABLE
Counter
completion_moderesult
job_controller_job_sync_duration_seconds
Час, необхідний для синхронізації завдання
STABLE
Histogram
actioncompletion_moderesult
job_controller_job_syncs_total
Кількість синхронізацій завдання
STABLE
Counter
actioncompletion_moderesult
job_controller_jobs_finished_total
Кількість завершених завдань
STABLE
Counter
completion_modereasonresult
kube_pod_resource_limit
Ліміт ресурсів для робочих навантажень в кластері, з розбивкою за Podʼами. Це показує використання ресурсів, яке планувальник і kubelet очікують на кожен Pod для ресурсів, а також одиницю виміру для ресурсу, якщо така є.
STABLE
Custom
namespacepodnodeschedulerpriorityresourceunit
kube_pod_resource_request
Ресурси, запитувані робочими навантаженнями в кластері, з розбивкою за Podʼами. Це показує використання ресурсів, яке планувальник і kubelet очікують на кожен Pod для ресурсів, а також одиницю виміру для ресурсу, якщо така є.
STABLE
Custom
namespacepodnodeschedulerpriorityresourceunit
kubernetes_healthcheck
Ця метрика фіксує результат однієї перевірки справності.
STABLE
Gauge
nametype
kubernetes_healthchecks_total
Ця метрика фіксує результати всіх перевірок справності.
STABLE
Counter
namestatustype
node_collector_evictions_total
Кількість виселень Node, що відбулися з моменту запуску поточного екземпляра NodeController.
STABLE
Counter
zone
node_cpu_usage_seconds_total
Сукупний час процесора, споживаний вузлом у секундах ядра
STABLE
Custom
node_memory_working_set_bytes
Поточний робочий набір вузла в байтах
STABLE
Custom
pod_cpu_usage_seconds_total
Сукупний час процесора, споживаний Podʼом у секундах ядра
STABLE
Custom
podnamespace
pod_memory_working_set_bytes
Поточний робочий набір Podʼа в байтах
STABLE
Custom
podnamespace
resource_scrape_error
1, якщо сталася помилка під час отримання метрик контейнера, 0 в іншому випадку
Затримка для запуску всіх втулків певної точки розширення.
STABLE
Histogram
extension_pointprofilestatus
scheduler_pending_pods
Кількість відкладених Podʼів за типом черги. 'active' означає кількість Podʼів в activeQ; 'backoff' означає кількість Pods у backoffQ; 'unschedulable' означає кількість Podʼів в unschedulablePods, які планувальник намагався запланувати, але не зміг; 'gated' означає кількість незапланованих Podʼів, які планувальник ніколи не намагався запланувати, тому що вони є gated.
STABLE
Gauge
queue
scheduler_pod_scheduling_attempts
Кількість спроб успішно запланувати Pod.
STABLE
Histogram
scheduler_pod_scheduling_duration_seconds
E2e затримка для Podʼа, що планується, яка може включати кілька спроб планування.
STABLE
Histogram
attempts
1.29.0
scheduler_preemption_attempts_total
Загальна кількість спроб випередження в кластері до цього часу
STABLE
Counter
scheduler_preemption_victims
Кількість обраних жертв випередження
STABLE
Histogram
scheduler_queue_incoming_pods_total
Кількість Podʼів, доданих до черг планування за подіями та типами черг.
STABLE
Counter
eventqueue
scheduler_schedule_attempts_total
Кількість спроб запланувати Podʼи, за результатом. "unscheduled" означає, що Pod не вдалося запланувати, тоді як "error" означає внутрішню проблему планувальника.
STABLE
Counter
profileresult
scheduler_scheduling_attempt_duration_seconds
Затримка спроби планування в секундах (алгоритм планування + привʼязка)
STABLE
Histogram
profileresult
Список бета-метрик Kubernetes
Бета-метрики дотримуються менш суворих API контрактів порівняно зі стабільними метриками. Жодні мітки не можуть бути видалені з бета-метрик протягом їхнього життєвого циклу, проте мітки можуть бути додані, поки метрика перебуває на етапі бета-тестування. Це забезпечує впевненість у тому, що бета-метрики підтримуватимуть існуючі панелі моніторингу та оповіщення, водночас дозволяючи вносити зміни в майбутньому.
apiserver_cel_compilation_duration_seconds
Час компіляції CEL у секундах.
BETA
Histogram
apiserver_cel_evaluation_duration_seconds
CEL evaluation time in seconds.
BETA
Histogram
apiserver_flowcontrol_current_executing_requests
Кількість запитів на початковій (для WATCH) або будь-якій (для не-WATCH) стадії виконання в підсистемі API Priority and Fairness
BETA
Gauge
flow_schemapriority_level
apiserver_flowcontrol_current_executing_seats
Паралельність (кількість місць), яку займають поточні запити, що виконуються (початкова стадія для WATCH, будь-яка інша стадія) у підсистемі API Priority and Fairness
BETA
Gauge
flow_schemapriority_level
apiserver_flowcontrol_current_inqueue_requests
Кількість запитів, що перебувають у чергах підсистеми API Priority and Fairness
BETA
Gauge
flow_schemapriority_level
apiserver_flowcontrol_dispatched_requests_total
Кількість виконаних запитів в підсистемі API Priority and Fairness
BETA
Counter
flow_schemapriority_level
apiserver_flowcontrol_nominal_limit_seats
Номінальна кількість місць виконання, налаштована для кожного рівня пріоритету
BETA
Gauge
priority_level
apiserver_flowcontrol_rejected_requests_total
Кількість запитів, відхилених підсистемою API Priority and Fairness
Затримка допуску валідації для окремих виразів валідації в секундах, позначена політикою, а також включно із зобовʼязуючими та примусовими діями, що були вжиті.
BETA
Histogram
enforcement_actionerror_typepolicypolicy_binding
apiserver_validating_admission_policy_check_total
Перевірка політики допуску перевіряє загальну суму, позначену політикою, і далі ідентифікує обовʼязковість та вжиті заходи щодо забезпечення дотримання.
BETA
Counter
enforcement_actionerror_typepolicypolicy_binding
disabled_metrics_total
Кількість вимкнених метрик.
BETA
Counter
hidden_metrics_total
Кількість прихованих метрик.
BETA
Counter
kubernetes_feature_enabled
Ця метрика фіксує дані про стадію та ввімкнення функції k8s.
BETA
Gauge
namestage
registered_metrics_total
Кількість зареєстрованих метрик з розбивкою за рівнем стабільності та версією застарівння.
BETA
Counter
deprecated_versionstability_level
scheduler_pod_scheduling_sli_duration_seconds
E2e затримка для пакета, що планується, з моменту потрапляння пакета в чергу на планування і може включати декілька спроб планування.
BETA
Histogram
attempts
Список альфа-метрик Kubernetes
Альфа-метрики не мають жодних гарантій API. Ці метрики слід використовувати на свій страх і ризик, наступні версії Kubernetes можуть взагалі вилучити ці метрики або мутувати API таким чином, щоб зламати наявні інформаційні панелі та сповіщення.
aggregator_discovery_aggregation_count_total
Лічильник кількості разів, коли виявлення (discovery) було агреговано
ALPHA
Counter
aggregator_openapi_v2_regeneration_count
Лічильник кількості регенерацій специфікації OpenAPI v2 розбито за назвою APIService та причиною.
ALPHA
Counter
apiservicereason
aggregator_openapi_v2_regeneration_duration
Показник тривалості регенерації специфікації OpenAPI v2 у секундах.
ALPHA
Gauge
reason
aggregator_unavailable_apiservice
Кількість APIService, які позначені як недоступні, з розбивкою за назвою APIService.
ALPHA
Custom
name
aggregator_unavailable_apiservice_total
Лічильник APIServices, які позначені як недоступні, з розбивкою за назвою APIService та причиною.
Кількість помилок оцінки умов допуску, ідентифікованих за назвою ресурсу, що містить умову допуску, з розбивкою для кожного типу, що містить matchConditions ("вебхук" або "політика"), операцію та тип допуску (валідація або допуск).
Час оцінки відповідності умов допуску в секундах, ідентифікований за назвою і розбитий для кожного типу, що містить matchConditions ("вебхук" або "політика"), операцію і тип (валідація або допуск).
Кількість виключень для оцінки відповідності умов допуску, ідентифікована за назвою ресурсу, що містить умову відповідності, і розбита для кожного типу, що містить matchConditions ("вебхук" або "політика"), операцію і тип допуску (валідація або допуск).
Зведення затримок на підетапах допуску в секундах для кожної операції, ресурсу API та типу етапу (валідація або допуск) для кожної операції та ресурсу API.
ALPHA
Summary
operationrejectedtype
apiserver_admission_webhook_fail_open_count
Кількість відкритих помилок вебхука допуску, ідентифікованих за іменами та розбитих за кожним типом допуску (валідація або допуск).
ALPHA
Counter
nametype
apiserver_admission_webhook_rejection_count
Кількість відмов від вебхуків допуску, ідентифікованих за іменами та розбитих за кожним типом допуску (валідація або допуск) та операцією. Додаткові мітки вказують на тип помилки (error_webhook_error або apiserver_internal_error, якщо сталася помилка; no_error в іншому випадку) і необовʼязково ненульовий код відмови, якщо вебхук відхиляє запит з кодом HTTP-статусу (обробляється apiserver, коли код більше або дорівнює 400). Коди, більші за 600, усікаються до 600, щоб обмежити кардинальність метрики.
ALPHA
Counter
error_typenameoperationrejection_codetype
apiserver_admission_webhook_request_total
Загальна кількість запитів на вебхук, ідентифікована за назвою та розбита за типом допуску (валідація чи модифікація) та операцією. Додаткові мітки вказують, чи був запит відхилений, і код статусу HTTP. Коди, що перевищують 600, усікаються до 600, щоб обмежити кардинальність метрики.
ALPHA
Counter
codenameoperationrejectedtype
apiserver_audit_error_total
Лічильник подій аудиту, які не були перевірені належним чином. Мітка plugin визначає втулок, на який вплинула помилка.
ALPHA
Counter
plugin
apiserver_audit_event_total
Лічильник подій аудиту, що генеруються та надсилаються до бекенду аудиту.
ALPHA
Counter
apiserver_audit_level_total
Лічильник рівнів політики для подій аудиту (1 на запит).
ALPHA
Counter
level
apiserver_audit_requests_rejected_total
Лічильник запитів apiserver, відхилених через помилку в логах аудиту в бекенді.
Латентність операцій автентифікації jwt у секундах. Це час, витрачений на автентифікацію токена лише у випадку пропуску в кеші (тобто коли токен не знайдено в кеші).
ALPHA
Histogram
jwt_issuer_hashresult
apiserver_authorization_decisions_total
Загальна кількість кінцевих рішень, прийнятих авторизатором, з розбивкою за типом авторизатора, імʼям та рішенням.
Загальна кількість виданих CSR із запитаною тривалістю, яка була виконана, розділена за підписувачами (лише імена підписувачів kubernetes.io визначено окремо)
Затримка запиту в секундах. Розбито за кодом статусу.
ALPHA
Histogram
code
apiserver_delegated_authz_request_total
Кількість HTTP-запитів, розділених за кодом статусу.
ALPHA
Counter
code
apiserver_egress_dialer_dial_duration_seconds
Гістограма затримки набору в секундах, позначена протоколом (http-connect або grpc), транспортом (tcp або uds)
ALPHA
Histogram
protocoltransport
apiserver_egress_dialer_dial_failure_count
Кількість невдалих спроб зʼєднання, позначених протоколом (http-connect або grpc), транспортом (tcp або uds) та стадією (зʼєднання або проксі). Етап вказує на те, на якому етапі сталася помилка зʼєднання
ALPHA
Counter
protocolstagetransport
apiserver_egress_dialer_dial_start_total
Стартує зʼєднання, позначене протоколом (http-connect або grpc) і транспортом (tcp або uds).
Кількість записів у вихідному кеші ключа шифрування даних (DEK). При перезапуску це значення є наближеним значенням кількості розшифрованих RPC-викликів, які сервер зробить до втулка KMS.
Unix Timestamp у секундах останнього успішного запиту FetchKeys
ALPHA
Gauge
apiserver_externaljwt_request_duration_seconds
Тривалість та час запиту на виклики до external-jwt-signer
ALPHA
Histogram
codemethod
apiserver_externaljwt_sign_request_total
Загальна кількість спроб підписати JWT
ALPHA
Counter
code
apiserver_flowcontrol_current_inqueue_seats
Кількість місць у чергах підсистеми API Priority and Fairness, що перебувають на розгляді в даний момент
ALPHA
Gauge
flow_schemapriority_level
apiserver_flowcontrol_current_limit_seats
Поточна похідна кількість місць виконання, доступних для кожного рівня пріоритету
ALPHA
Gauge
priority_level
apiserver_flowcontrol_current_r
R(час останньої зміни)
ALPHA
Gauge
priority_level
apiserver_flowcontrol_demand_seats
Спостереження, в кінці кожної наносекунди, за (кількістю місць, які може використати кожен рівень пріоритету) / (номінальна кількість місць для цього рівня)
ALPHA
TimingRatioHistogram
priority_level
apiserver_flowcontrol_demand_seats_average
Середньозважене за часом значення demand_seats за останній період коригування
ALPHA
Gauge
priority_level
apiserver_flowcontrol_demand_seats_high_watermark
Найвищий показник, за останній період коригування, для demand_seats
ALPHA
Gauge
priority_level
apiserver_flowcontrol_demand_seats_smoothed
Згладжені вимоги до місць
ALPHA
Gauge
priority_level
apiserver_flowcontrol_demand_seats_stdev
Середньозважене за часом стандартне відхилення, за останній період коригування, demand_seats
ALPHA
Gauge
priority_level
apiserver_flowcontrol_dispatch_r
R(час останньої диспетчеризації)
ALPHA
Gauge
priority_level
apiserver_flowcontrol_epoch_advance_total
Кількість разів, коли лічильник прогресу набору черг стрибнув назад
ALPHA
Counter
priority_levelsuccess
apiserver_flowcontrol_latest_s
S(останній відправлений запит)
ALPHA
Gauge
priority_level
apiserver_flowcontrol_lower_limit_seats
Налаштовано нижню межу кількості місць виконання, доступних для кожного рівня пріоритету
ALPHA
Gauge
priority_level
apiserver_flowcontrol_next_discounted_s_bounds
min і max, за чергою, для S (найстаріша заявка в черзі) — оціночне значення незавершеної роботи
ALPHA
Gauge
boundpriority_level
apiserver_flowcontrol_next_s_bounds
min і max, за чергами, для S (найстаріша заявка в черзі)
Спостереження наприкінці кожної наносекунди кількості запитів (у частках від відповідного ліміту), що очікують або перебувають на будь-якій стадії виконання (але тільки на початковій стадії для WATCH)
Спостереження наприкінці кожної наносекунди за кількістю запитів (у частках від відповідного ліміту), які очікують на виконання або перебувають на стадії виконання
ALPHA
TimingRatioHistogram
phaserequest_kind
apiserver_flowcontrol_request_concurrency_in_use
Паралельність (кількість місць), яку займають поточні запити, що виконуються (початкова стадія для WATCH, будь-яка інша стадія) у підсистемі API Priority and Fairness
ALPHA
Gauge
flow_schemapriority_level
1.31.0
apiserver_flowcontrol_request_concurrency_limit
Номінальна кількість місць виконання, налаштована для кожного рівня пріоритету
Підраховує кількість запитів до серверів з незахищеними SHA1-підписами в обслуговуючому сертифікаті АБО кількість збоїв зʼєднання через незахищені SHA1-підписи (або/або, залежно від середовища виконання)
ALPHA
Counter
apiserver_kube_aggregator_x509_missing_san_total
Підраховує кількість запитів до серверів, у яких відсутнє розширення SAN в обслуговуючому сертифікаті, АБО кількість збоїв зʼєднання через відсутність x509 сертифіката, у якому відсутнє розширення SAN (або, залежно від середовища виконання)
ALPHA
Counter
apiserver_nodeport_repair_port_errors_total
Кількість помилок, виявлених на портах циклом виправлення, з розбивкою за типом помилки: leak, repair, full, outOfRange, duplicate, unknown
ALPHA
Counter
type
apiserver_request_aborts_total
Кількість запитів, які apiserver перервав, можливо, через таймаут, для кожної групи, версії, дієслова, ресурсу, субресурсу та області дії
ALPHA
Counter
groupresourcescopesubresourceverbversion
apiserver_request_body_size_bytes
Розмір тіла запиту Apiserver в байтах з розбивкою за ресурсами та дієсловами.
ALPHA
Histogram
resourceverb
apiserver_request_filter_duration_seconds
Розподіл затримки фільтрації запитів у секундах для кожного типу фільтрів
ALPHA
Histogram
filter
apiserver_request_post_timeout_total
Відстежує активність обробників запитів після того, як повʼязані з ними запити були вичерпані apiserverʼом
ALPHA
Counter
sourcestatus
apiserver_request_sli_duration_seconds
Розподіл затримок відповіді (не враховуючи тривалості вебхука та часу очікування в черзі пріоритету і справедливості) в секундах для кожного дієслова, групи, версії, ресурсу, субресурсу, області дії та компонента.
ALPHA
Histogram
componentgroupresourcescopesubresourceverbversion
apiserver_request_slo_duration_seconds
Розподіл затримок відповіді (не враховуючи тривалості вебхука та часу очікування в черзі пріоритету і справедливості) в секундах для кожного дієслова, групи, версії, ресурсу, субресурсу, області дії та компонента.
ALPHA
Histogram
componentgroupresourcescopesubresourceverbversion
1.27.0
apiserver_request_terminations_total
Кількість запитів, які apiserver припинив з метою самозахисту.
Загальна кількість пропусків кешу при доступі до ключа дешифрування (KEK).
ALPHA
Counter
apiserver_storage_events_received_total
Кількість отриманих подій etcd з розбивкою за типами.
ALPHA
Counter
resource
apiserver_storage_list_evaluated_objects_total
Кількість протестованих обʼєктів під час обслуговування LIST-запиту зі сховища
ALPHA
Counter
resource
apiserver_storage_list_fetched_objects_total
Кількість обʼєктів, прочитаних зі сховища під час обслуговування LIST-запиту
ALPHA
Counter
resource
apiserver_storage_list_returned_objects_total
Кількість обʼєктів, що повертаються на запит LIST зі сховища
ALPHA
Counter
resource
apiserver_storage_list_total
Кількість запитів LIST, виконаних зі сховища
ALPHA
Counter
resource
apiserver_storage_transformation_duration_seconds
Затримки в секундах операцій перетворення значень.
ALPHA
Histogram
transformation_typetransformer_prefix
apiserver_storage_transformation_operations_total
Загальна кількість перетворень. Успішне перетворення матиме статус "OK", а у випадку невдалого перетворення — інший рядок статусу. Поля status, resource і transformation_type можна використовувати для сповіщень. Наприклад, ви можете відстежувати збої в шифруванні/розшифруванні за допомогою типу перетворення (наприклад, from_storage для розшифрування і to_storage для шифрування). Крім того, ці поля можна використовувати, щоб переконатися, що до кожного ресурсу застосовуються правильні перетворення.
Загальна кількість запитів, які були оброблені проксі StreamTranslatorProxy, що обробляє поток RemoteCommand/V5
ALPHA
Counter
code
apiserver_stream_tunnel_requests_total
Загальна кількість запитів, які були оброблені проксі StreamTunnelProxy, що обробляє поток PortForward/V2
ALPHA
Counter
code
apiserver_terminated_watchers_total
Лічильник спостерігачів закрито через відсутність реакції за типом ресурсу.
ALPHA
Counter
resource
apiserver_tls_handshake_errors_total
Кількість запитів, відхилених з помилкою 'TLS handshake error from'
ALPHA
Counter
apiserver_watch_cache_consistent_read_total
Лічильник послідовних читань з кешу.
ALPHA
Counter
fallbackresourcesuccess
apiserver_watch_cache_events_dispatched_total
Лічильник подій, відправлених у кеш watch, розбитий за типами ресурсів.
ALPHA
Counter
resource
apiserver_watch_cache_events_received_total
Лічильник подій, отриманих у кеші watch, розбитий за типом ресурсу.
ALPHA
Counter
resource
apiserver_watch_cache_initializations_total
Лічильник ініціалізацій кешу watch, розбитий за типами ресурсів.
ALPHA
Counter
resource
apiserver_watch_cache_read_wait_seconds
Гістограма часу, витраченого на очікування оновлення кешу watch.
ALPHA
Histogram
resource
resource
apiserver_watch_cache_resource_version
Поточна версія ресурсу кешу годинника з розбивкою за типом ресурсу.
ALPHA
Gauge
apiserver_watch_events_sizes
Перегляд розподілу розміру події в байтах
ALPHA
Histogram
groupkindversion
apiserver_watch_events_total
Кількість подій, надісланих клієнтам watch
ALPHA
Counter
groupkindversion
apiserver_watch_list_duration_seconds
Розподіл затримки відповіді в секундах для запитів до списків спостереження за групами, версіями, ресурсами та сферами застосування.
ALPHA
Histogram
groupresourcescopeversion
apiserver_webhooks_x509_insecure_sha1_total
Підраховує кількість запитів до серверів з незахищеними SHA1-підписами в обслуговуючому сертифікаті АБО кількість збоїв зʼєднання через незахищені SHA1-підписи (або/або, залежно від середовища виконання)
ALPHA
Counter
apiserver_webhooks_x509_missing_san_total
Підраховує кількість запитів до серверів, у яких відсутнє розширення SAN в обслуговуючому сертифікаті, АБО кількість збоїв зʼєднання через відсутність x509 сертифіката, у якому відсутнє розширення SAN (або/або, залежно від середовища виконання)
Час, необхідний для синхронізації кластерного пакета довіри.
ALPHA
Histogram
code
clustertrustbundle_publisher_sync_total
Кількість синхронізацій, що відбулися у видавцеві кластерних пакетів довіри.
ALPHA
Counter
code
container_swap_usage_bytes
Поточний обсяг використання свопу контейнера у байтах. Відображається лише на системах, відмінних від Windows
ALPHA
Custom
containerpodnamespace
csi_operations_seconds
Тривалість роботи інтерфейсу Container Storage Interface з кодом помилки gRPC усього
ALPHA
Histogram
driver_namegrpc_status_codemethod_namemigrated
dra_grpc_operations_duration_seconds
Тривалість у секундах операцій DRA gRPC
ALPHA
Histogram
driver_namegrpc_status_codemethod_name
dra_operations_duration_seconds
Гістограма затримки в секундах для тривалості обробки всіх ResourceClaims, на які посилається pod, коли pod запускається або зупиняється. Ідентифікується за назвою операції (PrepareResources або UnprepareResources) і відокремлюється за успішністю операції. Кількість невдалих операцій надається через загальний підрахунок гістограми.
ALPHA
Histogram
is_erroroperation_name
endpoint_slice_controller_changes
Кількість змін EndpointSlice
ALPHA
Counter
operation
endpoint_slice_controller_desired_endpoint_slices
Кількість EndpointSlices, які могли б існувати при ідеальному розподілі точок доступу
Час (у секундах), який контролер HPA витрачає на обчислення однієї метрики. Мітка 'action' має бути або 'scale_down', або 'scale_up', або 'none'. Мітка 'error' повинна мати значення 'spec', 'internal' або 'none'. Мітка 'metric_type' відповідає HPA.spec.metrics[*].type
Кількість обчислень метрики. Мітка 'action' має бути або 'scale_down', або 'scale_up', або 'none'. Також мітка 'error' повинна мати значення 'spec', 'internal' або 'none'. Мітка 'metric_type' відповідає HPA.spec.metrics[*].type
Час (у секундах), який потрібен контролеру HPA для одноразового узгодження. Мітка 'action' має бути або 'scale_down', або 'scale_up', або 'none'. Також мітка 'error' має бути або 'spec', або 'internal', або 'none'. Зауважте, що якщо під час звірки виникають і специфічні, і внутрішні помилки, то в мітці `error` відображається перша з них.
Кількість коригувань контролера HPA. Мітка 'action' має бути або 'scale_down', або 'scale_up', або 'none'. Також мітка 'error' має бути або 'spec', або 'internal', або 'none'. Зверніть увагу, що якщо під час узгодження виникають як специфічні, так і внутрішні помилки, то в мітці `error` відображається перша з них.
ALPHA
Counter
actionerror
job_controller_job_finished_indexes_total
`Кількість готових індексів. Можливі значення для мітки статусу: "successed", "failed". Можливі значення для мітки backoffLimit: "perIndex" та "global"`.
ALPHA
Counter
backoffLimitstatus
job_controller_job_pods_creation_total
`Кількість Podʼів, створених контролером Job, позначених причиною створення Podʼа. Ця метрика також розрізняє Podʼи, створені з використанням різних налаштувань PodReplacementPolicy. Можливі значення мітки "reason": "new", "recreate_terminating_or_failed", "recreate_failed", "recreate_failed". Можливі значення мітки "status": "succeeded", "failed".`
`Кількість збійних Podʼів, оброблених політикою збоїв, відносно дії політики збоїв, застосованої на основі відповідного правила. Можливі значення мітки дії відповідають можливим значенням дії правила політики відмов, а саме: "FailJob", "Ignore" та "Count".`
`Кількість завершених Podʼів (phase=Failed|Successed), які мають завершувач batch.kubernetes.io/job-tracking, Мітка події може бути "add" або "delete".`
ALPHA
Counter
event
kube_apiserver_clusterip_allocator_allocated_ips
Показник, що вимірює кількість виділених IP-адрес для Services
Показник TTL (час життя) клієнтського сертифіката Kubelet. Значення в секундах до закінчення терміну дії сертифіката (відʼємне, якщо термін дії вже закінчився). Якщо клієнтський сертифікат недійсний або невикористаний, значення буде +INF.
Гістограма кількості секунд, які проіснував попередній сертифікат перед ротацією.
ALPHA
Histogram
kubelet_certificate_manager_server_ttl_seconds
Показник найкоротшого TTL (time-to-live) сертифікату обслуговування Kubelet. Значення в секундах до закінчення терміну дії сертифіката (відʼємне, якщо термін дії вже закінчився). Якщо обслуговуючий сертифікат недійсний або невикористаний, значення буде +INF.
ALPHA
Gauge
kubelet_cgroup_manager_duration_seconds
Тривалість у секундах для операцій cgroup manager. Розбито за методами.
ALPHA
Histogram
operation_type
kubelet_cgroup_version
версія cgroup на хостах.
ALPHA
Gauge
kubelet_container_aligned_compute_resources_count
Сумарна кількість вирівняних обчислювальних ресурсів, виділених контейнерам за типом вирівнювання.
ALPHA
Counter
boundaryscope
kubelet_container_log_filesystem_used_bytes
Байти, що використовуються логами контейнера у файловій системі.
Тривалість у секундах запуску вузла під час реєстрації.
ALPHA
Gauge
kubelet_orphan_pod_cleaned_volumes
Загальна кількість осиротілих Pod, чиї томи були очищені під час останнього періодичного обстеження.
ALPHA
Gauge
kubelet_orphan_pod_cleaned_volumes_errors
Кількість осиротілих Pod, чиї томи не вдалося очистити під час останнього періодичного обстеження.
ALPHA
Gauge
kubelet_orphaned_runtime_pods_total
Кількість Podʼів, які були виявлені в середовищі виконання контейнерів, які невідомі для pod worker. Це зазвичай вказує на те, що kubelet був перезапущений під час примусового видалення Pod в API або в локальній конфігурації, що є незвичним.
ALPHA
Counter
kubelet_pleg_discard_events
Кількість подій відхилення в PLEG (Pod Lifecycle Event Generator).
ALPHA
Counter
kubelet_pleg_last_seen_seconds
Позначка часу в секундах, коли PLEG востаннє був активний.
ALPHA
Gauge
kubelet_pleg_relist_duration_seconds
Тривалість у секундах для повторного переліку Podʼів в PLEG.
ALPHA
Histogram
kubelet_pleg_relist_interval_seconds
Інтервал у секундах між повторними переліками в PLEG.
ALPHA
Histogram
kubelet_pod_resources_endpoint_errors_get
Кількість запитів до точки доступу PodResource Get, які повернули помилку. Розбито за версіями API сервера.
Кількість запитів до точки доступу PodResource GetAllocatableResources, розбита за версіями API сервера.
ALPHA
Counter
server_api_version
kubelet_pod_resources_endpoint_requests_list
Кількість запитів до точки доступу PodResource List, розбита за версіями API сервера.
ALPHA
Counter
server_api_version
kubelet_pod_resources_endpoint_requests_total
Загальна кількість запитів до точки доступу PodResource, розбита за версіями API сервера.
ALPHA
Counter
server_api_version
kubelet_pod_start_duration_seconds
Тривалість у секундах від першого виявлення kubelet'ом Podʼа до початку його запуску.
ALPHA
Histogram
kubelet_pod_start_sli_duration_seconds
Тривалість у секундах для запуску Pod, за виключенням часу на завантаження образів та виконання init-контейнерів, виміряна з моменту позначки часу створення Pod до того, як всі його контейнери будуть відзначені як запущені та доступні для спостереження через watch.
ALPHA
Histogram
kubelet_pod_start_total_duration_seconds
Тривалість у секундах для запуску Pod з моменту створення, включаючи час на завантаження образів та виконання init-контейнерів, виміряна з позначки часу створення Pod до того моменту, коли всі його контейнери будуть відзначені як запущені та доступні для спостережені через watch.
ALPHA
Histogram
kubelet_pod_status_sync_duration_seconds
Тривалість у секундах синхронізації оновлення статусу Pod. Вимірює час від виявлення зміни статусу Pod до успішного оновлення API для цього Pod, навіть якщо відбулося кілька проміжних змін статусу Pod.
ALPHA
Histogram
kubelet_pod_worker_duration_seconds
Тривалість у секундах синхронізації одного Pod, розбита за операціями: create, update або sync.
ALPHA
Histogram
operation_type
kubelet_pod_worker_start_duration_seconds
Тривалість у секундах від моменту, коли kubelet виявляє Pod до початку запуску виконавця робочого навантаження.
ALPHA
Histogram
kubelet_preemptions
Загальна кількість передчасних випереджень Podʼів за ресурсом випередження.
ALPHA
Counter
preemption_signal
kubelet_restarted_pods_total
Кількість Podʼів, які були перезапущені через те, що вони були видалені та створені знову з тим самим UID, поки kubelet відстежував їх (звично для статичних Podʼів, надзвичайно рідко для pod API).
ALPHA
Counter
static
kubelet_run_podsandbox_duration_seconds
Тривалість у секундах операцій run_podsandbox. Розбито за RuntimeClass.Handler.
ALPHA
Histogram
runtime_handler
kubelet_run_podsandbox_errors_total
Загальна кількість помилок операцій run_podsandbox в розрізі RuntimeClass.Handler.
ALPHA
Counter
runtime_handler
kubelet_running_containers
Кількість контейнерів, що зараз працюють.
ALPHA
Gauge
container_state
kubelet_running_pods
Кількість Podʼів, які мають працюючий pod sandbox
ALPHA
Gauge
kubelet_runtime_operations_duration_seconds
Тривалість у секундах операцій середовища виконання. Розбито за типом операції.
ALPHA
Histogram
operation_type
kubelet_runtime_operations_errors_total
Загальна кількість помилок операцій середовища виконання за типом операції.
ALPHA
Counter
operation_type
kubelet_runtime_operations_total
Загальна кількість операцій середовища виконання за типом операції.
ALPHA
Counter
operation_type
kubelet_server_expiration_renew_errors
Лічильник помилок оновлення сертифікатів.
ALPHA
Counter
kubelet_sleep_action_terminated_early_total
Кількість разів, коли обробник сну життєвого циклу був завершений до завершення його роботи.
ALPHA
Counter
kubelet_started_containers_errors_total
Загальна кількість помилок під час запуску контейнерів.
Сукупна кількість помилок при запуску контейнерів hostprocess. Ця метрика буде збиратися тільки у Windows.
ALPHA
Counter
codecontainer_type
kubelet_started_host_process_containers_total
Сукупна кількість запущених контейнерів hostprocess. Ця метрика буде збиратися лише у Windows.
ALPHA
Counter
container_type
kubelet_started_pods_errors_total
Сукупна кількість помилок під час запуску Podʼів
ALPHA
Counter
kubelet_started_pods_total
Сукупна кількість запущених Podʼів
ALPHA
Counter
kubelet_topology_manager_admission_duration_ms
Тривалість у мілісекундах для обслуговування запиту на допуск Podʼа.
ALPHA
Histogram
kubelet_topology_manager_admission_errors_total
Кількість відмов запитів допуску, коли не вдалося виділити ресурси.
ALPHA
Counter
kubelet_topology_manager_admission_requests_total
Кількістьт заявок допуску, для яких потрібне вирівнювання ресурсів.
ALPHA
Counter
kubelet_volume_metric_collection_duration_seconds
Тривалість у секундах для розрахунку статистики тому
ALPHA
Histogram
metric_source
kubelet_volume_stats_available_bytes
Кількість доступних байт в томі
ALPHA
Custom
namespacepersistentvolumeclaim
kubelet_volume_stats_capacity_bytes
Місткість тому у байтах
ALPHA
Custom
namespacepersistentvolumeclaim
kubelet_volume_stats_health_status_abnormal
Статус справності аномального тому. Значення 1 або 0. 1 — означає, що том н є справним, 0 — говорить про справність тому
ALPHA
Custom
namespacepersistentvolumeclaim
kubelet_volume_stats_inodes
Максимальна кількість inode в томі
ALPHA
Custom
namespacepersistentvolumeclaim
kubelet_volume_stats_inodes_free
Кількість вільних inode в томі
ALPHA
Custom
namespacepersistentvolumeclaim
kubelet_volume_stats_inodes_used
Кількість використаних inode у томі
ALPHA
Custom
namespacepersistentvolumeclaim
kubelet_volume_stats_used_bytes
Кількість використаних байт у томі
ALPHA
Custom
namespacepersistentvolumeclaim
kubelet_working_pods
Кількість Podʼів, які фактично виконує kubelet, з розбивкою за фазами життєвого циклу, чи є Pod бажаним, осиротілим або тільки для виконання (також осиротілим), а також чи є Pod статичним. Осиротілий Pod був видалений з локальної конфігурації або примусово видалений в API та споживає ресурси, які не є видимими в інших випадках.
Сукупні правила проксі в очікувані, що змінюють Service
ALPHA
Counter
kubernetes_build_info
Метрика з постійним значенням '1', позначена як major, minor, версія git, коміт git, стан дерева git, дата збірки, версія Go, компілятор, з якого було зібрано Kubernetes, та платформа, на якій він працює.
Ознака того, чи є система звітності головною для відповідного lease, 0 вказує на резервну копію, 1 — на головну. "name" — це рядок, який використовується для ідентифікації lease. Будь ласка, згрупуйте за назвою.
ALPHA
Gauge
name
leader_election_slowpath_total
Загальна кількість повільних шляхів, використаних при поновленні leases лідера. 'name' — це рядок, який використовується для ідентифікації lease. Будь ласка, згрупуйте за іменами.
ALPHA
Counter
name
node_authorizer_graph_actions_duration_seconds
Гістограма тривалості дій з графом в авторизаторі вузла.
ALPHA
Histogram
operation
node_collector_unhealthy_nodes_in_zone
Вимірювання кількості не готових вузлів за зонами.
Лічильник, що вимірює загальну кількість розподілів CIDR.
ALPHA
Counter
clusterCIDR
node_ipam_controller_cidrset_cidrs_releases_total
Лічильник, що вимірює загальну кількість оновлень CIDR.
ALPHA
Counter
clusterCIDR
node_ipam_controller_cidrset_usage_cidrs
Індикатор, що вимірює відсоток виділених CIDR.
ALPHA
Gauge
clusterCIDR
node_ipam_controller_cirdset_max_cidrs
Максимальна кількість CIDR, яку можна виділити.
ALPHA
Gauge
clusterCIDR
node_swap_usage_bytes
Поточне використання свопу вузла у байтах. Відображається лише на системах, відмінних від Windows
ALPHA
Custom
plugin_manager_total_plugins
Кількість втулків у Plugin Manager
ALPHA
Custom
socket_pathstate
pod_gc_collector_force_delete_pod_errors_total
Кількість помилок, що виникли при примусовому видаленні Podʼів з моменту запуску Pod GC Controller.
ALPHA
Counter
namespacereason
pod_gc_collector_force_delete_pods_total
Кількість Podʼів, які було примусово видалено з моменту запуску контролера Pod GC Controller.
ALPHA
Counter
namespacereason
pod_security_errors_total
Кількість помилок, що перешкоджають нормальній оцінці. Нефатальні помилки можуть призвести до того, що для оцінювання буде використано останній обмежений профіль.
ALPHA
Counter
fatalrequest_operationresourcesubresource
pod_security_evaluations_total
Кількість оцінок політики, що відбулися, не враховуючи проігнорованих або звільнених від розгляду запитів.
Кількість звільнених запитів, не враховуючи ігнорованих або тих, що виходять за межі області застосування.
ALPHA
Counter
request_operationresourcesubresource
pod_swap_usage_bytes
Поточний обсяг використання підкачки у байтах. Відображається лише на системах, відмінних від Windows
ALPHA
Custom
podnamespace
prober_probe_duration_seconds
Тривалість у секундах для відповіді проби.
ALPHA
Histogram
containernamespacepodprobe_type
prober_probe_total
Сукупна кількість проб життєздатності, готовності або запуску для контейнера в розрізі результатів.
ALPHA
Counter
containernamespacepodpod_uidprobe_typeresult
pv_collector_bound_pv_count
Вимірювач кількості постійного тому, який наразі привʼязаний
ALPHA
Custom
storage_class
pv_collector_bound_pvc_count
Вимірювач кількості поточно привʼязаних persistent volume claim
ALPHA
Custom
namespacestorage_classvolume_attributes_class
pv_collector_total_pv_count
Вимірювач загальної кількості постійних томів
ALPHA
Custom
plugin_namevolume_mode
pv_collector_unbound_pv_count
Вимірювач кількості постійних томів, що зараз не привʼязані
ALPHA
Custom
storage_class
pv_collector_unbound_pvc_count
Вимірювач кількості не привʼязаних persistent volume claim
ALPHA
Custom
namespacestorage_classvolume_attributes_class
reconstruct_volume_operations_errors_total
Кількість томів, які не вдалося відновити з операційної системи під час запуску kubelet.
ALPHA
Counter
reconstruct_volume_operations_total
Кількість томів, які намагалися відновити з операційної системи під час запуску kubelet. Сюди входять як успішні, так і невдалі спроби відновлення.
ALPHA
Counter
replicaset_controller_sorting_deletion_age_ratio
Відношення віку вибраних видалених Podʼів до поточного наймолодшого віку Podʼів (на даний момент). Має бути менше ніж 2. Мета цієї метрики — виміряти приблизну ефективність впливу функціоналу LogarithmicScaleDown на сортування (і видалення) Podʼів при зменшенні масштабу набору реплік. При обчисленні та створенні звітів враховуються лише готові Podʼи.
Кількість невдалих запитів на створення ResourceClaims
ALPHA
Counter
resourceclaim_controller_resource_claims
Кількість ResourceClaims
ALPHA
Gauge
rest_client_dns_resolution_duration_seconds
Затримка DNS-резолвера в секундах. Розбито за хостами.
ALPHA
Histogram
host
rest_client_exec_plugin_call_total
Кількість викликів втулка exec, розділених за типом події, що виникла (no_error, plugin_execution_error, plugin_not_found_error, client_internal_error) та необовʼязковим кодом завершення роботи. Код завершення буде встановлено у 0 тоді і тільки тоді, коли виклик втулка був успішним.
ALPHA
Counter
call_statuscode
rest_client_exec_plugin_certificate_rotation_age
Гістограма кількості секунд, які прожив останній клієнтський сертифікат втулка auth exec до того, як його було ротовано. Якщо клієнтські сертифікати втулка auth exec не використовуються, гістограма не міститиме даних.
ALPHA
Histogram
rest_client_exec_plugin_ttl_seconds
Показник найкоротшого TTL (часу життя) клієнтських сертифікатів, якими керує втулок auth exec. Значення в секундах до закінчення терміну дії сертифіката (відʼємне, якщо термін дії вже закінчився). Якщо втулки auth exec не використовуються або не керують сертифікатами TLS, значення буде +INF.
ALPHA
Gauge
rest_client_rate_limiter_duration_seconds
Затримка обмежувача швидкості на стороні клієнта в секундах. Розбито за дієсловами та хостами.
ALPHA
Histogram
hostverb
rest_client_request_duration_seconds
Час затримки запиту в секундах. Розбито за дієсловами та хостами.
ALPHA
Histogram
hostverb
rest_client_request_retries_total
Кількість повторних спроб запиту, з розподілом за кодом статусу, дієсловом та хостом.
ALPHA
Counter
codehostverb
rest_client_request_size_bytes
Розмір запиту в байтах. Розбито за дієсловом та хостом.
ALPHA
Histogram
hostverb
rest_client_requests_total
Кількість HTTP-запитів, розділених за кодом статусу, методом та хостом.
ALPHA
Counter
codehostmethod
rest_client_response_size_bytes
Розмір відповіді в байтах. Розбито за дієсловом та хостом.
ALPHA
Histogram
hostverb
rest_client_transport_cache_entries
Кількість транспортних записів у внутрішньому кеші.
ALPHA
Gauge
rest_client_transport_create_calls_total
Кількість викликів для отримання нового транспорту, розділена за результатом операції hit: отримано з кешу, miss: створено та додано до кешу, uncacheable: створено та не кешовано
ALPHA
Counter
result
retroactive_storageclass_errors_total
Загальна кількість невдалих ретроактивних присвоєнь StorageClass до persistent volume claim
ALPHA
Counter
retroactive_storageclass_total
Загальна кількість ретроактивних присвоєнь StorageClass для persistent volume claim
ALPHA
Counter
root_ca_cert_publisher_sync_duration_seconds
Кількість синхронізацій просторів імен, що відбулися у видавця сертифікатів root ca.
ALPHA
Histogram
code
root_ca_cert_publisher_sync_total
Кількість синхронізацій просторів імен, що відбулися у видавця сертифікатів root ca.
ALPHA
Counter
code
running_managed_controllers
Показує, де зараз запущено екземпляри контролера
ALPHA
Gauge
managername
scheduler_event_handling_duration_seconds
Затримка обробки подій у секундах.
ALPHA
Histogram
event
scheduler_goroutines
Кількість запущених підпрограм, розділених за роботою, яку вони виконують, наприклад, звʼязуванням.
ALPHA
Gauge
operation
scheduler_inflight_events
Кількість подій, які наразі відстежуються в черзі планування.
ALPHA
Gauge
event
scheduler_permit_wait_duration_seconds
Тривалість очікування на отримання дозволу.
ALPHA
Histogram
result
scheduler_plugin_evaluation_total
Кількість спроб запланувати Podʼи для кожного втулка і точки розширення (доступно тільки в PreFilter, Filter, PreScore і Score).
ALPHA
Counter
extension_pointpluginprofile
scheduler_plugin_execution_duration_seconds
Тривалість запуску втулка в певній точці розширення.
ALPHA
Histogram
extension_pointpluginstatus
scheduler_preemption_goroutines_duration_seconds
Тривалість у секундах для запуску goroutines для витіснення.
Кількість вузлів, Podʼів та передбачуваних (звʼязаних) Podʼів у кеші планувальника.
ALPHA
Gauge
type
scheduler_scheduling_algorithm_duration_seconds
Затримка алгоритму планування в секундах
ALPHA
Histogram
scheduler_unschedulable_pods
Кількість незапланованих Podʼів, розбитих за назвою втулка. Pod збільшує показник для всіх втулків, які спричинили його незапланованість, тому ця метрика має сенс лише у розбивці за втулками.
ALPHA
Gauge
pluginprofile
scheduler_volume_binder_cache_requests_total
Загальна кількість запитів кешу привʼязування томів
ALPHA
Counter
operation
scheduler_volume_scheduling_stage_error_total
Кількість помилок на етапі планування томів
ALPHA
Counter
operation
scrape_error
1, якщо виникла помилка при отриманні метрик контейнера, 0 в іншому випадку
Час, необхідний для видалення завдання (job) з моменту, коли воно стало доступним для видалення
ALPHA
Histogram
volume_manager_selinux_container_errors_total
Кількість помилок, коли kubelet не може обчислити контекст SELinux для контейнера. Kubelet не зможе запустити такий Pod і спробує ще раз, тому значення цієї метрики може не відповідати дійсній кількості контейнерів.
ALPHA
Gauge
access_mode
volume_manager_selinux_container_warnings_total
Кількість помилок, коли kubelet не може обчислити контекст SELinux для контейнера, які ігноруються. Вони стануть справжніми помилками, коли функцію SELinuxMountReadWriteOncePod буде розширено на всі режими доступу до томів.
Кількість помилок, коли Pod визначає різні контексти SELinux для своїх контейнерів, які використовують однаковий обʼєм. Kubelet не зможе запустити такий Pod і спробує ще раз, тому значення цієї метрики може не відповідати дійсній кількості Podʼів.
Кількість помилок, коли Pod визначає різні контексти SELinux для своїх контейнерів, які використовують той самий том. Це ще не помилки, але вони стануть справжніми помилками, коли можливість SELinuxMountReadWriteOncePod буде розширено на всі режими доступу до тома.
Кількість помилок, коли Pod використовує том, який вже змонтовано з іншим контекстом SELinux, ніж потрібен Pod. Kubelet не зможе запустити такий Pod і повторити спробу, тому значення цієї метрики може не відповідати дійсній кількості Podʼів.
Кількість помилок, коли Pod використовує том, який вже змонтовано з іншим контекстом SELinux, ніж потрібен Pod. Це ще не помилки, але вони стануть справжніми помилками, коли функцію SELinuxMountReadWriteOncePod буде розширено на всі режими доступу до томів.
ALPHA
Gauge
access_modevolume_plugin
volume_manager_selinux_volumes_admitted_total
Кількість томів, контекст SELinux яких був нормальним і які буде змонтовано за допомогою параметра контексту mount -o.
ALPHA
Gauge
access_modevolume_plugin
volume_manager_total_volumes
Кількість томів у Volume Manager
ALPHA
Custom
plugin_namestate
volume_operation_total_errors
Всього помилок в роботі з томом
ALPHA
Counter
operation_nameplugin_name
volume_operation_total_seconds
Тривалість операції зберігання від початку до кінця в секундах
ALPHA
Histogram
operation_nameplugin_name
watch_cache_capacity
Загальний обсяг кешу watch, розбитий за типами ресурсів.
ALPHA
Gauge
resource
watch_cache_capacity_decrease_total
Загальна кількість подій зменшення ємності кешу watch, з розбивкою за типами ресурсів.
ALPHA
Counter
resource
watch_cache_capacity_increase_total
Загальна кількість подій збільшення ємності кешу watch, з розбивкою за типами ресурсів.
ALPHA
Counter
resource
workqueue_adds_total
Загальна кількість додавань, оброблених робочою чергою
ALPHA
Counter
name
workqueue_depth
Поточна глибина робочої черги
ALPHA
Gauge
name
workqueue_longest_running_processor_seconds
Скільки секунд працював найдовший процесор у черзі.
ALPHA
Gauge
name
workqueue_queue_duration_seconds
Скільки часу в секундах елемент перебуває в черзі до того, як його буде запитано.
ALPHA
Histogram
name
workqueue_retries_total
Загальна кількість повторних спроб, оброблених робочою чергою
ALPHA
Counter
name
workqueue_unfinished_work_seconds
Скільки секунд роботи було виконано, яка виконується і не спостерігається параметром work_duration. Великі значення вказують на застряглі потоки. Про кількість застряглих потоків можна зробити висновок, спостерігаючи за швидкістю, з якою цей показник зростає.
ALPHA
Gauge
name
workqueue_work_duration_seconds
Скільки часу в секундах займає обробка елемента з робочої черги.
7.2 - Процес розкриття інформації про безпеку в Kubernetes
Ця сторінка описує процес розкриття інформації про безпеку в Kubernetes.
Оголошення з питань безпеки
Приєднуйтесь до групи kubernetes-security-announce, щоб отримувати електронні листи щодо безпеки та основних оголошень API.
Повідомлення про вразливості
Ми дуже вдячні фахівцям з безпеки та користувачам, які повідомляють про вразливості Kubernetes Open Source Community. Всі звіти ретельно розглядаються командою волонтерів спільноти.
Ви можете зашифрувати свій лист для цього списку за допомогою GPG-ключів членів комітету з питань реагування на загрози безпеці. Шифрування за допомогою GPG НЕ є обовʼязковим для повідомлення про проблеми з безпекою.
Коли потрібно повідомляти про вразливість?
Ви вважаєте, що виявили потенційну вразливість в Kubernetes
Ви не впевнені, як вразливість впливає на Kubernetes
Ви вважаєте, що виявили вразливість в іншому проєкті, від якого залежить Kubernetes
Для проєктів з власним процесом повідомлення про вразливості та розкриттям відповідних відомостей, будь ласка, повідомте про це безпосередньо туди
Коли НЕ потрібно повідомляти про вразливість?
Вам потрібна допомога у налаштуванні компонентів Kubernetes для безпеки
Вам потрібна допомога з застосуванням оновлень, повʼязаних з безпекою
Ваша проблема не стосується безпеки
Реагування на вразливості безпеки
Кожне повідомлення отримує відповідь та аналіз від членів комітету з питань реагування на загрози безпеці протягом 3 робочих днів. Це ініціює Security Release Process.
Будь-яка інформація про вразливість, що надходить до Комітету, залишається в проєкті Kubernetes і не буде розповсюджуватися до інших проєктів, якщо це необхідно для виправлення проблеми.
В міру того, як повідомлення про проблеми безпеки переходить з етапу попереднього розгляду, визначення шляхів виправлення та планування випуску, ми будемо тримати особу, що повідомила про проблему, в курсі подій.
Терміни оприлюднення інформації
Дата публічного оприлюднення узгоджується Комітетом з реагування на проблеми безпеки Kubernetes та автором повідомлення про ваду. Ми надаємо перевагу повному розкриттю вади якомога швидше, як тільки користувачеві буде доступне рішення для її усунення. Доцільно затримати розкриття, коли помилка або виправлення ще не до кінця зрозумілі, рішення ще не добре протестоване, або для узгодження з постачальником. Часові рамки для розкриття інформації — від негайного (особливо якщо вона вже відома загалу) до декількох тижнів. Для вразливостей, які легко усунути, ми очікуємо, що від дати повідомлення до дати розкриття буде близько 7 днів. Комітет з реагування на вразливості Kubernetes має вирішальне слово при встановленні дати оприлюднення.
Проєкт Kubernetes публікує програмно доступний потік опублікованих проблем безпеки у форматах JSON feed та RSS feed. Ви можете отримати до них доступ, виконавши наступні команди:
Цей потік автоматично оновлюється з помітними, але невеликими затримками (від хвилин до годин) від моменту оголошення CVE до доступу до нього у цьому потоці.
Джерелом інформації для цього потоку є набір GitHub Issues, відфільтрованих за міткою official-cve-feed. Сирі дані зберігаються у сховищі Google Cloud, до якого мають доступ лише декілька довірених членів спільноти.
8 - Довідкова інформація про вузли
У цьому розділі містяться наступні теми про вузли:
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.30 [beta] (стандартно увімкнено: true)
Контрольна точка контейнера — це функціонал для створення копії контейнера зі станом запущеного контейнера. Після того, як у вас є копія контейнера з його станом, ви можете перенести його на інший компʼютер для налагодження або подібних цілей.
Якщо перемістити дані такої копії контейнера на компʼютер, здатний їх відновити, відновлений контейнер продовжить працювати точно з того самого місця, де він був зупинений. Також можна переглянути збережені дані, за умови, що є відповідні інструменти для цього.
Створення копії контейнера зі станом може мати наслідки для безпеки. Зазвичай така копія містить усі сторінки памʼяті всіх процесів у контейнері. Це означає, що все, що колись було в памʼяті, тепер доступне на локальному диску. Це включає всі приватні дані та можливі ключі, які використовувались для шифрування. Реалізації CRI повинні створювати архів копії зі збереженням стану таким чином, щоб до нього міг мати доступ лише користувач root. Важливо памʼятати, що якщо архів копії зі збереженням стану передається в іншу систему, усі сторінки памʼяті будуть доступні власнику архіву копії.
Операції
post створення копії зі збереженням стану вказаного контейнера
Дайте команду kubelet створити копію зі збереженням стану конкретного контейнера з вказаного Pod.
Kubelet запитає контрольну точку у відповідного CRI. У запиті до контрольної точки kubelet вкаже імʼя архіву контрольної точки у вигляді checkpoint-<podFullName>-<containerName>-<timestamp>.tar, а також попросить зберігати архів контрольних точок у теці checkpoints в його кореневій теці (як визначено параметром --root-dir). Типово це буде /var/lib/kubelet/checkpoints.
Архів копії зі збереженням стану має формат tar і може бути переглянутий за допомогою реалізації tar. Вміст архіву залежить від реалізації CRI (інтерфейс запуску контейнерів на вузлі).
Тайм-аут у секундах для очікування завершення створення копії зі збереженням стану. Якщо вказано нуль або тайм-аут не вказано, буде використане стандартне значення тайм-ауту для CRI. Час створення копії зі збереженням стану залежить безпосередньо від використаної памʼяті контейнера. Чим більше памʼяті використовує контейнер, тим більше часу
потрібно для створення відповідної копії зі збереженням стану.
Відповідь
200: OK
401: Unauthorized
404: Not Found (якщо функціональні можливості ContainerCheckpoint відключено)
404: Not Found (якщо вказаний namespace, pod або container не може бути знайдено)
500: Internal Server Error (якщо реалізація CRI стикається з помилкою під час створення копії зі збереженням стану (див. повідомлення про помилку для деталей))
500: Internal Server Error (якщо реалізація CRI не реалізує API створення контейнера (див. повідомлення про помилку для деталей))
8.2 - Вимоги до версії ядра Linux
Примітка: Цей розділ містить посилання на проєкти сторонніх розробників, які надають функціонал, необхідний для Kubernetes. Автори проєкту Kubernetes не несуть відповідальності за ці проєкти. Проєкти вказано в алфавітному порядку. Щоб додати проєкт до цього списку, ознайомтеся з посібником з контенту перед надсиланням змін. Докладніше.
Багато функцій залежать від певних можливостей ядра і мають мінімальні вимоги до версії ядра. Однак покладатися лише на номери версій ядра може бути недостатньо для деяких операційних систем, оскільки підтримувачі дистрибутивів таких як RHEL, Ubuntu та SUSE часто зворотно переносять вибрані функції до старіших версій ядра (залишаючи старішу версію ядра).
Pod sysctls
У Linux системний виклик sysctl() налаштовує параметри ядра під час виконання. Є інструмент командного рядка з назвою sysctl, який можна використовувати для налаштування цих параметрів, і багато з них доступні через файлову систему proc.
Деякі sysctls доступні лише за наявності достатньо нової версії ядра.
Наступні sysctls мають мінімальні вимоги до версії ядра і підтримуються в безпечному наборі:
net.ipv4.ip_local_reserved_ports (з Kubernetes 1.27, потребує ядро 3.16+);
net.ipv4.tcp_keepalive_time (з Kubernetes 1.29, потребує ядро 4.5+);
net.ipv4.tcp_fin_timeout (з Kubernetes 1.29, потребує ядро 4.6+);
net.ipv4.tcp_keepalive_intvl (з Kubernetes 1.29, потребує ядро 4.5+);
net.ipv4.tcp_keepalive_probes (з Kubernetes 1.29, потребує ядро 4.5+);
net.ipv4.tcp_syncookies (з ізоляцією в просторі імен з ядра 4.6+);
net.ipv4.tcp_rmem (з Kubernetes 1.32, потребує ядро 4.15+).
net.ipv4.tcp_wmem (з Kubernetes 1.32, потребує ядро 4.15+).
net.ipv4.vs.conn_reuse_mode (використовується в режимі проксі ipvs, потребує ядро 4.1+);
Режим проксі nftables в kube-proxy
Для Kubernetes 1.32, режим nftables у kube-proxy вимагає
версії 1.0.1 або новішої версії інструменту командного рядка nft, а також ядра 5.13 або новішого.
Для тестування та розробки можна використовувати старіші ядра, аж до 5.4, якщо встановити опцію nftables.skipKernelVersionCheck у конфігурації kube-proxy. Але це не рекомендується в операційній діяльності, оскільки це може викликати проблеми з іншими користувачами nftables
у системі.
Контрольні групи версії 2
Підтримка cgroup v1 у Kubernetes перебуває в режимі супроводу, починаючи з версії Kubernetes v1.31; рекомендовано використовувати cgroup v2. У Linux 5.8, файл системного рівня cpu.stat був доданий до кореневої cgroup для зручності.
У документації runc, ядра старіші за 5.2 не рекомендуються через відсутність підтримки freezer.
Інші вимоги до ядра
Деякі функції можуть залежати від нових можливостей ядра і мати конкретні вимоги до ядра:
Рекурсивне монтування в режимі тільки для читання: Реалізується шляхом застосування атрибута MOUNT_ATTR_RDONLY із прапором AT_RECURSIVE, використовуючи mount_setattr(2), доданий у ядрі Linux v5.12.
Підтримка простору імен користувачів в Pod вимагає мінімальної версії ядра 6.5+, згідно з KEP-127.
Для swap на рівні вузлів не підтримується tmpfs, встановлений як noswap, до версії ядра 6.3.
Довгострокова підтримка ядра Linux
Актуальні випуски ядра можна знайти на kernel.org.
Зазвичай існує кілька випусків ядра з довгостроковою підтримкою, які забезпечують зворотне перенесення виправлень для старіших версій ядра. До таких ядер застосовуються лише важливі виправлення помилок, і вони зазвичай виходять не дуже часто, особливо для старіших версій. Перегляньте список випусків на вебсайті ядра Linux в розділі Longterm.
Що далі
Перегляньте sysctls для отримання додаткової інформації.
8.3 - Статті про видалення dockershim та використання сумісних з CRI середовищ виконання
Це список статей й інших сторінок, що стосуються видалення dockershim у Kubernetes та використання сумісних з CRI контейнерних середовищ виконання у звʼязку з цим видаленням.
topology.kubernetes.io/zone (якщо відомо kubelet, Kubernetes може не мати цієї інформації для встановлення мітки)
Примітка:
Значення цих міток специфічні для постачальника хмарних послуг і їх надійність не гарантуються. Наприклад, значення kubernetes.io/hostname може бути таким самим, як імʼя вузла в деяких середовищах та різним в інших середовищах.
8.5 - Локальні файли та шляхи, які використовує Kubelet
kubelet — це переважно процес без збереження стану, який працює на вузлі Kubernetes. У цьому документі описані файли, які kubelet читає та записує.
Примітка:
Цей документ має інформаційний характер і не описує жодної гарантованої поведінки або API. У ньому перелічено ресурси, що використовуються kubelet, що є деталлю реалізації та може бути змінено у будь-якій версії.
Зазвичай, kubelet використовує панель управління як джерело істини про те, що повинно запускатися на вузлі, і середовище виконання контейнерів для отримання поточного стану контейнерів. За наявності kubeconfig (конфігурації клієнта API), kubelet підключається до панелі управління; інакше вузол працює в автономному режимі.
На Linux-вузлах kubelet також читає cgroups та різні системні файли для збору метрик.
На Windows-вузлах kubelet збирає метрики іншим механізмом, що не спирається на шляхи.
Є також кілька інших файлів, які використовуються kubelet, і kubelet спілкується за допомогою локальних сокетів Unix-домену. Деякі з них — це сокети, на яких слухає kubelet, а інші — сокети, які kubelet виявляє та підключається до них як клієнт.
Примітка:
Ця сторінка наводить шляхи у форматі Linux, які відповідають шляхам Windows із додаванням кореневого диска C:\ замість / (якщо не вказано інше). Наприклад, /var/lib/kubelet/device-plugins відповідає шляху C:\var\lib\kubelet\device-plugins.
Конфігурація
Конфігураційні файли kubelet
Шлях до конфігураційного файлу kubelet можна налаштувати за допомогою командного аргументу --config. Kubelet також підтримує доповнювані конфігураційні файли для розширення налаштувань.
Сертифікати
Сертифікати та приватні ключі зазвичай розташовані в /var/lib/kubelet/pki, але цей шлях можна налаштувати за допомогою командного аргументу kubelet --cert-dir. Імена файлів сертифікатів також можна налаштувати.
Маніфести
Маніфести для статичних Podʼів зазвичай розташовані в /etc/kubernetes/manifests. Місце розташування можна налаштувати за допомогою опції конфігурації kubelet staticPodPath.
Налаштування юнітів systemd
Коли kubelet працює як юніт systemd, деякі налаштування kubelet можуть бути визначені в файлі налаштувань systemd. Зазвичай це включає:
командні аргументи для запуску kubelet
змінні середовища, що використовуються kubelet або для налаштування середовища golang
Стан
Файли контрольних точок для менеджерів ресурсів
Усі менеджери ресурсів зберігають відповідність між Podʼами та виділеними ресурсами у файлах стану. Ці файли розташовані в базовій теці kubelet, також відомій як root directory (але це не те саме, що /, коренева тека вузла). Ви можете налаштувати базову теку для kubelet за допомогою аргументу командного рядка --root-dir.
Назви файлів:
memory_manager_state для менеджера пам’яті
cpu_manager_state для менеджера процесорів
dra_manager_state для DRA
Файл контрольної точки для менеджера пристроїв
Менеджер пристроїв створює контрольні точки в тій самій теці, що й сокет-файли: /var/lib/kubelet/device-plugins/. Назва файлу контрольної точки — kubelet_internal_checkpoint для менеджера пристроїв.
Збереження стану Podʼів
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.27 [alpha] (стандартно увімкнено: false)
Імʼя файлу — pod_status_manager_state у базовій теці kubelet (/var/lib/kubelet стандартно в Linux; налаштовується за допомогою --root-dir).
Середовище виконання контейнерів
Kubelet спілкується з середовищем виконання контейнерів за допомогою сокета, налаштованого через такі параметри конфігурації:
containerRuntimeEndpoint для операцій із середовищем виконання
imageServiceEndpoint для операцій з управління образами
Фактичні значення цих точок доступу залежать від середовища виконання контейнерів, яке використовується.
Втулки пристроїв
Kubelet відкриває сокет за шляхом /var/lib/kubelet/device-plugins/kubelet.sock для різних втулків пристроїв, які реєструються.
Коли втулок пристрою реєструється, він надає шлях до свого сокета, щоб kubelet міг підʼєднатися.
Сокет втулка пристрою повинен знаходитися в теці device-plugins у базовій теці kubelet. На типовому Linux-вузлі це означає /var/lib/kubelet/device-plugins.
API ресурсів Podʼів
API ресурсів Podʼів буде доступний за шляхом /var/lib/kubelet/pod-resources.
DRA, CSI та втулки пристроїв
Kubelet шукає сокет-файли, створені втулками пристроїв, керованими через DRA, менеджер пристроїв або втулки зберігання, а потім намагається приєднатись до цих сокетів. Текою, у якій kubelet шукає, є plugins_registry у базовій теці kubelet, тобто на типовому Linux-вузлі це — /var/lib/kubelet/plugins_registry.
Зверніть увагу, що для втулків пристроїв є два альтернативні механізми реєстрації. Тільки один із них повинен використовуватися для певного втулка.
Типи втулків, які можуть розміщувати сокет-файли в цій теці:
втулки CSI
втулки DRA
втулки менеджера пристроїв
(зазвичай /var/lib/kubelet/plugins_registry).
Профілі безпеки та конфігурація
Seccomp
Файли профілів seccomp, на які посилаються Podʼи, мають бути розміщені стандартно у /var/lib/kubelet/seccomp. Дивіться довідку Seccomp для деталей.
AppArmor
Kubelet не завантажує і не звертається до профілів AppArmor за специфічним для Kubernetes шляхом. Профілі AppArmor завантажуються через операційну систему вузла, а не посилаються за їх шляхом.
Блокування
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.2 [alpha]
Файл блокування для kubelet зазвичай знаходиться за адресою /var/run/kubelet.lock. Kubelet використовує цей файл для того, щоб два різні екземпляри kubelet не намагалися працювати у конфлікті одна одної.
Ви можете налаштувати шлях до файлу блокування, використовуючи аргумент командного рядка kubelet --lock-file.
Якщо два екземпляри kubelet на одному вузлі використовують різні значення для шляху до файлу блокування, вони не зможуть виявити конфлікт, коли обидва працюють одночасно.
Ця сторінка надає інформацію про сумісність між
API втулків пристроїв Kubernetes та різними версіями самого Kubernetes.
Матриця сумісності
v1alpha1
v1beta1
Kubernetes 1.21
-
✓
Kubernetes 1.22
-
✓
Kubernetes 1.23
-
✓
Kubernetes 1.24
-
✓
Kubernetes 1.25
-
✓
Kubernetes 1.26
-
✓
Позначення:
✓ Точно такі ж функції / обʼєкти API в обох, API втулка пристроїв та версії Kubernetes.
+ API втулка пристроїв має функції або обʼєкти API, яких може не бути в кластері Kubernetes, або через те, що API втулка пристроїв додало додаткові нові виклики API, або через те, що сервер видалив старий виклик API. Однак, все, що у них є спільного (більшість інших API), працюватиме. Зверніть увагу, що альфа-версії API можуть зникнути або значно змінитися між незначними релізами.
- Кластер Kubernetes має функції, які не може використовувати API втулка пристроїв, або через те, що сервер додав додаткові виклики API, або через те, що API втулка пристроїв видалило старий виклик API. Однак, все, що у них є спільного (більшість API), працюватиме.
8.7 - Обʼєднання конфігураційних тек Kubelet
Коли використовується прапорець kubelet --config-dir для вказівки теки для конфігурації, існує певна специфічна поведінка для обʼєднання різних типів.
Ось кілька прикладів того, як різні типи даних поводяться під час обʼєднання конфігурації:
Поля структур
У YAML структурі є два типи полів структури: одиничні (або скалярні типи) та вбудовані (структури, що містять скалярні типи). Процес обʼєднання конфігурацій обробляє заміну одиничних та вбудованих полів структур для створення кінцевої конфігурації kubelet.
Наприклад, ви можете хотіти мати базову конфігурацію kubelet для всіх вузлів, але налаштувати поля address і authorization. Це можна зробити наступним чином:
Ви можете замінити значення списків конфігурації kubelet. Однак весь список буде замінений під час процесу обʼєднання. Наприклад, ви можете замінити список clusterDNS наступним чином:
Індивідуальні поля в map, незалежно від їх типів значень (булеві, рядкові тощо), можуть бути вибірково замінені. Однак для map[string][]string весь список, повʼязаний з певним полем, буде замінений. Розглянемо це детальніше на прикладі, зокрема для таких полів, як featureGates і staticPodURLHeader:
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.32 [beta] (стандартно увімкнено: true)
На вузлах Linux, Kubernetes 1.32 підтримує інтеграцію з systemd, щоб дозволити супервізору операційної системи відновити несправний kubelet. Стандартно цю інтеграцію не увімкнено. Її можна використовувати як альтернативу періодичним запитам до точки доступу kubelet /healthz для перевірки працездатності. Якщо протягом тайм-ауту kubelet не відповість на запит сторожового таймера, сторожовий таймер вбʼє kubelet.
Сторожовий таймер systemd працює, вимагаючи від сервісу періодично надсилати сигнал keep-alive процесу systemd. Якщо сигнал не отримано протягом визначеного тайм-ауту, служба вважається такою, що не реагує, і припиняє свою роботу. Після цього службу можна перезапустити відповідно до конфігурації.
Конфігурація
Використання сторожового таймера systemd вимагає налаштування параметра WatchdogSec у розділі [Service] файлу сервісного блоку kubelet:
[Service]
WatchdogSec=30s
Встановлення WatchdogSec=30s вказує на тайм-аут службового сторожового тайм-ауту у 30 секунд. Усередині kubelet функція d_notify() викликається з інтервалом WatchdogSec ÷ 2, щоб відправити WATCHDOG=1 (повідомлення про те, що він живий). Якщо сторожовий таймер не буде запущено протягом тайм-ауту, kubelet буде вбито. Встановлення Restart у значення "always", "on-failure", "on-watchdog" або "on-abnormal" забезпечить автоматичний перезапуск сервісу.
Дещо про конфігурацію systemd:
Якщо ви встановите значення systemd для параметра WatchdogSec рівним 0 або не встановите його, сторожовий таймер systemd буде вимкнено для цього пристрою.
Kubelet підтримує мінімальний період роботи сторожового таймера 1.0 секунди; це необхідно для запобігання несподіваного завершення роботи kubelet. Ви можете встановити значення WatchdogSec у визначенні системного блоку на період, менший за 1 секунду, але Kubernetes не підтримує коротший інтервал. Тайм-аут не обовʼязково має бути цілим числом секунд.
Проєкт Kubernetes пропонує встановити WatchdogSec на період приблизно 15 с. Періоди довші за 10 хвилин підтримуються, але явно не рекомендуються.
Приклад конфігурації
[Unit]Description=kubelet: The Kubernetes Node AgentDocumentation=https://kubernetes.io/docs/home/Wants=network-online.targetAfter=network-online.target[Service]ExecStart=/usr/bin/kubelet# Налаштування таймауту watchdogWatchdogSec=30sRestart=on-failureStartLimitInterval=0RestartSec=10[Install]WantedBy=multi-user.target
Seccomp (secure computing mode) — це функція ядра Linux, яка існує з версії 2.6.12. Її можна використовувати для обмеження привілеїв процесу шляхом ізоляції, обмежуючи системні виклики, які він може здійснювати з простору користувача в ядро. Kubernetes дозволяє автоматично застосовувати профілі seccomp, завантажені на вузол, до ваших Podʼів і контейнерів.
Поля Seccomp
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.19 [stable]
Існує чотири способи вказати профіль seccomp для Podʼа:
Pod у прикладі вище працює як Unconfined, тоді як ephemeral-container та init-container конкретно визначають RuntimeDefault. Якби ефемерний або init-контейнер не встановили явно поле securityContext.seccompProfile, тоді значення успадковується від Pod. Це ж стосується і контейнера, який використовує локальний профіль my-profile.json.
Загалом, поля контейнерів (включаючи ефемерні) мають вищий пріоритет, ніж значення на рівні Pod, а контейнери, які не задають поле seccomp, успадковують профіль від Pod.
Примітка:
Неможливо застосувати профіль seccomp до Podʼа або контейнера, що працює з налаштуванням privileged: true у securityContext контейнера. Привілейовані контейнери завжди працюють у режимі Unconfined.
Наступні значення можливі для поля seccompProfile.type:
Unconfined
Навантаження працює без будь-яких обмежень seccomp.
RuntimeDefault
Застосовується стандартний профіль seccomp, визначений середовищем виконання контейнерів. Стандартні профілі прагнуть забезпечити надійний набір параметрів безпеки, зберігаючи функціональність навантаження. Можливо, що стандартні профілі відрізняються між різними середовищами виконання контейнерів та їх версіями, наприклад, порівнюючи профілі CRI-O та containerd.
Localhost
Застосовується localhostProfile, який має бути доступний на диску вузла (у Linux це /var/lib/kubelet/seccomp). Доступність профілю seccomp перевіряється середовищем виконання контейнерів під час створення контейнера. Якщо профіль не існує, то створення контейнера завершиться з помилкою CreateContainerError.
Профілі Localhost
Профілі Seccomp — це JSON-файли, що відповідають схемі, визначеній специфікацією середовища виконання OCI. Профіль, як правило, визначає дії на основі відповідних системних викликів, але також дозволяє передавати конкретні значення як аргументи до системних викликів. Наприклад:
defaultAction у профілі вище визначено як SCMP_ACT_ERRNO і буде повернуто як резервне для дій, визначених у syscalls. Помилка визначена як код 38 через поле 'defaultErrnoRet'.
Наступні дії зазвичай можливі:
SCMP_ACT_ERRNO
Повернення вказаного коду помилки.
SCMP_ACT_ALLOW
Дозвіл на виконання системного виклику.
SCMP_ACT_KILL_PROCESS
Завершення процесу.
SCMP_ACT_KILL_THREAD і SCMP_ACT_KILL
Завершення тільки потоку.
SCMP_ACT_TRAP
Генерація сигналу SIGSYS.
SCMP_ACT_NOTIFY і SECCOMP_RET_USER_NOTIF
Сповіщення простору користувача.
SCMP_ACT_TRACE
Сповіщення процесу трасування з вказаним значенням.
SCMP_ACT_LOG
Дозвіл на виконання системного виклику після того, як дія була зареєстрована в syslog або auditd.
Деякі дії, такі як SCMP_ACT_NOTIFY або SECCOMP_RET_USER_NOTIF, можуть бути не підтримувані залежно від середовища виконання контейнера, середовища виконання OCI або версії ядра Linux. Можуть бути також додаткові обмеження, наприклад, що SCMP_ACT_NOTIFY не може використовуватися як defaultAction або для певних системних викликів, таких як write. Усі ці обмеження визначаються або середовищем виконання OCI (runc,
crun) або libseccomp.
Масив JSON syscalls містить список об’єктів, що посилаються на системні виклики за їхніми відповідними names. Наприклад, дія SCMP_ACT_ALLOW може бути використана для створення білого списку дозволених системних викликів, як показано у прикладі вище. Також можна визначити інший список, використовуючи дію SCMP_ACT_ERRNO, але з іншим значенням повернення (errnoRet).
Стан вузла у Kubernetes є критичним аспектом управління кластером Kubernetes. У цій статті ми розглянемо основи моніторингу та підтримки стану вузлів, щоб забезпечити справний та стабільний кластер.
Ви можете використовувати команду kubectl для перегляду стану вузла та інших деталей:
kubectl describe node <insert-node-name-here>
Кожен розділ вихідних даних описано нижче.
Адреси
Використання цих полів варіюється залежно від вашого постачальника хмарних послуг або конфігурації на голому залізі.
HostName: Імʼя хосту, яке повідомляється ядром вузла. Може бути перевизначене за допомогою параметра kubelet --hostname-override.
ExternalIP: Як правило, це IP-адреса вузла, яка доступна ззовні кластера.
InternalIP: Як правило, це IP-адреса вузла, яка доступна лише всередині кластера.
Стани
Поле conditions описує стан усіх Running вузлів. Прикладами умов є:
Стан вузлів та опис, коли кожен стан застосовується.
Умова вузла
Опис
Ready
True, якщо вузол справний та готовий приймати Podʼи, False, якщо вузол не справний і не приймає Podʼи, та Unknown, якщо контролер вузла не отримав інформацію від вузла протягом останнього node-monitor-grace-period (стандартно 50 секунд)
DiskPressure
True, якщо є тиск на розмір диска, тобто якщо місткість диска низька; інакше False
MemoryPressure
True, якщо є тиск на памʼять вузла, тобто якщо памʼять вузла низька; інакше False
PIDPressure
True, якщо є тиск на процеси, тобто якщо на вузлі занадто багато процесів; інакше False
NetworkUnavailable
True, якщо мережа для вузла неправильно налаштована, інакше False
Примітка:
Якщо ви використовуєте командний рядок для перегляду деталей вузла з вимкненим плануванням (cordoned Node), стан включає SchedulingDisabled. SchedulingDisabled не є станом в API Kubernetes; замість цього вузли з вимкненим плануванням позначені як Unschedulable в їхній специфікації.
В API Kubernetes стан вузла представлений як частина .status ресурсу Node. Наприклад, наступна структура JSON описує справний вузол:
Коли на вузлах виникають проблеми, панель управління Kubernetes автоматично створює taints, які відповідають станам, що впливають на вузол. Прикладом цього є ситуація, коли status стану Ready залишається Unknown або False довше, ніж налаштований інтервал NodeMonitorGracePeriod у kube-controller-manager, який стандартно становить 50 секунд. Це спричинить додавання на вузол taint node.kubernetes.io/unreachable для статусу Unknown або taint node.kubernetes.io/not-ready для статусу False.
Ці taints впливають на Podʼи, що перебувають в очікуванні, оскільки планувальник враховує taints вузла при призначенні Podʼів на вузол. Наявні Podʼи, заплановані на вузол, можуть бути виселені через застосування taints типу NoExecute. Podʼи також можуть мати tolerations, що дозволяє їм бути запланованими та продовжувати працювати на вузлі, навіть якщо на ньому є певний taint.
Описує ресурси, доступні на вузлі: процесор, памʼять та максимальну кількість Podʼів, які можуть бути заплановані на вузлі.
Поля у блоці місткості вказують на загальну кількість ресурсів, які має вузол. Блок доступності вказує на кількість ресурсів на вузлі, які доступні для використання звичайними подами.
Описує загальну інформацію про вузол, таку як версія ядра, версія Kubernetes (kubelet і kube-proxy), деталі контейнерного середовища та яка операційна система використовується на вузлі. Kubelet збирає цю інформацію з вузла та публікує її в API Kubernetes.
Пульс
Пульс, що надсилається вузлами Kubernetes, допомагають вашому кластеру визначити
доступність кожного вузла та вжити заходів у разі виявлення збоїв.
Для вузлів існує дві форми пульсу:
оновлення .status вузла
обʼєкти Lease у просторі іменkube-node-lease. Кожен вузол має повʼязаний обʼєкт Lease.
Порівняно з оновленнями .status вузла, Lease є легким ресурсом. Використання Lease для пульсу знижує вплив цих оновлень на продуктивність для великих кластерів.
Kubelet відповідає за створення та оновлення .status вузлів, а також за оновлення їх повʼязаних Lease.
Kubelet оновлює .status вузла або коли стан змінюється, або якщо не було оновлень протягом налаштованого інтервалу. Стандартний інтервал для оновлень .status вузлів становить 5 хвилин, що значно довше, ніж типових 40 секунд для вузлів, що стали недоступними.
Kubelet створює та оновлює свій обʼєкт Lease кожні 10 секунд (стандартний інтервал оновлення). Оновлення Lease відбуваються незалежно від оновлень .status вузла. Якщо оновлення Lease не вдається, Kubelet повторює спробу, використовуючи експоненціальне збільшення інтервалу з початкового 200 мілісекунд до максимально 7 секунд.
9 - Довідник з мережі
Цей розділ документації Kubernetes містить деталі про використання мережі в Kubernetes.
9.1 - Протоколи Service
Якщо ви налаштовуєте Service, ви можете обрати будь-який мережевий протокол, що підтримується Kubernetes.
Kubernetes підтримує наступні протоколи для Service:
Існує 3 допустимі значення для protocol порту Service:
SCTP
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.20 [stable]
При використанні втулка мережі, що підтримує SCTP-трафік, ви можете використовувати SCTP для більшості Service. Для Service типу LoadBalancer підтримка SCTP залежить від можливості постачальника хмарних послуг надавати цю функцію. (Більшість не підтримують).
SCTP не підтримується на вузлах, що працюють під управлінням Windows.
Підтримка багатодомашніх SCTP-асоціацій
Підтримка багатодомашніх SCTP-асоціацій вимагає, щоб втулок CNI міг підтримувати призначення декількох інтерфейсів та IP-адрес для Podʼів.
NAT для багатодомашніх SCTP-асоціацій вимагає спеціальної логіки у відповідних модулях ядра.
TCP
Ви можете використовувати TCP для будь-якого виду Service, і це стандартний протокол.
UDP
Ви можете використовувати UDP для більшості Service. Для Service типу LoadBalancer підтримка UDP залежить від можливості постачальника хмарних послуг надавати цю функцію.
Особливі випадки
HTTP
Якщо ваш постачальник хмарних послуг підтримує це, ви можете використовувати Service у режимі LoadBalancer для налаштування балансувальника навантаження поза межами вашого кластера Kubernetes у спеціальному режимі, де балансувальник навантаження вашого постачальника хмарних послуг реалізує зворотнє проксіювання трафіку HTTP / HTTPS, з перенаправленням трафіку на бекенд-точки доступу для цього Service.
Зазвичай, ви встановлюєте протокол для Service як TCP і додаєте анотацію (зазвичай специфічну для вашого постачальника хмарних послуг), яка налаштовує балансувальник навантаження для обробки трафіку на рівні HTTP. Ця конфігурація може також включати обслуговування HTTPS (HTTP через TLS) та зворотнє проксіювання plain HTTP до вашого навантаження.
Примітка:
Ви також можете використовувати Ingress для експонування HTTP/HTTPS Service.
Ви можете додатково вказати, що протокол застосунку зʼєднання є http або https. Використовуйте http, якщо сесія від балансувальника навантаження до вашого навантаження є HTTP без TLS, та використовуйте https, якщо сесія від балансувальника навантаження до вашого навантаження використовує TLS-шифрування.
PROXY protocol
Якщо ваш постачальник хмарних послуг підтримує це, ви можете використовувати Service із типом LoadBalancer для налаштування балансувальника навантаження поза межами самого Kubernetes, який буде перенаправляти зʼєднання, обгорнуті у
PROXY protocol.
Балансувальник навантаження тоді надсилає початкову серію октетів, що описують
вхідне зʼєднання, схоже на цей приклад (PROXY protocol v1):
PROXY TCP4 192.0.2.202 10.0.42.7 12345 7\r\n
Дані після проксі-протоколу є оригінальними даними від клієнта. Коли будь-яка сторона закриває зʼєднання, балансувальник навантаження також ініціює закриття зʼєднання та надсилає будь-які залишкові дані, якщо це можливо.
Зазвичай, ви визначаєте Service із протоколом TCP. Ви також встановлюєте анотацію, специфічну для вашого постачальника хмарних послуг, яка налаштовує балансувальник навантаження обгортати кожне вхідне зʼєднання у PROXY протокол.
TLS
Якщо ваш постачальник хмарних послуг підтримує це, ви можете використовувати Service із типом LoadBalancer як спосіб налаштування зовнішнього зворотного проксіювання, де зʼєднання від клієнта до балансувальника навантаження зашифроване за допомогою TLS, а балансувальник навантаження виступає як TLS-сервер. Зʼєднання від балансувальника навантаження до вашого навантаження також може бути TLS, або може бути plain text. Точні варіанти залежать від вашого постачальника хмарних послуг або користувацької реалізації Service.
Зазвичай, ви встановлюєте протокол як TCP та встановлюєте анотацію (зазвичай специфічну для вашого постачальника хмарних послуг), яка налаштовує балансувальник навантаження виступати як TLS-сервер. Ви б налаштовували TLS-ідентифікацію (як сервер, та можливо також як клієнт, який підключається до вашого навантаження) за допомогою механізмів, специфічних для вашого постачальника хмарних послуг.
9.2 - Порти та Протоколи
При запуску Kubernetes у середовищі зі строгими мережевими межами, такими як локальний дата-центр із фізичними мережевими фаєрволами або віртуальні мережі у публічній хмарі, корисно знати про порти та протоколи, які використовують компоненти Kubernetes.
Панель управління
Протокол
Напрямок
Діапазон портів
Призначення
Використовується
TCP
Вхідний
6443
Kubernetes API сервер
Усі
TCP
Вхідний
2379-2380
etcd server client API
kube-apiserver, etcd
TCP
Вхідний
10250
Kubelet API
Власний, Панель управління
TCP
Вхідний
10259
kube-scheduler
Власний
TCP
Вхідний
10257
kube-controller-manager
Власний
Хоча порти etcd включені до секції контрольної площини, ви також можете розмістити свій власний
кластер etcd зовнішньо або на користувацьких портах.
Усі типові номери портів можуть бути змінені. Коли використовуються власні порти, ці порти повинні бути відкриті замість вказаних тут типових.
Одним із поширених прикладів є порт API сервера, який іноді змінюється на 443. Альтернативно, типовий порт залишається без змін, а API сервер розміщується за балансувальником навантаження, який слухає на 443 та направляє запити до API сервера на типовий порт.
9.3 - Віртуальні IP та Проксі для Service
Кожен вузол у кластері Kubernetes запускає компонент kube-proxy
(якщо ви не розгорнули власний альтернативний компонент замість kube-proxy).
Компонент kube-proxy відповідає за реалізацію механізму віртуальних IP для Service типу відмінного від ExternalName. Кожен екземпляр kube-proxy відстежує додавання та видалення обʼєктів Service and EndpointSlice у панелі управління. Для кожного сервісу kube-proxy викликає відповідні API (залежно від режиму kube-proxy) для налаштування вузла для перехоплення трафіку на clusterIP та port сервісу, і перенаправляє цей трафік на одну з точок доступу Service (зазвичай це Pod, але можливо також будь-яка інша IP-адреса, надана користувачем). Цикл керування забезпечує, що правила на кожному вузлі надійно синхронізуються зі станом Service та EndpointSlice, вказаним API сервером.
Інколи виникає питання, чому Kubernetes покладається на проксіювання для пересилання вхідного трафіку до бекендів. Що щодо інших підходів? Наприклад, чи можливо налаштувати DNS-записи, які мають кілька A-значень (або AAAA для IPv6), і покладатися на розвʼязання імен по колу?
Є кілька причин для використання проксіювання для Service:
Існує довга історія реалізацій DNS, які не дотримуються TTL записів та кешують результати пошуку імен після закінчення терміну їх дії.
Деякі програми виконують пошук DNS лише один раз і кешують результати безстроково.
Навіть якщо програми та бібліотеки виконували правильне повторне розвʼязування, низькі або нульові TTL для DNS-записів можуть накладати високі навантаження на DNS, якими стає важко керувати.
Далі на цій сторінці ви можете прочитати про те, як працюють різні реалізації kube-proxy. В цілому, слід зазначити, що при запуску kube-proxy можуть бути змінені правила на рівні ядра (наприклад, можуть бути створені правила iptables), які не будуть очищені, в деяких випадках, до перезавантаження. Отже, запуск kube-proxy повинен здійснюватися тільки адміністратором, який розуміє наслідки наявності низькорівневого, привілейованого мережевого проксі-сервісу на компʼютері. Хоча виконуваний файл kube-proxy підтримує функцію cleanup, ця функція не є офіційною і тому доступна лише для використання "як є".
Деякі деталі у цьому довіднику стосуються прикладу: бекенд Pod для stateless навантаження з обробки образів, що працює з трьома репліками. Ці репліки замінні — фронтенди не турбує, який бекенд вони використовують. Хоча фактичні Podʼи, що складають бекенд-набір, можуть змінюватися, клієнти фронтенду не повинні бути обізнані про це і не повинні відстежувати набір бекендів самостійно.
Режими проксі
kube-proxy запускається в різних режимах, які визначаються його конфігурацією.
На Linux вузлах доступні режими для kube-proxy такі:
Режим, в якому kube-proxy налаштовує правила пересилання пакетів у ядрі Windows.
Режим проксі iptables
Цей режим проксі доступний лише на вузлах Linux.
У цьому режимі kube-proxy налаштовує правила пересилання пакетів за допомогою API iptables підсистеми netfilter ядра. Для кожної точки доступу він встановлює правила iptables, які типово випадково вибирають бекенд Pod.
Приклад
Як приклад, розглянемо програму обробки образів, описану раніше на сторінці. Коли створюється бекенд Service, панель управління Kubernetes призначає віртуальну IP-адресу, наприклад, 10.0.0.1. Для цього прикладу припустимо, що порт Service — 1234. Усі екземпляри kube-proxy у кластері спостерігають за створенням нового Service.
Коли kube-proxy на вузлі бачить новий Service, він встановлює серію правил iptables, які перенаправляють з віртуальної IP-адреси на додаткові правила iptables, визначені для кожного Service. Правила для кожного Service посилаються на інші правила для кожної точки доступу бекенду, а правила для кожної точки доступу перенаправляють трафік (використовуючи NAT призначення) до бекендів.
Коли клієнт підключається до віртуальної IP-адреси Service, вступає в дію правило iptables. Вибирається бекенд (або на основі спорідненості сесії, або випадково), і пакети перенаправляються до бекенду без переписування IP-адреси клієнта.
Цей самий основний потік виконується, коли трафік надходить через node-port або через балансувальник навантаження, хоча в цих випадках IP-адреса клієнта змінюється.
Оптимізація продуктивності режиму iptables
У режимі iptables, kube-proxy створює кілька правил iptables для кожного Service та кілька правил iptables для кожної IP-адреси точки доступу. У кластерах з десятками тисяч Podʼів та Service це означає десятки тисяч правил iptables, і kube-proxy може потребувати багато часу на оновлення правил у ядрі, коли Service (або їх EndpointSlices) змінюються. Ви можете налаштувати поведінку синхронізації kube-proxy за допомогою параметрів у розділі iptables файлу конфігурації kube-proxy (який ви вказуєте через kube-proxy --config <path>):
...iptables:minSyncPeriod:1ssyncPeriod:30s
minSyncPeriod
Параметр minSyncPeriod встановлює мінімальний інтервал між спробами ресинхронізації правил iptables з ядром. Якщо він дорівнює 0s, то kube-proxy завжди негайно синхронізує правила при зміні будь-якого Service чи Endpoint. Це працює добре в дуже малих кластерах, але призводить до зайвої роботи, коли велика кількість змін відбувається за короткий період часу. Наприклад, якщо у вас є Service, який підтримується Deployment зі 100 Podʼів, і ви видаляєте Deployment, то з minSyncPeriod: 0s, kube-proxy буде по одному видаляти точки доступу Service з правил iptables, загалом 100 оновлень. З більшим значенням minSyncPeriod, події видалення багатьох Podʼів можуть агрегуватися разом, наприклад, kube-proxy може зробити 5 оновлень, кожне з яких видаляє по 20 точок доступу, що значно економить процесорний час і прискорює синхронізацію всіх змін.
Чим більше значення minSyncPeriod, тим більше роботи можна агрегувати, але недолік полягає в тому, що кожна окрема зміна може очікувати до повного minSyncPeriod, перш ніж буде оброблена, що означає, що правила iptables витрачають більше часу несинхронізованими з поточним станом API-сервера.
Стандартне значення 1s працює добре в більшості кластерів, але в дуже великих кластерах може бути необхідно встановити більше значення. Особливо, якщо метрика sync_proxy_rules_duration_seconds kube-proxy показує середній час значно більше 1 секунди, збільшення minSyncPeriod може зробити оновлення ефективнішими.
Оновлення конфігурації старого параметра minSyncPeriod
У попередніх версіях kube-proxy всі правила для всіх Service оновлювалися кожною синхронізацією, що призводило до проблем продуктивності (затримок оновлення) у великих кластерах, і рекомендоване рішення полягало в налаштуванні більшого значення minSyncPeriod. Починаючи з Kubernetes v1.28, режим iptables kube-proxy використовує більш мінімалістичний підхід, здійснюючи оновлення тільки там, де фактично змінилися Service або EndpointSlices.
Якщо ви раніше перевизначали параметр minSyncPeriod, вам слід спробувати видалити це перевизначення і дозволити kube-proxy використовувати стандартні значення (1s) або принаймні менше значення, ніж ви використовували до оновлення.
Якщо ви не запускаєте kube-proxy з Kubernetes 1.32, перевірте поведінку і повʼязані поради для версії, яку ви фактично використовуєте.
syncPeriod
Параметр syncPeriod контролює кілька операцій синхронізації, які не повʼязані безпосередньо зі змінами в окремих Service та EndpointSlices. Зокрема, він визначає, як швидко kube-proxy помічає, якщо зовнішній компонент втрутився в правила iptables kube-proxy. У великих кластерах kube-proxy також виконує певні операції очищення лише один раз протягом syncPeriod, щоб уникнути непотрібної роботи.
Зазвичай збільшення syncPeriod не має значного впливу на продуктивність, але раніше іноді було корисно встановлювати його дуже великим значенням (наприклад, 1h). Проте це більше не рекомендується і, ймовірно, таке налаштування спричинить більше проблем з функціональністю, ніж покращить продуктивність.
Режим проксі IPVS
Цей режим проксі доступний лише на вузлах Linux.
У режимі ipvs kube-proxy використовує ядро IPVS та API iptables для створення правил для перенаправлення трафіку з IP-адрес Service на IP-адреси точок доступу.
Режим проксі IPVS базується на функції перехоплення netfilter, аналогічній режиму iptables, але використовує хеш-таблицю як основну структуру даних та працює в просторі ядра. Це означає, що kube-proxy в режимі IPVS перенаправляє трафік з меншою затримкою порівняно з режимом iptables, зі значно кращою продуктивністю при синхронізації правил проксі. У порівнянні з режимом проксі iptables, режим IPVS також підтримує вищу пропускну здатність мережевого трафіку.
IPVS надає більше опцій для балансування трафіку до бекендів Pods:
rr (Round Robin): Трафік рівномірно розподіляється між серверами.
wrr (Weighted Round Robin): Трафік маршрутизується до серверів на основі їх ваг. Сервери з вищими вагами отримують нові зʼєднання і більше запитів, ніж сервери з меншими вагами.
lc (Least Connection): Більше трафіку призначається серверам з меншою кількістю активних зʼєднань.
wlc (Weighted Least Connection): Більше трафіку маршрутизується до серверів з меншою кількістю зʼєднань відносно їх ваг, тобто кількість зʼєднань, поділена на вагу.
lblc (Locality based Least Connection): Трафік для тієї ж самої IP-адреси надсилається на той же сервер, якщо він не перевантажений і доступний; в іншому випадку трафік надсилається на сервери з меншою кількістю зʼєднань з можливістю збереження для майбутнього призначення.
lblcr (Locality Based Least Connection with Replication): Трафік для тієї ж самої IP-адреси надсилається на сервер з найменшою кількістю зʼєднань. Якщо всі сервери перевантажені, вибирається один із меншою кількістю зʼєднань і додається до множини цільових серверів. Якщо множина цільових серверів не змінюється протягом визначеного часу, то найбільш навантажений сервер вилучається з множини, щоб уникнути високого рівня реплікації.
sh (Source Hashing): Трафік відправляється на сервер за допомогою статично призначеної хеш-таблиці на основі джерела IP-адрес.
dh (Destination Hashing): Трафік відправляється на сервер за допомогою статично призначеної хеш-таблиці на основі цільових адрес.
sed (Shortest Expected Delay): Трафік пересилається на сервер з найменшим очікуваним затримкою. Очікувана затримка обчислюється як (C + 1) / U, де C — кількість зʼєднань на сервері, а U — фіксована сервісна швидкість (вага) сервера.
nq (Never Queue): Трафік відправляється на сервер, що простоює, якщо є такий, замість очікування швидкішого; якщо всі сервери зайняті, алгоритм переходить до поведінки sed.
mh (Maglev Hashing): Призначає вхідні завдання на основі алгоритму хешування Maglev від Google. Цей планувальник має два прапорці: mh-fallback, який дозволяє перейти на інший сервер, якщо вибраний сервер недоступний, і mh-port, який додає номер порту джерела до обчислення хешу. Використовуючи mh, kube-proxy завжди встановлює прапорець mh-port і не вмикає прапорець mh-fallback. У режимі proxy-mode=ipvs mh працюватиме як source-hashing (sh), але з портами.
Ці алгоритми планування налаштовуються в полі
ipvs.scheduler у конфігурації kube-proxy.
Примітка:
Для запуску kube-proxy в режимі IPVS необхідно зробити IPVS доступним на вузлі перед запуском kube-proxy.
При запуску kube-proxy в режимі IPVS, він перевіряє наявність модулів IPVS ядра. Якщо модулі IPVS ядра не виявлені, то kube-proxy виходить із помилкою.
Режим проксі nftables
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.31 [beta] (стандартно увімкнено: true)
Цей режим проксі доступний лише на вузлах Linux, він потребує ядра версії 5.13 чи новіщої.
У цьому режимі kube-proxy налаштовує правила пересилання пакетів за допомогою API nftables ядра підсистеми netfilter. Для кожної точки доступу встановлюються правила nftables, які стандартно вибирають бекенд Pod випадковим чином.
API nftables є наступником API iptables і призначений для забезпечення кращої продуктивності та масштабованості порівняно з iptables. Режим проксі nftables може обробляти зміни в точках доступу сервісу швидше та ефективніше, ніж режим iptables, і також може ефективніше обробляти пакети в ядрі (хоча це стає помітним лише в кластерах з десятками тисяч сервісів).
В Kubernetes 1.32, режим nftables все ще відносно новий і може бути несумісний з усіма мережевими втулками; ознайомтесь з документацією до вашого мережевого втулка.
Міграція з iptables на nftables
Користувачі, які хочуть перейти зі стандартного режиму iptables на режим nftables, повинні знати, що деякі функції в режимі nftables працюють трохи інакше:
Інтерфейси NodePort: У режимі iptables, стандартно, сервіси NodePort доступні на всіх локальних IP-адресах. Це зазвичай не те, чого хочуть користувачі, тому режим nftables стандартно використовує параметр --nodeport-addresses primary, що означає, що сервіси NodePort доступні лише на основних IPv4 та/або IPv6 адресах вузла. Ви можете змінити це, вказавши явне значення для цієї опції: наприклад, --nodeport-addresses 0.0.0.0/0, щоб слухати на всіх (локальних) IP-адресах IPv4.
Сервіси NodePort на 127.0.0.1: У режимі iptables, якщо діапазон --nodeport-addresses включає 127.0.0.1 (і не передано опцію --iptables-localhost-nodeports false), тоді сервіси NodePort будуть доступні навіть на "localhost" (127.0.0.1). У режимі nftables (та режимі ipvs) це не працюватиме. Якщо ви не впевнені, чи залежите від цієї функціональності, ви можете перевірити метрику kube-proxy iptables_localhost_nodeports_accepted_packets_total; якщо вона не дорівнює 0, це означає, що якийсь клієнт підключився до сервісу NodePort через 127.0.0.1.
Взаємодія NodePort з брандмауерами: Режим iptables kube-proxy намагається бути сумісним із занадто агресивними брандмауерами; для кожного сервісу NodePort він додаватиме правила для прийому вхідного трафіку на цьому порту, на випадок, якщо цей трафік буде заблокований брандмауером. Цей підхід не працює з брандмауерами на основі nftables, тому режим nftables kube-proxy не робить нічого в цьому напрямку; якщо у вас є локальний брандмауер, ви повинні переконатися, що він належним чином налаштований для пропуску трафіку Kubernetes (наприклад, дозволивши вхідний трафік на весь діапазон NodePort).
Обхід помилок Conntrack: Ядра Linux версій до 6.1 мають помилку, яка може призвести до закриття довготривалих TCP-зʼєднань до IP-адрес сервісів з помилкою "Connection reset by peer". Режим iptables kube-proxy встановлює обхід для цієї помилки, але пізніше було виявлено, що цей обхід викликає інші проблеми в деяких кластерах. Режим nftables стандартно не встановлює жодного обходу, але ви можете перевірити метрику kube-proxy iptables_ct_state_invalid_dropped_packets_total, щоб зʼясувати, чи залежить ваш кластер від цього обходу, і якщо це так, ви можете запустити kube-proxy з опцією --conntrack-tcp-be-liberal, щоб оминути цю проблему в режимі nftables.
Режим проксі kernelspace
Цей режим проксі доступний лише на вузлах Windows.
kube-proxy налаштовує правила фільтрації пакетів у Windows у віртуальній платформі фільтрації (Virtual Filtering Platform, VFP), яка є розширенням віртуального комутатора Windows (vSwitch). Ці правила обробляють інкапсульовані пакети в межах віртуальних мереж на рівні вузлів і переписують пакети таким чином, щоб IP-адреса призначення (і інформація на рівні 2) була правильною для маршрутизації пакета до вірного призначення. Windows VFP аналогічний інструментам, таким як Linux nftables або iptables. Він розширює Hyper-V Switch, який спочатку був реалізований для підтримки мережевого звʼязку віртуальних машин.
Коли Pod на вузлі надсилає трафік на віртуальну IP-адресу, а kube-proxy вибирає Pod на іншому вузлі як ціль для балансування навантаження, режим проксі kernelspace переписує цей пакет так, щоб він був призначений для цільового бекенд Pod. Служба мережевого хоста Windows (HNS) забезпечує конфігурацію правил переписування пакетів таким чином, щоб зворотній трафік виглядав так, ніби він прийшов від віртуальної IP-адреси, а не конкретного бекенду Pod.
Прямий вивід сервера для режиму kernelspace
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.14 [alpha]
Як альтернативу базовому способу роботи, вузол, на якому розміщено бекенд Pod для Service, може застосовувати пряме переписування пакетів безпосередньо, а не покладати це завдання на вузол, на якому працює клієнтський Pod. Це називається прямим виводом сервера.
Для використання цієї можливості вам необхідно запускати kube-proxy з аргументом командного рядка --enable-dsrі включити функціональних можливостейWinDSR.
Прямий вивід сервера також оптимізує випадок зворотного трафіку для Pod, навіть коли обидва Pod працюють на одному вузлі.
Сесійна спорідненість
У цих моделях проксі, трафік, що направляється на IP:Port Service, передається до відповідного бекенду без того, щоб клієнти щось знали про Kubernetes, Service або Podʼи.
Якщо ви хочете забезпечити, щоб зʼєднання від певного клієнта завжди передавалися до одного й того ж Podʼа, ви можете вибрати сесійну спорідненість на основі IP-адрес клієнта, встановивши .spec.sessionAffinity в ClientIP для Service (типово None).
Тайм-аут збереження сесії
Ви також можете встановити максимальний час збереження сесії, встановивши .spec.sessionAffinityConfig.clientIP.timeoutSeconds відповідно для Service.
(стандартне значення 10800, що відповідає 3 годинам).
Примітка:
У Windows підтримка встановлення максимального часу збереження сесії для Service не підтримується.
Призначення IP-адрес Service
На відміну від IP-адрес Podʼів, які фактично маршрутизуються до фіксованого призначення, IP-адреси Service насправді не відповідають одному окремому хосту. Замість цього, kube-proxy використовує логіку обробки пакетів (наприклад, Linux iptables), щоб визначити віртуальні IP-адреси, які потрібно перенаправляти за потреби.
Коли клієнти підключаються до VIP, їхній трафік автоматично транспортується до відповідної точки доступу. Змінні середовища та DNS для Service насправді заповнюються відносно віртуальної IP-адреси Service (і порту).
Уникнення конфліктів
Одна з основних філософій Kubernetes полягає в тому, що ви не повинні потрапляти в ситуації, які можуть призвести до провалу ваших дій не з вашої вини. Для дизайну ресурсу Service це означає, що вам не потрібно вибирати свою власну IP-адресу, якщо цей вибір може конфліктувати з вибором іншої особи. Це може призвести до порушення ізоляції.
Щоб дозволити вам вибирати IP-адреси для ваших Service, ми повинні забезпечити, що жодні два Service не зможуть конфліктувати. Kubernetes досягає цього, призначаючи кожному Service його власну IP-адресу з діапазону service-cluster-ip-range, який налаштований для API Server.
Відстеження призначення IP-адрес
Для того щоб гарантувати, що кожен Service отримує унікальну IP-адресу, внутрішній розподілювач атомарно оновлює глобальний map призначення в etcd перед створенням кожного Service. Обʼєкт map повинен існувати в реєстрі для того, щоб Service отримували призначення IP-адрес, інакше створення завершиться невдачею з повідомленням про неможливість призначити IP-адресу.
В панелі управління фоновий контролер відповідає за створення цього map (необхідно для підтримки міграції зі старих версій Kubernetes, які використовували блокування в памʼяті). Kubernetes також використовує контролери для перевірки недійсних призначень (наприклад, через втручання адміністратора) та для очищення призначених IP-адрес, які більше не використовуються жодними Services.
Відстеження призначення IP-адрес за допомогою Kubernetes API
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.31 [beta] (стандартно увімкнено: false)
Якщо ви включите функціональні можливостіMultiCIDRServiceAllocator та
API-групу networking.k8s.io/v1alpha1, панель управління замінить наявний розподілювач etcd переглянутою реалізацією, яка використовує обʼєкти IPAddress та ServiceCIDR замість внутрішнього глобального map призначення. Кожен IP-адрес кластера, повʼязаний з Service, посилається на обʼєкт IPAddress.
Увімкнення функціональних можливостей також замінює фоновий контролер альтернативою, яка обробляє обʼєкти IPAddress та підтримує міграцію зі старої моделі розподілювача. Kubernetes 1.32 не підтримує міграцію з обʼєктів IPAddress до внутрішнього map призначення.
Однією з основних переваг переглянутого розподілювача є видалення обмежень розміру для діапазону IP-адрес, який може бути використаний для IP-адрес кластера Service. З увімкненою MultiCIDRServiceAllocator, для IPv4 відсутні обмеження, а для IPv6 ви можете використовувати маски підмереж, що є /64 або менше (на відміну від /108 зі старої реалізації).
Доступ до призначень IP-адрес через API означає, що ви, як адміністратор кластера, можете дозволяти користувачам переглядати призначені їх Service IP-адреси. Розширення Kubernetes, такі як Gateway API, можуть використовувати IPAddress API для розширення вбудованих мережевих можливостей Kubernetes.
Нижче наведений короткий приклад того, як користувач може запитувати IP-адреси:
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 2001:db8:1:2::1 <none> 443/TCP 3d1h
kubectl get ipaddresses
NAME PARENTREF
2001:db8:1:2::1 services/default/kubernetes
2001:db8:1:2::a services/kube-system/kube-dns
Kubernetes також дозволяє користувачам динамічно визначати доступні діапазони IP для Service за допомогою обʼєктів ServiceCIDR. Під час початкового налаштування, обʼєкт ServiceCIDR зі стандартним іменем kubernetes створюється зі значенням аргументу командного рядка --service-cluster-ip-range для kube-apiserver:
kubectl get servicecidrs
NAME CIDRS AGE
kubernetes 10.96.0.0/28 17m
Користувачі можуть створювати або видаляти нові обʼєкти ServiceCIDR для управління доступними діапазонами IP для Service:
NAME CIDRS AGE
kubernetes 10.96.0.0/28 17m
newservicecidr 10.96.0.0/24 7m
Діапазони IP-адрес для віртуальних IP-адрес Service
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.26 [stable]
Kubernetes розділяє діапазон ClusterIP на дві групи, в залежності від розміру налаштованого service-cluster-ip-range, використовуючи таку формулу: min(max(16, cidrSize / 16), 256). Ця формула означає ніколи менше 16 або більше 256, з поступовим збільшенням між ними.
Kubernetes віддає перевагу виділенню динамічних IP-адрес для Service, вибираючи з верхньої групи. Це означає, що якщо ви хочете призначити конкретну IP-адресу для Service з типом ClusterIP, ви повинні вручну призначити IP-адресу з нижньої групи. Цей підхід зменшує ризик конфлікту при виділенні IP-адрес.
Політики трафіку
Ви можете встановити поля .spec.internalTrafficPolicy і .spec.externalTrafficPolicy, щоб контролювати, як Kubernetes маршрутизує трафік до справних ("готових") бекендів.
Політика втурішнього трафіку
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.26 [stable]
Ви можете встановити поле .spec.internalTrafficPolicy, щоб контролювати маршрутизацію трафіку від внутрішніх джерел. Допустимі значення: Cluster і Local. Встановіть поле в Cluster, щоб маршрутизувати внутрішній трафік до всіх готових точок доступу і в Local, щоб маршрутизувати тільки до готових точок доступу, що знаходяться на вузлі. Якщо політика трафіку встановлена в Local, а на вузлі відсутні локальні точки доступу, kube-proxy відкидає трафік.
Політика зовнішнього трафіку
Ви можете налаштувати поле .spec.externalTrafficPolicy для контролю напрямку трафіку зовнішніх джерел. Допустимі значення: Cluster і Local. Встановіть поле на значення Cluster, щоб направляти зовнішній трафік до всіх готових точок доступу, і Local, щоб направляти тільки до готових локальних точок доступу на вузлі. Якщо політика трафіку встановлена на Local і відсутні локальні точки доступу, kube-proxy не передає жодного трафіку для відповідного Service.
Якщо вибрано Cluster, всі вузли є потенційними цілями балансування навантаження, поки вузол не видаляється і kube-proxy працює коректно. У цьому режимі: перевірки стану балансувальника навантаження налаштовані на доступність порту та шляху готовності проксі сервісу. Для kube-proxy це оцінюється як: ${NODE_IP}:10256/healthz. kube-proxy повертає HTTP-код 200 або 503. Точка доступу перевірки стану балансувальника навантаження kube-proxy повертає 200 у випадку:
kube-proxy працює коректно, що означає:
він може успішно просувати програмування мережі і не має проблем з таймаутом (таймаут визначається як: 2 × iptables.syncPeriod); і
вузол не видаляється (не встановлено мітки видалення для вузла).
Причина того, що kube-proxy повертає 503 і позначає вузол як непридатний, коли він видаляється, полягає в тому, що kube-proxy підтримує очищення зʼєднання для вузлів, що припиняють роботу. З точки зору управління Kubernetes керування навантаженням при видаленні вузла відбувається декілька важливих аспектів.
Під час видалення:
kube-proxy почне не проходити свою перевірку готовності і фактично позначає вузол як непридатний для трафіку балансувальника навантаження. Невдача перевірки стану балансувальника навантаження призводить до того, що балансувальники навантаження, які підтримують очищення зʼєднань, дозволяють завершити існуючі зʼєднання та блокують створення нових зʼєднань.
Після видалення:
Контролер сервісу в менеджері хмарних контролерів Kubernetes видаляє вузол зі згаданого набору потенційних цілей. Видалення будь-якого екземпляра зі списку бекендів балансувальника навантаження миттєво припиняє всі зʼєднання. Це також причина того, що kube-proxy спочатку не проходить перевірку стану, коли вузол видаляється.
Для вендорів Kubernetes важливо враховувати, що якщо будь-який вендор налаштовує перевірку готовності kube-proxy як перевірку життєздатності, kube-proxy почне постійно перезапускатися при видаленні вузла до його повного видалення. kube-proxy використовує шлях /livez, який, на відміну від /healthz, не враховує стан видалення вузла, але лише прогрес програмування мережі. /livez є рекомендованим шляхом для визначення перевірки життєздатності kube-proxy.
Користувачі, які використовують kube-proxy, можуть перевірити стан готовності/життєздатності, оцінюючи метрики: proxy_livez_total/proxy_healthz_total. Обидві метрики публікують дві серії: одна з міткою 200 і одна з міткою 503.
Для Local Services: kube-proxy повертає 200, якщо
kube-proxy працює коректно/готовий, і
є локальна точка доступу на вузлі, який розглядається.
Видалення вузла не впливає на код відповіді kube-proxy щодо перевірки стану балансувальника навантаження. Причина полягає в тому, що видалення вузлів може призвести до відключення входу в мережу, якщо всі точки доступу одночасно працюють на таких вузлах.
Проєкт Kubernetes рекомендує, щоб код інтеграції провайдера хмари налаштовував перевірки стану балансувальника навантаження, які націлені на порт healthz сервісного проксі. Якщо ви використовуєте або реалізовуєте власну віртуальну реалізацію IP, яку люди можуть використовувати замість kube-proxy, вам слід налаштувати аналогічний порт перевірки стану з логікою, яка відповідає реалізації kube-proxy.
Трафік до термінальних точок доступу доступу
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.28 [stable]
Якщо в kube-proxy включений функціоналуProxyTerminatingEndpoints і політика трафіку встановлена на Local, kube-proxy на даному вузлі використовує більш складний алгоритм для вибору точок доступу доступу Service. З цим включеним функціоналом, kube-proxy перевіряє наявність локальних точок доступу доступу і те, чи всі локальні кінцеві точки позначені як термінальні. Якщо всі локальні кінцеві точки позначені як термінальні, тоді kube-proxy направлятиме трафік на ці термінальні кінцеві точки. В іншому випадку kube-proxy завжди віддає перевагу направленню трафіку на кінцеві точки, які не є термінальними.
Це поведінка направлення для терміналних точок доступу доступу існує для того, щоб NodePort і LoadBalancer сервіси могли відповідно завершувати зʼєднання при використанні externalTrafficPolicy: Local.
Під час виконання постійного (rolling) оновлення, вузли, які підтримують балансувальник навантаження, можуть переходити від N до 0 реплік цього розгортання. У деяких випадках зовнішні балансувальники навантаження можуть надсилати трафік на вузол з 0 репліками між перевірками готовності. Направлення трафіку на термінальні точки доступу забезпечує, що вузли, які зменшують кількість точок доступу, можуть відповідним чином приймати та відводити трафік на ці термінальні точки доступу. До моменту завершення видалення точки доступу, зовнішній балансувальник навантаження має побачити, що перевірка готовності вузла не вдалася і повністю видалить вузол зі списку бекендів.
Розподіл трафіку
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.31 [beta] (стандартно увімкнено: true)
Поле spec.trafficDistribution в Kubernetes Service дозволяє виразити уподобання щодо того, як треба маршрутизувати трафік до точок доступу Service. Реалізації, такі як kube-proxy, використовують поле spec.trafficDistribution як рекомендацію. Поведінка, повʼязана з певними уподобаннями, може трохи відрізнятися між різними реалізаціями.
PreferClose з kube-proxy
Для kube-proxy це означає, що пріоритет в надсиланні трафіку надається точкам доступу в тій самій зоні, що й клієнт. Контролер EndpointSlice оновлює EndpointSlice з підказками для комунікації цього уподобання, яке kube-proxy використовує для прийняття рішень щодо маршрутизації. Якщо в зоні клієнта відсутні будь-які доступні точки доступу, трафік буде маршрутизовано на рівні всього кластера для цього клієнта.
У відсутність будь-якого значення для trafficDistribution, стандартна стратегія для kube-proxy полягає в розподілі трафіку до будь-якої точки доступу в кластері.
Порівняння з service.kubernetes.io/topology-mode: Auto
Поле trafficDistribution зі значенням PreferClose і анотація service.kubernetes.io/topology-mode: Auto спрямовані на пріоритет маршрутизації трафіку в межах однієї зони. Однак, є ключові відмінності у їхніх підходах:
service.kubernetes.io/topology-mode: Auto: Спробує розподілити трафік пропорціонально між зонами на основі ресурсів CPU, які можна виділити. Цей евристичний метод включає захисні заходи (такі як поведінка відкату для малих кількостей точок доступу) і може призвести до вимкнення функціоналу в певних сценаріях з причин навантаження балансування. Цей підхід жертвує деякою передбачуваністю на користь можливості балансування навантаження.
trafficDistribution: PreferClose: Цей підхід спрямований на більш простоту і передбачуваність: "Якщо є точки доступу в зоні, вони отримають весь трафік для цієї зони; якщо точок доступу у зоні немає, трафік буде розподілено на інші зони". Хоча цей підхід може пропонувати більшу передбачуваність, він означає, що вам потрібно керувати можливим перевантаженням.
Якщо встановлено анотацію service.kubernetes.io/topology-mode зі значенням Auto, вона матиме пріоритет перед полем trafficDistribution. (У майбутньому анотація може бути застарілою на користь поля trafficDistribution).
Взаємодія з політиками трафіку
Порівняно з полем trafficDistribution, поля політики трафіку (externalTrafficPolicy і internalTrafficPolicy) призначені для обовʼязкового дотримання локальних вимог до трафіку. Ось як поле trafficDistribution взаємодіє з ними:
Пріоритет політик трафіку: Для заданого Service, якщо політика трафіку (externalTrafficPolicy або internalTrafficPolicy) встановлена на Local, вона має пріоритет перед trafficDistribution: PreferClose для відповідного типу трафіку (зовнішнього або внутрішнього відповідно).
Вплив trafficDistribution: Для заданого Service, якщо політика трафіку (externalTrafficPolicy або internalTrafficPolicy) встановлена на Cluster (стандартне значення), або якщо поля не встановлені, тоді trafficDistribution: PreferClose керує поведінкою маршрутизації для відповідного типу трафіку (зовнішнього або внутрішнього відповідно). Це означає, що буде здійснена спроба направити трафік на точку доступу, яка знаходиться в тій же зоні, що й клієнт.
Міркування щодо використання управління розподілом трафіку
Збільшена ймовірність перевантаження точок доступу: Евристичний підхід PreferClose буде намагатися маршрутизувати трафік до найближчих справних точок доступу замість рівномірного розподілу цього трафіку між усіма точками доступу. Якщо у вас недостатня кількість точок доступу у зоні, вони можуть стати перевантаженими. Це особливо ймовірно, якщо вхідний трафік не розподіляється пропорційно між зонами. Для зменшення цього ризику варто розглянути наступні стратегії:
Обмеження розподілу топології Pod: Використовуйте обмеження розподілу топології Pod для рівномірнішого розподілу ваших Podʼів по зонам.
Розгортання з врахуванням зон: Якщо очікуєте нерівномірних патернів трафіку, створюйте окреме розгортання для кожної зони. Цей підхід дозволяє окремим робочим навантаженням масштабуватися незалежно. Також в екосистемі, поза проєктом Kubernetes, доступні надбудови для управління робочими навантаженнями, які можуть допомогти у цьому.
Реалізація залежно від імплементації: Кожна реалізація панелі даних може трохи по-різному обробляти це поле. Якщо ви використовуєте імплементацію, відмінну від kube-proxy, зверніться до документації саме цієї імплементації, щоб зрозуміти, як це поле обробляється.
Kubeadm — це інструмент, створений для надання команд kubeadm init та kubeadm join як "швидкі" практичні шляхи для створення кластерів Kubernetes.
kubeadm виконує необхідні дії для запуску мінімально життєздатного кластера. За своєю концепцією, він займається лише процесом розгортання, а не наданням машин. Також встановлення різноманітних додаткових компонентів, таких як інформаційна панель Kubernetes, засоби моніторингу та специфічні для хмарних середовищ надбудови, не є його завданням.
Замість цього ми очікуємо, що на вищому рівні будуть створені більш високорівневі та більш налаштовані інструменти на основі kubeadm, і ідеально використання kubeadm як основи для всіх розгортань спростить створення сумісних кластерів.
┌──────────────────────────────────────────────────────────┐
│ KUBEADM │
│ Easily bootstrap a secure Kubernetes cluster │
│ │
│ Please give us feedback at: │
│ https://github.com/kubernetes/kubeadm/issues │
└──────────────────────────────────────────────────────────┘
Приклад використання:
Створіть кластер з двох машин з одним вузлом панелі управління
(який керує кластером) та одним робочим вузлом
(де працюють ваші робочі навантаження, такі як Podʼи та Deployments).
┌──────────────────────────────────────────────────────────┐
│ На першій машині: │
├──────────────────────────────────────────────────────────┤
│ control-plane# kubeadm init │
└──────────────────────────────────────────────────────────┘
┌──────────────────────────────────────────────────────────┐
│ На другій машині: │
├──────────────────────────────────────────────────────────┤
│ worker# kubeadm join <arguments-returned-from-init> │
└──────────────────────────────────────────────────────────┘
Повторіть другий крок на стількох інших машинах, скільки потрібно.
-h, --help
Довідка kubeadm
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.2 -
Команди, повʼязані з обробкою сертифікатів Kubernetes
Опис
Команди, повʼязані з обробкою сертифікатів Kubernetes
kubeadm certs [command]
Параметри
-h, --help
довідка certs
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.2.1 -
Генерує ключів сертифікатів
Опис
Ця команда виведе захищений випадково згенерований ключ сертифіката, який можна використовувати з командою "init".
Ви також можете скористатися командою "kubeadm init --upload-certs" без зазначення ключа сертифіката, і вона згенерує і виведе його для вас.
kubeadm certs certificate-key [flags]
Параметри
-h, --help
Довідка certificate-key
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.2.2 -
Перевіряє термін дії сертифікатів для кластера Kubernetes
Опис
Перевіряє термін дії сертифікатів у локальному PKI, яким керує kubeadm.
kubeadm certs check-expiration [flags]
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли поле або ключ map відсутні в шаблоні. Застосовується тільки до форматів виведення golang і jsonpath.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
-o, --output string Типово: "text"
Формат виводу. Один з: text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.
--show-managed-fields
Якщо true, залишати managedFields при виведенні обʼєктів у форматі JSON або YAML.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.2.3 -
Генерує ключі та запити на підписання сертифікатів
Опис
Генерує ключі та запити на підписування сертифікатів (CSRs) для всіх сертифікатів, необхідних для роботи панелі управління. Ця команда також генерує часткові файли kubeconfig з даними приватного ключа в полі "users > user > client-key-data", і для кожного файлу kubeconfig створюється супутній файл ".csr".
Ця команда призначена для використання в Режимі Kubeadm з зовнішнім CA Kubeadm. Вона генерує CSRs, які ви можете подати на підписання до вашого зовнішнього центру сертифікації.
Закодовані в PEM підписані сертифікати повинні бути збережені поруч з файлами ключів, використовуючи ".crt" як розширення файлу, або, у випадку з файлами kubeconfig, закодований в PEM підписаний сертифікат повинен бути закодований у base64 і доданий до файлу kubeconfig в полі "users > user > client-certificate-data".
kubeadm certs generate-csr [flags]
Приклади
# Наступна команда згенерує ключі та CSRs для всіх сертифікатів панелі управління та файлів kubeconfig:kubeadm certs generate-csr --kubeconfig-dir /tmp/etc-k8s --cert-dir /tmp/etc-k8s/pki
Параметри
--cert-dir string
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
-h, --help
Довідка generate-csr
--kubeconfig-dir string Типово: "/etc/kubernetes"
Шлях, де буде збережено файл kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.2.4 -
Поновлення сертифікатів для кластера Kubernetes
Опис
Поновлення сертифікатів для кластера Kubernetes
kubeadm certs renew [flags]
Параметри
-h, --help
довідка renew
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.2.5 -
Поновлює сертифікат, вбудований у файл kubeconfig для використання адміністратором і для самого kubeadm
Опис
Поновлює сертифікат, вбудований у файл kubeconfig для використання адміністратором і для самого kubeadm.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на поточних файлах/сертифікатах, нема потреби їх поновлювати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.2.6 -
Поновлення всіх доступних сертифікатів
Опис
Поновлення усі відомих сертифікатів, необхідних для запуску панелі управління. Поновлення виконується безумовно, незалежно від дати закінчення терміну дії. Поновлення також можна виконувати окремо для більшого контролю.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.2.7 -
Поновлює сертифікат, який apiserver використовує для доступу до etcd
Опис
Поновлює сертифікат, який apiserver використовує для доступу до etcd.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх поновлювати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.2.8 -
Поновлює сертифікат для сервера API для підключення до kubelet
Опис
Поновлює сертифікат для сервера API для підключення до kubelet.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.2.9 -
Поновлює сертифікат для обслуговування API Kubernetes
Синопсис
Поновлює сертифікат для обслуговування API Kubernetes.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.2.10 -
Поновлює сертифікат, вбудований у файл kubeconfig для використання менеджером контролера
Опис
Поновлює сертифікат, вбудований у файл kubeconfig для використання менеджером контролера.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.2.11 -
Поновлює сертифікат для проб життєздатності для перевірки стану справності etcd
Опис
Поновлює сертифікат для проб життєздатності для перевірки стану справності etcd.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.2.12 -
Поновлює сертифікат для вузлів etcd, щоб вони могли взаємодіяти один з одним
Опис
Поновлює сертифікат для вузлів etcd, щоб вони могли взаємодіяти один з одним.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.2.13 -
Поновлює сертифікат для обслуговування etcd
Опис
Поновлює сертифікат для обслуговування etcd.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.2.14 -
Поновлення сертифіката клієнта front proxy
Опис
Поновлення сертифіката клієнта front proxy.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.2.15 -
Поновлює сертифікат, вбудований у файл kubeconfig для використання менеджером планувальника
Опис
Поновлює сертифікат, вбудований у файл kubeconfig для використання менеджером планувальника.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.2.16 -
Поновлює сертифікат, вбудований у файл kubeconfig для суперкористувача
Опис
Поновлює сертифікат, вбудований у файл kubeconfig для суперкористувача.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.3 -
Генерує ключів сертифікатів
Опис
Ця команда виведе захищений випадково згенерований ключ сертифіката, який можна використовувати з командою "init".
Ви також можете скористатися командою "kubeadm init --upload-certs" без зазначення ключа сертифіката, і вона згенерує і виведе його для вас.
kubeadm certs certificate-key [flags]
Параметри
-h, --help
Довідка certificate-key
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.4 -
Перевіряє термін дії сертифікатів для кластера Kubernetes
Опис
Перевіряє термін дії сертифікатів у локальному PKI, яким керує kubeadm.
kubeadm certs check-expiration [flags]
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли поле або ключ map відсутні в шаблоні. Застосовується тільки до форматів виведення golang і jsonpath.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
-o, --experimental-output string Типово: "text"
Формат виводу. Один з: text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--show-managed-fields
Якщо true, залишати managedFields при виведенні обʼєктів у форматі JSON або YAML.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.5 -
Генерує ключі та запити на підписання сертифікатів
Опис
Генерує ключі та запити на підписування сертифікатів (CSRs) для всіх сертифікатів, необхідних для роботи панелі управління. Ця команда також генерує часткові файли kubeconfig з даними приватного ключа в полі "users > user > client-key-data", і для кожного файлу kubeconfig створюється супутній файл ".csr".
Ця команда призначена для використання в Режимі Kubeadm з зовнішнім CA Kubeadm. Вона генерує CSRs, які ви можете подати на підписання до вашого зовнішнього центру сертифікації.
Закодовані в PEM підписані сертифікати повинні бути збережені поруч з файлами ключів, використовуючи ".crt" як розширення файлу, або, у випадку з файлами kubeconfig, закодований в PEM підписаний сертифікат повинен бути закодований у base64 і доданий до файлу kubeconfig в полі "users > user > client-certificate-data".
kubeadm certs generate-csr [flags]
Приклади
# Наступна команда згенерує ключі та CSRs для всіх сертифікатів панелі управління та файлів kubeconfig:kubeadm certs generate-csr --kubeconfig-dir /tmp/etc-k8s --cert-dir /tmp/etc-k8s/pki
Параметри
--cert-dir string
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
-h, --help
Довідка generate-csr
--kubeconfig-dir string Типово: "/etc/kubernetes"
Шлях, де буде збережено файл kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.6 -
Поновлення сертифікатів для кластера Kubernetes
Опис
Ця команда не призначена для самостійного запуску. Дивіться список доступних підкоманд.
kubeadm certs renew [flags]
Параметри
-h, --help
довідка renew
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.7 -
Поновлює сертифікат, вбудований у файл kubeconfig для використання адміністратором і для самого kubeadm
Опис
Поновлює сертифікат, вбудований у файл kubeconfig для використання адміністратором і для самого kubeadm.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на поточних файлах/сертифікатах, нема потреби їх поновлювати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.8 -
Поновлення всіх доступних сертифікатів
Опис
Поновлення усі відомих сертифікатів, необхідних для запуску панелі управління. Поновлення виконується безумовно, незалежно від дати закінчення терміну дії. Поновлення також можна виконувати окремо для більшого контролю.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.9 -
Поновлює сертифікат, який apiserver використовує для доступу до etcd
Опис
Поновлює сертифікат, який apiserver використовує для доступу до etcd.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх поновлювати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.10 -
Поновлює сертифікат для сервера API для підключення до kubelet
Опис
Поновлює сертифікат для сервера API для підключення до kubelet.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.11 -
Поновлює сертифікат для обслуговування API Kubernetes
Синопсис
Поновлює сертифікат для обслуговування API Kubernetes.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.12 -
Поновлює сертифікат, вбудований у файл kubeconfig для використання менеджером контролера
Опис
Поновлює сертифікат, вбудований у файл kubeconfig для використання менеджером контролера.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.13 -
Поновлює сертифікат для проб життєздатності для перевірки стану справності etcd
Опис
Поновлює сертифікат для проб життєздатності для перевірки стану справності etcd.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.14 -
Поновлює сертифікат для вузлів etcd, щоб вони могли взаємодіяти один з одним
Опис
Поновлює сертифікат для вузлів etcd, щоб вони могли взаємодіяти один з одним.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.15 -
Поновлює сертифікат для обслуговування etcd
Опис
Поновлює сертифікат для обслуговування etcd.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.16 -
Поновлення сертифіката клієнта front proxy
Опис
Поновлення сертифіката клієнта front proxy.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.17 -
Поновлює сертифікат, вбудований у файл kubeconfig для використання менеджером планувальника
Опис
Поновлює сертифікат, вбудований у файл kubeconfig для використання менеджером планувальника.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.18 -
Поновлює сертифікат, вбудований у файл kubeconfig для суперкористувача
Опис
Поновлює сертифікат, вбудований у файл kubeconfig для суперкористувача.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.19 -
Виводить код завершення командного рядка для вказаного командного рядка (bash або zsh)
Опис
Виводить код завершення команд для вказаного командного інтерпретатора (bash або zsh). Код оболонки має бути використаний, щоб забезпечити інтерактивне завершення команд kubeadm. Це можна зробити, отримавши його з .bash_profile.
Примітка: Ця команда вимагає наявності пакету bash-completion.
Для встановлення на macOS використовуйте brew:
brew install bash-completion
Після встановлення bash-completion, вам потрібно додати наступний код у ваш файл .bash_profile:
source$(brew --prefix)/etc/bash_completion
Якщо bash-completion не встановлено у Linux, встановіть його за допомогою пакетного менеджера вашої системи.
Примітка для користувачів zsh: [1] zsh completion підтримується тількіи для версій zsh >= 5.2.
kubeadm completion SHELL [flags]
Приклади
# Встановлення bash completion на Mac за допомогою homebrewbrew install bash-completion
printf"\n# Bash completion support\nsource $(brew --prefix)/etc/bash_completion\n" >> $HOME/.bash_profile
source$HOME/.bash_profile
# Завантаження коду completion kubeadm для bash у поточну оболонкуsource <(kubeadm completion bash)# Запишіть код завершення bash у файл і викличте його з .bash_profilekubeadm completion bash > ~/.kube/kubeadm_completion.bash.inc
printf"\n# Kubeadm shell completion\nsource '$HOME/.kube/kubeadm_completion.bash.inc'\n" >> $HOME/.bash_profile
source$HOME/.bash_profile
# Завантажте код завершення kubeadm для zsh[1] у поточну оболонкуsource <(kubeadm completion zsh)
Параметри
-h, --help
Довідка completion
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.20 -
Керування конфігурацією для кластера kubeadm, збереженою у ConfigMap у кластері
Опис
У просторі імен kube-system є ConfigMap з назвою "kubeadm-config", яку kubeadm використовує для зберігання внутрішньої конфігурації кластера. kubeadm CLI v1.8.0+ автоматично створює ConfigMap з конфігурацією, що використовується командою 'kubeadm init', але якщо ви ініціалізували кластер за допомогою kubeadm v1.7.x або нижчої версії, вам слід скористатися командою 'kubeadm init phase upload-config', щоб створити ConfigMap. Це необхідно для того, щоб команда 'kubeadm upgrade' могла правильно налаштувати ваш оновлений кластер.
Файл kubeconfig, який буде використовуватися при спілкуванні з кластером. Якщо прапорець не встановлено, можна шукати існуючий файл kubeconfig у стандартних місцях.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.20.1 -
Взаємодія з зображеннями контейнерів, які використовує kubeadm
Опис
Взаємодія з зображеннями контейнерів, які використовує kubeadm
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.20.2 -
Виводить список образів, які буде використовувати kubeadm. Файл конфігурації використовується у випадку налаштування будь-яких образів або сховищ образів
Опис
Виводить список образів, які буде використовувати kubeadm. Файл конфігурації використовується у випадку налаштування будь-яких образів або сховищ образів.
kubeadm config images list [flags]
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли у шаблоні відсутнє поле або ключ мапи. Застосовується тільки до форматів виводу golang і jsonpath.
--config string
Шлях до файлу конфігурації kubeadm.
--feature-gates string
Набір пар ключ=значення, що описують функціональні можливості для різних функцій. Варіанти: ControlPlaneKubeletLocalMode=true|false (ALPHA - default=false) EtcdLearnerMode=true|false (default=true) NodeLocalCRISocket=true|false (ALPHA - default=false) PublicKeysECDSA=true|false (DEPRECATED - default=false) RootlessControlPlane=true|false (ALPHA - default=false) WaitForAllControlPlaneComponents=true|false (ALPHA - default=false)
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.20.3 -
Витягує образи які використовує kubeadm з реєстру
Опис
Витягує образи які використовує kubeadm з реєстру
kubeadm config images pull [flags]
Параметри
--config string
Шлях до файлу конфігурації kubeadm.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--feature-gates string
Набір пар ключ=значення, що описують ворота функцій для різних можливостей. Варіанти: ControlPlaneKubeletLocalMode=true|false (ALPHA - default=false) EtcdLearnerMode=true|false (default=true) NodeLocalCRISocket=true|false (ALPHA - default=false) PublicKeysECDSA=true|false (DEPRECATED - default=false) RootlessControlPlane=true|false (ALPHA - default=false) WaitForAllControlPlaneComponents=true|false (ALPHA - default=false)
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.20.4 -
Зчитує стару версію типів конфігураційного API kubeadm з файлу і виводе аналогічний обʼєкт конфігурації для нової версії
Опис
Ця команда дозволяє конвертувати обʼєкти конфігурації старих версій у найновішу підтримувану версію, локально у CLI інструменті, без жодних змін у кластері. У цій версії kubeadm підтримуються наступні версії API:
kubeadm.k8s.io/v1beta4
Крім того, kubeadm може записувати конфігурацію лише версії "kubeadm.k8s.io/v1beta4", але читати обидві версії. Отже, незалежно від того, яку версію ви передаєте параметру --old-config, API обʼєкт буде прочитано, десеріалізовано, встановлено стандартні значення, конвертовано, валідовано та повторно серіалізовано під час запису у stdout або --new-config, якщо вказано.
Іншими словами, вихід цієї команди є тим, що kubeadm фактично читав би внутрішньо, якщо ви надіслали б цей файл команді "kubeadm init".
kubeadm config migrate [flags]
Параметри
--allow-experimental-api
Дозволити міграцію на експериментальні, невипущені API
-h, --help
довідка migrate
--new-config string
Шлях до отриманого еквівалентного конфігураційного файлу kubeadm з використанням нової версії API. Необовʼязково, якщо не вказано, вивід буде надіслано у STDOUT.
--old-config string
Шлях до конфігураційного файлу kubeadm, який використовує стару версію API і який має бути конвертований. Цей прапорець є обовʼязковим.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.20.6 -
Вивід стандартної конфігурації ініціалізації, яка може використовуватись у kubeadm init.
Опис
Ця команда виводить обʼєкти, такі як стандартну конфігурацію ініціалізації, які можуть бути використані у kubeadm init.
Зверніть увагу, що конфіденційні значення, такі як поля Bootstrap Token, замінюються значеннями-заповнювачами, такими як abcdef.0123456789abcdef", щоб пройти перевірку, але не виконувати реальні дії для створення токена.
kubeadm config print init-defaults [flags]
Параметри
--component-configs strings
Список обʼєктів API конфігурації компонентів через кому для виводу типових значень. Доступні значення: [KubeProxyConfiguration KubeletConfiguration]. Якщо цей прапорець не встановлено, конфігурації компонентів не буде надруковано.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.20.7 -
Вивід стандартної конфігурації для команди kubeadm join.
Опис
Ця команда виводить обʼєкти, такі як стандартна конфігурація команди join, яка використовується для 'kubeadm join'.
Зверніть увагу, що конфіденційні значення, такі як поля Bootstrap Token, замінюються значеннями-заповнювачами, такими як abcdef.0123456789abcdef", щоб пройти перевірку, але не виконувати реальні дії для створення токена.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.20.8 -
Виводить стандартну конфігурацію для команди kubeadm reset.
Опис
Ця команда виводить обʼєкти, такі як стандартна конфігурація команди reset, яка використовується для 'kubeadm reset'.
Зауважте, що конфіденційні значення, такі як поля Bootstrap Token, замінюються значеннями-заповнювачами, такими як "abcdef.0123456789abcdef", щоб пройти перевірку, але не виконувати реальні дії для створення токена.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.20.9 -
Виводить стандартну конфігурацію для оновлення, яка може бути використана для 'kubeadm upgrade'
Опис
Ця команда виводить обʼєкти, такі як стандартна конфігурація команди upgrade, яка використовується для 'kubeadm upgrade'.
Зверніть увагу, що конфіденційні значення, такі як поля Bootstrap Token, замінюються значеннями-заповнювачами, такими як abcdef.0123456789abcdef", щоб пройти перевірку, але не виконувати реальні дії для створення токена.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.20.10 -
Зчитує файл, що містить конфігураційний API kubeadm, і повідомляє про будь-які проблеми під час валідації
Опис
Ця команда дозволяє перевірити файл конфігурації API kubeadm та повідомити про будь-які попередження та помилки. Якщо помилок немає, статус виводу буде нульовим, в іншому випадку він буде ненульовим. Будь-які проблеми з розбором, такі як невідомі поля API, спричинять помилки. Невідомі версії API та поля з недійсними значеннями також спричинять помилки. Будь-які інші помилки або попередження можуть бути повідомлені залежно від вмісту вхідного файлу.
У цій версії kubeadm підтримуються наступні версії API:
kubeadm.k8s.io/v1beta4
kubeadm config validate [flags]
Параметри
--allow-experimental-api
Дозволяє валідацію експериментальних, невипущених API.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.21 -
Виводить список образів, які буде використовувати kubeadm. Файл конфігурації використовується у випадку налаштування будь-яких образів або сховищ образів
Опис
Виводить список образів, які буде використовувати kubeadm. Файл конфігурації використовується у випадку налаштування будь-яких образів або сховищ образів.
kubeadm config images list [flags]
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли у шаблоні відсутнє поле або ключ мапи. Застосовується тільки до форматів виводу golang і jsonpath.
--config string
Шлях до файлу конфігурації kubeadm.
-o, --experimental-output string Типово: "text"
Формат виводу. Один з: text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.
--feature-gates string
Набір пар ключ=значення, що описують функціональні можливості для різних функцій. Варіанти: EtcdLearnerMode=true|false (BETA — default=true) PublicKeysECDSA=true|false (DEPRECATED — default=false) RootlessControlPlane=true|false (ALPHA — default=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED — default=false) WaitForAllControlPlaneComponents=true|false (ALPHA — default=false)
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.22 -
Витягує образи які використовує kubeadm з реєстру
Опис
Витягує образи які використовує kubeadm з реєстру
kubeadm config images pull [flags]
Параметри
--config string
Шлях до файлу конфігурації kubeadm.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--feature-gates string
Набір пар ключ=значення, що описують ворота функцій для різних можливостей. Варіанти: EtcdLearnerMode=true|false (BETA — default=true) PublicKeysECDSA=true|false (DEPRECATED — default=false) RootlessControlPlane=true|false (ALPHA — default=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED — default=false) WaitForAllControlPlaneComponents=true|false (ALPHA — default=false)
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.23 -
Зчитує стару версію типів конфігураційного API kubeadm з файлу і виводе аналогічний обʼєкт конфігурації для нової версії
Опис
Ця команда дозволяє конвертувати обʼєкти конфігурації старих версій у найновішу підтримувану версію, локально у CLI інструменті, без жодних змін у кластері. У цій версії kubeadm підтримуються наступні версії API:
kubeadm.k8s.io/v1beta3
Крім того, kubeadm може записувати конфігурацію лише версії "kubeadm.k8s.io/v1beta3", але читати обидві версії. Отже, незалежно від того, яку версію ви передаєте параметру --old-config, API обʼєкт буде прочитано, десеріалізовано, встановлено стандартні значення, конвертовано, валідовано та повторно серіалізовано під час запису у stdout або --new-config, якщо вказано.
Іншими словами, вихід цієї команди є тим, що kubeadm фактично читав би внутрішньо, якщо ви надіслали б цей файл команді "kubeadm init".
kubeadm config migrate [flags]
Параметри
--allow-experimental-api
Дозволити міграцію на експериментальні, невипущені API
-h, --help
довідка migrate
--new-config string
Шлях до отриманого еквівалентного конфігураційного файлу kubeadm з використанням нової версії API. Необовʼязково, якщо не вказано, вивід буде надіслано у STDOUT.
--old-config string
Шлях до конфігураційного файлу kubeadm, який використовує стару версію API і який має бути конвертований. Цей прапорець є обовʼязковим.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.25 -
Вивід стандартної конфігурації ініціалізації, яка може використовуватись у kubeadm init.
Опис
Ця команда виводить обʼєкти, такі як стандартну конфігурацію ініціалізації, які можуть бути використані у kubeadm init.
Зверніть увагу, що конфіденційні значення, такі як поля Bootstrap Token, замінюються значеннями-заповнювачами, такими як abcdef.0123456789abcdef", щоб пройти перевірку, але не виконувати реальні дії для створення токена.
kubeadm config print init-defaults [flags]
Параметри
--component-configs strings
Список обʼєктів API конфігурації компонентів через кому для виводу типових значень. Доступні значення: [KubeProxyConfiguration KubeletConfiguration]. Якщо цей прапорець не встановлено, конфігурації компонентів не буде надруковано.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.26 -
Вивід стандартної конфігурації для команди kubeadm join.
Опис
Ця команда виводить обʼєкти, такі як стандартна конфігурація команди join, яка використовується для 'kubeadm join'.
Зверніть увагу, що конфіденційні значення, такі як поля Bootstrap Token, замінюються значеннями-заповнювачами, такими як abcdef.0123456789abcdef", щоб пройти перевірку, але не виконувати реальні дії для створення токена.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.27 -
Зчитує файл, що містить конфігураційний API kubeadm, і повідомляє про будь-які проблеми під час валідації
Опис
Ця команда дозволяє перевірити файл конфігурації API kubeadm та повідомити про будь-які попередження та помилки. Якщо помилок немає, статус виводу буде нульовим, в іншому випадку він буде ненульовим. Будь-які проблеми з розбором, такі як невідомі поля API, спричинять помилки. Невідомі версії API та поля з недійсними значеннями також спричинять помилки. Будь-які інші помилки або попередження можуть бути повідомлені залежно від вмісту вхідного файлу.
У цій версії kubeadm підтримуються наступні версії API:
kubeadm.k8s.io/v1beta3
kubeadm config validate [flags]
Параметри
--allow-experimental-api
Дозволяє валідацію експериментальних, невипущених API.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.28 -
Запустіть цю команду, щоб налаштувати панель управління Kubernetes
Опис
Запустіть цю команду, щоб налаштувати панель управління Kubernetes
Команда "init" виконує наступні етапи:
preflight Виконання перевірок перед запуском
certs Генерація сертифікатів
/ca Генерація самопідписаного CA Kubernetes для забезпечення ідентифікації інших компонентів Kubernetes
/apiserver Генерація сертифіката для обслуговування Kubernetes API
/apiserver-kubelet-client Генерація сертифіката для зʼєднання API server з kubelet
/front-proxy-ca Генерація самопідписаного CA для забезпечення ідентифікації front proxy
/front-proxy-client Генерація сертифіката для клієнта front proxy
/etcd-ca Генерація самопідписаного CA для забезпечення ідентифікації etcd
/etcd-server Генерація сертифіката для обслуговування etcd
/etcd-peer Генерація сертифіката для звʼязку між вузлами etcd
/etcd-healthcheck-client Генерація сертифіката для перевірки живучості etcd
/apiserver-etcd-client Генерація сертифіката, який використовується apiserver для доступу до etcd
/sa Генерація приватного ключа для підписання токенів службових облікових записів разом з його відкритим ключем
kubeconfig Генерація всіх kubeconfig файлів, необхідних для створення панелі управління, та kubeconfig файлу адміністратора
/admin Генерація kubeconfig файлу для використання адміністратором та самим kubeadm
/super-admin Генерація kubeconfig файлу для супер-адміністратора
/kubelet Генерація kubeconfig файлу для використання kubelet *лише* для завантаження кластера
/controller-manager Генерація kubeconfig файлу для використання контролер-менеджером
/scheduler Генерація kubeconfig файлу для використання планувальником
etcd Генерація маніфесту статичного Pod для локального etcd
/local Генерація маніфесту статичного Pod для локального, одновузлового локального etcd
control-plane Генерація всіх маніфестів статичних Podʼів, необхідних для створення панелі управління
/apiserver Генерація маніфесту статичного Pod для kube-apiserver
/controller-manager Генерація маніфесту статичного Pod для kube-controller-manager
/scheduler Генерація маніфесту статичного Pod для kube-scheduler
kubelet-start Запис налаштувань kubelet та (перезавантаження) kubelet
upload-config Завантаження конфігурації kubeadm та kubelet у ConfigMap
/kubeadm Завантаження конфігурації кластера kubeadm у ConfigMap
/kubelet Завантаження конфігурації компоненту kubelet у ConfigMap
upload-certs Завантаження сертифікатів у kubeadm-certs
mark-control-plane Маркування вузла як вузла панелі управління
bootstrap-token Генерація bootstrap токенів, які використовуються для приєднання вузла до кластера
kubelet-finalize Оновлення налаштувань, що стосуються kubelet, після TLS завантаження
/enable-client-cert-rotation Ввімкнути ротацію сертифікатів клієнтів kubelet
addon Встановлення необхідних надбудов для проходження тестів відповідності
/coredns Встановлення надбудови CoreDNS у Kubernetes кластер
/kube-proxy Встановлення надбудови kube-proxy у Kubernetes кластер
show-join-command Показати команду приєднання для вузлів керування та робочих вузлів
kubeadm init [прапорці]
Параметри
--apiserver-advertise-address string
IP адреса, за якою API Server буде оголошувати, що він слухає. Якщо не встановлено, буде використаний стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого буде привʼязаний API Server.
--apiserver-cert-extra-sans strings
Додаткові опціональні альтернативні імена субʼєкта (SANs) для використання в сертифікаті обслуговування API Server. Можуть бути як IP-адреси, так і DNS імена.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях для збереження та зберігання сертифікатів.
--certificate-key string
Ключ, що використовується для шифрування сертифікатів панелі управління у Secret kubeadm-certs. Ключ сертифіката — це шістнадцятковий рядок, який є ключем AES розміром 32 байти
--config string
Шлях до файлу конфігурації kubeadm.
--control-plane-endpoint string
Вкажіть стабільну IP адресу або DNS імʼя для панелі управління.
--cri-socket string
Шлях до сокета CRI для підключення. Якщо не заповнено, kubeadm спробує автоматично визначити це значення; використовуйте цю опцію тільки якщо у вас встановлено більше одного CRI або якщо у вас нестандартний сокет CRI.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
--feature-gates string
Набір пар ключ=значення, що описують функціональні можливості для різних функцій. Опції: ControlPlaneKubeletLocalMode=true|false (ALPHA - default=false) EtcdLearnerMode=true|false (default=true) NodeLocalCRISocket=true|false (ALPHA - default=false) PublicKeysECDSA=true|false (DEPRECATED - default=false) RootlessControlPlane=true|false (ALPHA - default=false) WaitForAllControlPlaneComponents=true|false (ALPHA - default=false)
-h, --help
довідка init
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки всіх перевірок.
Виберіть реєстр контейнерів для завантаження образів панелі управління
--kubernetes-version string Типово: "stable-1"
Виберіть конкретну версію Kubernetes для панелі управління.
--node-name string
Вкажіть імʼя вузла.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
--pod-network-cidr string
Вкажіть діапазон IP-адрес для мережі Podʼів. Якщо встановлено, панель управління автоматично виділить CIDR для кожного вузла.
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для VIP сервісів.
Токен для встановлення двосторонньої довіри між вузлами та вузлами панелі управління. Формат [a-z0-9]{6}.[a-z0-9]{16} — наприклад, abcdef.0123456789abcdef
--token-ttl duration Типово: 24h0m0s
Час перед автоматичним видаленням токена (наприклад, 1s, 2m, 3h). Якщо встановлено '0', токен ніколи не закінчиться
--upload-certs
Завантажити сертифікати панелі управління у Secret kubeadm-certs.
Параметри успадковані від батьківських команд
--rootfs string
[ЕКСПЕРИМЕНТАЛЬНО] Шлях до 'реальної' кореневої файлової системи хоста.
10.1.1.28.1 -
Використовуйте цю команду для виклику однієї фази робочого процесу init
Опис
Використовуйте цю команду для виклику однієї фази робочого процесу "init".
kubeadm init phase [flags]
Параметри
-h, --help
Довідка phase
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.2 -
Встановлює необхідні надбудови для проходження тестів на відповідність
Опис
Встановлює необхідні надбудови для проходження тестів на відповідність
kubeadm init phase addon [flags]
Параметри
-h, --help
Довідка addon
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.3 -
Встановлює всі надбудови
Опис
Вставляє всі надбудови.
kubeadm init phase addon all [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
--feature-gates string
Набір пар ключ=значення, що описують функціональні можливості для різних функцій. Опції: ControlPlaneKubeletLocalMode=true|false (ALPHA - default=false) EtcdLearnerMode=true|false (default=true) NodeLocalCRISocket=true|false (ALPHA - default=false) PublicKeysECDSA=true|false (DEPRECATED - default=false) RootlessControlPlane=true|false (ALPHA - default=false) WaitForAllControlPlaneComponents=true|false (ALPHA - default=false)
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибір конкретної версії Kubernetes для панелі управління.
--pod-network-cidr string
Вказує діапазон IP-адрес для мережі Pod. Якщо встановлено, панель управління автоматично виділить CIDR для кожного вузла.
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для сервісів VIP.
Використовуйте альтернативний домен для сервісів, наприклад, "myorg.internal".
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.4 -
Встановлює надбудову CoreDNS в кластер Kubernetes
Опис
Встановлює компоненти надбудови CoreDNS через сервер API. Зверніть увагу, що хоча DNS-сервер розгорнуто, його не буде заплановано, доки не буде встановлено CNI.
kubeadm init phase addon coredns [flags]
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
--feature-gates string
Набір пар ключ=значення, що описують функціональні можливості для різних функцій. Опції: ControlPlaneKubeletLocalMode=true|false (ALPHA - default=false) EtcdLearnerMode=true|false (default=true) NodeLocalCRISocket=true|false (ALPHA - default=false) PublicKeysECDSA=true|false (DEPRECATED - default=false) RootlessControlPlane=true|false (ALPHA - default=false) WaitForAllControlPlaneComponents=true|false (ALPHA - default=false)
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибір конкретної версії Kubernetes для панелі управління.
--print-manifest
Вивести маніфести надбудов в STDOUT замість їх встановлення
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для сервісів VIP.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--pod-network-cidr string
Вказує діапазон IP-адрес для мережі Pod. Якщо встановлено, панель управління автоматично виділить CIDR для кожного вузла.
--print-manifest
Вивести маніфести надбудов в STDOUT замість їх встановлення
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.6 -
Генерує токени bootstrap, які використовуються для приєднання вузла до кластера
Опис
Токени bootstrap використовуються для встановлення двосторонньої довіри між вузлом, що приєднується до кластера, і вузлом панелі управління.
Ця команда виконує всі налаштування, необхідні для роботи токенів bootstrap, а потім створює початковий токен.
kubeadm init phase bootstrap-token [flags]
Приклади
# Налаштувати всі конфігурації токенів Bootstrap та створити # початковий токен, функціонально еквівалентний до того, що # генерується командою kubeadm init.kubeadm init phase bootstrap-token
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.7 -
Генерує сертифікати
Опис
Генерує сертифікати
kubeadm init phase certs [flags]
Параметри
-h, --help
Довідка certs
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.8 -
Генерує всі сертифікати
Опис
Генерує всі сертифікати.
kubeadm init phase certs all [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-cert-extra-sans strings
Додаткові опціональні альтернативні імена субʼєкта (SANs) для використання в сертифікаті обслуговування API Server. Можуть бути як IP-адреси, так і DNS імена.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка all
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для сервісів VIP.
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка apiserver-kubelet-client
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.11 -
Генерує сертифікати для обслуговування API Kubernetes
Опис
Генерує сертифікати для обслуговування API Kubernetes та зберігає їх у файли apiserver.crt та apiserver.key.
Якщо обидва файли вже існують, kubeadm оминає крок створення і використовує наявні файли.
kubeadm init phase certs apiserver [flags]
Операції
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-cert-extra-sans strings
Додаткові опціональні альтернативні імена субʼєкта (SANs) для використання в сертифікаті обслуговування API Server. Можуть бути як IP-адреси, так і DNS імена.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка apiserver
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для сервісів VIP.
Використовуйте альтернативний домен для сервісів, наприклад, "myorg.internal".
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.12 -
Генерує самопідписаний центр сертифікації Kubernetes, щоб надати ідентифікатори для інших компонентів Kubernetes
Опис
Генерує самопідписаний центр сертифікації Kubernetes, щоб надати ідентифікатори для інших компонентів Kubernetes та зберігає їх у файлах ca.crt та ca.key.
Якщо обидва файли вже існують, kubeadm оминає крок створення і використовує наявні файли.
kubeadm init phase certs ca [flags]
Операції
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка ca
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.13 -
Генерує самопідписаний центр сертифікації для надання ідентифікаторів для etcd
Опис
Ця команда генерує самопідписаний центр сертифікації (CA) для надання ідентифікаторів для etcd, та зберігає їх у файлах etcd/ca.crt та etcd/ca.key.
Якщо обидва файли вже існують, kubeadm пропускає крок генерації та використовує наявні файли.
kubeadm init phase certs etcd-ca [flags]
Операції
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка etcd-ca
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.14 -
Генерує сертифікат для проб життєздатності для перевірки справності etcd
Опис
Генерує сертифікат для проб життєздатності для перевірки справності etcd, та зберігає його у файлах etcd/healthcheck-client.crt та etcd/healthcheck-client.key.
Якщо обидва файли вже існують, kubeadm пропускає крок генерації та використовує наявні файли.
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка front-proxy-client
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.19 -
Генерує приватний ключ для підпису токенів службових облікових записів, що дозволяє їм мати власні публічні ключі
Опис
Генерує приватний ключ для підпису токенів службових облікових записів, що дозволяє їм мати власні публічні ключі, та записує їх у файли sa.key та sa.pub.
Якщо обидва файли вже існують, kubeadm пропускає крок генерації та використовує наявні файли.
kubeadm init phase certs sa [flags]
Параметри
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--kubeconfig string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка sa
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.20 -
Генерує всі маніфести статичних Podʼів потрібні для створення панелі управління
Опис
Генерує всі маніфести статичних Podʼів потрібні для створення панелі управління
kubeadm init phase control-plane [flags]
Параметри
-h, --help
Довідка control-plane
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.21 -
Генерує всі фали маніфестів статичних Podʼів
Опис
Генерує всі файли маніфестів статичних Podʼів.
kubeadm init phase control-plane all [flags]
Приклади
# Генерує всі файли маніфестів статичних Podʼів для компонентів панелі управління,# функціонально еквівалентні до тих, що генеруються командою kubeadm init.kubeadm init phase control-plane all
# Генерує всі файли маніфестів статичних Podʼів з використанням опцій, отриманих з конфігураційного файлу.kubeadm init phase control-plane all --config config.yaml
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
--feature-gates string
Набір пар ключ=значення, що описують функціональні можливості для різних функцій. Варіанти: ControlPlaneKubeletLocalMode=true|false (ALPHA - default=false) EtcdLearnerMode=true|false (default=true) NodeLocalCRISocket=true|false (ALPHA - default=false) PublicKeysECDSA=true|false (DEPRECATED - default=false) RootlessControlPlane=true|false (ALPHA - default=false) WaitForAllControlPlaneComponents=true|false (ALPHA - default=false)
Вибрати реєстр контейнерів для завантаження образів панелі управління
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
--pod-network-cidr string
Вказує діапазон IP-адрес для мережі Pod. Якщо встановлено, панель управління автоматично виділить CIDR для кожного вузла.
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для сервісів VIP.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.22 -
Генерує маніфест статичного Podʼа для kube-apiserver
Опис
Генерує маніфест статичного Podʼа для kube-apiserver
Вибрати реєстр контейнерів для завантаження образів панелі управління
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для сервісів VIP.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.23 -
Генерує маніфест статичного Podʼа для kube-controller-manager
Опис
Генерує маніфест статичного Podʼа для kube-controller-manager
Вибрати реєстр контейнерів для завантаження образів панелі управління
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
--pod-network-cidr string
Вказує діапазон IP-адрес для мережі Pod. Якщо встановлено, панель управління автоматично виділить CIDR для кожного вузла.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.24 -
Генерує маніфест статичного Podʼа для kube-scheduler
Опис
Генерує маніфест статичного Podʼа для kube-scheduler
Вибрати реєстр контейнерів для завантаження образів панелі управління
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.25 -
Генерує файл маніфесту статичного Podʼа для екземпляра local etcd
Опис
Генерує файл маніфесту статичного Podʼа для екземпляра local etcd
kubeadm init phase etcd [flags]
Параметри
-h, --help
Довідка etcd
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.26 -
Генерує файл маніфесту статичного Podʼа для екземпляра local, одновузлового local etcd
Опис
Генерує файл маніфесту статичного Podʼа для екземпляра local, одновузлового local etcd
kubeadm init phase etcd local[flags]
Приклади
# Генерує файл маніфесту статичного Podʼа для etcd, функціонально# еквівалентного до того, що генерується командою kubeadm init.kubeadm init phase etcd local# Генерує файл маніфесту статичного Podʼа для etcd з використанням опцій# отриманих з файлу конфігурації.kubeadm init phase etcd local --config config.yaml
Параметри
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Вибрати реєстр контейнерів для завантаження образів панелі управління
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.27 -
Генерує всі файли kubeconfig, необхідні для встановлення панелі управління та файл kubeconfig адміністратора
Опис
Генерує всі файли kubeconfig, необхідні для встановлення панелі управління та файл kubeconfig адміністратора
kubeadm init phase kubeconfig [flags]
Параметри
-h, --help
Довідка kubeconfig
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.28 -
Генерує файл kubeconfig для використання адміністратором та для самого kubeadm
Опис
Ця команда генерує файл kubeconfig для використання адміністратором та для самого kubeadm й зберігає його у файл admin.conf.
kubeadm init phase kubeconfig admin [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка admin
--kubeconfig-dir string Типово: "/etc/kubernetes"
Шлях, де буде збережено файл kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.29 -
Генерує всі файли kubeconfig
Опис
Генерує всі файли kubeconfig.
kubeadm init phase kubeconfig all [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка all
--kubeconfig-dir string Типово: "/etc/kubernetes"
Шлях, де буде збережено файл kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--node-name string
Вкажіть імʼя вузла.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.30 -
Генерує файл kubeconfig для використання менеджером контролерів
Опис
Генерує файл kubeconfig для використання менеджером контролерів та зберігає його у файл controller-manager.conf.
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка controller-manager
--kubeconfig-dir string Типово: "/etc/kubernetes"
Шлях, де буде збережено файл kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.31 -
Генерує файл kubeconfig, для kubelet для використання лише для потреб початкового завантаження
Опис
Генерує файл kubeconfig, для kubelet для використання лише для потреб початкового завантаження та зберігає його у файлі kubelet.conf.
Зауважте, що цей файл має використовуватись лише для потреб початкового завантаження кластера. Після розгортання панелі управління, ви маєте запросити облікові дані для kubelet через CSR API.
kubeadm init phase kubeconfig kubelet [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка kubelet
--kubeconfig-dir string Типово: "/etc/kubernetes"
Шлях, де буде збережено файл kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--node-name string
Вкажіть імʼя вузла.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.32 -
Генерує файл kubeconfig для використання планувальником
Опис
Генерує файл kubeconfig для використання планувальником та зберігає його у файл scheduler.conf.
kubeadm init phase kubeconfig scheduler [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка scheduler
--kubeconfig-dir string Типово: "/etc/kubernetes"
Шлях, де буде збережено файл kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.33 -
Генерує файл kubeconfig для суперкористувача
Опис
Генерує файл kubeconfig для суперкористувача та зберігає його у файл super-admin.conf.
kubeadm init phase kubeconfig super-admin [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка super-admin
--kubeconfig-dir string Типово: "/etc/kubernetes"
Шлях, де буде збережено файл kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.34 -
Оновлює налаштування, що стосуються kubelet, після початкового завантаження TLS
Опис
Оновлює налаштування, що стосуються kubelet, після початкового завантаження TLS
kubeadm init phase kubelet-finalize [flags]
Приклади
# Оновлення налаштувань, що стосуються kubelet, після початкового завантаження TLS"kubeadm init phase kubelet-finalize all --config
Параметри
-h, --help
Довідка kubelet-finalize
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.35 -
Запускає всі фази kubelet-finalize
Опис
Запускає всі фази kubelet-finalize.
kubeadm init phase kubelet-finalize all [flags]
Приклади
# Оновлення налаштувань, що стосуються kubelet, після початкового завантаження TLSkubeadm init phase kubelet-finalize all --config
Параметри
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка all
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Тека, в якій знаходяться TLS-сертифікати. Якщо вказано --tls-cert-file та --tls-private-key-file, цей прапорець буде проігноровано.
--config string
Шлях до файлу конфігурації.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка enable-client-cert-rotation
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.37 -
Записує налаштування kubelet та (пере)запускаємо kubelet
Опис
Записує файл з KubeletConfiguration та файл оточення з налаштуваннями kubelet для конкретного вузла, а потім (пере)запустимо kubelet.
kubeadm init phase kubelet-start [flags]
Приклади
# Записує файл динамічного оточення з прапорами kubelet з файлу InitConfiguration.kubeadm init phase kubelet-start --config config.yaml
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Вибрати реєстр контейнерів для завантаження образів панелі управління
--node-name string
Вкажіть імʼя вузла.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.38 -
Позначає вузол як вузол панелі управління
Опис
Позначає вузол як вузол панелі управління.
kubeadm init phase mark-control-plane [flags]
Приклади
# Застосовує мітку та taint панелі управління до поточного вузла, функціонально еквівалентно до того, що виконується командою kubeadm init.kubeadm init phase mark-control-plane --config config.yaml
# Застосовує мітку та taint панелі управління до конкретного вузлаkubeadm init phase mark-control-plane --node-name myNode
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка mark-control-plane
--node-name string
Вкажіть імʼя вузла.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.39 -
Виконує передпольотні перевірки
Опис
Виконує передпольотні перевірки для kubeadm init.
kubeadm init phase preflight [flags]
Приклади
# Виконує передпольотні перевірки для kubeadm init з конфігураційним файлом config.yamlkubeadm init phase preflight --config config.yaml
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка preflight
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки всіх перевірок.
Вибрати реєстр контейнерів для завантаження образів панелі управління
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.40 -
Показує команду join для панелі управління та робочого вузла
Опис
Показує команду join для панелі управління та робочого вузла.
kubeadm init phase show-join-command [flags]
Параметри
-h, --help
Довідка show-join-command
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.41 -
Завантажує сертифікати до kubeadm-certs
Опис
Завантажує сертифікати панелі управління в Secret kubeadm-certs
kubeadm init phase upload-certs [flags]
Параметри
--certificate-key string
Ключ, що використовується для шифрування сертифікатів панелі управління у Secret kubeadm-certs. Ключ сертифіката — це шістнадцятковий рядок, який є ключем AES розміром 32 байти
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--skip-certificate-key-print
Не виводити ключ, який використовується для шифрування сертифікатів панелі управління.
--upload-certs
Завантажити сертифікати панелі управління у Secret kubeadm-certs.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.42 -
Завантажує конфігурації kubeadm та kubelet у ConfigMap
Опис
Завантажує конфігурації kubeadm та kubelet у ConfigMap
kubeadm init phase upload-config [flags]
Параметри
-h, --help
Довідка upload-config
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.43 -
Завантажуємо всю конфігурацію в ConfigMap
Опис
Завантажує всю конфігурацію в ConfigMap.
kubeadm init phase upload-config all [flags]
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.44 -
Завантажує kubeadm ClusterConfiguration у ConfigMap
Опис
Завантажує конфігурацію кластера kubeadm ClusterConfig до ConfigMap з назвою kubeadm-config у просторі імен kube-system. Це дозволить правильно конфігурувати компоненти системи та спростить роботу користувачів під час оновлення.
Альтернативно, ви можете використовувати kubeadm config.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.28.45 -
Завантажує налаштування компонентів kubelet у ConfigMap
Опис
Завантажуємо конфігурацію kubelet, видобуту з обʼєкта kubeadm InitConfiguration, до ConfigMap kubelet-config у кластері
kubeadm init phase upload-config kubelet [flags]
Приклади
# Завантаження конфігурації kubelet з файла конфігурації kubeadm у ConfigMap в кластеріkubeadm init phase upload-config kubelet --config kubeadm.yaml
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.29 -
Використовуйте цю команду для виклику однієї фази робочого процесу init
Опис
Використовуйте цю команду для виклику однієї фази робочого процесу init.
Параметри
-h, --help
Довідка phase
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.30 -
Встановлює необхідні надбудови для проходження тестів на відповідність
Опис
Ця команда не призначена для самостійного запуску. Дивіться список доступних субкоманд.
kubeadm init phase addon [flags]
Параметри
-h, --help
Довідка addon
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.31 -
Встановлює всі надбудови
Опис
Вставляє всі надбудови.
kubeadm init phase addon all [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
--feature-gates string
Набір пар ключ=значення, що описують функціональні можливості для різних функцій. Опції: EtcdLearnerMode=true|false (BETA — default=true) PublicKeysECDSA=true|false (DEPRECATED — default=false) RootlessControlPlane=true|false (ALPHA — default=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED — default=false) WaitForAllControlPlaneComponents=true|false (ALPHA — default=false)
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибір конкретної версії Kubernetes для панелі управління.
--pod-network-cidr string
Вказує діапазон IP-адрес для мережі Pod. Якщо встановлено, панель управління автоматично виділить CIDR для кожного вузла.
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для сервісів VIP.
Використовуйте альтернативний домен для сервісів, наприклад, "myorg.internal".
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.32 -
Встановлює надбудову CoreDNS в кластер Kubernetes
Опис
Встановлює компоненти надбудови CoreDNS через сервер API. Зверніть увагу, що хоча DNS-сервер розгорнуто, його не буде заплановано, доки не буде встановлено CNI.
kubeadm init phase addon coredns [flags]
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
--feature-gates string
Набір пар ключ=значення, що описують функціональні можливості для різних функцій. Опції: EtcdLearnerMode=true|false (BETA — default=true) PublicKeysECDSA=true|false (DEPRECATED — default=false) RootlessControlPlane=true|false (ALPHA — default=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED — default=false) WaitForAllControlPlaneComponents=true|false (ALPHA — default=false)
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибір конкретної версії Kubernetes для панелі управління.
--print-manifest
Вивести маніфести надбудов в STDOUT замість їх встановлення
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для сервісів VIP.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--pod-network-cidr string
Вказує діапазон IP-адрес для мережі Pod. Якщо встановлено, панель управління автоматично виділить CIDR для кожного вузла.
--print-manifest
Вивести маніфести надбудов в STDOUT замість їх встановлення
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.34 -
Генерує токени bootstrap, які використовуються для приєднання вузла до кластера
Опис
Токени bootstrap використовуються для встановлення двосторонньої довіри між вузлом, що приєднується до кластера, і вузлом панелі управління.
Ця команда виконує всі налаштування, необхідні для роботи токенів bootstrap, а потім створює початковий токен.
kubeadm init phase bootstrap-token [flags]
Приклади
# Налаштувати всі конфігурації токенів Bootstrap та створити # початковий токен, функціонально еквівалентний до того, що # генерується командою kubeadm init.kubeadm init phase bootstrap-token
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.35 -
Генерує сертифікати
Опис
Ця команда не призначена для самостійного запуску. Дивіться список доступних підкоманд.
kubeadm init phase certs [flags]
Параметри
-h, --help
Довідка certs
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.36 -
Генерує всі сертифікати
Опис
Генерує всі сертифікати.
kubeadm init phase certs all [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-cert-extra-sans strings
Додаткові опціональні альтернативні імена субʼєкта (SANs) для використання в сертифікаті обслуговування API Server. Можуть бути як IP-адреси, так і DNS імена.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка all
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для сервісів VIP.
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка apiserver-kubelet-client
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.39 -
Генерує сертифікати для обслуговування API Kubernetes
Опис
Генерує сертифікати для обслуговування API Kubernetes та зберігає їх у файли apiserver.crt та apiserver.key.
Якщо обидва файли вже існують, kubeadm оминає крок створення і використовує наявні файли.
kubeadm init phase certs apiserver [flags]
Операції
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-cert-extra-sans strings
Додаткові опціональні альтернативні імена субʼєкта (SANs) для використання в сертифікаті обслуговування API Server. Можуть бути як IP-адреси, так і DNS імена.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка apiserver
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для сервісів VIP.
Використовуйте альтернативний домен для сервісів, наприклад, "myorg.internal".
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.40 -
Генерує самопідписаний центр сертифікації Kubernetes, щоб надати ідентифікатори для інших компонентів Kubernetes
Опис
Генерує самопідписаний центр сертифікації Kubernetes, щоб надати ідентифікатори для інших компонентів Kubernetes та зберігає їх у файлах ca.crt та ca.key.
Якщо обидва файли вже існують, kubeadm оминає крок створення і використовує наявні файли.
kubeadm init phase certs ca [flags]
Операції
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка ca
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.41 -
Генерує самопідписаний центр сертифікації для надання ідентифікаторів для etcd
Опис
Ця команда генерує самопідписаний центр сертифікації (CA) для надання ідентифікаторів для etcd, та зберігає їх у файлах etcd/ca.crt та etcd/ca.key.
Якщо обидва файли вже існують, kubeadm пропускає крок генерації та використовує наявні файли.
kubeadm init phase certs etcd-ca [flags]
Операції
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка etcd-ca
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.42 -
Генерує сертифікат для проб життєздатності для перевірки справності etcd
Опис
Генерує сертифікат для проб життєздатності для перевірки справності etcd, та зберігає його у файлах etcd/healthcheck-client.crt та etcd/healthcheck-client.key.
Якщо обидва файли вже існують, kubeadm пропускає крок генерації та використовує наявні файли.
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка front-proxy-client
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.47 -
Генерує приватний ключ для підпису токенів службових облікових записів, що дозволяє їм мати власні публічні ключі
Опис
Генерує приватний ключ для підпису токенів службових облікових записів, що дозволяє їм мати власні публічні ключі, та записує їх у файли sa.key та sa.pub.
Якщо обидва файли вже існують, kubeadm пропускає крок генерації та використовує наявні файли.
kubeadm init phase certs sa [flags]
Параметри
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
-h, --help
Довідка sa
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.48 -
Генерує всі маніфести статичних Podʼів потрібні для створення панелі управління
Опис
Ця команда не призначена для самостійного запуску. Дивіться список доступних субкоманд.
kubeadm init phase control-plane [flags]
Параметри
-h, --help
Довідка control-plane
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.49 -
Генерує всі фали маніфестів статичних Podʼів
Опис
Генерує всі файли маніфестів статичних Podʼів.
kubeadm init phase control-plane all [flags]
Приклади
# Генерує всі файли маніфестів статичних Podʼів для компонентів панелі управління,# функціонально еквівалентні до тих, що генеруються командою kubeadm init.kubeadm init phase control-plane all
# Генерує всі файли маніфестів статичних Podʼів з використанням опцій, отриманих з конфігураційного файлу.kubeadm init phase control-plane all --config config.yaml
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
Вибрати реєстр контейнерів для завантаження образів панелі управління
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
--pod-network-cidr string
Вказує діапазон IP-адрес для мережі Pod. Якщо встановлено, панель управління автоматично виділить CIDR для кожного вузла.
Вибрати реєстр контейнерів для завантаження образів панелі управління
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для сервісів VIP.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.51 -
Генерує маніфест статичного Podʼа для kube-controller-manager
Опис
Генерує маніфест статичного Podʼа для kube-controller-manager
Вибрати реєстр контейнерів для завантаження образів панелі управління
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
--pod-network-cidr string
Вказує діапазон IP-адрес для мережі Pod. Якщо встановлено, панель управління автоматично виділить CIDR для кожного вузла.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.52 -
Генерує маніфест статичного Podʼа для kube-scheduler
Опис
Генерує маніфест статичного Podʼа для kube-scheduler
Вибрати реєстр контейнерів для завантаження образів панелі управління
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Набір додаткових параметрів для передачі до Scheduler або для перевизначення стандартних у форматі <імʼя_параметра>=<значення>
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.53 -
Генерує файл маніфесту статичного Podʼа для екземпляра local etcd
Опис
Ця команда не призначена для самостійного запуску. Дивіться список доступних субкоманд.
kubeadm init phase etcd [flags]
Параметри
-h, --help
Довідка etcd
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.54 -
Генерує файл маніфесту статичного Podʼа для екземпляра local, одновузлового local etcd
Опис
Генерує файл маніфесту статичного Podʼа для екземпляра local, одновузлового local etcd
kubeadm init phase etcd local[flags]
Приклади
# Генерує файл маніфесту статичного Podʼа для etcd, функціонально# еквівалентного до того, що генерується командою kubeadm init.kubeadm init phase etcd local# Генерує файл маніфесту статичного Podʼа для etcd з використанням опцій# отриманих з файлу конфігурації.kubeadm init phase etcd local --config config.yaml
Параметри
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Вибрати реєстр контейнерів для завантаження образів панелі управління
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.55 -
Генерує всі файли kubeconfig, необхідні для встановлення панелі управління та файл kubeconfig адміністратора
Опис
Ця команда не призначена для самостійного запуску. Дивіться список доступних субкоманд.
kubeadm init phase kubeconfig [flags]
Параметри
-h, --help
Довідка kubeconfig
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.56 -
Генерує файл kubeconfig для використання адміністратором та для самого kubeadm
Опис
Ця команда генерує файл kubeconfig для використання адміністратором та для самого kubeadm й зберігає його у файл admin.conf.
kubeadm init phase kubeconfig admin [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка admin
--kubeconfig-dir string Типово: "/etc/kubernetes"
Шлях, де буде збережено файл kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.57 -
Генерує всі файли kubeconfig
Опис
Генерує всі файли kubeconfig.
kubeadm init phase kubeconfig all [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка all
--kubeconfig-dir string Типово: "/etc/kubernetes"
Шлях, де буде збережено файл kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--node-name string
Вкажіть імʼя вузла.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.58 -
Генерує файл kubeconfig для використання менеджером контролерів
Опис
Генерує файл kubeconfig для використання менеджером контролерів та зберігає його у файл controller-manager.conf.
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка controller-manager
--kubeconfig-dir string Типово: "/etc/kubernetes"
Шлях, де буде збережено файл kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.59 -
Генерує файл kubeconfig, для kubelet для використання лише для потреб початкового завантаження
Опис
Генерує файл kubeconfig, для kubelet для використання лише для потреб початкового завантаження та зберігає його у файлі kubelet.conf.
Зауважте, що цей файл має використовуватись лише для потреб початкового завантаження кластера. Після розгортання панелі управління, ви маєте запросити облікові дані для kubelet через CSR API.
kubeadm init phase kubeconfig kubelet [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка kubelet
--kubeconfig-dir string Типово: "/etc/kubernetes"
Шлях, де буде збережено файл kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--node-name string
Вкажіть імʼя вузла.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.60 -
Генерує файл kubeconfig для використання планувальником
Опис
Генерує файл kubeconfig для використання планувальником та зберігає його у файл scheduler.conf.
kubeadm init phase kubeconfig scheduler [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка scheduler
--kubeconfig-dir string Типово: "/etc/kubernetes"
Шлях, де буде збережено файл kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.61 -
Генерує файл kubeconfig для суперкористувача
Опис
Генерує файл kubeconfig для суперкористувача та зберігає його у файл super-admin.conf.
kubeadm init phase kubeconfig super-admin [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка super-admin
--kubeconfig-dir string Типово: "/etc/kubernetes"
Шлях, де буде збережено файл kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.62 -
Оновлює налаштування, що стосуються kubelet, після початкового завантаження TLS
Опис
Оновлює налаштування, що стосуються kubelet, після початкового завантаження TLS
kubeadm init phase kubelet-finalize [flags]
Приклади
# Оновлення налаштувань, що стосуються kubelet, після початкового завантаження TLS"kubeadm init phase kubelet-finalize all --config
Параметри
-h, --help
Довідка kubelet-finalize
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.63 -
Запускає всі фази kubelet-finalize
Опис
Запускає всі фази kubelet-finalize.
kubeadm init phase kubelet-finalize all [flags]
Приклади
# Оновлення налаштувань, що стосуються kubelet, після початкового завантаження TLSkubeadm init phase kubelet-finalize all --config
Параметри
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка all
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка experimental-cert-rotation
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.65 -
Записує налаштування kubelet та (пере)запускаємо kubelet
Опис
Записує файл з KubeletConfiguration та файл оточення з налаштуваннями kubelet для конкретного вузла, а потім (пере)запустимо kubelet.
kubeadm init phase kubelet-start [flags]
Приклади
# Записує файл динамічного оточення з прапорами kubelet з файлу InitConfiguration.kubeadm init phase kubelet-start --config config.yaml
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Вибрати реєстр контейнерів для завантаження образів панелі управління
--node-name string
Вкажіть імʼя вузла.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.66 -
Позначає вузол як вузол панелі управління
Опис
Позначає вузол як вузол панелі управління.
kubeadm init phase mark-control-plane [flags]
Приклади
# Застосовує мітку та taint панелі управління до поточного вузла, функціонально еквівалентно до того, що виконується командою kubeadm init.kubeadm init phase mark-control-plane --config config.yaml
# Застосовує мітку та taint панелі управління до конкретного вузлаkubeadm init phase mark-control-plane --node-name myNode
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка mark-control-plane
--node-name string
Вкажіть імʼя вузла.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.67 -
Виконує передпольотні перевірки
Опис
Виконує передпольотні перевірки для kubeadm init.
kubeadm init phase preflight [flags]
Приклади
# Виконує передпольотні перевірки для kubeadm init з конфігураційним файлом config.yamlkubeadm init phase preflight --config config.yaml
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка preflight
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки всіх перевірок.
Вибрати реєстр контейнерів для завантаження образів панелі управління
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.68 -
Показує команду join для панелі управління та робочого вузла
Опис
Показує команду join для панелі управління та робочого вузла.
kubeadm init phase show-join-command [flags]
Параметри
-h, --help
Довідка show-join-command
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.69 -
Завантажує сертифікати до kubeadm-certs
Опис
Завантажує сертифікати панелі управління в Secret kubeadm-certs
kubeadm init phase upload-certs [flags]
Параметри
--certificate-key string
Ключ, що використовується для шифрування сертифікатів панелі управління у Secret kubeadm-certs. Ключ сертифіката — це шістнадцятковий рядок, який є ключем AES розміром 32 байти
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--skip-certificate-key-print
Не виводити ключ, який використовується для шифрування сертифікатів панелі управління.
--upload-certs
Завантажити сертифікати панелі управління у Secret kubeadm-certs.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.70 -
Завантажує конфігурації kubeadm та kubelet у ConfigMap
Опис
Ця команда не призначена для самостійного запуску. Дивіться список доступних субкоманд.
kubeadm init phase upload-config [flags]
Параметри
-h, --help
Довідка upload-config
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.71 -
Завантажуємо всю конфігурацію в ConfigMap
Опис
Завантажує всю конфігурацію в ConfigMap.
kubeadm init phase upload-config all [flags]
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.72 -
Завантажує kubeadm ClusterConfiguration у ConfigMap
Опис
Завантажує конфігурацію кластера kubeadm ClusterConfig до ConfigMap з назвою kubeadm-config у просторі імен kube-system. Це дозволить правильно конфігурувати компоненти системи та спростить роботу користувачів під час оновлення.
Альтернативно, ви можете використовувати kubeadm config.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.73 -
Завантажує налаштування компонентів kubelet у ConfigMap
Опис
Завантажуємо конфігурацію kubelet, видобуту з обʼєкта kubeadm InitConfiguration, до ConfigMap kubelet-config у кластері
kubeadm init phase upload-config kubelet [flags]
Приклади
# Завантаження конфігурації kubelet з файла конфігурації kubeadm у ConfigMap в кластеріkubeadm init phase upload-config kubelet --config kubeadm.yaml
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.74 -
Запустіть цю команду на будь-якому компʼютері, який ви хочете приєднати до існуючого кластера
Опис
Під час приєднання до ініціалізованого кластера за допомогою kubeadm, необхідно встановити двосторонню довіру. Цей процес розділяється на два етапи: виявлення (щоб Node довіряв Панелі Управління Kubernetes) та TLS завантаження (щоб Панель управління Kubernetes довіряла Node).
Існує дві основні схеми для виявлення. Перша — використовувати спільний токен разом з IP-адресою сервера API. Друга — надати файл, який є підмножиною стандартного файлу kubeconfig. Файл discovery/kubeconfig підтримує токен, втулки автентифікації client-go ("exec"), "tokenFile" та "authProvider". Цей файл може бути локальним або завантаженим через URL HTTPS. Форми приєднання є:
Можна використовувати лише одну форму. Якщо інформація для виявлення завантажується з URL, обовʼязково використовувати HTTPS. У цьому випадку для перевірки зʼєднання використовується встановлений на хості набір сертифікатів CA.
Якщо ви використовуєте спільний токен для виявлення, слід також передати прапорець --discovery-token-ca-cert-hash для перевірки публічного ключа кореневого центру сертифікації (CA), який представлений Панеллю Управління Kubernetes. Значення цього прапорця визначається як "<тип-хешу>:<шестнадцяткове-кодоване-значення>", де підтримуваний тип хешу — "sha256". Хеш обчислюється по байтах обʼєкта Subject Public Key Info (SPKI) (як в RFC7469). Це значення доступне у вихідних даних "kubeadm init" або може бути обчислене за допомогою стандартних інструментів. Прапорець --discovery-token-ca-cert-hash може бути повторений кілька разів, щоб дозволити використання більше одного публічного ключа.
Якщо ви не можете знати хеш публічного ключа CA заздалегідь, ви можете передати прапорець --discovery-token-unsafe-skip-ca-verification для вимкнення цієї перевірки. Це послаблює модель безпеки kubeadm, оскільки інші вузли можуть потенційно видавати себе за Панель Управління Kubernetes.
Механізм TLS завантаження також керується через спільний токен. Це використовується для тимчасової автентифікації в Панелі Управління Kubernetes для подання запиту на підписання сертифіката (CSR) для локально створеної пари ключів. Типово, kubeadm налаштує Панель Управління Kubernetes автоматично схвалювати ці запити на підписання. Цей токен передається за допомогою прапорця --tls-bootstrap-token abcdef.1234567890abcdef.
Часто той самий токен використовується для обох частин. У цьому випадку прапорець --token можна використовувати замість окремого зазначення кожного токена.
Команда "join [api-server-endpoint]" виконує наступні фази:
preflight Виконати передстартові перевірки для приєднання
control-plane-prepare Підготувати машину для обслуговування панелі управління
/download-certs Завантажити сертифікати, спільні для вузлів панелі управління, з Secret kubeadm-certs
/certs Створити сертифікати для нових компонентів панелі управління
/kubeconfig Створити kubeconfig для нових компонентів панелі управління
/control-plane Створити маніфести для нових компонентів панелі управління
kubelet-start Записати налаштування kubelet, сертифікати та (перезавантажити) kubelet
control-plane-join Приєднати машину як екземпляр панелі управління
/etcd Додати нового локального члена etcd
/mark-control-plane Позначити вузол як панель управління
wait-control-plane Експериментально: чекати запуску панелі управління
kubeadm join [api-server-endpoint][flags]
Параметри
--apiserver-advertise-address string
Якщо вузол має хостити новий екземпляр панелі управління, IP-адреса, яку сервер API буде оголошувати як ту, на якій він слухає. Якщо не встановлено, буде використовуватися стандартний інтерфейс.
--apiserver-bind-port int32 Стандартно: 6443
Якщо вузол має хостити новий екземпляр панелі управління, порт, до якого буде привʼязаний сервер API.
--certificate-key string
Використовуйте цей ключ для розшифрування секретів сертифікатів, завантажених за допомогою init. Ключ сертифіката — це шестнадцятковий закодований рядок, який є AES ключем розміром 32 байти.
--config string
Шлях до файлу конфігурації kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--cri-socket string
Шлях до CRI сокета для підключення. Якщо не встановлено, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр, лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--discovery-file string
Для виявлення на основі файлу, файл або URL, з якого буде завантажена інформація про кластер.
--discovery-token string
Для виявлення на основі токена, токен, який використовується для перевірки інформації про кластер, отриманої з сервера API.
--discovery-token-ca-cert-hash strings
Для виявлення на основі токена, перевірити, що публічний ключ кореневого центру сертифікації відповідає цьому хешу (формат: "<тип>:<значення>").
--discovery-token-unsafe-skip-ca-verification
Для виявлення на основі токена, дозволити приєднання без закріплення --discovery-token-ca-cert-hash.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка join
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки від усіх перевірок.
--node-name string
Вказати імʼя вузла.
--patches string
Шлях до теки, що містить файли з назвами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json" і відповідають форматам патчів, підтримуваних kubectl. Типовий "patchtype" — "strategic". "extension" має бути або "json", або "yaml". "suffix" — це необовʼязковий рядок, який можна використовувати для визначення, які патчі застосовуються першими в алфавітно-числовому порядку.
--skip-phases strings
Список фаз, які потрібно пропустити
--tls-bootstrap-token string
Вкажіть токен, який використовується для тимчасової автентифікації з Панеллю Управління Kubernetes під час приєднання вузла.
--token string
Використовуйте цей токен для discovery-token та tls-bootstrap-token, коли ці значення не вказані окремо.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.74.1 -
Використовуйте цю команду для виклику однієї фази робочого процесу "join"
Опис
Використовуйте цю команду для виклику однієї фази робочого процесу "join"
kubeadm join phase [flags]
Параметри
-h, --help
Довідка phase
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.74.2 -
Приєднує машину до екземпляра панелі управління
Опис
Приєднує машину до екземпляра панелі управління.
kubeadm join phase control-plane-join [flags]
Приклади
# Приєднує машину до екземпляра панелі управлінняkubeadm join phase control-plane-join all
Параметри
-h, --help
Довідка control-plane-join
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.74.3 -
Приєднує машину до екземпляру панелі управління
Опис
Приєднує машину до екземпляру панелі управління.
kubeadm join phase control-plane-join all [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка all
--node-name string
Вкажіть імʼя вузла.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка etcd
--node-name string
Вкажіть імʼя вузла.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Створити новий екземпляр панелі управління на цьому вузлі
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка mark-control-plane
--node-name string
Вкажіть імʼя вузла.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.74.6 -
Готує машину до обслуговування панелі управління
Опис
Готує машину до обслуговування панелі управління.
kubeadm join phase control-plane-prepare [flags]
Приклади
# Готує машину до обслуговування панелі управлінняkubeadm join phase control-plane-prepare all
Параметри
-h, --help
Довідка control-plane-prepare
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.74.7 -
Готує машину для роботи як панелі управління
Опис
Готує машину для роботи як панелі управління.
kubeadm join phase control-plane-prepare all [api-server-endpoint][flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--certificate-key string
Ключ, що використовується для шифрування сертифікатів панелі управління у Secret kubeadm-certs. Ключ сертифіката — це шістнадцятковий рядок, який є ключем AES розміром 32 байти
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--discovery-file string
Для виявлення на основі файлу, файл або URL, з якого буде завантажена інформація про кластер.
--discovery-token string
Для виявлення на основі токена, токен, який використовується для перевірки інформації про кластер, отриманої з сервера API.
--discovery-token-ca-cert-hash strings
Для виявлення на основі токена, перевірити, що публічний ключ кореневого центру сертифікації відповідає цьому хешу (формат: "<тип>:<значення>").
--discovery-token-unsafe-skip-ca-verification
Для виявлення на основі токена, дозволити приєднання без закріплення --discovery-token-ca-cert-hash.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка all
--node-name string
Вкажіть імʼя вузла.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
--tls-bootstrap-token string
Вкажіть токен, який використовується для тимчасової автентифікації з Панеллю Управління Kubernetes під час приєднання вузла.
--token string
Використовуйте цей токен для discovery-token та tls-bootstrap-token, коли ці значення не вказані окремо.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.74.8 -
Генерує сертифікати для нових компенонетів панелі управління
Опис
Генерує сертифікати для нових компонентів панелі управління.
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка control-plane
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.74.10 -
Завантажує сертифікати, спільні для вузлів панелі управління, з архіву kubeadm-certs Secret
Опис
Завантажує сертифікати, спільні для вузлів панелі управління, з архіву kubeadm-certs Secret
Ключ, що використовується для шифрування сертифікатів панелі управління у Secret kubeadm-certs. Ключ сертифіката — це шістнадцятковий рядок, який є ключем AES розміром 32 байти
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--discovery-file string
Для виявлення на основі файлу, файл або URL, з якого буде завантажена інформація про кластер.
--discovery-token string
Для виявлення на основі токена, токен, який використовується для перевірки інформації про кластер, отриманої з сервера API.
--discovery-token-ca-cert-hash strings
Для виявлення на основі токена, перевірити, що публічний ключ кореневого центру сертифікації відповідає цьому хешу (формат: "<тип>:<значення>").
--discovery-token-unsafe-skip-ca-verification
Для виявлення на основі токена, дозволити приєднання без закріплення --discovery-token-ca-cert-hash.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка download-certs
--tls-bootstrap-token string
Вкажіть токен, який використовується для тимчасової автентифікації з Панеллю Управління Kubernetes під час приєднання вузла.
--token string
Використовуйте цей токен для discovery-token та tls-bootstrap-token, коли ці значення не вказані окремо.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.74.11 -
Генерує kubeconfig для нових компонентів панелі управління
Опис
Генерує kubeconfig для нових компонентів панелі управління, які будуть додані до кластера.
Ключ, що використовується для шифрування сертифікатів панелі управління у Secret kubeadm-certs. Ключ сертифіката — це шістнадцятковий рядок, який є ключем AES розміром 32 байти
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--discovery-file string
Для виявлення на основі файлу, файл або URL, з якого буде завантажена інформація про кластер.
--discovery-token string
Для виявлення на основі токена, токен, який використовується для перевірки інформації про кластер, отриманої з сервера API.
--discovery-token-ca-cert-hash strings
Для виявлення на основі токена, перевірити, що публічний ключ кореневого центру сертифікації відповідає цьому хешу (формат: "<тип>:<значення>").
--discovery-token-unsafe-skip-ca-verification
Для виявлення на основі токена, дозволити приєднання без закріплення --discovery-token-ca-cert-hash.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка kubeconfig
--tls-bootstrap-token string
Вкажіть токен, який використовується для тимчасової автентифікації з Панеллю Управління Kubernetes під час приєднання вузла.
--token string
Використовуйте цей токен для discovery-token та tls-bootstrap-token, коли ці значення не вказані окремо.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.74.12 -
Записує налаштування kubelet, сертифікати та (пере)запускає kubelet
Опис
Записує файл з KubeletConfiguration та файл оточення з налаштуваннями kubelet для конкретного вузла, а потім (пере)запускає kubelet.
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--discovery-file string
Для виявлення на основі файлу, файл або URL, з якого буде завантажена інформація про кластер.
--discovery-token string
Для виявлення на основі токена, токен, який використовується для перевірки інформації про кластер, отриманої з сервера API.
--discovery-token-ca-cert-hash strings
Для виявлення на основі токена, перевірити, що публічний ключ кореневого центру сертифікації відповідає цьому хешу (формат: "<тип>:<значення>").
tr>
--discovery-token-unsafe-skip-ca-verification
Для виявлення на основі токена, дозволити приєднання без закріплення --discovery-token-ca-cert-hash.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка kubelet-start
--node-name string
Вкажіть імʼя вузла.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
--tls-bootstrap-token string
Вкажіть токен, який використовується для тимчасової автентифікації з Панеллю Управління Kubernetes під час приєднання вузла.
--token string
Використовуйте цей токен для discovery-token та tls-bootstrap-token, коли ці значення не вказані окремо.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
# Виконує передполітні перевірки для kubeadm joinkubeadm join phase preflight --config kubeadm-config.yaml
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--certificate-key string
Ключ, що використовується для шифрування сертифікатів панелі управління у Secret kubeadm-certs. Ключ сертифіката — це шістнадцятковий рядок, який є ключем AES розміром 32 байти
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--discovery-file string
Для виявлення на основі файлу, файл або URL, з якого буде завантажена інформація про кластер.
--discovery-token string
Для виявлення на основі токена, токен, який використовується для перевірки інформації про кластер, отриманої з сервера API.
--discovery-token-ca-cert-hash strings
Для виявлення на основі токена, перевірити, що публічний ключ кореневого центру сертифікації відповідає цьому хешу (формат: "<тип>:<значення>").
--discovery-token-unsafe-skip-ca-verification
Для виявлення на основі токена, дозволити приєднання без закріплення --discovery-token-ca-cert-hash.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка preflight
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки від усіх перевірок.
--node-name string
Вкажіть імʼя вузла.
--tls-bootstrap-token string
Вкажіть токен, який використовується для тимчасової автентифікації з Панеллю Управління Kubernetes під час приєднання вузла.
--token string
Використовуйте цей токен для discovery-token та tls-bootstrap-token, коли ці значення не вказані окремо.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.74.14 -
[EXPERIMENTAL] Очікує запуску панелі управління
Опис
[EXPERIMENTAL] Очікує запуску панелі управління
kubeadm join phase wait-control-plane [flags]
Параметри
-h, --help
Довідка wait-control-plane
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.75 -
Використовуйте цю команду для виклику однієї фази робочого процесу join
Опис
Використовуйте цю команду для виклику однієї фази робочого процесу join
Параметри
-h, --help
Довідка phase
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.76 -
Приєднує машину до екземпляра панелі управління
Опис
Приєднує машину до екземпляра панелі управління.
kubeadm join phase control-plane-join [flags]
Приклади
# Приєднує машину до екземпляра панелі управлінняkubeadm join phase control-plane-join all
Параметри
-h, --help
Довідка control-plane-join
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.77 -
Приєднує машину до екземпляру панелі управління
Опис
Приєднує машину до екземпляру панелі управління.
kubeadm join phase control-plane-join all [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка all
--node-name string
Вкажіть імʼя вузла.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка etcd
--node-name string
Вкажіть імʼя вузла.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
-h, --help
Довідка update-status
--node-name string
Вкажіть імʼя вузла.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.81 -
Готує машину до обслуговування панелі управління
Опис
Готує машину до обслуговування панелі управління.
kubeadm join phase control-plane-prepare [flags]
Приклади
# Готує машину до обслуговування панелі управлінняkubeadm join phase control-plane-prepare all
Параметри
-h, --help
Довідка control-plane-prepare
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.82 -
Готує машину для роботи як панелі управління
Опис
Готує машину для роботи як панелі управління.
kubeadm join phase control-plane-prepare all [api-server-endpoint][flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--certificate-key string
Ключ, що використовується для шифрування сертифікатів панелі управління у Secret kubeadm-certs. Ключ сертифіката — це шістнадцятковий рядок, який є ключем AES розміром 32 байти
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--discovery-file string
Для виявлення на основі файлу, файл або URL, з якого буде завантажена інформація про кластер.
--discovery-token string
Для виявлення на основі токена, токен, який використовується для перевірки інформації про кластер, отриманої з сервера API.
--discovery-token-ca-cert-hash strings
Для виявлення на основі токена, перевірити, що публічний ключ кореневого центру сертифікації відповідає цьому хешу (формат: "<тип>:<значення>").
--discovery-token-unsafe-skip-ca-verification
Для виявлення на основі токена, дозволити приєднання без закріплення --discovery-token-ca-cert-hash.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка all
--node-name string
Вкажіть імʼя вузла.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
--tls-bootstrap-token string
Вкажіть токен, який використовується для тимчасової автентифікації з Панеллю Управління Kubernetes під час приєднання вузла.
--token string
Використовуйте цей токен для discovery-token та tls-bootstrap-token, коли ці значення не вказані окремо.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.83 -
Генерує сертифікати для нових компенонетів панелі управління
Опис
Генерує сертифікати для нових компонентів панелі управління.
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка control-plane
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.85 -
[EXPERIMENTAL] Завантажує сертифікати, спільні для вузлів панелі управління, з архіву kubeadm-certs Secret
Опис
[EXPERIMENTAL] Завантажує сертифікати, спільні для вузлів панелі управління, з архіву kubeadm-certs Secret
Ключ, що використовується для шифрування сертифікатів панелі управління у Secret kubeadm-certs. Ключ сертифіката — це шістнадцятковий рядок, який є ключем AES розміром 32 байти
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--discovery-file string
Для виявлення на основі файлу, файл або URL, з якого буде завантажена інформація про кластер.
--discovery-token string
Для виявлення на основі токена, токен, який використовується для перевірки інформації про кластер, отриманої з сервера API.
--discovery-token-ca-cert-hash strings
Для виявлення на основі токена, перевірити, що публічний ключ кореневого центру сертифікації відповідає цьому хешу (формат: "<тип>:<значення>").
--discovery-token-unsafe-skip-ca-verification
Для виявлення на основі токена, дозволити приєднання без закріплення --discovery-token-ca-cert-hash.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка download-certs
--tls-bootstrap-token string
Вкажіть токен, який використовується для тимчасової автентифікації з Панеллю Управління Kubernetes під час приєднання вузла.
--token string
Використовуйте цей токен для discovery-token та tls-bootstrap-token, коли ці значення не вказані окремо.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.86 -
Генерує kubeconfig для нових компонентів панелі управління
Опис
Генерує kubeconfig для нових компонентів панелі управління, які будуть додані до кластера.
Ключ, що використовується для шифрування сертифікатів панелі управління у Secret kubeadm-certs. Ключ сертифіката — це шістнадцятковий рядок, який є ключем AES розміром 32 байти
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--discovery-file string
Для виявлення на основі файлу, файл або URL, з якого буде завантажена інформація про кластер.
--discovery-token string
Для виявлення на основі токена, токен, який використовується для перевірки інформації про кластер, отриманої з сервера API.
--discovery-token-ca-cert-hash strings
Для виявлення на основі токена, перевірити, що публічний ключ кореневого центру сертифікації відповідає цьому хешу (формат: "<тип>:<значення>").
--discovery-token-unsafe-skip-ca-verification
Для виявлення на основі токена, дозволити приєднання без закріплення --discovery-token-ca-cert-hash.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка kubeconfig
--tls-bootstrap-token string
Вкажіть токен, який використовується для тимчасової автентифікації з Панеллю Управління Kubernetes під час приєднання вузла.
--token string
Використовуйте цей токен для discovery-token та tls-bootstrap-token, коли ці значення не вказані окремо.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.87 -
Записує налаштування kubelet, сертифікати та (пере)запускає kubelet
Опис
Записує файл з KubeletConfiguration та файл оточення з налаштуваннями kubelet для конкретного вузла, а потім (пере)запускає kubelet.
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--discovery-file string
Для виявлення на основі файлу, файл або URL, з якого буде завантажена інформація про кластер.
--discovery-token string
Для виявлення на основі токена, токен, який використовується для перевірки інформації про кластер, отриманої з сервера API.
--discovery-token-ca-cert-hash strings
Для виявлення на основі токена, перевірити, що публічний ключ кореневого центру сертифікації відповідає цьому хешу (формат: "<тип>:<значення>").
tr>
--discovery-token-unsafe-skip-ca-verification
Для виявлення на основі токена, дозволити приєднання без закріплення --discovery-token-ca-cert-hash.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка kubelet-start
--node-name string
Вкажіть імʼя вузла.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
--tls-bootstrap-token string
Вкажіть токен, який використовується для тимчасової автентифікації з Панеллю Управління Kubernetes під час приєднання вузла.
--token string
Використовуйте цей токен для discovery-token та tls-bootstrap-token, коли ці значення не вказані окремо.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
# Виконує передполітні перевірки для kubeadm joinkubeadm join phase preflight --config kubeadm-config.yaml
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--certificate-key string
Ключ, що використовується для шифрування сертифікатів панелі управління у Secret kubeadm-certs. Ключ сертифіката — це шістнадцятковий рядок, який є ключем AES розміром 32 байти
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--discovery-file string
Для виявлення на основі файлу, файл або URL, з якого буде завантажена інформація про кластер.
--discovery-token string
Для виявлення на основі токена, токен, який використовується для перевірки інформації про кластер, отриманої з сервера API.
--discovery-token-ca-cert-hash strings
Для виявлення на основі токена, перевірити, що публічний ключ кореневого центру сертифікації відповідає цьому хешу (формат: "<тип>:<значення>").
--discovery-token-unsafe-skip-ca-verification
Для виявлення на основі токена, дозволити приєднання без закріплення --discovery-token-ca-cert-hash.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка preflight
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки від усіх перевірок.
--node-name string
Вкажіть імʼя вузла.
--tls-bootstrap-token string
Вкажіть токен, який використовується для тимчасової автентифікації з Панеллю Управління Kubernetes під час приєднання вузла.
--token string
Використовуйте цей токен для discovery-token та tls-bootstrap-token, коли ці значення не вказані окремо.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.89 -
[EXPERIMENTAL] Очікує запуску панелі управління
Опис
[EXPERIMENTAL] Очікує запуску панелі управління
kubeadm join phase wait-control-plane [flags]
Параметри
-h, --help
Довідка wait-control-plane
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.90 -
Файлові утиліти Kubeconfig
Опис
Файлові утиліти Kubeconfig.
Параметри
-h, --help
Довідка kubeconfig
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.90.1 -
Виводить файл kubeconfig для додаткового користувача
Опис
Виводить файл kubeconfig для додаткового користувача.
kubeadm kubeconfig user [flags]
Приклади
# Виводить файл kubeconfig для додаткового користувача з іменем fookubeadm kubeconfig user --client-name=foo
# Виводить файл kubeconfig для додаткового користувача з іменем foo, використовуючи конфігураційний файл kubeadm barkubeadm kubeconfig user --client-name=foo --config=bar
Параметри
--client-name string
Імʼя користувача. Буде використовуватися як CN у разі створення клієнтських сертифікатів
--config string
Шлях до конфігураційного файлу kubeadm.
-h, --help
Довідка user
--org strings
Організації сертифіката клієнта. Буде використовуватися як O, якщо будуть створені клієнтські сертифікати
--token string
TТокен, який слід використовувати як механізм автентифікації для цього kubeconfig замість клієнтських сертифікатів
--validity-period duration Типово: 8760h0m0s
Термін дії клієнтського сертифіката. Відраховується від поточного часу.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.91 -
Виводить файл kubeconfig для додаткового користувача
Опис
Виводить файл kubeconfig для додаткового користувача.
kubeadm kubeconfig user [flags]
Приклади
# Виводить файл kubeconfig для додаткового користувача з іменем fookubeadm kubeconfig user --client-name=foo
# Виводить файл kubeconfig для додаткового користувача з іменем foo, використовуючи конфігураційний файл kubeadm barkubeadm kubeconfig user --client-name=foo --config=bar
Параметри
--client-name string
Імʼя користувача. Буде використовуватися як CN у разі створення клієнтських сертифікатів
--config string
Шлях до конфігураційного файлу kubeadm.
-h, --help
Довідка user
--org strings
Організації сертифіката клієнта. Буде використовуватися як O, якщо будуть створені клієнтські сертифікати
--token string
TТокен, який слід використовувати як механізм автентифікації для цього kubeconfig замість клієнтських сертифікатів
--validity-period duration Типово: 8760h0m0s
Термін дії клієнтського сертифіката. Відраховується від поточного часу.
Параметри успадковані від батьківських команд
--rootfs string
[ЕКСПЕРИМЕНТАЛЬНО] Шлях до "справжньої" кореневої файлової системи хоста.
10.1.1.92 -
Виконує максимально можливий відкат змін для хоста, зроблених командами kubeadm init або kubeadm join.
Опис
Виконує максимально можливий відкат змін для хоста, зроблених командами kubeadm init або kubeadm join.
Шлях до теки, де зберігаються сертифікати. Якщо вказано, очистити цю теку.
--cleanup-tmp-dir
Очистити теку "/etc/kubernetes/tmp"
--config string
Шлях до файлу конфігурації kubeadm.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не вносити жодних змін; лише вивести, що буде зроблено.
-f, --force
Виконати reset вузла без запиту на підтвердження.
-h, --help
довідка reset
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки від усіх перевірок.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, можна шукати наявний файл kubeconfig у наборі стандартних місць.
--skip-phases strings
Список фаз, які слід пропустити
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.92.1 -
Використовуйте цю команду для виклику однієї фази процесу "reset"
Опис
Використовуйте цю команду для виклику однієї фази процесу "reset"
kubeadm reset phase [flags]
Параметри
-h, --help
Довідка phase
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.92.2 -
Запускає очищення вузла
Опис
Запускає очищення вузла.
kubeadm reset phase cleanup-node [flags]
Параметри
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--cleanup-tmp-dir
Очистити теку "/etc/kubernetes/tmp"
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка cleanup-node
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.92.3 -
Виконує передполітні перевірки для kubeadm reset
Опис
Виконує передполітні перевірки для kubeadm reset.
kubeadm reset phase preflight [flags]
Параметри
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-f, --force
Виконати reset вузла без запиту на підтвердження.
-h, --help
Довідка preflight
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки від усіх перевірок.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.92.4 -
Видаляє члена local etcd
Опмс
Видаляє члена local etcd для вузла панелі управління.
kubeadm reset phase remove-etcd-member [flags]
Параметри
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.93 -
Використовуйте цю команду для виклику однієї фази процесу reset
Опис
Використовуйте цю команду для виклику однієї фази процесу reset
Параметри
-h, --help
Довідка phase
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.94 -
Запускає очищення вузла
Опис
Запускає очищення вузла.
kubeadm reset phase cleanup-node [flags]
Параметри
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--cleanup-tmp-dir
Очистити теку "/etc/kubernetes/tmp"
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка cleanup-node
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.95 -
Виконує передполітні перевірки для kubeadm reset
Опис
Виконує передполітні перевірки для kubeadm reset.
kubeadm reset phase preflight [flags]
Параметри
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-f, --force
Виконати reset вузла без запиту на підтвердження.
-h, --help
Довідка preflight
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки від усіх перевірок.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.96 -
Видаляє члена local etcd
Опмс
Видаляє члена local etcd для вузла панелі управління.
kubeadm reset phase remove-etcd-member [flags]
Параметри
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.97 -
Керує токенами bootstrap
Опис
Ця команда управляє bootstrap токенами. Вона є опціональною та необхідна лише для розширених випадків використання.
Коротко кажучи, bootstrap токени використовуються для встановлення двосторонньої довіри між клієнтом і сервером. Bootstrap токен може бути використаний, коли клієнт (наприклад, вузол, який збирається приєднатися до кластера) має довіряти серверу, з яким він взаємодіє. У цьому випадку можна використовувати bootstrap токен з дозволом на "підписування" ("signing"). Bootstrap токени також можуть функціонувати як спосіб дозволити короткострокову автентифікацію на API сервері (токен слугує способом, щоб API сервер довіряв клієнту), наприклад, для виконання TLS Bootstrap.
Що таке bootstrap токен більш конкретно?
Це Secret у просторі імен kube-system типу "bootstrap.kubernetes.io/token".
Bootstrap токен повинен мати форму "[a-z0-9]{6}.[a-z0-9]{16}". Перша частина є публічним ідентифікатором токена, а друга — секретом токена, який повинен бути збережений у таємниці за будь-яких обставин!
Назва Secret повинна бути "bootstrap-token-(token-id)".
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.97.1 -
Створює токени запуску на сервері.
Опис
Ця команда створює токен запуску для вас. Ви можете вказати способи використання цього токену, "час життя" і необовʼязковий опис, зрозумілий людині.
[token] — це власне токен, який потрібно записати. Це має бути безпечно згенерований випадковий токен виду "[a-z0-9]{6}.[a-z0-9]{16}". Якщо [token] не вказано, kubeadm згенерує випадковий токен замість нього.
kubeadm token create [token]
Параметри
--certificate-key string
Якщо використовується разом із '--print-join-command', виводить повний прапорець 'kubeadm join', необхідний для приєднання до кластера як панелі управління. Щоб створити новий ключ сертифіката, потрібно використовувати 'kubeadm init phase upload-certs --upload-certs'.
--config string
Шлях до файлу конфігурації kubeadm.
--description string
Опис, зрозумілий для людини, як використовується цей токен.
Додаткові групи, які будуть автентифікуватися за допомогою цього токена при використанні для автентифікації. Повинно відповідати "\Asystem:bootstrappers:[a-z0-9:-]{0,255}[a-z0-9]\z"
-h, --help
довідка create
--print-join-command
Замість того, щоб виводити тільки токен, вивести повний прапорець 'kubeadm join', необхідний для приєднання до кластера за допомогою токена.
--ttl duration Типово: 24h0m0s
Тривалість перед автоматичним видаленням токена (наприклад, 1s, 2m, 3h). Якщо встановлено '0', токен ніколи не закінчиться.
--usages strings Типово: "signing,authentication"
Описує способи, в яких цей токен може використовуватися. Ви можете передавати --usages кілька разів або надати список параметрів через кому. Дійсні параметри: [signing,authentication]
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, можна шукати наявний файл kubeconfig у наборі стандартних місць.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.97.2 -
Видаляє токени запуску на сервері.
Опис
Ця команда видаляє токени запуску для вас.
Значення [token-value] — це повний токен у вигляді "[a-z0-9]{6}.[a-z0-9]{16}" або Token ID виду "[a-z0-9]{6}", який потрібно видалити.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, можна шукати наявний файл kubeconfig у наборі стандартних місць.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.97.3 -
Генерує та виводить токен запуску, але не створює його на сервері
Опис
Ця команда виведе випадково згенерований токен запуску, який можна використовувати з командами "init" та "join".
Ви не зобовʼязані використовувати цю команду для створення токена. Ви можете зробити це самостійно, якщо він має формат "[a-z0-9]{6}.[a-z0-9]{16}". Ця команда надається для зручності створення токенів у зазначеному форматі.
Ви також можете використовувати "kubeadm init" без вказання токена, і він буде згенерований та виведений для вас.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, можна шукати наявний файл kubeconfig у наборі стандартних місць.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.97.4 -
Виводить перелік токенів запуску на сервері
Опис
Ця команда виведе перелік всіх токенів запуску на сервері.
kubeadm token list [flags]
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігноруйте будь-які помилки в шаблонах, коли поле або ключ map відсутні в шаблоні. Застосовується лише до форматів виводу golang і jsonpath.
-h, --help
довідка list
-o, --output string Типово: "text"
Формат виводу. Один із: text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.
--show-managed-fields
Якщо true, залиште managedFields під час вводу обʼєктів у форматі JSON або YAML.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, можна шукати наявний файл kubeconfig у наборі стандартних місць.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.98 -
Створює токени запуску на сервері.
Опис
Ця команда створює токен запуску для вас. Ви можете вказати способи використання цього токену, "час життя" і необовʼязковий опис, зрозумілий людині.
[token] — це власне токен, який потрібно записати. Це має бути безпечно згенерований випадковий токен виду "[a-z0-9]{6}.[a-z0-9]{16}". Якщо [token] не вказано, kubeadm згенерує випадковий токен замість нього.
kubeadm token create [token]
Параметри
--certificate-key string
Якщо використовується разом із '--print-join-command', виводить повний прапорець 'kubeadm join', необхідний для приєднання до кластера як панелі управління. Щоб створити новий ключ сертифіката, потрібно використовувати 'kubeadm init phase upload-certs --upload-certs'.
--config string
Шлях до файлу конфігурації kubeadm.
--description string
Опис, зрозумілий для людини, як використовується цей токен.
Додаткові групи, які будуть автентифікуватися за допомогою цього токена при використанні для автентифікації. Повинно відповідати "\Asystem:bootstrappers:[a-z0-9:-]{0,255}[a-z0-9]\z"
-h, --help
довідка create
--print-join-command
Замість того, щоб виводити тільки токен, вивести повний прапорець 'kubeadm join', необхідний для приєднання до кластера за допомогою токена.
--ttl duration Типово: 24h0m0s
Тривалість перед автоматичним видаленням токена (наприклад, 1s, 2m, 3h). Якщо встановлено '0', токен ніколи не закінчиться.
--usages strings Типово: "signing,authentication"
Описує способи, в яких цей токен може використовуватися. Ви можете передавати --usages кілька разів або надати список параметрів через кому. Дійсні параметри: [signing,authentication]
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, можна шукати наявний файл kubeconfig у наборі стандартних місць.
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.99 -
Видаляє токени запуску на сервері.
Опис
Ця команда видаляє токени запуску для вас.
Значення [token-value] — це повний токен у вигляді "[a-z0-9]{6}.[a-z0-9]{16}" або Token ID виду "[a-z0-9]{6}", який потрібно видалити.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, можна шукати наявний файл kubeconfig у наборі стандартних місць.
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.100 -
Генерує та виводить токен запуску, але не створює його на сервері
Опис
Ця команда виведе випадково згенерований токен запуску, який можна використовувати з командами "init" та "join".
Ви не зобовʼязані використовувати цю команду для створення токена. Ви можете зробити це самостійно, якщо він має формат "[a-z0-9]{6}.[a-z0-9]{16}". Ця команда надається для зручності створення токенів у зазначеному форматі.
Ви також можете використовувати "kubeadm init" без вказання токена, і він буде згенерований та виведений для вас.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, можна шукати наявний файл kubeconfig у наборі стандартних місць.
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.101 -
Виводить перелік токенів запуску на сервері
Опис
Ця команда виведе перелік всіх токенів запуску на сервері.
kubeadm token list [flags]
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігноруйте будь-які помилки в шаблонах, коли поле або ключ map відсутні в шаблоні. Застосовується лише до форматів виводу golang і jsonpath.
-o, --experimental-output string Типово: "text"
Формат виводу. Один із: text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.
-h, --help
довідка list
--show-managed-fields
Якщо true, залиште managedFields під час вводу обʼєктів у форматі JSON або YAML.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, можна шукати наявний файл kubeconfig у наборі стандартних місць.
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.102 -
Оновлення кластера до новішої версії відбувається плавно за допомогою цієї команди
Опис
Оновлення кластера до новішої версії відбувається плавно за допомогою цієї команди
kubeadm upgrade [flags]
Параметри
-h, --help
Довідка upgrade
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.1 -
Оновлює кластер Kubernetes до вказаної версії.
Опис
Оновлює кластер Kubernetes до вказаної версії.
Команда "apply [version]" виконує наступні етапи:
preflight Виконання перевірок перед запуском
control-plane Оновлення панелі управління
upload-config Завантаження конфігурації kubeadm та kubelet у ConfigMapі
/kubeadm Завантаження конфігурації кластера kubeadm у ConfigMap
/kubelet Завантаження конфігурації компоненту kubelet у ConfigMap
kubelet-config Оновлення конфігурації kubelet для цього вузла
bootstrap-token Налаштування токену bootstrap та правил cluster-info RBAC
addon Оновлення типових надбудов kubeadm
/coredns Оновлення надбудови CoreDNS
/kube-proxy Оновлення надбудови kube-proxy
post-upgrade Запуск завдань після оновлення
kubeadm upgrade apply [version]
Параметри
--allow-experimental-upgrades
Показує нестабільні версії Kubernetes як альтернативу для оновлення і дозволяє оновлювати до альфа/бета/версій кандидатів Kubernetes.
--allow-release-candidate-upgrades
Показує версії кандидатів на випуск Kubernetes як альтернативу для оновлення і дозволяє оновлювати до версій кандидатів на випуск Kubernetes.
--certificate-renewal Типово: true
Виконує оновлення сертифікатів, які використовуються компонентами під час оновлення.
--config string
Шлях до файлу конфігурації kubeadm.
--dry-run
Не змінює жодного стану, просто показує дії, які будуть виконані.
--etcd-upgrade Типово: true
Виконує оновлення etcd.
-f, --force
Примусове оновлення, навіть якщо деякі вимоги можуть бути не виконані. Це також передбачає неітерактивний режим.
-h, --help
довідка apply
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки з усіх перевірок.
Файл kubeconfig, який буде використовуватися при зверненні до кластера. Якщо прапорець не заданий, буде проведено пошук файлу kubeconfig в стандартних місцях.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним із "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним із "strategic", "merge" або "json", і вони відповідають форматам патчів, які підтримуються kubectl. За замовчуванням "patchtype" - "strategic". "extension" повинен бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який може використовуватися для визначення порядку застосування патчів за алфавітом.
--print-config
Вказує, чи потрібно надрукувати файл конфігурації, який буде використаний під час оновлення.
--skip-phases strings
Список етапів, які потрібно оминути
-y, --yes
Виконати оновлення і не запитувати підтвердження (режим без взаємодії).
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.2 -
Використовуйте цю команду для виклику однієї фази робочого процесу "apply"
Опис
Використовуйте цю команду для виклику однієї фази робочого процесу "apply"
kubeadm upgrade apply phase [flags]
-h, --help
Довідка phase
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.3 -
Оновлює стандартні надбудови kubeadm
Опис
Оновлює стандартні надбудови kubeadm
kubeadm upgrade apply phase addon [flags]
Параметри
-h, --help
Довідка addon
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.4 -
Оновлює всі надбудови
Synopsis
Оновлює всі надбудови
kubeadm upgrade apply phase addon all [flags]
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.5 -
Оновлення надбудови CoreDNS
Synopsis
Оновлення надбудови CoreDNS
kubeadm upgrade apply phase addon coredns [flags]
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.7 -
Налаштовує токен bootstrap та правила cluster-info RBAC
Опис
Налаштовує токен bootstrap та правила cluster-info RBAC
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.8 -
Оновлення панелі управління
Опис
Оновлення панелі управління
kubeadm upgrade apply phase control-plane [flags]
Параметри
--certificate-renewal Типово: true
Виконує оновлення сертифікатів, які використовуються компонентами під час оновлення.
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.9 -
Оновлення конфігурації kubelet для цього вузла
Опис
Оновлення конфігурації kubelet для цього вузла, завантаживши її з файлу kubelet-config ConfigMap, що зберігається у кластері
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.10 -
Запуск завдань після оновлення
Опис
Запуск завдань після оновлення
kubeadm upgrade apply phase post-upgrade [flags]
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.11 -
Запуск передпольотних перевірок перед оновленням
Опис
Запуск передпольотних перевірок перед оновленням
kubeadm upgrade apply phase preflight [flags]
Параметри
--allow-experimental-upgrades
Показує нестабільні версії Kubernetes як альтернативу для оновлення і дозволяє оновлювати до альфа/бета/версій кандидатів Kubernetes.
--allow-release-candidate-upgrades
Показує версії кандидатів на випуск Kubernetes як альтернативу для оновлення і дозволяє оновлювати до версій кандидатів на випуск Kubernetes.
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-f, --force
Примусове оновлення, навіть якщо деякі вимоги можуть бути не виконані. Це також передбачає неітерактивний режим.
-h, --help
Довідка preflight
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки всіх перевірок.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
-y, --yes
Виконати оновлення і не запитувати підтвердження (режим без взаємодії).
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.12 -
Завантаження конфігурацій kubeadm та kubelet до ConfigMaps
Опис
Завантаження конфігурацій kubeadm та kubelet до ConfigMaps
kubeadm upgrade apply phase upload-config [flags]
-h, --help
Довідка for upload-config
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.13 -
Завантаження всіх конфігурацій до ConfigMaps
Опис
Завантаження всіх конфігурацій до ConfigMaps
kubeadm upgrade apply phase upload-config all [flags]
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.14 -
Завантаження конфігурації кластера kubeadm ClusterConfiguration до ConfigMap
Опис
Завантаження конфігурації кластера kubeadm ClusterConfiguration до ConfigMap
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.16 -
Показує які відмінності можуть бути застосовані до наявних маніфестів статичних Pod. Дивіться також: kubeadm upgrade apply --dry-run
Опис
Показує які відмінності можуть бути застосовані до наявних маніфестів статичних Pod. Дивіться також: kubeadm upgrade apply --dry-run
Файл kubeconfig, який буде використовуватися при зверненні до кластера. Якщо прапорець не заданий, буде проведено пошук файлу kubeconfig в стандартних місцях.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.17 -
Команда upgrade для вузлів в кластері
Опис
Команда upgrade для вузлів в кластері.
Команда "node" виконує наступні фази:
preflight Виконання попереднії перевірок оновлення вузла
control-plane Оновлення екземпляру панелі управління, розгорнутий на цьому вузлі, якщо такий є
kubelet-config Оновлення конфігурацію kubelet для цього вузла
addon Оновлення стандартних надбудов kubeadm
/coredns Оновлення надбудови CoreDNS
/kube-proxy Оновлення надбудови kube-proxy
post-upgrade Запуск завдань після оновлення
kubeadm upgrade node [flags]
Параметри
--certificate-renewal Типово: true
Виконати оновлення сертифікатів, використовуваних компонентами, які змінюються під час оновлення.
--config string
Шлях до файлу конфігурації kubeadm.
--dry-run
Не змінює жодного стану, просто показує дії, які будуть виконані.
--etcd-upgrade Типово: true
Виконати оновлення etcd.
-h, --help
довідка node
--ignore-preflight-errors strings
Список перевірок, помилки в яких будуть відображені як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки з усіх перевірок.
Файл kubeconfig, який буде використовуватися при зверненні до кластера. Якщо прапорець не заданий, буде проведено пошук файлу kubeconfig в стандартних місцях.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним із "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним із "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" - "strategic". "extension" повинен бути або "json", або "yaml". "suffix" - це необовʼязковий рядок, який може використовуватися для визначення порядку застосування патчів за алфавітном.
--skip-phases strings
Список фаз, які слід пропустити.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.18 -
Використовуйте цю команду для виклику однієї фази робочого процесу "node"
Опис
Використовуйте цю команду для виклику однієї фази робочого процесу "node"
kubeadm upgrade node phase [flags]
Параметри
-h, --help
Довідка phase
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.19 -
Оновлення стандартних надбудов kubeadm
Опис
Оновлення стандартних надбудов kubeadm
kubeadm upgrade node phase addon [flags]
Параметри
-h, --help
Довідка addon
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.20 -
Оновлення всіх надбудов
Опис
Оновлення всіх надбудов
kubeadm upgrade node phase addon all [flags]
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.21 -
Оновлення надбудови CoreDNS
Опис
Оновлення надбудови CoreDNS
kubeadm upgrade node phase addon coredns [flags]
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.23 -
Оновлює екземпляр панелі управління, розгорнутої на цьому вузлі, якщо така є
Опис
Оновлює екземпляр панелі управління, розгорнутої на цьому вузлі, якщо така є.
kubeadm upgrade node phase control-plane [flags]
Параметри
--certificate-renewal Типово: true
Виконує оновлення сертифікатів, які використовуються компонентами під час оновлення.
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.24 -
Оновлює конфігурації kubelet для цього вузла
Опис
Оновлення конфігурації kubelet для цього вузла, завантаживши її з файлу kubelet-config ConfigMap, що зберігається у кластері
kubeadm upgrade node phase kubelet-config [flags]
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.25 -
Запуск завдань після оновлення
Опис
Запуск завдань після оновлення
kubeadm upgrade node phase post-upgrade [flags]
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.26 -
Виконує попередні перевірки на вузлі перед оновленням
Опис
Ця команда виконує попередні перевірки для kubeadm upgrade node.
kubeadm upgrade node phase preflight [flags]
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
-h, --help
Довідка preflight
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки всіх перевірок.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.102.27 -
Перевіряє, до яких версій можна оновитися, і перевіряє, чи можна оновити ваш поточний кластер.
Опис
Перевіряє, до яких версій можна оновитися, і перевіряє, чи можна оновити ваш поточний кластер. Ця команда може бути виконана лише на вузлах панелі управління, де існує файл kubeconfig "admin.conf". Щоб пропустити перевірку Інтернету, вкажіть необовʼязковий параметр [version].
kubeadm upgrade plan [version][flags]
Параметри
--allow-experimental-upgrades
Показати нестабільні версії Kubernetes як альтернативу для оновлення і дозволити оновлення до альфа/бета/кандидатів на випуск версій Kubernetes.
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли поле або ключ map відсутній у шаблоні. Застосовується лише до форматів виведення golang та jsonpath.
--allow-release-candidate-upgrades
Показати версії кандидатів на випуск Kubernetes як альтернативу для оновлення і дозволити оновлення до версій кандидатів на випуск Kubernetes.
--config string
Шлях до файлу конфігурації kubeadm.
-h, --help
довідка plan
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки з усіх перевірок.
Файл kubeconfig, який буде використовуватися при зверненні до кластера. Якщо прапорець не заданий, буде проведено пошук файлу kubeconfig в стандартнх місцях.
-o, --output string Типово: "text"
Формат виводу. Один із: text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.
--print-config
Вказує, чи потрібно надрукувати файл конфігурації, який буде використаний під час оновлення.
--show-managed-fields
Якщо true, зберігати managedFields під час виводу обʼєктів у форматі JSON або YAML.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.1.103 -
Оновлює кластер Kubernetes до вказаної версії.
Опис
Оновлює кластер Kubernetes до вказаної версії.
kubeadm upgrade apply [version]
Параметри
--allow-experimental-upgrades
Показує нестабільні версії Kubernetes як альтернативу для оновлення і дозволяє оновлювати до альфа/бета/версій кандидатів Kubernetes.
--allow-release-candidate-upgrades
Показує версії кандидатів на випуск Kubernetes як альтернативу для оновлення і дозволяє оновлювати до версій кандидатів на випуск Kubernetes.
--certificate-renewal Типово: true
Виконує оновлення сертифікатів, які використовуються компонентами під час оновлення.
--config string
Шлях до файлу конфігурації kubeadm.
--dry-run
Не змінює жодного стану, просто показує дії, які будуть виконані.
--etcd-upgrade Типово: true
Виконує оновлення etcd.
--feature-gates string
Набір пар ключ=значення, які описують відзначки функцій для різних функцій. Опції: EtcdLearnerMode=true|false (BETA — default=true) PublicKeysECDSA=true|false (DEPRECATED — default=false) RootlessControlPlane=true|false (ALPHA — default=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED — default=false) WaitForAllControlPlaneComponents=true|false (ALPHA — default=false)
-f, --force
Примусове оновлення, навіть якщо деякі вимоги можуть бути не виконані. Це також передбачає неітерактивний режим.
-h, --help
довідка apply
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки з усіх перевірок.
Файл kubeconfig, який буде використовуватися при зверненні до кластера. Якщо прапорець не заданий, буде проведено пошук файлу kubeconfig в стандартних місцях.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним із "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration". "patchtype" може бути одним із "strategic", "merge" або "json", і вони відповідають форматам патчів, які підтримуються kubectl. За замовчуванням "patchtype" - "strategic". "extension" повинен бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який може використовуватися для визначення порядку застосування патчів за алфавітом.
--print-config
Вказує, чи потрібно надрукувати файл конфігурації, який буде використаний під час оновлення.
-y, --yes
Виконати оновлення і не запитувати підтвердження (режим без взаємодії).
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.104 -
Показує які відмінності можуть бути застосовані до наявних маніфестів статичних Pod. Дивіться також: kubeadm upgrade apply --dry-run
Опис
Показує які відмінності можуть бути застосовані до наявних маніфестів статичних Pod. Дивіться також: kubeadm upgrade apply --dry-run
Файл kubeconfig, який буде використовуватися при зверненні до кластера. Якщо прапорець не заданий, буде проведено пошук файлу kubeconfig в стандартних місцях.
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.105 -
Команда upgrade для вузлів в кластері
Опис
Команда upgrade для вузлів в кластері.
Команда "node" виконує наступні фази:
preflight Виконання попереднії перевірок оновлення вузла
control-plane Оновлення екземпляру панелі управління, розгорнутий на цьому вузлі, якщо такий є
kubelet-config Оновлення конфігурацію kubelet для цього вузла
kubeadm upgrade node [flags]
Параметри
--certificate-renewal Типово: true
Виконати оновлення сертифікатів, використовуваних компонентами, які змінюються під час оновлення.
--config string
Шлях до файлу конфігурації kubeadm.
--dry-run
Не змінює жодного стану, просто показує дії, які будуть виконані.
--etcd-upgrade Типово: true
Виконати оновлення etcd.
-h, --help
довідка node
--ignore-preflight-errors strings
Список перевірок, помилки в яких будуть відображені як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки з усіх перевірок.
Файл kubeconfig, який буде використовуватися при зверненні до кластера. Якщо прапорець не заданий, буде проведено пошук файлу kubeconfig в стандартних місцях.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним із "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration". "patchtype" може бути одним із "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" - "strategic". "extension" повинен бути або "json", або "yaml". "suffix" - це необовʼязковий рядок, який може використовуватися для визначення порядку застосування патчів за алфавітном.
--skip-phases strings
Список фаз, які слід пропустити.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.106 -
Використовуйте цю команду для виклику однієї фази робочого процесу node
Опис
Використовуйте цю команду для виклику однієї фази робочого процесу node
Параметри
-h, --help
Довідка phase
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.107 -
Оновлює екземпляр панелі управління, розгорнутої на цьому вузлі, якщо така є
Опис
Оновлює екземпляр панелі управління, розгорнутої на цьому вузлі, якщо така є.
kubeadm upgrade node phase control-plane [flags]
Параметри
--certificate-renewal Типово: true
Виконує оновлення сертифікатів, які використовуються компонентами під час оновлення.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.108 -
Оновлює конфігурації kubelet для цього вузла
Опис
Завантажує конфігурацію kubelet з файлу kubelet-config ConfigMap, що зберігається в кластері
kubeadm upgrade node phase kubelet-config [flags]
Параметри
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.109 -
Виконує попередні перевірки на вузлі перед оновленням
Опис
Ця команда виконує попередні перевірки для kubeadm upgrade node.
kubeadm upgrade node phase preflight [flags]
Параметри
-h, --help
Довідка preflight
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки всіх перевірок.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.110 -
Перевіряє, до яких версій можна оновитися, і перевіряє, чи можна оновити ваш поточний кластер.
Опис
Перевіряє, до яких версій можна оновитися, і перевіряє, чи можна оновити ваш поточний кластер. Ця команда може бути виконана лише на вузлах панелі управління, де існує файл kubeconfig "admin.conf". Щоб пропустити перевірку Інтернету, вкажіть необовʼязковий параметр [version].
kubeadm upgrade plan [version][flags]
Параметри
--allow-experimental-upgrades
Показати нестабільні версії Kubernetes як альтернативу для оновлення і дозволити оновлення до альфа/бета/кандидатів на випуск версій Kubernetes.
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли поле або ключ map відсутній у шаблоні. Застосовується лише до форматів виведення golang та jsonpath.
--allow-release-candidate-upgrades
Показати версії кандидатів на випуск Kubernetes як альтернативу для оновлення і дозволити оновлення до версій кандидатів на випуск Kubernetes.
--config string
Шлях до файлу конфігурації kubeadm.
-o, --experimental-output string Типово: "text"
Формат виводу. Один із: text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.
--feature-gates string
Набір пар ключ=значення, що описують функціональні можливості для різних функцій. Опції: EtcdLearnerMode=true|false (BETA — default=true) PublicKeysECDSA=true|false (DEPRECATED — default=false) RootlessControlPlane=true|false (ALPHA — default=false) UpgradeAddonsBeforeControlPlane=true|false (DEPRECATED — default=false) WaitForAllControlPlaneComponents=true|false (ALPHA — default=false)
-h, --help
довідка plan
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки з усіх перевірок.
Файл kubeconfig, який буде використовуватися при зверненні до кластера. Якщо прапорець не заданий, буде проведено пошук файлу kubeconfig в стандартнх місцях.
--print-config
Вказує, чи потрібно надрукувати файл конфігурації, який буде використаний під час оновлення.
--show-managed-fields
Якщо true, зберігати managedFields під час виводу обʼєктів у форматі JSON або YAML.
Параметри успадковані від батьківських команд
--rootfs string
[EXPERIMENTAL] Шлях до реальної кореневої файлової системи хоста.
10.1.1.111 -
Виводіть версію kubeadm
Опис
Ця команда виводить версію kubeadm.
kubeadm version [flags]
Параметри
-h, --help
довідка version
-o, --output string
Формат виводу; доступні варіанти: 'yaml', 'json' та 'short'
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.2 - kubeadm init
Ця команда ініціалізує вузол панелі управління Kubernetes.
Запустіть цю команду, щоб налаштувати панель управління Kubernetes
Опис
Запустіть цю команду, щоб налаштувати панель управління Kubernetes
Команда "init" виконує наступні етапи:
preflight Виконання перевірок перед запуском
certs Генерація сертифікатів
/ca Генерація самопідписаного CA Kubernetes для забезпечення ідентифікації інших компонентів Kubernetes
/apiserver Генерація сертифіката для обслуговування Kubernetes API
/apiserver-kubelet-client Генерація сертифіката для зʼєднання API server з kubelet
/front-proxy-ca Генерація самопідписаного CA для забезпечення ідентифікації front proxy
/front-proxy-client Генерація сертифіката для клієнта front proxy
/etcd-ca Генерація самопідписаного CA для забезпечення ідентифікації etcd
/etcd-server Генерація сертифіката для обслуговування etcd
/etcd-peer Генерація сертифіката для звʼязку між вузлами etcd
/etcd-healthcheck-client Генерація сертифіката для перевірки живучості etcd
/apiserver-etcd-client Генерація сертифіката, який використовується apiserver для доступу до etcd
/sa Генерація приватного ключа для підписання токенів службових облікових записів разом з його відкритим ключем
kubeconfig Генерація всіх kubeconfig файлів, необхідних для створення панелі управління, та kubeconfig файлу адміністратора
/admin Генерація kubeconfig файлу для використання адміністратором та самим kubeadm
/super-admin Генерація kubeconfig файлу для супер-адміністратора
/kubelet Генерація kubeconfig файлу для використання kubelet *лише* для завантаження кластера
/controller-manager Генерація kubeconfig файлу для використання контролер-менеджером
/scheduler Генерація kubeconfig файлу для використання планувальником
etcd Генерація маніфесту статичного Pod для локального etcd
/local Генерація маніфесту статичного Pod для локального, одновузлового локального etcd
control-plane Генерація всіх маніфестів статичних Podʼів, необхідних для створення панелі управління
/apiserver Генерація маніфесту статичного Pod для kube-apiserver
/controller-manager Генерація маніфесту статичного Pod для kube-controller-manager
/scheduler Генерація маніфесту статичного Pod для kube-scheduler
kubelet-start Запис налаштувань kubelet та (перезавантаження) kubelet
upload-config Завантаження конфігурації kubeadm та kubelet у ConfigMap
/kubeadm Завантаження конфігурації кластера kubeadm у ConfigMap
/kubelet Завантаження конфігурації компоненту kubelet у ConfigMap
upload-certs Завантаження сертифікатів у kubeadm-certs
mark-control-plane Маркування вузла як вузла панелі управління
bootstrap-token Генерація bootstrap токенів, які використовуються для приєднання вузла до кластера
kubelet-finalize Оновлення налаштувань, що стосуються kubelet, після TLS завантаження
/enable-client-cert-rotation Ввімкнути ротацію сертифікатів клієнтів kubelet
addon Встановлення необхідних надбудов для проходження тестів відповідності
/coredns Встановлення надбудови CoreDNS у Kubernetes кластер
/kube-proxy Встановлення надбудови kube-proxy у Kubernetes кластер
show-join-command Показати команду приєднання для вузлів керування та робочих вузлів
kubeadm init [прапорці]
Параметри
--apiserver-advertise-address string
IP адреса, за якою API Server буде оголошувати, що він слухає. Якщо не встановлено, буде використаний стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого буде привʼязаний API Server.
--apiserver-cert-extra-sans strings
Додаткові опціональні альтернативні імена субʼєкта (SANs) для використання в сертифікаті обслуговування API Server. Можуть бути як IP-адреси, так і DNS імена.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях для збереження та зберігання сертифікатів.
--certificate-key string
Ключ, що використовується для шифрування сертифікатів панелі управління у Secret kubeadm-certs. Ключ сертифіката — це шістнадцятковий рядок, який є ключем AES розміром 32 байти
--config string
Шлях до файлу конфігурації kubeadm.
--control-plane-endpoint string
Вкажіть стабільну IP адресу або DNS імʼя для панелі управління.
--cri-socket string
Шлях до сокета CRI для підключення. Якщо не заповнено, kubeadm спробує автоматично визначити це значення; використовуйте цю опцію тільки якщо у вас встановлено більше одного CRI або якщо у вас нестандартний сокет CRI.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
--feature-gates string
Набір пар ключ=значення, що описують функціональні можливості для різних функцій. Опції: ControlPlaneKubeletLocalMode=true|false (ALPHA - default=false) EtcdLearnerMode=true|false (default=true) NodeLocalCRISocket=true|false (ALPHA - default=false) PublicKeysECDSA=true|false (DEPRECATED - default=false) RootlessControlPlane=true|false (ALPHA - default=false) WaitForAllControlPlaneComponents=true|false (ALPHA - default=false)
-h, --help
довідка init
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки всіх перевірок.
Виберіть реєстр контейнерів для завантаження образів панелі управління
--kubernetes-version string Типово: "stable-1"
Виберіть конкретну версію Kubernetes для панелі управління.
--node-name string
Вкажіть імʼя вузла.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
--pod-network-cidr string
Вкажіть діапазон IP-адрес для мережі Podʼів. Якщо встановлено, панель управління автоматично виділить CIDR для кожного вузла.
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для VIP сервісів.
Токен для встановлення двосторонньої довіри між вузлами та вузлами панелі управління. Формат [a-z0-9]{6}.[a-z0-9]{16} — наприклад, abcdef.0123456789abcdef
--token-ttl duration Типово: 24h0m0s
Час перед автоматичним видаленням токена (наприклад, 1s, 2m, 3h). Якщо встановлено '0', токен ніколи не закінчиться
--upload-certs
Завантажити сертифікати панелі управління у Secret kubeadm-certs.
Параметри успадковані від батьківських команд
--rootfs string
[ЕКСПЕРИМЕНТАЛЬНО] Шлях до 'реальної' кореневої файлової системи хоста.
Процес Init
kubeadm init розгортає вузол панелі управління Kubernetes, виконуючи
наступні кроки:
Виконує серію перевірок перед запуском, щоб перевірити стан системи
перед внесенням змін. Деякі перевірки лише видають попередження, інші вважаються
помилками, і kubeadm припиняє роботу, доки проблема не буде виправлена або
користувач не вкаже --ignore-preflight-errors=<list-of-errors>.
Генерує самопідписний CA для налаштування ідентифікаторів для кожного компонента в кластері. Користувач може надати свої власні сертифікат та/або ключ CA, помістивши їх у теку сертифікатів, налаштовану через --cert-dir (типово /etc/kubernetes/pki). Сертифікати API Server матимуть додаткові записи SAN для будь-яких аргументів --apiserver-cert-extra-sans, з приведенням до нижнього регістру за потреби.
Записує файли kubeconfig у /etc/kubernetes/ для kubelet, controller-manager та scheduler для підключення до API server, кожен зі своїм ідентифікатором. Також створюються додаткові файли kubeconfig, для kubeadm як адміністративної сутності (admin.conf) та для супер адміністратора, що може обходити RBAC (super-admin.conf).
Генерує манифести статичних Pod для API server, controller-manager та scheduler. Якщо зовнішній etcd не надано, створюється додатковий маніфест статичного Pod для etcd.
Статичні манифести Pod записуються у /etc/kubernetes/manifests; kubelet спостерігає за цією текою для створення Podʼів при запуску.
Як тільки Podʼи панелі управління будуть запущені та працюватимуть, процес kubeadm init може продовжитися.
Додає мітки та taint на вузол панелі управління, щоб жодні додаткові робочі навантаження не запускалися там.
Генерує токен, який додаткові вузли можуть використовувати для реєстрації у майбутньому на вузлі панелі управління. За бажанням, користувач може надати токен через --token, як описано в документації kubeadm token.
Виконує всі необхідні налаштування для дозволу приєднання вузлів за допомогою механізмів Bootstrap Tokens та TLS Bootstrap:
Записує ConfigMap для надання всієї необхідної інформації для приєднання, та налаштовує відповідні правила доступу RBAC.
Дозволяє Bootstrap Tokens доступ до API підписання CSR.
Налаштовує автоматичне схвалення нових запитів CSR.
Встановлює DNS сервер (CoreDNS) та компоненти надбудови kube-proxy через API server. У версії Kubernetes 1.11 і пізніших CoreDNS є типовим сервером DNS. Зверніть увагу, що хоча DNS сервер розгорнутий, він не буде запланований до встановлення CNI.
Попередження:
Використання kube-dns у kubeadm визнано застарілим з v1.18 і видалене у v1.21.
Використання фаз ініціалізації з kubeadm
Kubeadm дозволяє створювати вузол панелі управління поетапно, використовуючи команду kubeadm init phase.
Щоб переглянути впорядкований список фаз та підфаз, можна викликати kubeadm init --help. Список буде розташований на початку екрана довідки, і кожна фаза матиме опис поруч із нею. Зверніть увагу, що при виклику kubeadm init всі фази та підфази будуть виконані в точно такому порядку.
Деякі фази мають унікальні прапорці, тому, якщо ви хочете переглянути список доступних опцій, додайте --help, наприклад:
Ви також можете використовувати --help, щоб побачити список підфаз для певної батьківської фази:
sudo kubeadm init phase control-plane --help
kubeadm init також має прапорець --skip-phases, який можна використовувати для пропуску певних фаз. Прапорець приймає список назв фаз, які можна взяти з вищезгаданого впорядкованого списку.
Приклад:
sudo kubeadm init phase control-plane all --config=configfile.yaml
sudo kubeadm init phase etcd local --config=configfile.yaml
# тепер ви можете змінити файли маніфестів панелі управління та etcdsudo kubeadm init --skip-phases=control-plane,etcd --config=configfile.yaml
Цей приклад записує файли маніфесту для панелі управління та etcd у /etc/kubernetes/manifests на основі конфігурації в configfile.yaml. Це дозволяє вам змінювати файли, а потім пропускати ці фази, використовуючи --skip-phases. Викликом останньої команди ви створите вузол панелі управління з власними файлами маніфестів.
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.22 [beta]
Альтернативно, ви можете використовувати поле skipPhases у InitConfiguration.
Використання kubeadm init з конфігураційним файлом
Увага:
Конфігураційний файл все ще вважається бета-версією і може змінюватися в майбутніх версіях.
Можна налаштувати kubeadm init за допомогою конфігураційного файлу замість прапорців командного рядка, а деякі більш розширені функції можуть бути доступні лише як опції конфігураційного файлу. Цей файл передається за допомогою прапорця --config, і він повинен містити структуру ClusterConfiguration і, за бажанням, інші структури, розділені ---\n. Змішування --config з іншими прапорцями може не бути дозволеним у деяких випадках.
Ви можете вивести стандартну конфігурацію за допомогою команди kubeadm config print.
Якщо ваша конфігурація не використовує останню версію, рекомендується перейти на нову версію за допомогою команди kubeadm config migrate.
Для отримання додаткової інформації про поля та використання конфігурації ви можете перейти на нашу сторінку API-довідки.
Використання kubeadm init з функціональними можливостями
Kubeadm підтримує набір функціональних можливостей (feature gate), які унікальні для kubeadm і можуть бути застосовані лише під час створення кластера за допомогою kubeadm init. Ці функціональні можливості можуть контролювати поведінку кластера. Функціональні можливості видаляються після того, як функція переходить до стадії GA (General Availability).
Щоб передати функціональні можливості, можна використовувати прапорець --feature-gates для kubeadm init, або можна додати елементи до поля featureGates, коли передаєте конфігураційний файл за допомогою --config.
Після того, як функціональна можливість переходить до стадії GA, її стандартне значення стає true.
Опис функціональних можливостей:
ControlPlaneKubeletLocalMode
З цією функціональною можливістю, при приєднанні нового вузла панелі управління kubeadm налаштовуватиме kubelet для підключення до локального kube-apiserver. Це забезпечує дотримання політики щодо версійних розбіжностей під час постійних оновлень (rolling upgrades).
EtcdLearnerMode
З цією функціональною можливістю, коли приєднується новий вузол панелі управління, буде створений новий учасник etcd як 'учень' і його буде підвищено до учасника з правом голосу лише після повного узгодження даних etcd.
NodeLocalCRISocket
З увімкненим функціоналом, kubeadm читатиме/записуватиме CRI-сокет для кожного вузла з/до файлу /var/lib/kubelet/instance-config.yaml замість того, щоб читати/записувати його з/до анотації kubeadm.alpha.kubernetes.io/cri-socket в обʼєкті Node. Новий файл застосовується як патч конфігурації екземпляра перед застосуванням будь-яких інших патчів, керованих користувачем, коли використовується прапорець --patches. Він містить єдине поле containerRuntimeEndpoint з формат файлу KubeletConfiguration. Якщо під час оновлення функцію увімкнено, але файл /var/lib/kubelet/instance-config.yaml ще не існує, kubeadm спробує прочитати значення сокета CRI з файлу /var/lib/kubelet/kubeadm-flags.env.
WaitForAllControlPlaneComponents
З увімкненою функцією, kubeadm чекатиме, доки всі компоненти панелі управління (kube-apiserver, kube-controller-manager, kube-scheduler) на вузлі панелі управління не повідомлять про стан 200 на своїх точках доступу /livez або /healthz. Ці перевірки виконуються на https://ADDRESS:PORT/ENDPOINT.
PORT береться з --secure-port компонента.
ADDRESS — це --advertise-address для kube-apiserver та --bind-address для kube-controller-manager та kube-scheduler.
ENDPOINT — це лише /healthz для kube-controller-manager, доки не буде підтримано /livez.
Якщо ви вкажете власні ADDRESS або PORT у конфігурації kubeadm, вони будуть враховані. Без увімкненої функції, kubeadm лише чекатиме на готовність kube-apiserver на вузлі панелі управління. Процес очікування починається одразу після запуску kubelet на хості за допомогою kubeadm. Рекомендується увімкнути цю функцію, якщо ви бажаєте спостерігати стан готовності всіх компонентів панелі управління під час виконання команд kubeadm init або kubeadm join.
Список застарілих функціональних можливостей:
Застарілі функціональні можливості kubeadm
Функція
Стандартно
Alpha
Beta
GA
Deprecated
PublicKeysECDSA
false
1.19
-
-
1.31
RootlessControlPlane
false
1.22
-
-
1.31
Опис застарілих функціональних можливостей:
PublicKeysECDSA
Можна використовувати для створення кластера, який використовує сертифікати ECDSA замість стандартного алгоритму RSA. Поновлення існуючих сертифікатів ECDSA також підтримується за допомогою kubeadm certs renew, але ви не можете перемикатися між алгоритмами RSA і ECDSA на льоту або під час оновлень. У версіях Kubernetes до v1.31 була помилка, коли ключі у згенерованих файлах kubeconfig встановлювалися з використанням RSA, навіть якщо ви увімкнули PublicKeysECDSA. Ця функціональна можливість застаріла на користь функціональності encryptionAlgorithm, доступної у kubeadm v1beta4.
RootlessControlPlane
Встановлення цього прапорця налаштовує розгорнуті компоненти панелі управління kubeadm у статичних Podʼах для kube-apiserver, kube-controller-manager, kube-scheduler та etcd для запуску від імені користувачів без прав суперкористувача. Якщо прапорець не встановлений, ці компоненти запускаються з правами root. Ви можете змінити значення цього прапорця функції перед оновленням до нової версії Kubernetes.
Список видалених функціональних можливостей:
Видалені функціональні можливості kubeadm
Елемент
Alpha
Beta
GA
Видалено
IPv6DualStack
1.16
1.21
1.23
1.24
UnversionedKubeletConfigMap
1.22
1.23
1.25
1.26
UpgradeAddonsBeforeControlPlane
1.28
-
-
1.31
Опис видалених функціональних можливостей:
IPv6DualStack
Цей прапорець допомагає налаштувати компоненти подвійного стека, коли функція знаходиться в процесі розробки. Для отримання більш детальної інформації про підтримку подвійного стека в Kubernetes дивіться Підтримка подвійного стека за допомогою kubeadm.
UnversionedKubeletConfigMap
Цей прапорець контролює назву ConfigMap, в якому kubeadm зберігає дані конфігурації kubelet. Якщо цей прапорець не вказаний або встановлений у true, ConfigMap називається kubelet-config. Якщо ви встановите цей прапорець у false, назва ConfigMap включатиме основну та додаткову версію для Kubernetes (наприклад: kubelet-config-1.32). Kubeadm забезпечує, що правила RBAC для читання та запису цього ConfigMap є відповідними до значення, яке ви встановили. Коли kubeadm записує цей ConfigMap (під час kubeadm init або kubeadm upgrade apply), kubeadm дотримується значення UnversionedKubeletConfigMap. При читанні цього ConfigMap (під час kubeadm join, kubeadm reset, kubeadm upgrade ...), kubeadm спочатку намагається використовувати назву ConfigMap без версії; якщо це не вдається, kubeadm переходить до використання застарілої (версійної) назви для цього ConfigMap.
UpgradeAddonsBeforeControlPlane
Цю функціональну можливість було видалено. Вона була визнана у версії v1.28 як застаріла функція і потім видалена у версії v1.31. Для документації щодо старіших версій, будь ласка, перейдіть на відповідну версію вебсайту.
Додавання параметрів kube-proxy
Для отримання інформації про параметри kube-proxy у конфігурації kubeadm дивіться:
Для запуску kubeadm без підключення до Інтернету необхідно попередньо завантажити необхідні образи панелі управління.
Ви можете отримати перелік та завантажити образи за допомогою команди kubeadm config images:
kubeadm config images list
kubeadm config images pull
Ви можете використати --config з вищенаведеними командами з файлом конфігурації kubeadm для контролю полів kubernetesVersion та imageRepository.
Усі стандартні образи registry.k8s.io, необхідні kubeadm, підтримують кілька архітектур.
Використання власних образів
Стандартно, kubeadm завантажує образи з registry.k8s.io. Якщо запитана версія Kubernetes є CI міткою (наприклад, ci/latest), використовується gcr.io/k8s-staging-ci-images.
Вказати kubernetesVersion, що впливає на версію образів.
Вказати альтернативний imageRepository, який буде використовуватися замість registry.k8s.io.
Вказати конкретний imageRepository та imageTag для etcd або CoreDNS.
Шляхи образів між стандартним registry.k8s.io та власним репозиторієм, зазначеним за допомогою imageRepository, можуть відрізнятися з причин зворотної сумісності. Наприклад, один образ може мати підшлях у registry.k8s.io/subpath/image, але стандартно бути my.customrepository.io/image при використанні власного репозиторію користувача.
Щоб переконатися, що ви завантажуєте образи до вашого власного репозиторію у шляхи, які може використовувати kubeadm, вам потрібно:
Завантажити образи зі стандартних шляхів з registry.k8s.io за допомогою kubeadm config images {list|pull}.
Завантажити образи до шляхів з kubeadm config images list --config=config.yaml, де config.yaml містить власне значення imageRepository та/або imageTag для etcd та CoreDNS.
Передати той самий config.yaml до kubeadm init.
Власні образи sandbox (pause)
Щоб встановити власний образ для цих контейнерів, потрібно налаштувати ваше середовище виконання контейнерів для використання цього образу. Зверніться до документації вашого середовища виконання контейнерів, щоб дізнатися, як змінити це налаштування; для певних середовищ виконання контейнерів ви також можете знайти поради у розділі Середовища виконання контейнерів.
Завантаження сертифікатів панелі управління до кластера
Додавши прапорець --upload-certs до kubeadm init, ви можете тимчасово завантажити сертифікати панелі управління до Secret у кластері. Зверніть увагу, що дія цього Secret автоматично спливає через 2 години. Сертифікати шифруються за допомогою 32-байтного ключа, який можна задати за допомогою --certificate-key. Той самий ключ можна використовувати для завантаження сертифікатів при приєднанні додаткових вузлів панелі управління, передавши --control-plane та --certificate-key до kubeadm join.
Для повторного завантаження сертифікатів після закінчення їхнього терміну дії можна використовувати таку команду фази:
Попередньо визначений certificateKey можна вказати в InitConfiguration при передачі файлу конфігурації за допомогою --config.
Якщо попередньо визначений ключ сертифіката не передано до kubeadm init і
kubeadm init phase upload-certs, новий ключ буде згенеровано автоматично.
Для генерації нового ключа за запитом можна використовувати наступну команду:
kubeadm certs certificate-key
Управління сертифікатами за допомогою kubeadm
Для отримання докладної інформації про управління сертифікатами за допомогою kubeadm перегляньте Управління сертифікатами за допомогою kubeadm. Документ містить інформацію про використання зовнішнього центру сертификації (CA), власні сертифікати
та оновлення сертифікатів.
Керування drop-in файлом для kubelet у kubeadm
Пакет kubeadm постачається з файлом конфігурації для запуску kubelet через systemd. Зауважте, що CLI kubeadm ніколи не торкається цього drop-in файлу. Цей drop-in файл є частиною пакунка kubeadm DEB/RPM.
Стандартно kubeadm намагається зʼясувати яке у вас середовище виконання контейнерів. Для детальнішої інформації щодо цього, дивіться посібник з установки CRI для kubeadm.
Налаштування імені вузла
Типово kubeadm присвоює імʼя вузла на основі мережевої адреси машини. Ви можете змінити це налаштування за допомогою прапорця --node-name. Цей прапорець передає відповідне значення --hostname-override до kubelet.
Зверніть увагу, що заміна імені хосту може вплинути на роботу хмарних провайдерів,
деталі за посиланням.
Автоматизація kubeadm
Замість копіювання токену, який ви отримали з kubeadm init на кожний вузол, як у базовому посібнику з kubeadm, ви можете паралельно розподіляти токен для полегшення автоматизації. Щоб реалізувати цю автоматизацію, вам потрібно знати IP-адресу, яку матиме вузол панелі управління після запуску, або використовувати DNS-імʼя чи адресу балансувальника навантаження.
Згенеруйте токен. Цей токен повинен мати форму <6 символьний рядок>.<16 символьний рядок>. Формально він повинен відповідати регулярному виразу: [a-z0-9]{6}\.[a-z0-9]{16}.
kubeadm може згенерувати токен для вас:
kubeadm token generate
Запустіть одночасно вузол панелі управління та робочі вузли з цим токеном. Під час їх запуску вони мають знайти один одного та сформувати кластер. Той самий аргумент --token можна використовувати як у kubeadm init, так і у kubeadm join.
Аналогічно можна поступити з --certificate-key при приєднанні додаткових вузлів панелі управління. Ключ можна згенерувати за допомогою:
kubeadm certs certificate-key
Як тільки кластер буде запущений, ви зможете використовувати файл /etc/kubernetes/admin.conf з вузла панелі управління для спілкування з кластером з адміністративними правами чи Генерація файлів kubeconfig для додаткових користувачів.
Зауважте, що цей спосіб ініціалізації має деякі спрощені гарантії безпеки, оскільки не дозволяє перевіряти кореневий хеш сертифіката з --discovery-token-ca-cert-hash (оскільки він не генерується при проведенні вузлів). Докладні відомості дивіться в kubeadm join.
Що далі
kubeadm init phase для отримання більш детальної інформації про фази kubeadm init.
kubeadm join для налаштування робочого вузла Kubernetes та його приєднання до кластера.
kubeadm upgrade для оновлення кластера Kubernetes до новішої версії.
kubeadm reset для скидання будь-яких змін, внесених до цього хосту за допомогою kubeadm init або kubeadm join.
10.1.3 - kubeadm join
Ця команда ініціалізує новий вузол Kubernetes і приєднує його до наявного кластера.
Запустіть цю команду на будь-якому компʼютері, який ви хочете приєднати до існуючого кластера
Опис
Під час приєднання до ініціалізованого кластера за допомогою kubeadm, необхідно встановити двосторонню довіру. Цей процес розділяється на два етапи: виявлення (щоб Node довіряв Панелі Управління Kubernetes) та TLS завантаження (щоб Панель управління Kubernetes довіряла Node).
Існує дві основні схеми для виявлення. Перша — використовувати спільний токен разом з IP-адресою сервера API. Друга — надати файл, який є підмножиною стандартного файлу kubeconfig. Файл discovery/kubeconfig підтримує токен, втулки автентифікації client-go ("exec"), "tokenFile" та "authProvider". Цей файл може бути локальним або завантаженим через URL HTTPS. Форми приєднання є:
Можна використовувати лише одну форму. Якщо інформація для виявлення завантажується з URL, обовʼязково використовувати HTTPS. У цьому випадку для перевірки зʼєднання використовується встановлений на хості набір сертифікатів CA.
Якщо ви використовуєте спільний токен для виявлення, слід також передати прапорець --discovery-token-ca-cert-hash для перевірки публічного ключа кореневого центру сертифікації (CA), який представлений Панеллю Управління Kubernetes. Значення цього прапорця визначається як "<тип-хешу>:<шестнадцяткове-кодоване-значення>", де підтримуваний тип хешу — "sha256". Хеш обчислюється по байтах обʼєкта Subject Public Key Info (SPKI) (як в RFC7469). Це значення доступне у вихідних даних "kubeadm init" або може бути обчислене за допомогою стандартних інструментів. Прапорець --discovery-token-ca-cert-hash може бути повторений кілька разів, щоб дозволити використання більше одного публічного ключа.
Якщо ви не можете знати хеш публічного ключа CA заздалегідь, ви можете передати прапорець --discovery-token-unsafe-skip-ca-verification для вимкнення цієї перевірки. Це послаблює модель безпеки kubeadm, оскільки інші вузли можуть потенційно видавати себе за Панель Управління Kubernetes.
Механізм TLS завантаження також керується через спільний токен. Це використовується для тимчасової автентифікації в Панелі Управління Kubernetes для подання запиту на підписання сертифіката (CSR) для локально створеної пари ключів. Типово, kubeadm налаштує Панель Управління Kubernetes автоматично схвалювати ці запити на підписання. Цей токен передається за допомогою прапорця --tls-bootstrap-token abcdef.1234567890abcdef.
Часто той самий токен використовується для обох частин. У цьому випадку прапорець --token можна використовувати замість окремого зазначення кожного токена.
Команда "join [api-server-endpoint]" виконує наступні фази:
preflight Виконати передстартові перевірки для приєднання
control-plane-prepare Підготувати машину для обслуговування панелі управління
/download-certs Завантажити сертифікати, спільні для вузлів панелі управління, з Secret kubeadm-certs
/certs Створити сертифікати для нових компонентів панелі управління
/kubeconfig Створити kubeconfig для нових компонентів панелі управління
/control-plane Створити маніфести для нових компонентів панелі управління
kubelet-start Записати налаштування kubelet, сертифікати та (перезавантажити) kubelet
control-plane-join Приєднати машину як екземпляр панелі управління
/etcd Додати нового локального члена etcd
/mark-control-plane Позначити вузол як панель управління
wait-control-plane Експериментально: чекати запуску панелі управління
kubeadm join [api-server-endpoint][flags]
Параметри
--apiserver-advertise-address string
Якщо вузол має хостити новий екземпляр панелі управління, IP-адреса, яку сервер API буде оголошувати як ту, на якій він слухає. Якщо не встановлено, буде використовуватися стандартний інтерфейс.
--apiserver-bind-port int32 Стандартно: 6443
Якщо вузол має хостити новий екземпляр панелі управління, порт, до якого буде привʼязаний сервер API.
--certificate-key string
Використовуйте цей ключ для розшифрування секретів сертифікатів, завантажених за допомогою init. Ключ сертифіката — це шестнадцятковий закодований рядок, який є AES ключем розміром 32 байти.
--config string
Шлях до файлу конфігурації kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--cri-socket string
Шлях до CRI сокета для підключення. Якщо не встановлено, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр, лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--discovery-file string
Для виявлення на основі файлу, файл або URL, з якого буде завантажена інформація про кластер.
--discovery-token string
Для виявлення на основі токена, токен, який використовується для перевірки інформації про кластер, отриманої з сервера API.
--discovery-token-ca-cert-hash strings
Для виявлення на основі токена, перевірити, що публічний ключ кореневого центру сертифікації відповідає цьому хешу (формат: "<тип>:<значення>").
--discovery-token-unsafe-skip-ca-verification
Для виявлення на основі токена, дозволити приєднання без закріплення --discovery-token-ca-cert-hash.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка join
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки від усіх перевірок.
--node-name string
Вказати імʼя вузла.
--patches string
Шлях до теки, що містить файли з назвами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json" і відповідають форматам патчів, підтримуваних kubectl. Типовий "patchtype" — "strategic". "extension" має бути або "json", або "yaml". "suffix" — це необовʼязковий рядок, який можна використовувати для визначення, які патчі застосовуються першими в алфавітно-числовому порядку.
--skip-phases strings
Список фаз, які потрібно пропустити
--tls-bootstrap-token string
Вкажіть токен, який використовується для тимчасової автентифікації з Панеллю Управління Kubernetes під час приєднання вузла.
--token string
Використовуйте цей токен для discovery-token та tls-bootstrap-token, коли ці значення не вказані окремо.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Процес приєднання
kubeadm join ініціалізує робочий вузол Kubernetes або вузол панелі управління та додає його до кластера. Ця дія складається з наступних кроків для робочих вузлів:
kubeadm завантажує необхідну інформацію про кластер з сервера API. Стандартно використовується токен початкового завантаження та хеш ключа CA для перевірки достовірності цих даних. Кореневий CA також може бути виявлений безпосередньо через файл або URL.
Як тільки інформація про кластер відома, kubelet може почати процес TLS початкового завантаження.
Завантажувач TLS використовує спільний токен для тимчасової автентифікації з сервером API Kubernetes для надсилання запиту на підписання сертифіката (CSR); стандартно панель управління підписує цей CSR-запит автоматично.
Нарешті, kubeadm налаштовує локальний kubelet для підключення до сервера API з остаточною ідентичністю, призначеною вузлу.
Для вузлів панелі управління виконуються додаткові кроки:
Завантаження сертифікатів, спільних для вузлів панелі управління з кластера (якщо це явно запитано користувачем).
Генерація маніфестів компонентів панелі управління, сертифікатів та kubeconfig.
Додавання нового локального члена etcd.
Використання фаз приєднання з kubeadm
Kubeadm дозволяє приєднати вузол до кластера поетапно, використовуючи kubeadm join phase.
Щоб переглянути впорядкований список фаз та підфаз, можна викликати kubeadm join --help. Список буде розташований у верхній частині екрана допомоги, і кожна фаза буде мати опис поруч із нею. Зверніть увагу, що при виклику kubeadm join усі фази та підфази будуть виконані саме в цьому порядку.
Деякі фази мають унікальні прапорці, тому якщо ви хочете переглянути список доступних опцій, додайте --help, наприклад:
kubeadm join phase kubelet-start --help
Подібно до команди kubeadm init phase, команда kubeadm join phase дозволяє пропустити список фаз, використовуючи прапорець --skip-phases.
Крім того, ви можете використовувати поле skipPhases в JoinConfiguration.
Визначення, якому CA кластера довіряти
Процес виявлення kubeadm має кілька варіантів, кожен з яких має свої компроміси щодо безпеки. Правильний метод для вашого середовища залежить від того, як ви впроваджуєте вузли та які вимоги до безпеки у вас є щодо вашої мережі та життєвого циклу вузлів.
Виявлення на основі токена з закріпленням CA
Це типовий режим у kubeadm. У цьому режимі kubeadm завантажує конфігурацію кластера (включаючи кореневий CA) та перевіряє її за допомогою токена, а також перевіряє, що відкритий ключ кореневого CA відповідає наданому хешу і що сертифікат сервера API дійсний в кореневому CA.
Хеш ключа CA має формат sha256:<hex_encoded_hash>. Стандартне значення хешу друкується в кінці команди kubeadm init або у виведенні команди kubeadm token create --print-join-command. Воно знаходиться в стандартному форматі (див. RFC7469) і може бути також обчислено сторонніми інструментами або системами забезпечення. Наприклад, використовуючи OpenSSL CLI:
Ви також можете викликати join для вузла панелі управління з прапорцем --certificate-key для копіювання сертифікатів на цей вузол, якщо команда kubeadm init була викликана з прапорцем --upload-certs.
Переваги:
Дозволяє вузлам початкового завантаження безпечно виявляти корінь довіри для вузла панелі управління, навіть якщо інші робочі вузли або мережа скомпрометовані.
Зручно виконувати вручну, оскільки вся необхідна інформація вміщується в одну команду kubeadm join.
Недоліки:
Хеш CA зазвичай не відомий до тих пір, поки вузол панелі управління не буде впроваджений, що може ускладнити створення автоматизованих інструментів впровадження, які використовують kubeadm. Генеруючи свій CA заздалегідь, ви можете обійти це обмеження.
Виявлення на основі токена без закріплення CA
Цей режим покладається лише на симетричний токен для підпису (HMAC-SHA256) інформації про виявлення, що встановлює корінь довіри для панелі управління. Щоб використовувати цей режим, вузли, що приєднуються, повинні пропустити перевірку хешу публічного ключа CA, використовуючи --discovery-token-unsafe-skip-ca-verification. Якщо можливо, слід розглянути використання одного з інших режимів.
Токен можна створити заздалегідь і поділитися з вузлом панелі управління та робочими вузлами, які потім можуть початково завантажуватися паралельно без координації. Це дозволяє використовувати його в багатьох сценаріях розгортання.
Недоліки:
Якщо зловмисник зможе вкрасти токен початкового завантаження через якусь уразливість, вони можуть використовувати цей токен (разом з доступом на рівні мережі) для видавання себе за вузол панелі управління для інших вузлів початкового завантаження. Це може бути або не бути відповідним компромісом у вашому середовищі.
Виявлення на основі файлів або HTTPS
Це забезпечує автономний спосіб встановлення кореня довіри між вузлом панелі управління та вузлами початкового завантаження. Розгляньте використання цього режиму, якщо ви створюєте автоматизоване впровадження за допомогою kubeadm. Формат файлу для виявлення — це звичайний файл Kubernetes kubeconfig.
У разі, якщо файл для виявлення не містить облікових даних, буде використовуватися токен TLS.
Дозволяє вузлам початкового завантаження безпечно виявляти корінь довіри для вузла панелі управління, навіть якщо мережа або інші робочі вузли скомпрометовані.
Недоліки:
Вимагає, щоб у вас був спосіб перенести інформацію про виявлення від вузла панелі управління до вузлів початкового завантаження. Якщо файл для виявлення містить облікові дані, ви повинні тримати його в секреті та передавати через безпечний канал. Це може бути можливо з вашим постачальником хмарних послуг або інструментом забезпечення розгортання.
Використання власних облікових даних kubelet з kubeadm join
Щоб дозволити kubeadm join використовувати заздалегідь визначені облікові дані kubelet і пропустити клієнтське початкове завантаження TLS та затвердження CSR для нового вузла:
На робочому вузлі панелі управління в кластері, який має /etc/kubernetes/pki/ca.key, виконайте kubeadm kubeconfig user --org system:nodes --client-name system:node:$NODE > kubelet.conf. $NODE має бути встановлено на імʼя нового вузла.
Відредагуйте отриманий kubelet.conf вручну, щоб налаштувати імʼя кластера та точку доступу сервера, або запустіть kubeadm kubeconfig user --config (приймає InitConfiguration).
За замовчуванням увімкнено автоматичне затвердження запитів на клієнтські сертифікати CSR, коли використовується токен Bootstrap під час аутентифікації. Якщо ви не бажаєте, щоб кластер автоматично затверджував клієнтські сертифікати kubelet, ви можете вимкнути цю функцію виконавши наступну команду:
Після цього команда kubeadm join буде блокуватися до тих пір, поки адміністратор не затвердить CSR вручну:
За допомогою kubectl get csr ви можете переглянути, що оригінальний CSR знаходиться в стані Pending.
kubectl get csr
Результат буде подібним до такого:
NAME AGE REQUESTOR CONDITION
node-csr-c69HXe7aYcqkS1bKmH4faEnHAWxn6i2bHZ2mD04jZyQ 18s system:bootstrap:878f07 Pending
kubectl certificate approve дозволяє адміністратору затвердити CSR. Ця дія наказує контролеру підпису сертифікатів видати сертифікат запитувачеві з властивостями, зазначеними у CSR.
NAME AGE REQUESTOR CONDITION
node-csr-c69HXe7aYcqkS1bKmH4faEnHAWxn6i2bHZ2mD04jZyQ 1m system:bootstrap:878f07 Approved,Issued
Це змушує процес kubeadm join працювати тільки у випадку, коли була виконана команда kubectl certificate approve.
Вимкнення загального доступу до ConfigMap cluster-info
Для того, щоб досягти потоку приєднання, використовуючи токен як єдину частину інформації про перевірку, необхідно викласти у відкритий доступ ConfigMap з деякими даними, необхідними для перевірки ідентичності вузла панелі управління, стандартно публікується у відкритому доступі. Хоча в цьому ConfigMap немає приватних даних, деякі користувачі можуть бажати вимкнути цю можливість. Це дія призведе до відключення можливості використання прапорця --discovery-token в потоці kubeadm join. Ось кроки для вимкнення цієї функції:
Отримайте файл cluster-info з API сервера:
kubectl -n kube-public get cm cluster-info -o jsonpath='{.data.kubeconfig}' | tee cluster-info.yaml
Ці команди слід виконати після kubeadm init, але перед kubeadm join.
Використання kubeadm join з конфігураційним файлом
Увага:
Конфігураційний файл все ще вважається бета-версією і може змінюватися у майбутніх версіях.
Можливо сконфігурувати kubeadm join, використовуючи конфігураційний файл замість прапорців командного рядка, і деякі більш розширені функції можуть бути доступні лише як опції конфігураційного файлу. Цей файл передається за допомогою прапорця --config і повинен містити структуру JoinConfiguration. У деяких випадках змішування --config з іншими прапорцями може бути недозволеним.
Стандартна конфігурація може бути виведена за допомогою команди kubeadm config print.
Якщо ваша конфігурація не використовує останню версію, рекомендується перейти на неї за допомогою команди kubeadm config migrate.
Для отримання додаткової інформації щодо полів та використання конфігурації ви можете перейти до нашого довідника API.
Що далі
kubeadm init для ініціалізації вузла панелі управління Kubernetes.
kubeadm token для управління токенами для kubeadm join.
kubeadm reset для скасування будь-яких змін, внесених до цього хосту за допомогою kubeadm init або kubeadm join.
10.1.4 - kubeadm upgrade
kubeadm upgrade — це зручна команда, яка обгортає складну логіку оновлення однією командою, з підтримкою як планування оновлення, так і його фактичного виконання.
Інструкція kubeadm upgrade
Кроки для виконання оновлення за допомогою kubeadm викладені в цьому документі. Для старіших версій kubeadm, будь ласка, зверніться до старих наборів документації на сайті Kubernetes.
Ви можете використовувати kubeadm upgrade diff для перегляду змін, які будуть застосовані до маніфестів статичних Pod.
У Kubernetes версії v1.15.0 і пізніше, kubeadm upgrade apply та kubeadm upgrade node також автоматично оновлять сертифікати, керовані kubeadm на цьому вузлі, включаючи ті, що зберігаються у файлах kubeconfig. Щоб відмовитися від цього, можна передати прапорець --certificate-renewal=false. Для отримання додаткової інформації про оновлення сертифікатів дивіться документацію з управління сертифікатами.
Примітка:
Команди kubeadm upgrade apply та kubeadm upgrade plan мають застарілий прапорець --config, який дозволяє переналаштувати кластер під час планування або оновлення конкретного вузла панелі управління. Будь ласка, зверніть увагу, що робочий процес оновлення не був розроблений для цього сценарію, і можуть бути повідомлення про несподівані результати.
kubeadm upgrade plan
Перевіряє, до яких версій можна оновитися, і перевіряє, чи можна оновити ваш поточний кластер.
Опис
Перевіряє, до яких версій можна оновитися, і перевіряє, чи можна оновити ваш поточний кластер. Ця команда може бути виконана лише на вузлах панелі управління, де існує файл kubeconfig "admin.conf". Щоб пропустити перевірку Інтернету, вкажіть необовʼязковий параметр [version].
kubeadm upgrade plan [version][flags]
Параметри
--allow-experimental-upgrades
Показати нестабільні версії Kubernetes як альтернативу для оновлення і дозволити оновлення до альфа/бета/кандидатів на випуск версій Kubernetes.
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли поле або ключ map відсутній у шаблоні. Застосовується лише до форматів виведення golang та jsonpath.
--allow-release-candidate-upgrades
Показати версії кандидатів на випуск Kubernetes як альтернативу для оновлення і дозволити оновлення до версій кандидатів на випуск Kubernetes.
--config string
Шлях до файлу конфігурації kubeadm.
-h, --help
довідка plan
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки з усіх перевірок.
Файл kubeconfig, який буде використовуватися при зверненні до кластера. Якщо прапорець не заданий, буде проведено пошук файлу kubeconfig в стандартнх місцях.
-o, --output string Типово: "text"
Формат виводу. Один із: text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.
--print-config
Вказує, чи потрібно надрукувати файл конфігурації, який буде використаний під час оновлення.
--show-managed-fields
Якщо true, зберігати managedFields під час виводу обʼєктів у форматі JSON або YAML.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm upgrade apply
Оновлює кластер Kubernetes до вказаної версії.
Опис
Оновлює кластер Kubernetes до вказаної версії.
Команда "apply [version]" виконує наступні етапи:
preflight Виконання перевірок перед запуском
control-plane Оновлення панелі управління
upload-config Завантаження конфігурації kubeadm та kubelet у ConfigMapі
/kubeadm Завантаження конфігурації кластера kubeadm у ConfigMap
/kubelet Завантаження конфігурації компоненту kubelet у ConfigMap
kubelet-config Оновлення конфігурації kubelet для цього вузла
bootstrap-token Налаштування токену bootstrap та правил cluster-info RBAC
addon Оновлення типових надбудов kubeadm
/coredns Оновлення надбудови CoreDNS
/kube-proxy Оновлення надбудови kube-proxy
post-upgrade Запуск завдань після оновлення
kubeadm upgrade apply [version]
Параметри
--allow-experimental-upgrades
Показує нестабільні версії Kubernetes як альтернативу для оновлення і дозволяє оновлювати до альфа/бета/версій кандидатів Kubernetes.
--allow-release-candidate-upgrades
Показує версії кандидатів на випуск Kubernetes як альтернативу для оновлення і дозволяє оновлювати до версій кандидатів на випуск Kubernetes.
--certificate-renewal Типово: true
Виконує оновлення сертифікатів, які використовуються компонентами під час оновлення.
--config string
Шлях до файлу конфігурації kubeadm.
--dry-run
Не змінює жодного стану, просто показує дії, які будуть виконані.
--etcd-upgrade Типово: true
Виконує оновлення etcd.
-f, --force
Примусове оновлення, навіть якщо деякі вимоги можуть бути не виконані. Це також передбачає неітерактивний режим.
-h, --help
довідка apply
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки з усіх перевірок.
Файл kubeconfig, який буде використовуватися при зверненні до кластера. Якщо прапорець не заданий, буде проведено пошук файлу kubeconfig в стандартних місцях.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним із "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним із "strategic", "merge" або "json", і вони відповідають форматам патчів, які підтримуються kubectl. За замовчуванням "patchtype" - "strategic". "extension" повинен бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який може використовуватися для визначення порядку застосування патчів за алфавітом.
--print-config
Вказує, чи потрібно надрукувати файл конфігурації, який буде використаний під час оновлення.
--skip-phases strings
Список етапів, які потрібно оминути
-y, --yes
Виконати оновлення і не запитувати підтвердження (режим без взаємодії).
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm upgrade diff
Показує які відмінності можуть бути застосовані до наявних маніфестів статичних Pod. Дивіться також: kubeadm upgrade apply --dry-run
Опис
Показує які відмінності можуть бути застосовані до наявних маніфестів статичних Pod. Дивіться також: kubeadm upgrade apply --dry-run
Файл kubeconfig, який буде використовуватися при зверненні до кластера. Якщо прапорець не заданий, буде проведено пошук файлу kubeconfig в стандартних місцях.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm upgrade node
Команда upgrade для вузлів в кластері
Опис
Команда upgrade для вузлів в кластері.
Команда "node" виконує наступні фази:
preflight Виконання попереднії перевірок оновлення вузла
control-plane Оновлення екземпляру панелі управління, розгорнутий на цьому вузлі, якщо такий є
kubelet-config Оновлення конфігурацію kubelet для цього вузла
addon Оновлення стандартних надбудов kubeadm
/coredns Оновлення надбудови CoreDNS
/kube-proxy Оновлення надбудови kube-proxy
post-upgrade Запуск завдань після оновлення
kubeadm upgrade node [flags]
Параметри
--certificate-renewal Типово: true
Виконати оновлення сертифікатів, використовуваних компонентами, які змінюються під час оновлення.
--config string
Шлях до файлу конфігурації kubeadm.
--dry-run
Не змінює жодного стану, просто показує дії, які будуть виконані.
--etcd-upgrade Типово: true
Виконати оновлення etcd.
-h, --help
довідка node
--ignore-preflight-errors strings
Список перевірок, помилки в яких будуть відображені як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки з усіх перевірок.
Файл kubeconfig, який буде використовуватися при зверненні до кластера. Якщо прапорець не заданий, буде проведено пошук файлу kubeconfig в стандартних місцях.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним із "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним із "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" - "strategic". "extension" повинен бути або "json", або "yaml". "suffix" - це необовʼязковий рядок, який може використовуватися для визначення порядку застосування патчів за алфавітном.
--skip-phases strings
Список фаз, які слід пропустити.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Що далі
kubeadm config якщо ви ініціалізували свій кластер за допомогою kubeadm версії 1.7.x або нижче, щоб налаштувати ваш кластер для оновлення за допомогою kubeadm upgrade.
10.1.5 - kubeadm upgrade phase
kubeadm upgrade apply phase
За допомогою фаз kubeadm upgrade apply ви можете вибрати виконання окремих кроків початкового оновлення вузла панелі управління.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
-y, --yes
Виконати оновлення і не запитувати підтвердження (режим без взаємодії).
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Оновлення панелі управління
Опис
Оновлення панелі управління
kubeadm upgrade apply phase control-plane [flags]
Параметри
--certificate-renewal Типово: true
Виконує оновлення сертифікатів, які використовуються компонентами під час оновлення.
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Завантаження конфігурацій kubeadm та kubelet до ConfigMaps
Опис
Завантаження конфігурацій kubeadm та kubelet до ConfigMaps
kubeadm upgrade apply phase upload-config [flags]
-h, --help
Довідка for upload-config
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Оновлення конфігурації kubelet для цього вузла
Опис
Оновлення конфігурації kubelet для цього вузла, завантаживши її з файлу kubelet-config ConfigMap, що зберігається у кластері
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Налаштовує токен bootstrap та правила cluster-info RBAC
Опис
Налаштовує токен bootstrap та правила cluster-info RBAC
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Оновлює стандартні надбудови kubeadm
Опис
Оновлює стандартні надбудови kubeadm
kubeadm upgrade apply phase addon [flags]
Параметри
-h, --help
Довідка addon
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Запуск завдань після оновлення
Опис
Запуск завдань після оновлення
kubeadm upgrade apply phase post-upgrade [flags]
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm upgrade node phase
За допомогою фаз kubeadm upgrade node ви можете вибрати окремі кроки оновлення вторинної панелі управління або робочих вузлів.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Оновлює конфігурації kubelet для цього вузла
Опис
Оновлення конфігурації kubelet для цього вузла, завантаживши її з файлу kubelet-config ConfigMap, що зберігається у кластері
kubeadm upgrade node phase kubelet-config [flags]
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Оновлення стандартних надбудов kubeadm
Опис
Оновлення стандартних надбудов kubeadm
kubeadm upgrade node phase addon [flags]
Параметри
-h, --help
Довідка addon
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Запуск завдань після оновлення
Опис
Запуск завдань після оновлення
kubeadm upgrade node phase post-upgrade [flags]
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Що далі
kubeadm init для завантаження вузла керування Kubernetes
kubeadm alpha для випробування експериментальних функцій
10.1.6 - kubeadm config
Під час виконання kubeadm init, kubeadm надсилає обʼєкт ClusterConfiguration у ваш кластер у ConfigMap з назвою kubeadm-config у просторі імен kube-system. Ця конфігурація зчитується під час виконання kubeadm join, kubeadm reset та kubeadm upgrade.
Ви можете використовувати kubeadm config print для виведення стандартної статичної конфігурації, яку використовує kubeadm для kubeadm init і kubeadm join.
Примітка:
Вивід цієї команди використовується як приклад. Ви повинні вручну редагувати вивід цієї команди, щоб адаптувати його до ваших налаштувань. Видаліть поля, щодо яких ви не впевнені, і kubeadm спробує заповнити їх стандартними значеннями під час виконання, аналізуючи хост.
Ви можете використовувати kubeadm config migrate для перетворення старих конфігураційних файлів, що містять застарілу версію API, на новішу підтримувану версію API.
kubeadm config validate можна використовувати для перевірки конфігураційного файлу.
kubeadm config images list та kubeadm config images pull можна використовувати для виведення списку та завантаження зображень, необхідних kubeadm.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm config print init-defaults
Вивід стандартної конфігурації ініціалізації, яка може використовуватись у kubeadm init.
Опис
Ця команда виводить обʼєкти, такі як стандартну конфігурацію ініціалізації, які можуть бути використані у kubeadm init.
Зверніть увагу, що конфіденційні значення, такі як поля Bootstrap Token, замінюються значеннями-заповнювачами, такими як abcdef.0123456789abcdef", щоб пройти перевірку, але не виконувати реальні дії для створення токена.
kubeadm config print init-defaults [flags]
Параметри
--component-configs strings
Список обʼєктів API конфігурації компонентів через кому для виводу типових значень. Доступні значення: [KubeProxyConfiguration KubeletConfiguration]. Якщо цей прапорець не встановлено, конфігурації компонентів не буде надруковано.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm config print join-defaults
Вивід стандартної конфігурації для команди kubeadm join.
Опис
Ця команда виводить обʼєкти, такі як стандартна конфігурація команди join, яка використовується для 'kubeadm join'.
Зверніть увагу, що конфіденційні значення, такі як поля Bootstrap Token, замінюються значеннями-заповнювачами, такими як abcdef.0123456789abcdef", щоб пройти перевірку, але не виконувати реальні дії для створення токена.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm config migrate
Зчитує стару версію типів конфігураційного API kubeadm з файлу і виводе аналогічний обʼєкт конфігурації для нової версії
Опис
Ця команда дозволяє конвертувати обʼєкти конфігурації старих версій у найновішу підтримувану версію, локально у CLI інструменті, без жодних змін у кластері. У цій версії kubeadm підтримуються наступні версії API:
kubeadm.k8s.io/v1beta4
Крім того, kubeadm може записувати конфігурацію лише версії "kubeadm.k8s.io/v1beta4", але читати обидві версії. Отже, незалежно від того, яку версію ви передаєте параметру --old-config, API обʼєкт буде прочитано, десеріалізовано, встановлено стандартні значення, конвертовано, валідовано та повторно серіалізовано під час запису у stdout або --new-config, якщо вказано.
Іншими словами, вихід цієї команди є тим, що kubeadm фактично читав би внутрішньо, якщо ви надіслали б цей файл команді "kubeadm init".
kubeadm config migrate [flags]
Параметри
--allow-experimental-api
Дозволити міграцію на експериментальні, невипущені API
-h, --help
довідка migrate
--new-config string
Шлях до отриманого еквівалентного конфігураційного файлу kubeadm з використанням нової версії API. Необовʼязково, якщо не вказано, вивід буде надіслано у STDOUT.
--old-config string
Шлях до конфігураційного файлу kubeadm, який використовує стару версію API і який має бути конвертований. Цей прапорець є обовʼязковим.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm config validate
Зчитує файл, що містить конфігураційний API kubeadm, і повідомляє про будь-які проблеми під час валідації
Опис
Ця команда дозволяє перевірити файл конфігурації API kubeadm та повідомити про будь-які попередження та помилки. Якщо помилок немає, статус виводу буде нульовим, в іншому випадку він буде ненульовим. Будь-які проблеми з розбором, такі як невідомі поля API, спричинять помилки. Невідомі версії API та поля з недійсними значеннями також спричинять помилки. Будь-які інші помилки або попередження можуть бути повідомлені залежно від вмісту вхідного файлу.
У цій версії kubeadm підтримуються наступні версії API:
kubeadm.k8s.io/v1beta4
kubeadm config validate [flags]
Параметри
--allow-experimental-api
Дозволяє валідацію експериментальних, невипущених API.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm config images list
Виводить список образів, які буде використовувати kubeadm. Файл конфігурації використовується у випадку налаштування будь-яких образів або сховищ образів
Опис
Виводить список образів, які буде використовувати kubeadm. Файл конфігурації використовується у випадку налаштування будь-яких образів або сховищ образів.
kubeadm config images list [flags]
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли у шаблоні відсутнє поле або ключ мапи. Застосовується тільки до форматів виводу golang і jsonpath.
--config string
Шлях до файлу конфігурації kubeadm.
--feature-gates string
Набір пар ключ=значення, що описують функціональні можливості для різних функцій. Варіанти: ControlPlaneKubeletLocalMode=true|false (ALPHA - default=false) EtcdLearnerMode=true|false (default=true) NodeLocalCRISocket=true|false (ALPHA - default=false) PublicKeysECDSA=true|false (DEPRECATED - default=false) RootlessControlPlane=true|false (ALPHA - default=false) WaitForAllControlPlaneComponents=true|false (ALPHA - default=false)
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm config images pull
Витягує образи які використовує kubeadm з реєстру
Опис
Витягує образи які використовує kubeadm з реєстру
kubeadm config images pull [flags]
Параметри
--config string
Шлях до файлу конфігурації kubeadm.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--feature-gates string
Набір пар ключ=значення, що описують ворота функцій для різних можливостей. Варіанти: ControlPlaneKubeletLocalMode=true|false (ALPHA - default=false) EtcdLearnerMode=true|false (default=true) NodeLocalCRISocket=true|false (ALPHA - default=false) PublicKeysECDSA=true|false (DEPRECATED - default=false) RootlessControlPlane=true|false (ALPHA - default=false) WaitForAllControlPlaneComponents=true|false (ALPHA - default=false)
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, набір стандартних розташувань може бути перевірений на наявність поточного файлу kubeconfig.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Що далі
kubeadm upgrade для оновлення кластера Kubernetes до новішої версії
10.1.7 - kubeadm reset
Виконує максимально можливий відкат змін, зроблених командами kubeadm init або kubeadm join.
Виконує максимально можливий відкат змін для хоста, зроблених командами kubeadm init або kubeadm join.
Опис
Виконує максимально можливий відкат змін для хоста, зроблених командами kubeadm init або kubeadm join.
Шлях до теки, де зберігаються сертифікати. Якщо вказано, очистити цю теку.
--cleanup-tmp-dir
Очистити теку "/etc/kubernetes/tmp"
--config string
Шлях до файлу конфігурації kubeadm.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не вносити жодних змін; лише вивести, що буде зроблено.
-f, --force
Виконати reset вузла без запиту на підтвердження.
-h, --help
довідка reset
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки від усіх перевірок.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, можна шукати наявний файл kubeconfig у наборі стандартних місць.
--skip-phases strings
Список фаз, які слід пропустити
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Робочий процес
kubeadm reset відповідає за очищення файлової системи вузла від файлів, створених за допомогою команд kubeadm init або kubeadm join. Для вузлів панелі управління reset також видаляє локального учасника стека etcd цього вузла з кластера etcd.
kubeadm reset phase можна використовувати для виконання окремих фаз наведеного вище робочого процесу. Щоб пропустити список фаз, ви можете використовувати прапорець --skip-phases, який працює аналогічно до роботи з фазами kubeadm join та kubeadm init.
Очищення зовнішнього etcd
kubeadm reset не видалить жодних даних etcd, якщо використовується зовнішній etcd. Це означає, що якщо ви знову виконаєте kubeadm init з використанням тих самих точок доступу etcd, ви побачите стан від попередніх кластерів.
Щоб видалити дані etcd, рекомендується використовувати клієнт, такий як etcdctl, наприклад:
Якщо ваш kube-apiserver налаштований з прапорцем --shutdown-delay-duration, ви можете виконати наступні команди, щоб спробувати завершити роботу відповідним чином для запущеного Pod API сервера, перед тим як виконати kubeadm reset:
yq eval -i '.spec.containers[0].command = []' /etc/kubernetes/manifests/kube-apiserver.yaml
timeout 60 sh -c 'while pgrep kube-apiserver >/dev/null; do sleep 1; done'||true
Що далі
kubeadm init для створення вузла панелі управління Kubernetes
kubeadm join для приєднання робочого вузла Kubernetes до кластера
10.1.8 - kubeadm token
Токени запуску (Bootstrap token) використовуються для встановлення двосторонньої довіри між вузлом, який приєднується до кластера, та вузлом панелі управління, як описано в розділі автентифікація за допомогою токенів запуску.
kubeadm init створює початковий токен з часом життя 24 години. Наступні команди дозволяють вам керувати таким токеном, а також створювати та керувати новими.
kubeadm token create
Створює токени запуску на сервері.
Опис
Ця команда створює токен запуску для вас. Ви можете вказати способи використання цього токену, "час життя" і необовʼязковий опис, зрозумілий людині.
[token] — це власне токен, який потрібно записати. Це має бути безпечно згенерований випадковий токен виду "[a-z0-9]{6}.[a-z0-9]{16}". Якщо [token] не вказано, kubeadm згенерує випадковий токен замість нього.
kubeadm token create [token]
Параметри
--certificate-key string
Якщо використовується разом із '--print-join-command', виводить повний прапорець 'kubeadm join', необхідний для приєднання до кластера як панелі управління. Щоб створити новий ключ сертифіката, потрібно використовувати 'kubeadm init phase upload-certs --upload-certs'.
--config string
Шлях до файлу конфігурації kubeadm.
--description string
Опис, зрозумілий для людини, як використовується цей токен.
Додаткові групи, які будуть автентифікуватися за допомогою цього токена при використанні для автентифікації. Повинно відповідати "\Asystem:bootstrappers:[a-z0-9:-]{0,255}[a-z0-9]\z"
-h, --help
довідка create
--print-join-command
Замість того, щоб виводити тільки токен, вивести повний прапорець 'kubeadm join', необхідний для приєднання до кластера за допомогою токена.
--ttl duration Типово: 24h0m0s
Тривалість перед автоматичним видаленням токена (наприклад, 1s, 2m, 3h). Якщо встановлено '0', токен ніколи не закінчиться.
--usages strings Типово: "signing,authentication"
Описує способи, в яких цей токен може використовуватися. Ви можете передавати --usages кілька разів або надати список параметрів через кому. Дійсні параметри: [signing,authentication]
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, можна шукати наявний файл kubeconfig у наборі стандартних місць.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm token delete
Видаляє токени запуску на сервері.
Опис
Ця команда видаляє токени запуску для вас.
Значення [token-value] — це повний токен у вигляді "[a-z0-9]{6}.[a-z0-9]{16}" або Token ID виду "[a-z0-9]{6}", який потрібно видалити.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, можна шукати наявний файл kubeconfig у наборі стандартних місць.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm token generate
Генерує та виводить токен запуску, але не створює його на сервері
Опис
Ця команда виведе випадково згенерований токен запуску, який можна використовувати з командами "init" та "join".
Ви не зобовʼязані використовувати цю команду для створення токена. Ви можете зробити це самостійно, якщо він має формат "[a-z0-9]{6}.[a-z0-9]{16}". Ця команда надається для зручності створення токенів у зазначеному форматі.
Ви також можете використовувати "kubeadm init" без вказання токена, і він буде згенерований та виведений для вас.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, можна шукати наявний файл kubeconfig у наборі стандартних місць.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm token list
Виводить перелік токенів запуску на сервері
Опис
Ця команда виведе перелік всіх токенів запуску на сервері.
kubeadm token list [flags]
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігноруйте будь-які помилки в шаблонах, коли поле або ключ map відсутні в шаблоні. Застосовується лише до форматів виводу golang і jsonpath.
-h, --help
довідка list
-o, --output string Типово: "text"
Формат виводу. Один із: text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.
--show-managed-fields
Якщо true, залиште managedFields під час вводу обʼєктів у форматі JSON або YAML.
Файл kubeconfig для використання при спілкуванні з кластером. Якщо прапорець не встановлено, можна шукати наявний файл kubeconfig у наборі стандартних місць.
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Що далі
kubeadm join — для початкового запуску робочого вузла Kubernetes nf приєднання його до кластера
10.1.9 - kubeadm version
Виводіть версію kubeadm
Опис
Ця команда виводить версію kubeadm.
kubeadm version [flags]
Параметри
-h, --help
довідка version
-o, --output string
Формат виводу; доступні варіанти: 'yaml', 'json' та 'short'
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.10 - kubeadm alpha
Увага:
kubeadm alpha надає попередній перегляд набору функцій, які стануть доступними для збору відгуків від спільноти. Будь ласка, спробуйте його та надайте нам відгук!
Наразі в kubeadm alpha немає експериментальних команд.
Що далі
kubeadm init для створення вузла панелі управління Kubernetes
Команди, повʼязані з обробкою сертифікатів Kubernetes
Опис
Команди, повʼязані з обробкою сертифікатів Kubernetes
kubeadm certs [command]
Параметри
-h, --help
довідка certs
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm certs renew
Ви можете поновити всі сертифікати Kubernetes, використовуючи підкоманду all, або поновити їх вибірково. Для отримання детальної інформації дивіться Ручне поновлення сертифікатів.
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Поновлення всіх доступних сертифікатів
Опис
Поновлення усі відомих сертифікатів, необхідних для запуску панелі управління. Поновлення виконується безумовно, незалежно від дати закінчення терміну дії. Поновлення також можна виконувати окремо для більшого контролю.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Поновлює сертифікат, вбудований у файл kubeconfig для використання адміністратором і для самого kubeadm
Опис
Поновлює сертифікат, вбудований у файл kubeconfig для використання адміністратором і для самого kubeadm.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на поточних файлах/сертифікатах, нема потреби їх поновлювати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Поновлює сертифікат, який apiserver використовує для доступу до etcd
Опис
Поновлює сертифікат, який apiserver використовує для доступу до etcd.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх поновлювати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Поновлює сертифікат для сервера API для підключення до kubelet
Опис
Поновлює сертифікат для сервера API для підключення до kubelet.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Поновлює сертифікат для обслуговування API Kubernetes
Синопсис
Поновлює сертифікат для обслуговування API Kubernetes.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Поновлює сертифікат, вбудований у файл kubeconfig для використання менеджером контролера
Опис
Поновлює сертифікат, вбудований у файл kubeconfig для використання менеджером контролера.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Поновлює сертифікат для проб життєздатності для перевірки стану справності etcd
Опис
Поновлює сертифікат для проб життєздатності для перевірки стану справності etcd.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Поновлює сертифікат для вузлів etcd, щоб вони могли взаємодіяти один з одним
Опис
Поновлює сертифікат для вузлів etcd, щоб вони могли взаємодіяти один з одним.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Поновлює сертифікат для обслуговування etcd
Опис
Поновлює сертифікат для обслуговування etcd.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Поновлення сертифіката клієнта front proxy
Опис
Поновлення сертифіката клієнта front proxy.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Поновлює сертифікат, вбудований у файл kubeconfig для використання менеджером планувальника
Опис
Поновлює сертифікат, вбудований у файл kubeconfig для використання менеджером планувальника.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Поновлює сертифікат, вбудований у файл kubeconfig для суперкористувача
Опис
Поновлює сертифікат, вбудований у файл kubeconfig для суперкористувача.
Поновлення виконується безумовно, незалежно від дати закінчення терміну дії сертифіката; додаткові атрибути, такі як SAN, будуть базуватися на наявних файлах/сертифікатах, нема потреби їх перезавантажувати.
Типово поновлення намагається використовувати центр сертифікації в локальному PKI, керованому kubeadm; як альтернативу можна використовувати API сертифікатів K8s для поновлення сертифікатів, або, як останній варіант, згенерувати CSR-запит.
Після оновлення, щоб зміни набули чинності, необхідно перезапустити компоненти панелі управління та, зрештою, повторно розповсюдити оновлений сертифікат у випадку, якщо файл використовується деінде.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm certs certificate-key
Ця команда може бути використана для створення нового ключа сертифіката для панелі управління. Ключ може бути переданий як --certificate-key до kubeadm init та kubeadm join для забезпечення автоматичного копіювання сертифікатів при підключенні додаткових вузлів панелі управління.
Ця команда виведе захищений випадково згенерований ключ сертифіката, який можна використовувати з командою "init".
Ви також можете скористатися командою "kubeadm init --upload-certs" без зазначення ключа сертифіката, і вона згенерує і виведе його для вас.
kubeadm certs certificate-key [flags]
Параметри
-h, --help
Довідка certificate-key
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm certs check-expiration
Ця команда перевіряє термін дії сертифікатів у локальному PKI, керованому kubeadm. Для отримання детальної інформації дивіться Перевірка терміну дії сертифікатів.
Перевіряє термін дії сертифікатів для кластера Kubernetes
Опис
Перевіряє термін дії сертифікатів у локальному PKI, яким керує kubeadm.
kubeadm certs check-expiration [flags]
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли поле або ключ map відсутні в шаблоні. Застосовується тільки до форматів виведення golang і jsonpath.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
-o, --output string Типово: "text"
Формат виводу. Один з: text|json|yaml|go-template|go-template-file|template|templatefile|jsonpath|jsonpath-as-json|jsonpath-file.
--show-managed-fields
Якщо true, залишати managedFields при виведенні обʼєктів у форматі JSON або YAML.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm certs generate-csr
Ця команда може бути використана для створення ключів і CSRs для всіх сертифікатів панелі управління та файлів kubeconfig. Користувач може потім підписати CSRs з CA на свій вибір. Для отримання додаткової інформації про використання команди дивіться Підписання запитів на підписання сертифікатів (CSR), створених за допомогою kubeadm.
Генерує ключі та запити на підписання сертифікатів
Опис
Генерує ключі та запити на підписування сертифікатів (CSRs) для всіх сертифікатів, необхідних для роботи панелі управління. Ця команда також генерує часткові файли kubeconfig з даними приватного ключа в полі "users > user > client-key-data", і для кожного файлу kubeconfig створюється супутній файл ".csr".
Ця команда призначена для використання в Режимі Kubeadm з зовнішнім CA Kubeadm. Вона генерує CSRs, які ви можете подати на підписання до вашого зовнішнього центру сертифікації.
Закодовані в PEM підписані сертифікати повинні бути збережені поруч з файлами ключів, використовуючи ".crt" як розширення файлу, або, у випадку з файлами kubeconfig, закодований в PEM підписаний сертифікат повинен бути закодований у base64 і доданий до файлу kubeconfig в полі "users > user > client-certificate-data".
kubeadm certs generate-csr [flags]
Приклади
# Наступна команда згенерує ключі та CSRs для всіх сертифікатів панелі управління та файлів kubeconfig:kubeadm certs generate-csr --kubeconfig-dir /tmp/etc-k8s --cert-dir /tmp/etc-k8s/pki
Параметри
--cert-dir string
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
-h, --help
Довідка generate-csr
--kubeconfig-dir string Типово: "/etc/kubernetes"
Шлях, де буде збережено файл kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Що далі
kubeadm init для запуску вузла панелі управління Kubernetes
kubeadm reset для скасування будь-яких змін, внесених за допомогою kubeadm init або kubeadm join
10.1.12 - kubeadm init phase
kubeadm init phase дозволяє вам викликати атомарні кроки процесу початкового завантаження. Таким чином, ви можете дозволити kubeadm виконати частину роботи, а ви можете заповнити прогалини якщо ви бажаєте застосувати кастомізацію.
kubeadm init phase узгоджується з kubeadm init workflow, і за лаштунками обидва використовують той самий код.
kubeadm init phase preflight
Використовуючи цю команду, ви можете виконати попередні перевірки на вузлі панелі управління.
# Виконує передпольотні перевірки для kubeadm init з конфігураційним файлом config.yamlkubeadm init phase preflight --config config.yaml
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка preflight
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки всіх перевірок.
Записує налаштування kubelet та (пере)запускаємо kubelet
Опис
Записує файл з KubeletConfiguration та файл оточення з налаштуваннями kubelet для конкретного вузла, а потім (пере)запустимо kubelet.
kubeadm init phase kubelet-start [flags]
Приклади
# Записує файл динамічного оточення з прапорами kubelet з файлу InitConfiguration.kubeadm init phase kubelet-start --config config.yaml
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Вибрати реєстр контейнерів для завантаження образів панелі управління
--node-name string
Вкажіть імʼя вузла.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm init phase certs
Може використовуватися для створення всіх необхідних сертифікатів за допомогою kubeadm.
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генерує всі сертифікати
Опис
Генерує всі сертифікати.
kubeadm init phase certs all [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-cert-extra-sans strings
Додаткові опціональні альтернативні імена субʼєкта (SANs) для використання в сертифікаті обслуговування API Server. Можуть бути як IP-адреси, так і DNS імена.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка all
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для сервісів VIP.
Використовуйте альтернативний домен для сервісів, наприклад, "myorg.internal".
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генерує самопідписаний центр сертифікації Kubernetes, щоб надати ідентифікатори для інших компонентів Kubernetes
Опис
Генерує самопідписаний центр сертифікації Kubernetes, щоб надати ідентифікатори для інших компонентів Kubernetes та зберігає їх у файлах ca.crt та ca.key.
Якщо обидва файли вже існують, kubeadm оминає крок створення і використовує наявні файли.
kubeadm init phase certs ca [flags]
Операції
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка ca
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генерує сертифікати для обслуговування API Kubernetes
Опис
Генерує сертифікати для обслуговування API Kubernetes та зберігає їх у файли apiserver.crt та apiserver.key.
Якщо обидва файли вже існують, kubeadm оминає крок створення і використовує наявні файли.
kubeadm init phase certs apiserver [flags]
Операції
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-cert-extra-sans strings
Додаткові опціональні альтернативні імена субʼєкта (SANs) для використання в сертифікаті обслуговування API Server. Можуть бути як IP-адреси, так і DNS імена.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка apiserver
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для сервісів VIP.
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка front-proxy-client
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генерує самопідписаний центр сертифікації для надання ідентифікаторів для etcd
Опис
Ця команда генерує самопідписаний центр сертифікації (CA) для надання ідентифікаторів для etcd, та зберігає їх у файлах etcd/ca.crt та etcd/ca.key.
Якщо обидва файли вже існують, kubeadm пропускає крок генерації та використовує наявні файли.
kubeadm init phase certs etcd-ca [flags]
Операції
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка etcd-ca
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генерує сертифітати для обслуговування etcd
Опис
Генерує сертифікати для обслуговування etcd, та зберігає їх у файлах etcd/server.crt та etcd/server.key.
Типові SANs: localhost, 127.0.0.1, 127.0.0.1, ::1
Якщо обидва файли вже існують, kubeadm пропускає крок генерації та використовує наявні файли.
kubeadm init phase certs etcd-server [flags]
Параметри
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка etcd-server
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генгерує сертифікати для вузлів etcd для звʼязку між собою
Опис
Генерує сертифікати для вузлів etcd для звʼязку між собою, та зберігає їх у файлах etcd/peer.crt та etcd/peer.key.
Типові SANs: localhost, 127.0.0.1, 127.0.0.1, ::1
Якщо обидва файли вже існують, kubeadm пропускає крок генерації та використовує наявні файли.
kubeadm init phase certs etcd-peer [flags]
Параметри
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка etcd-peer
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генерує сертифікат для проб життєздатності для перевірки справності etcd
Опис
Генерує сертифікат для проб життєздатності для перевірки справності etcd, та зберігає його у файлах etcd/healthcheck-client.crt та etcd/healthcheck-client.key.
Якщо обидва файли вже існують, kubeadm пропускає крок генерації та використовує наявні файли.
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка apiserver-etcd-client
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генерує приватний ключ для підпису токенів службових облікових записів, що дозволяє їм мати власні публічні ключі
Опис
Генерує приватний ключ для підпису токенів службових облікових записів, що дозволяє їм мати власні публічні ключі, та записує їх у файли sa.key та sa.pub.
Якщо обидва файли вже існують, kubeadm пропускає крок генерації та використовує наявні файли.
kubeadm init phase certs sa [flags]
Параметри
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--kubeconfig string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка sa
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm init phase kubeconfig
Ви можете створити всі необхідні файли kubeconfig за допомогою підкоманди all або викликати їх окремо.
Генерує всі файли kubeconfig, необхідні для встановлення панелі управління та файл kubeconfig адміністратора
Опис
Генерує всі файли kubeconfig, необхідні для встановлення панелі управління та файл kubeconfig адміністратора
kubeadm init phase kubeconfig [flags]
Параметри
-h, --help
Довідка kubeconfig
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генерує всі файли kubeconfig
Опис
Генерує всі файли kubeconfig.
kubeadm init phase kubeconfig all [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка all
--kubeconfig-dir string Типово: "/etc/kubernetes"
Шлях, де буде збережено файл kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--node-name string
Вкажіть імʼя вузла.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генерує файл kubeconfig для використання адміністратором та для самого kubeadm
Опис
Ця команда генерує файл kubeconfig для використання адміністратором та для самого kubeadm й зберігає його у файл admin.conf.
kubeadm init phase kubeconfig admin [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка admin
--kubeconfig-dir string Типово: "/etc/kubernetes"
Шлях, де буде збережено файл kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генерує файл kubeconfig, для kubelet для використання лише для потреб початкового завантаження
Опис
Генерує файл kubeconfig, для kubelet для використання лише для потреб початкового завантаження та зберігає його у файлі kubelet.conf.
Зауважте, що цей файл має використовуватись лише для потреб початкового завантаження кластера. Після розгортання панелі управління, ви маєте запросити облікові дані для kubelet через CSR API.
kubeadm init phase kubeconfig kubelet [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка kubelet
--kubeconfig-dir string Типово: "/etc/kubernetes"
Шлях, де буде збережено файл kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--node-name string
Вкажіть імʼя вузла.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генерує файл kubeconfig для використання менеджером контролерів
Опис
Генерує файл kubeconfig для використання менеджером контролерів та зберігає його у файл controller-manager.conf.
Генерує всі маніфести статичних Podʼів потрібні для створення панелі управління
Опис
Генерує всі маніфести статичних Podʼів потрібні для створення панелі управління
kubeadm init phase control-plane [flags]
Параметри
-h, --help
Довідка control-plane
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генерує всі фали маніфестів статичних Podʼів
Опис
Генерує всі файли маніфестів статичних Podʼів.
kubeadm init phase control-plane all [flags]
Приклади
# Генерує всі файли маніфестів статичних Podʼів для компонентів панелі управління,# функціонально еквівалентні до тих, що генеруються командою kubeadm init.kubeadm init phase control-plane all
# Генерує всі файли маніфестів статичних Podʼів з використанням опцій, отриманих з конфігураційного файлу.kubeadm init phase control-plane all --config config.yaml
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane-endpoint string
Вказує стабільну IP-адресу або DNS-імʼя для панелі управління.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
--feature-gates string
Набір пар ключ=значення, що описують функціональні можливості для різних функцій. Варіанти: ControlPlaneKubeletLocalMode=true|false (ALPHA - default=false) EtcdLearnerMode=true|false (default=true) NodeLocalCRISocket=true|false (ALPHA - default=false) PublicKeysECDSA=true|false (DEPRECATED - default=false) RootlessControlPlane=true|false (ALPHA - default=false) WaitForAllControlPlaneComponents=true|false (ALPHA - default=false)
Вибрати реєстр контейнерів для завантаження образів панелі управління
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
--pod-network-cidr string
Вказує діапазон IP-адрес для мережі Pod. Якщо встановлено, панель управління автоматично виділить CIDR для кожного вузла.
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для сервісів VIP.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генерує маніфест статичного Podʼа для kube-apiserver
Опис
Генерує маніфест статичного Podʼа для kube-apiserver
Вибрати реєстр контейнерів для завантаження образів панелі управління
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для сервісів VIP.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генерує маніфест статичного Podʼа для kube-controller-manager
Опис
Генерує маніфест статичного Podʼа для kube-controller-manager
Вибрати реєстр контейнерів для завантаження образів панелі управління
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
--pod-network-cidr string
Вказує діапазон IP-адрес для мережі Pod. Якщо встановлено, панель управління автоматично виділить CIDR для кожного вузла.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генерує маніфест статичного Podʼа для kube-scheduler
Опис
Генерує маніфест статичного Podʼа для kube-scheduler
Вибрати реєстр контейнерів для завантаження образів панелі управління
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm init phase etcd
Використовуйте наступну фазу, щоб створити локальний екземпляр etcd на основі файлу статичного Pod.
Генерує файл маніфесту статичного Podʼа для екземпляра local etcd
Опис
Генерує файл маніфесту статичного Podʼа для екземпляра local etcd
kubeadm init phase etcd [flags]
Параметри
-h, --help
Довідка etcd
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генерує файл маніфесту статичного Podʼа для екземпляра local, одновузлового local etcd
Опис
Генерує файл маніфесту статичного Podʼа для екземпляра local, одновузлового local etcd
kubeadm init phase etcd local[flags]
Приклади
# Генерує файл маніфесту статичного Podʼа для etcd, функціонально# еквівалентного до того, що генерується командою kubeadm init.kubeadm init phase etcd local# Генерує файл маніфесту статичного Podʼа для etcd з використанням опцій# отриманих з файлу конфігурації.kubeadm init phase etcd local --config config.yaml
Параметри
--cert-dir string Типово: "/etc/kubernetes/pki"
Шлях, де будуть збережені сертифікати
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Вибрати реєстр контейнерів для завантаження образів панелі управління
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm init phase upload-config
За допомогою цієї команди ви можете завантажити конфігурацію kubeadm до вашого кластера. Також ви можете скористатися kubeadm config.
Завантажує конфігурації kubeadm та kubelet у ConfigMap
Опис
Завантажує конфігурації kubeadm та kubelet у ConfigMap
kubeadm init phase upload-config [flags]
Параметри
-h, --help
Довідка upload-config
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Завантажуємо всю конфігурацію в ConfigMap
Опис
Завантажує всю конфігурацію в ConfigMap.
kubeadm init phase upload-config all [flags]
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Завантажує kubeadm ClusterConfiguration у ConfigMap
Опис
Завантажує конфігурацію кластера kubeadm ClusterConfig до ConfigMap з назвою kubeadm-config у просторі імен kube-system. Це дозволить правильно конфігурувати компоненти системи та спростить роботу користувачів під час оновлення.
Альтернативно, ви можете використовувати kubeadm config.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Завантажує налаштування компонентів kubelet у ConfigMap
Опис
Завантажуємо конфігурацію kubelet, видобуту з обʼєкта kubeadm InitConfiguration, до ConfigMap kubelet-config у кластері
kubeadm init phase upload-config kubelet [flags]
Приклади
# Завантаження конфігурації kubelet з файла конфігурації kubeadm у ConfigMap в кластеріkubeadm init phase upload-config kubelet --config kubeadm.yaml
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm init phase upload-certs
Використовуйте наступну фазу, щоб завантажити сертифікати панелі управління в кластер. Стандартно термін дії сертифікатів і ключа шифрування закінчується через дві години.
Завантажує сертифікати панелі управління в Secret kubeadm-certs
kubeadm init phase upload-certs [flags]
Параметри
--certificate-key string
Ключ, що використовується для шифрування сертифікатів панелі управління у Secret kubeadm-certs. Ключ сертифіката — це шістнадцятковий рядок, який є ключем AES розміром 32 байти
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--skip-certificate-key-print
Не виводити ключ, який використовується для шифрування сертифікатів панелі управління.
--upload-certs
Завантажити сертифікати панелі управління у Secret kubeadm-certs.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm init phase mark-control-plane
Використовуйте наступну фазу для позначення вузла як вузла панелі управління.
# Застосовує мітку та taint панелі управління до поточного вузла, функціонально еквівалентно до того, що виконується командою kubeadm init.kubeadm init phase mark-control-plane --config config.yaml
# Застосовує мітку та taint панелі управління до конкретного вузлаkubeadm init phase mark-control-plane --node-name myNode
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка mark-control-plane
--node-name string
Вкажіть імʼя вузла.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm init phase bootstrap-token
Використовуйте наступну фазу для створення або керування bootstrap токенів.
Генерує токени bootstrap, які використовуються для приєднання вузла до кластера
Опис
Токени bootstrap використовуються для встановлення двосторонньої довіри між вузлом, що приєднується до кластера, і вузлом панелі управління.
Ця команда виконує всі налаштування, необхідні для роботи токенів bootstrap, а потім створює початковий токен.
kubeadm init phase bootstrap-token [flags]
Приклади
# Налаштувати всі конфігурації токенів Bootstrap та створити # початковий токен, функціонально еквівалентний до того, що # генерується командою kubeadm init.kubeadm init phase bootstrap-token
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm init phase kubelet-finalize
Використовуйте наступну фазу для оновлення налаштувань, що стосуються kubelet після TLS bootstrap. Ви можете використовувати субкоманду all, щоб запустити всі фази `kubelet-finalize.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибір конкретної версії Kubernetes для панелі управління.
--pod-network-cidr string
Вказує діапазон IP-адрес для мережі Pod. Якщо встановлено, панель управління автоматично виділить CIDR для кожного вузла.
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для сервісів VIP.
Використовуйте альтернативний домен для сервісів, наприклад, "myorg.internal".
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Встановлює надбудову CoreDNS в кластер Kubernetes
Опис
Встановлює компоненти надбудови CoreDNS через сервер API. Зверніть увагу, що хоча DNS-сервер розгорнуто, його не буде заплановано, доки не буде встановлено CNI.
kubeadm init phase addon coredns [flags]
Параметри
--config string
Шлях до конфігураційного файлу kubeadm.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
--feature-gates string
Набір пар ключ=значення, що описують функціональні можливості для різних функцій. Опції: ControlPlaneKubeletLocalMode=true|false (ALPHA - default=false) EtcdLearnerMode=true|false (default=true) NodeLocalCRISocket=true|false (ALPHA - default=false) PublicKeysECDSA=true|false (DEPRECATED - default=false) RootlessControlPlane=true|false (ALPHA - default=false) WaitForAllControlPlaneComponents=true|false (ALPHA - default=false)
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибір конкретної версії Kubernetes для панелі управління.
--print-manifest
Вивести маніфести надбудов в STDOUT замість їх встановлення
--service-cidr string Типово: "10.96.0.0/12"
Використовуйте альтернативний діапазон IP-адрес для сервісів VIP.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
--kubernetes-version string Типово: "stable-1"
Вибрати конкретну версію Kubernetes для панелі управління.
--pod-network-cidr string
Вказує діапазон IP-адрес для мережі Pod. Якщо встановлено, панель управління автоматично виділить CIDR для кожного вузла.
--print-manifest
Вивести маніфести надбудов в STDOUT замість їх встановлення
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Для отримання більш детальної інформації про кожне поле в конфігурації v1beta4 ви можете перейти на нашу сторінки довідки API.
Що далі
kubeadm init для завантаження вузла керування Kubernetes
kubeadm reset для скасування будь-яких змін, зроблених за допомогою kubeadm init або kubeadm join
kubeadm alpha для випробування експериментальних функцій
10.1.13 - kubeadm join phase
kubeadm join phase дозволяє викликати атомарні кроки процесу приєднання. Таким чином, ви можете дозволити kubeadm виконати частину роботи, а ви заповните прогалини, якщо захочете застосувати налаштування.
kubeadm join phase узгоджується з workflow приєднання kubeadm, і за лаштунками обидва використовують той самий код.
# Виконує передполітні перевірки для kubeadm joinkubeadm join phase preflight --config kubeadm-config.yaml
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--certificate-key string
Ключ, що використовується для шифрування сертифікатів панелі управління у Secret kubeadm-certs. Ключ сертифіката — це шістнадцятковий рядок, який є ключем AES розміром 32 байти
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--cri-socket string
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--discovery-file string
Для виявлення на основі файлу, файл або URL, з якого буде завантажена інформація про кластер.
--discovery-token string
Для виявлення на основі токена, токен, який використовується для перевірки інформації про кластер, отриманої з сервера API.
--discovery-token-ca-cert-hash strings
Для виявлення на основі токена, перевірити, що публічний ключ кореневого центру сертифікації відповідає цьому хешу (формат: "<тип>:<значення>").
--discovery-token-unsafe-skip-ca-verification
Для виявлення на основі токена, дозволити приєднання без закріплення --discovery-token-ca-cert-hash.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка preflight
--ignore-preflight-errors strings
Список перевірок, помилки яких будуть показані як попередження. Приклад: 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки від усіх перевірок.
--node-name string
Вкажіть імʼя вузла.
--tls-bootstrap-token string
Вкажіть токен, який використовується для тимчасової автентифікації з Панеллю Управління Kubernetes під час приєднання вузла.
--token string
Використовуйте цей токен для discovery-token та tls-bootstrap-token, коли ці значення не вказані окремо.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm join phase control-plane-prepare
Використовуючи цю фазу, ви можете підготувати вузол до обслуговування панелі управління.
# Готує машину до обслуговування панелі управлінняkubeadm join phase control-plane-prepare all
Параметри
-h, --help
Довідка control-plane-prepare
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Готує машину для роботи як панелі управління
Опис
Готує машину для роботи як панелі управління.
kubeadm join phase control-plane-prepare all [api-server-endpoint][flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--certificate-key string
Ключ, що використовується для шифрування сертифікатів панелі управління у Secret kubeadm-certs. Ключ сертифіката — це шістнадцятковий рядок, який є ключем AES розміром 32 байти
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--discovery-file string
Для виявлення на основі файлу, файл або URL, з якого буде завантажена інформація про кластер.
--discovery-token string
Для виявлення на основі токена, токен, який використовується для перевірки інформації про кластер, отриманої з сервера API.
--discovery-token-ca-cert-hash strings
Для виявлення на основі токена, перевірити, що публічний ключ кореневого центру сертифікації відповідає цьому хешу (формат: "<тип>:<значення>").
--discovery-token-unsafe-skip-ca-verification
Для виявлення на основі токена, дозволити приєднання без закріплення --discovery-token-ca-cert-hash.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка all
--node-name string
Вкажіть імʼя вузла.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
--tls-bootstrap-token string
Вкажіть токен, який використовується для тимчасової автентифікації з Панеллю Управління Kubernetes під час приєднання вузла.
--token string
Використовуйте цей токен для discovery-token та tls-bootstrap-token, коли ці значення не вказані окремо.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Завантажує сертифікати, спільні для вузлів панелі управління, з архіву kubeadm-certs Secret
Опис
Завантажує сертифікати, спільні для вузлів панелі управління, з архіву kubeadm-certs Secret
Ключ, що використовується для шифрування сертифікатів панелі управління у Secret kubeadm-certs. Ключ сертифіката — це шістнадцятковий рядок, який є ключем AES розміром 32 байти
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--discovery-file string
Для виявлення на основі файлу, файл або URL, з якого буде завантажена інформація про кластер.
--discovery-token string
Для виявлення на основі токена, токен, який використовується для перевірки інформації про кластер, отриманої з сервера API.
--discovery-token-ca-cert-hash strings
Для виявлення на основі токена, перевірити, що публічний ключ кореневого центру сертифікації відповідає цьому хешу (формат: "<тип>:<значення>").
--discovery-token-unsafe-skip-ca-verification
Для виявлення на основі токена, дозволити приєднання без закріплення --discovery-token-ca-cert-hash.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка download-certs
--tls-bootstrap-token string
Вкажіть токен, який використовується для тимчасової автентифікації з Панеллю Управління Kubernetes під час приєднання вузла.
--token string
Використовуйте цей токен для discovery-token та tls-bootstrap-token, коли ці значення не вказані окремо.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генерує сертифікати для нових компенонетів панелі управління
Опис
Генерує сертифікати для нових компонентів панелі управління.
Ключ, що використовується для шифрування сертифікатів панелі управління у Secret kubeadm-certs. Ключ сертифіката — це шістнадцятковий рядок, який є ключем AES розміром 32 байти
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--discovery-file string
Для виявлення на основі файлу, файл або URL, з якого буде завантажена інформація про кластер.
--discovery-token string
Для виявлення на основі токена, токен, який використовується для перевірки інформації про кластер, отриманої з сервера API.
--discovery-token-ca-cert-hash strings
Для виявлення на основі токена, перевірити, що публічний ключ кореневого центру сертифікації відповідає цьому хешу (формат: "<тип>:<значення>").
--discovery-token-unsafe-skip-ca-verification
Для виявлення на основі токена, дозволити приєднання без закріплення --discovery-token-ca-cert-hash.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка kubeconfig
--tls-bootstrap-token string
Вкажіть токен, який використовується для тимчасової автентифікації з Панеллю Управління Kubernetes під час приєднання вузла.
--token string
Використовуйте цей токен для discovery-token та tls-bootstrap-token, коли ці значення не вказані окремо.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Генерує маніфести для нових компонентів панелі управління
Опис
Генерує маніфести для нових компонентів панелі управління.
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--apiserver-bind-port int32 Типово: 6443
Порт, до якого API-сервер буде привʼязуватися.
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка control-plane
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm join phase kubelet-start
На цьому етапі ви можете записати налаштування kubelet, сертифікати та (пере)запустити kubelet.
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--discovery-file string
Для виявлення на основі файлу, файл або URL, з якого буде завантажена інформація про кластер.
--discovery-token string
Для виявлення на основі токена, токен, який використовується для перевірки інформації про кластер, отриманої з сервера API.
--discovery-token-ca-cert-hash strings
Для виявлення на основі токена, перевірити, що публічний ключ кореневого центру сертифікації відповідає цьому хешу (формат: "<тип>:<значення>").
tr>
--discovery-token-unsafe-skip-ca-verification
Для виявлення на основі токена, дозволити приєднання без закріплення --discovery-token-ca-cert-hash.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка kubelet-start
--node-name string
Вкажіть імʼя вузла.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
--tls-bootstrap-token string
Вкажіть токен, який використовується для тимчасової автентифікації з Панеллю Управління Kubernetes під час приєднання вузла.
--token string
Використовуйте цей токен для discovery-token та tls-bootstrap-token, коли ці значення не вказані окремо.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm join phase control-plane-join
Використовуючи цю фазу, ви можете приєднати вузол як екземпляр панелі управління.
# Приєднує машину до екземпляра панелі управлінняkubeadm join phase control-plane-join all
Параметри
-h, --help
Довідка control-plane-join
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Приєднує машину до екземпляру панелі управління
Опис
Приєднує машину до екземпляру панелі управління.
kubeadm join phase control-plane-join all [flags]
Параметри
--apiserver-advertise-address string
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка all
--node-name string
Вкажіть імʼя вузла.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
IP-адреса, на якому API-сервер буде оголошувати що віе прослуховує звернення. Якщо не вказано, використовується стандартний мережевий інтерфейс.
--config string
Шлях до конфігураційного файлу kubeadm.
--control-plane
Створити новий екземпляр панелі управління на цьому вузлі
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка etcd
--node-name string
Вкажіть імʼя вузла.
--patches string
Шлях до теки, що містить файли з іменами "target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json", і вони відповідають форматам патчів, що підтримуються kubectl. Стандартно "patchtype" є "strategic". "extension" повинно бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення, які патчі застосовуються першими за алфавітно-цифровим порядком.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Виводить файл kubeconfig для додаткового користувача
Опис
Виводить файл kubeconfig для додаткового користувача.
kubeadm kubeconfig user [flags]
Приклади
# Виводить файл kubeconfig для додаткового користувача з іменем fookubeadm kubeconfig user --client-name=foo
# Виводить файл kubeconfig для додаткового користувача з іменем foo, використовуючи конфігураційний файл kubeadm barkubeadm kubeconfig user --client-name=foo --config=bar
Параметри
--client-name string
Імʼя користувача. Буде використовуватися як CN у разі створення клієнтських сертифікатів
--config string
Шлях до конфігураційного файлу kubeadm.
-h, --help
Довідка user
--org strings
Організації сертифіката клієнта. Буде використовуватися як O, якщо будуть створені клієнтські сертифікати
--token string
TТокен, який слід використовувати як механізм автентифікації для цього kubeconfig замість клієнтських сертифікатів
--validity-period duration Типово: 8760h0m0s
Термін дії клієнтського сертифіката. Відраховується від поточного часу.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
10.1.15 - kubeadm reset phase
kubeadm reset phase дозволяє вам викликати атомарні кроки процесу reset. Таким чином, ви можете дозволити kubeadm виконати частину роботи, а ви можете заповнити прогалини
якщо ви бажаєте застосувати кастомізацію.
kubeadm reset phase узгоджується з kubeadm reset workflow, і за лаштунками обидва використовують той самий код.
Файл kubeconfig, який використовується для спілкування з кластером. Якщо прапорець не встановлено, може буити переглянутий набір стандартних місць для пошуку наявного файлу kubeconfig.
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
kubeadm reset phase cleanup-node
За допомогою цієї фази ви можете виконати очищення на цьому вузлі.
Шлях до CRI сокету для підключення. Якщо порожньо, kubeadm спробує автоматично визначити це значення; використовуйте цей параметр лише якщо у вас встановлено більше одного CRI або якщо у вас нестандартний CRI сокет.
--dry-run
Не застосовувати жодних змін; просто вивести, що буде зроблено.
-h, --help
Довідка cleanup-node
Параметри успадковані від батьківських команд
--rootfs string
Шлях до реальної кореневої файлової системи хоста. Це призведе до зміни корення (chroot) kubeadm на вказаних шлях
Що далі
kubeadm init для завантаження вузла керування Kubernetes
kubeadm reset для скасування будь-яких змін, зроблених за допомогою kubeadm init або kubeadm join
kubeadm alpha для випробування експериментальних функцій
10.1.16 - Деталі реалізації
СТАН ФУНКЦІОНАЛУ:Kubernetes v1.10 [stable]
kubeadm init та kubeadm join разом забезпечують гарну послідовність дій користувача для створення базового кластера Kubernetes з нуля, відповідно до найкращих практик. Однак може бути не очевидно, як kubeadm це робить.
Цей документ надає додаткову інформацію про те, що відбувається за лаштунками, з метою поширення знань про найкращі практики для кластера Kubernetes.
Основні принципи дизайну
Кластер, який налаштовується за допомогою kubeadm init та kubeadm join, має бути:
Захищеним: Він повинен дотримуватися останніх найкращих практик, таких як:
забезпечення RBAC
використання Node Authorizer
використання захищеного зв’язку між компонентами панелі управління
використання захищеного зв’язку між API-сервером і kubelet-ами
обмеження доступу до API kubelet-а
обмеження доступу до API для системних компонентів, таких як kube-proxy та CoreDNS
обмеження доступу до того, що може отримати Bootstrap Token
Зручним для користувачів: Користувачеві не повинно знадобитися виконувати більше, ніж кілька команд:
kubeadm init
export KUBECONFIG=/etc/kubernetes/admin.conf
kubectl apply -f <network-plugin-of-choice.yaml>
kubeadm join --token <token> <endpoint>:<port>
Розширюваним:
Він не повинен віддавати перевагу жодному конкретному мережевому провайдеру. Налаштування мережі кластерів не входить до сфери компетенції
Він повинен надавати можливість використовувати конфігураційний файл для налаштування різних параметрів
Константи та добре відомі значення та шляхи
Щоб зменшити складність і спростити розробку вищого рівня інструментів, що будуються на основі kubeadm, він використовує обмежений набір констант для добре відомих шляхів та імен файлів.
Тека Kubernetes /etc/kubernetes є константою в застосунку, оскільки вона є очевидним шляхом у більшості випадків і найінтуїтивнішим розташуванням; інші константні шляхи та імена файлів є такими:
/etc/kubernetes/manifests як шлях, де kubelet повинен шукати маніфести статичних Podʼів.
Імена маніфестів статичних Podʼів:
etcd.yaml
kube-apiserver.yaml
kube-controller-manager.yaml
kube-scheduler.yaml
/etc/kubernetes/ як шлях, де зберігаються файли kubeconfig з ідентифікаторами для компонентів панелі управління. Імена файлів kubeconfig:
kubelet.conf (bootstrap-kubelet.conf під час TLS bootstrap)
controller-manager.conf
scheduler.conf
admin.conf для адміністратора кластера і kubeadm
super-admin.conf для супер-адміністратора кластера, який може обходити RBAC
Імена сертифікатів і ключових файлів:
ca.crt, ca.key для центру авторизації Kubernetes
apiserver.crt, apiserver.key для сертифіката API-сервера
apiserver-kubelet-client.crt, apiserver-kubelet-client.key для клієнтського сертифіката, що використовується API-сервером для безпечного підключення до kubelet-ів
sa.pub, sa.key для ключа, який використовується менеджером контролерів при підписанні ServiceAccount
front-proxy-ca.crt, front-proxy-ca.key для центру авторизації front-проксі
front-proxy-client.crt, front-proxy-client.key для клієнта front-проксі
Формат конфігураційного файлу kubeadm
Більшість команд kubeadm підтримують прапорець --config, який дозволяє передавати конфігураційний файл з диска. Формат конфігураційного файлу відповідає загальній схемі API Kubernetes apiVersion / kind, але вважається форматом конфігурації компонентів. Деякі компоненти Kubernetes, такі як kubelet, також підтримують конфігурацію на основі файлів.
Різні підкоманди kubeadm вимагають різних kind файлів конфігурації. Наприклад, InitConfiguration для kubeadm init, JoinConfiguration для kubeadm join, UpgradeConfiguration для kubeadm upgrade і ResetConfiguration для kubeadm reset.
Командою kubeadm config migrate можна перенести файл конфігурації старого формату до нового (поточного) формату конфігурації. Інструмент kubeadm підтримує міграцію лише із застарілих форматів конфігурацій до поточного формату.
Команда kubeadm init phase дозволяє користувачам викликати кожне завдання окремо, і в кінцевому підсумку пропонує багаторазовий і компонований API/інструментарій, який може бути використаний іншими інструментами початкового завантаження Kubernetes, будь-яким інструментом автоматизації ІТ або досвідченим користувачем для створення власних кластерів.
Перевірка перед установкою (Preflight checks)
Kubeadm виконує набір перевірок перед початком ініціалізації з метою перевірки передумов і уникнення типових проблем під час запуску кластера.
Користувач може пропустити певні перевірки перед установкою або всі за допомогою опції --ignore-preflight-errors.
[Попередження], якщо версія Kubernetes, яку слід використовувати (вказана за допомогою прапорця --kubernetes-version), є хоча б на одну мінорну версію вищою за версію kubeadm CLI.
Вимоги до системи Kubernetes:
якщо використовується Linux:
[Помилка], якщо версія ядра старіша за мінімально необхідну версію
[Помилка], якщо не налаштовані необхідні підсистеми cgroups
[Помилка], якщо точка доступу CRI не відповідає
[Помилка], якщо користувач не є root
[Помилка], якщо імʼя машини не є дійсним DNS-піддоменом
[Попередження], якщо імʼя хосту неможливо знайти через мережевий пошук
[Помилка], якщо версія kubelet нижча за мінімальну підтримувану версію kubelet, підтримувану kubeadm (поточна мінорна версія -1)
[Помилка], якщо версія kubelet хоча б на одну мінорну версію вища за необхідну версію панелі управління (непідтримуване відхилення версій)
[Попередження], якщо служба kubelet не існує або вона вимкнена
[Попередження], якщо активний firewalld
[Помилка], якщо використовується порт привʼязки API-сервера або порти 10250/10251/10252
[Помилка], якщо тека /etc/kubernetes/manifests вже існує і не є порожньою
[Помилка], якщо включений swap
[Помилка], якщо команди ip, iptables, mount, nsenter відсутні в шляху до команд
[Попередження], якщо команди ethtool, tc, touch відсутні в шляху до команд
[Попередження], якщо додаткові аргументи для API-сервера, менеджера контролерів, планувальника містять недійсні параметри
[Попередження], якщо зʼєднання з https://API.AdvertiseAddress:API.BindPort пройде через проксі
[Попередження], якщо зʼєднання з підмережею сервісів пройде через проксі (перевіряється лише перша адреса)
[Попередження], якщо зʼєднання з підмережею Podʼів пройде через проксі (перевіряється лише перша адреса)
Якщо використовується зовнішній etcd:
[Помилка], якщо версія etcd старіша за мінімально необхідну версію
[Помилка], якщо сертифікати або ключі etcd вказані, але не надані
Якщо використовується внутрішній etcd (і, таким чином, буде встановлений локальний etcd):
[Помилка], якщо використовується порт 2379
[Помилка], якщо тека Etcd.DataDir вже існує і не є порожньою
Kubeadm генерує пари сертифікатів і приватних ключів для різних цілей:
Самопідписаний центр сертифікації для кластера Kubernetes, збережений у файлі ca.crt і приватний ключ у файлі ca.key
Сертифікат обслуговування для API-сервера, згенерований за допомогою ca.crt як CA, збережений у файлі apiserver.crt разом із приватним ключем apiserver.key. Цей сертифікат повинен містити наступні альтернативні імена:
Внутрішній clusterIP сервісу Kubernetes (перша адреса в CIDR служб, наприклад, 10.96.0.1, якщо підмережа сервісів — 10.96.0.0/12)
DNS-імена Kubernetes, наприклад kubernetes.default.svc.cluster.local, якщо значення прапорця --service-dns-domain є cluster.local, а також типові DNS-імена kubernetes.default.svc, kubernetes.default, kubernetes
Імʼя вузла (node-name)
--apiserver-advertise-address
Додаткові альтернативні імена, вказані користувачем
Клієнтський сертифікат для API-сервера для безпечного підключення до kubelet-ів, згенерований за допомогою ca.crt як CA і збережений у файлі apiserver-kubelet-client.crt разом із його приватним ключем apiserver-kubelet-client.key. Цей сертифікат повинен бути в організації system:masters
Приватний ключ для підпису токенів ServiceAccount, збережений у файлі sa.key разом із його публічним ключем sa.pub
Центр сертифікації для front proxy, збережений у файлі front-proxy-ca.crt разом із його ключем front-proxy-ca.key
Клієнтський сертифікат для клієнта front proxy, згенерований за допомогою front-proxy-ca.crt як CA і збережений у файлі front-proxy-client.crt разом із його приватним ключем front-proxy-client.key
Сертифікати зберігаються типово у /etc/kubernetes/pki, але цю теку можна налаштувати за допомогою прапорця --cert-dir.
Зверніть увагу на наступне:
Якщо дані пари сертифікат-приватний ключ вже існують і їх зміст відповідає вищезазначеним вимогам, вони будуть використані, і фаза генерації для даного сертифіката буде пропущена. Це означає, що користувач може, наприклад, скопіювати поточний CA в /etc/kubernetes/pki/ca.{crt,key}, і після цього kubeadm використовуватиме ці файли для підпису інших сертифікатів. Див. також використання власних сертифікатів
Для CA можливо надати файл ca.crt, але не надавати файл ca.key. Якщо всі інші сертифікати і файли kubeconfig вже на місці, kubeadm визнає цю умову і активує ExternalCA, що також означає, що контролер csrsigner в контролері-менеджері не буде запущений
Якщо kubeadm працює в режимі зовнішньої CA; всі сертифікати повинні бути надані користувачем, оскільки kubeadm не може їх генерувати самостійно
У випадку запуску kubeadm у режимі --dry-run, файли сертифікатів записуються в тимчасову теку
It seems like you're referring to documentation or a detailed guide on how kubeadm handles various aspects of Kubernetes initialization and configuration. If you need a translation of this content into Ukrainian, I can provide that. Here's the translation:
Генерація kubeconfig файлів для компонентів панелі управління
Kubeadm генерує kubeconfig файли з ідентичностями для компонентів панелі управління:
Файл kubeconfig для kubelet, який використовується під час ініціалізації TLS — /etc/kubernetes/bootstrap-kubelet.conf. У цьому файлі є bootstrap-token або вбудовані клієнтські сертифікати для автентифікації цього вузла у кластері.
Цей клієнтський сертифікат повинен:
Бути в організації system:nodes, як вимагається модулем Node Authorization
Мати Загальне Імʼя (CN) system:node:<hostname-lowercased>
Файл kubeconfig для контролера-менеджера, /etc/kubernetes/controller-manager.conf; у цьому файлі вбудований клієнтський сертифікат з ідентичністю контролера-менеджера. Цей клієнтський сертифікат повинен мати CN system:kube-controller-manager, як визначено стандартними RBAC ролями ядра компонентів
Файл kubeconfig для планувальника, /etc/kubernetes/scheduler.conf; у цьому файлі вбудований клієнтський сертифікат з ідентичністю планувальника. Цей клієнтський сертифікат повинен мати CN system:kube-scheduler, як визначено стандартними RBAC ролями ядра компонентів
Додатково, kubeconfig файл для kubeadm як адміністративної сутності генерується і зберігається у /etc/kubernetes/admin.conf. Цей файл включає сертифікат з Subject: O = kubeadm:cluster-admins, CN = kubernetes-admin. kubeadm:cluster-admins — це група, керована kubeadm. Вона повʼязана з cluster-admin ClusterRole під час kubeadm init, за допомогою super-admin.conf файлу, який не потребує RBAC. Файл admin.conf повинен залишатися на вузлах панелі управління і не повинен бути переданий іншим користувачам.
Під час kubeadm init генерується інший kubeconfig файл і зберігається у /etc/kubernetes/super-admin.conf. Цей файл включає сертифікат з Subject: O = system:masters, CN = kubernetes-super-admin. system:masters — це суперкористувачі, які обходять RBAC і роблять super-admin.conf корисним у випадку надзвичайної ситуації, коли кластер заблокований через неправильну конфігурацію RBAC. Файл super-admin.conf повинен зберігатися в безпечному місці і не повинен передаватися іншим користувачам.
Ви можете запустити kubeadm kubeconfig user для створення файлів kubeconfig для додаткових користувачів.
Увага:
Згенеровані конфігураційні файли містять вбудований ключ автентифікації, і ви повинні ставитися до них як до конфіденційних.
Також, зверніть увагу на наступне:
Всі kubeconfig файли включають в себе сертифікат ca.crt.
Якщо вказаний kubeconfig файл вже існує і його зміст відповідає вищезазначеним вимогам, то буде використано існуючий файл, і фаза генерації для даного kubeconfig буде пропущена.
Якщо kubeadm працює в режимі ExternalCA mode, всі необхідні kubeconfig файли також повинні бути надані користувачем, оскільки kubeadm не може згенерувати їх самостійно.
У випадку виконання kubeadm в режимі --dry-run, файли kubeconfig записуються в тимчасову теку.
Генерація маніфестів статичних Pod для компонентів панелі управління
Kubeadm записує файли маніфестів статичних Pod для компонентів панелі управління до /etc/kubernetes/manifests. kubelet спостерігає за цією текою для створення Podʼів при запуску.
Маніфести статичних Podʼів мають спільний набір властивостей:
Всі статичні Podʼи розгорнуті в просторі імен kube-system
Всі статичні Podʼи мають мітки tier:control-plane та component:{імʼя-компоненти}
Всі статичні Podʼи використовують клас пріоритету system-node-critical
На всіх статичних Podʼах встановлено hostNetwork: true, щоб дозволити запуск панелі управління до налаштування мережі; в результаті:
Адреса, яку використовує контролер-менеджер та планувальник для посилання на API-сервер, є 127.0.0.1
Якщо сервер etcd налаштовано локально, адреса etcd-server буде встановлена як 127.0.0.1:2379
Включено обрання лідера як для контролер-менеджера, так і для планувальника
Контролер-менеджер та планувальник будуть посилатися на файли kubeconfig з їхніми відповідними, унікальними ідентифікаторами
Всі статичні Podʼи отримують будь-які додаткові томи, вказані користувачем (Шлях хоста)
Зверніть увагу, що:
Усі образи типово будуть витягуватися з registry.k8s.io. Для налаштування репозиторію образів див. використання власних образів
У разі виконання kubeadm у режимі --dry-run файли статичних Podʼів записуються у тимчасову теку
Генерацію маніфестів статичних Podʼів для компонентів панелі управління можна запустити окремо за допомогою команди kubeadm init phase control-plane all
Сервер API
Маніфест статичних Podʼів для сервера API обробляється наступними параметрами, наданими користувачами:
apiserver-advertise-address та apiserver-bind-port для звʼязку; якщо вони не вказані, стандартне значення буде IP-адреса основного мережевого інтерфейсу на машині та порт 6443
service-cluster-ip-range для використання сервісів
Якщо вказаний зовнішній сервер etcd, то etcd-servers та повʼязані налаштування TLS (etcd-cafile, etcd-certfile, etcd-keyfile); якщо зовнішній сервер etcd не вказано, буде використовуватися локальний etcd (через мережу хосту)
Якщо вказаний провайдер хмарних послуг, то налаштовується відповідний параметр --cloud-provider разом зі шляхом --cloud-config, якщо такий файл існує (експериментально, альфа версія, буде вилучено в майбутній версії)
Інші прапорці сервера API, що встановлені безумовно, включають:
--insecure-port=0 для уникнення небезпечних зʼєднань з сервером API
--enable-bootstrap-token-auth=true для активації модуля автентифікації BootstrapTokenAuthenticator. Див. TLS Bootstrapping для деталей
--allow-privileged до true (необхідно, наприклад, для kube-proxy)
--requestheader-client-ca-file до front-proxy-ca.crt
--enable-admission-plugins до:
NamespaceLifecycle наприклад, для уникнення видалення системних зарезервованих просторів імен
ServiceAccount для автоматизації службових облікових записів
PersistentVolumeLabel приєднує мітки регіону або зони до PersistentVolumes, як визначено провайдером хмарних послуг (Цей контролер допуску є застарілим і буде вилучений у майбутній версії. Він типово не розгорнутий kubeadm починаючи з v1.9, якщо явно не вибрано використання gce або aws як провайдерів хмарних послуг)
DefaultStorageClass для встановлення типового класу зберігання на обʼєктах PersistentVolumeClaim
NodeRestriction для обмеження того, що kubelet може змінювати (наприклад, тільки Podʼи на цьому вузлі)
--kubelet-preferred-address-types до InternalIP,ExternalIP,Hostname; це робить kubectl logs та іншу комунікацію API server-kubelet працюючою в середовищах, де імена хостів вузлів не розвʼязуються
Прапорці для використання сертифікатів, згенерованих на попередніх етапах:
--client-ca-file до ca.crt
--tls-cert-file до apiserver.crt
--tls-private-key-file до apiserver.key
--kubelet-client-certificate до apiserver-kubelet-client.crt
--kubelet-client-key до apiserver-kubelet-client.key
--service-account-key-file до sa.pub
--requestheader-client-ca-file до front-proxy-ca.crt
--proxy-client-cert-file до front-proxy-client.crt
--proxy-client-key-file до front-proxy-client.key
Інші прапорці для забезпечення безпеки front proxy
(Агрегація API)
комунікацій:
Якщо kubeadm запускається з вказанням --pod-network-cidr, активується функція менеджера підмережі, необхідна для деяких мережевих втулків CNI, встановлюючи:
--allocate-node-cidrs=true
Прапорці --cluster-cidr та --node-cidr-mask-size відповідно до заданого CIDR
Інші прапорці, які встановлюються безумовно, включають:
--controllers, що активує всі стандартні контролери плюс контролери BootstrapSigner та TokenCleaner для TLS-запуску. Див. TLS Bootstrapping для деталей.
--use-service-account-credentials до true
Прапорці для використання сертифікатів, згенерованих на попередніх етапах:
--root-ca-file до ca.crt
--cluster-signing-cert-file до ca.crt, якщо відключений зовнішній режим CA, в іншому випадку до ""
--cluster-signing-key-file до ca.key, якщо відключений зовнішній режим CA, в іншому випадку до ""
--service-account-private-key-file до sa.key.
Планувальник
Маніфест статичного Podʼа для планувальника обробляється наступними параметрами, наданими користувачами.
Генерація маніфесту статичного Pod для локального etcd
Якщо ви вказали зовнішній etcd, цей крок буде пропущено. В іншому випадку kubeadm генерує маніфест статичного Pod для створення локального екземпляра etcd, що працює в Pod з наступними характеристиками:
слухати на localhost:2379 і використовувати HostNetwork=true
зробити монтування hostPath з dataDir до файлової системи хосту
Будь-які додаткові прапорці, вказані користувачем
Зверніть увагу, що:
Образ контейнера etcd буде типово витягнутий з registry.gcr.io. Для налаштування власного репозиторію образів див. використання власних образів.
Якщо ви запускаєте kubeadm у режимі --dry-run, маніфест статичного Pod для etcd записується у тимчасову теку.
Ви можете безпосередньо викликати генерацію маніфесту статичного Pod для локального etcd за допомогою команди kubeadm init phase etcd local.
Очікування запуску панелі управління
На вузлах панелі управління kubeadm чекає до 4 хвилин, поки компоненти панелі управління та kubelet стануть доступними. Для цього виконується перевірка стану відповідних точок доступу компонентів /healthz або /livez.
Після того як панель управління буде запущена, kubeadm завершує виконання завдань, описаних у наступних розділах.
Збереження конфігурації кластера kubeadm у ConfigMap для подальшого посилання
kubeadm зберігає конфігурацію, передану в kubeadm init, у ConfigMap з назвою kubeadm-config в просторі імен kube-system.
Це забезпечить можливість kubeadm у майбутньому (наприклад, під час оновлення kubeadm upgrade) визначати фактичний поточний стан кластера і приймати нові рішення на основі цих даних.
Зверніть увагу, що:
Перед збереженням конфігурації кластера чутлива інформація, така як токен, видаляється з конфігурації.
Завантаження конфігурації вузла панелі управління може бути викликане окремо за допомогою команди kubeadm init phase upload-config.
Позначення вузла як вузла панелі управління
Як тільки панель управління буде доступна, kubeadm виконує наступні дії:
Позначає вузол як вузол панелі управління з міткою node-role.kubernetes.io/control-plane=""
Додає на вузол taint node-role.kubernetes.io/control-plane:NoSchedule
Зверніть увагу, що фазу позначення вузла як вузла панелі управління можна викликати окремо за допомогою команди kubeadm init phase mark-control-plane.
Налаштування TLS-Bootstrapping для приєднання вузлів
kubeadm init забезпечує належну конфігурацію всього процесу, включаючи наступні кроки, а також налаштування прапорців API-сервера та контролера, як вже було описано у попередніх розділах.
Примітка:
TLS-запуск для вузлів можна налаштувати за допомогою команди
kubeadm init phase bootstrap-token, виконуючи всі кроки налаштування, описані в наступних розділаї; альтернативно, кожен крок може бути викликаний окремо.
Створення bootstrap токена
kubeadm init створює перший bootstrap токен, що генерується автоматично або надається користувачем за допомогою прапорця --token. Згідно з документацією щодо специфікації bootstrap токена, токен слід зберегти як секрет з іменем bootstrap-token-<token-id> у просторі імен kube-system.
Зверніть увагу, що:
bootstrap токен, типово створений kubeadm init, використовуватиметься для перевірки тимчасових користувачів під час процесу TLS-запуску; ці користувачі будуть членами групи system:bootstrappers:kubeadm:default-node-token.
Токен має обмежену чинність, стандартно 24 години (цей інтервал можна змінити за допомогою прапорця --token-ttl).
Додаткові токени можна створити за допомогою команди kubeadm token, яка також надає інші корисні функції для управління токенами.
Дозвіл на виклик API CSR вузлами, які приєднуються
Kubeadm забезпечує можливість користувачам у групі system:bootstrappers:kubeadm:default-node-token доступ до API підпису сертифікатів.
Це реалізується створенням ClusterRoleBinding з назвою kubeadm:kubelet-bootstrap між вищезазначеною групою та рольовим доступом RBAC стандартно system:node-bootstrapper.
Налаштування автоматичного схвалення нових bootstrap токенів
Kubeadm забезпечує автоматичне схвалення запитів на підпис сертифікату Bootstrap Token за допомогою контролера csrapprover.
Це реалізується створенням ClusterRoleBinding з назвою kubeadm:node-autoapprove-bootstrap між групою system:bootstrappers:kubeadm:default-node-token та стандартним рольовим доступом system:certificates.k8s.io:certificatesigningrequests:nodeclient.
Роль system:certificates.k8s.io:certificatesigningrequests:nodeclient також має бути створена, надаючи дозвіл POST на шлях /apis/certificates.k8s.io/certificatesigningrequests/nodeclient.
Налаштування ротації сертифікатів вузлів з автоматичним схваленням
Kubeadm забезпечує активацію ротації сертифікатів для вузлів і автоматичне схвалення запитів на підпис сертифікатів для вузлів за допомогою контролера csrapprover.
Це реалізується створенням ClusterRoleBinding з назвою kubeadm:node-autoapprove-certificate-rotation між групою system:nodes та стандартним рольовим доступом system:certificates.k8s.io:certificatesigningrequests:selfnodeclient.
Створення публічного ConfigMap cluster-info
У цій фазі створюється ConfigMap cluster-info у просторі імен kube-public.
Додатково створюється Role та RoleBinding, які надають доступ до ConfigMap неавтентифікованим користувачам (тобто користувачам у RBAC групі system:unauthenticated).
Примітка:
Доступ до ConfigMap cluster-infoне обмежується за швидкістю. Це може бути проблемою, якщо ваш API-сервер кластера відкритий для інтернету; у найгіршому випадку може виникнути атака типу DoS, коли атакуючий використовує всі вхідні запити, які може обробити kube-apiserver, щоб обслуговувати ConfigMap cluster-info.
Встановлення надбудов
Kubeadm встановлює внутрішній DNS-сервер і компоненти надбудов kube-proxy через API-сервер.
Для kube-proxy створюється обліковий запис ServiceAccount у просторі імен kube-system, після чого kube-proxy розгортається як DaemonSet:
Облікові дані (ca.crt та token) до панелі управління отримуються з облікового запису ServiceAccount.
Місцезнаходження (URL) API-сервера отримується з ConfigMap.
Обліковий запис ServiceAccount kube-proxy повʼязується з правами у рольовому доступі ClusterRole system:node-proxier.
DNS
Сервіс CoreDNS називається kube-dns для сумісності з застарілою надбудовою kube-dns.
У просторі імен kube-system створюється обліковий запис ServiceAccount для CoreDNS.
Обліковий запис coredns привʼязаний до привілеїв у ClusterRole system:coredns.
У версії Kubernetes 1.21 була видалена підтримка використання kube-dns з kubeadm. Ви можете використовувати CoreDNS з kubeadm, навіть якщо повʼязаний сервіс називається kube-dns.
Внутрішній дизайн фаз kubeadm join
Подібно до kubeadm init, внутрішній робочий процес kubeadm join також складається з послідовності атомарних завдань, що виконуються.
Вони поділені на дві частини: виявлення (щоб вузол довіряв Kubernetes API Server) та початкове завантаження TLS (щоб Kubernetes API Server довіряв вузлу).
kubeadm виконує набір попередніх перевірок перед початком приєднання, з метою перевірити попередні умови та уникнути поширених проблем запуску кластера.
Зверніть увагу на наступне:
Попередні перевірки kubeadm join є, по суті, підмножиною попередніх перевірок kubeadm init.
Якщо ви приєднуєтеся до вузла Windows, специфічні для Linux елементи керування пропускаються.
У будь-якому випадку користувач може пропустити певні попередні перевірки (або, врешті-решт, усі попередні перевірки) за допомогою опції --ignore-preflight-errors.
Виявлення інформації про кластер
Є дві основні схеми для виявлення. Перша полягає у використанні спільного токена разом з IP-адресою сервера API. Друга — наданні файлу (який є підмножиною стандартного файлу kubeconfig).
Виявлення спільного токена
Якщо kubeadm join викликається з параметром --discovery-token, використовується виявлення за допомогою токена; у цьому випадку вузол основному отримує сертифікати CA кластера з ConfigMap cluster-info у просторі імен kube-public.
Щоб запобігти атакам типу "особа посередині", вживаються кілька заходів:
Спочатку сертифікат CA отримується через небезпечне зʼєднання (це можливо, тому що kubeadm init надає доступ користувачам cluster-info для system:unauthenticated)
Потім сертифікат CA проходить наступні кроки перевірки:
Базова перевірка: використовуючи ID токена через підпис JWT
Перевірка публічного ключа: використовуючи наданий --discovery-token-ca-cert-hash. Це значення доступне у виводі kubeadm init або може бути обчислене за допомогою стандартних інструментів (хеш обчислюється над байтами обʼєкта Subject Public Key Info (SPKI) відповідно до RFC7469). Прапор --discovery-token-ca-cert-hash може бути повторений кілька разів, щоб дозволити більше одного публічного ключа.
Як додаткова перевірка, сертифікат CA отримується через безпечне зʼєднання і порівнюється з сертифікатом CA, отриманим спочатку
Примітка:
Ви можете пропустити перевірку CA, передавши в командному рядку прапорець --discovery-token-unsafe-skip-ca-verification. Це послаблює модель безпеки kubeadm, оскільки інші потенційно можуть видавати себе за сервер API Kubernetes.
Виявлення файлу/HTTPS
Якщо kubeadm join викликається з параметром --discovery-file, використовується виявлення за допомогою файлу; цей файл може бути локальним файлом або завантаженим через HTTPS URL; у випадку HTTPS, використовується встановлений на хості пакет сертифікатів CA для перевірки зʼєднання.
При виявленні файлу сертифікат CA кластера надається у самому файлі; фактично, файл для виявлення є файлом kubeconfig з встановленими тільки атрибутами server і certificate-authority-data, як описано у референс-документації kubeadm join; коли зʼєднання з кластером встановлено, kubeadm намагається отримати доступ до ConfigMap cluster-info, і якщо він доступний, використовує його.
TLS Bootstrap
Після того, як інформація про кластер відома, записується файл bootstrap-kubelet.conf, що дозволяє kubelet виконати початкове завантаження TLS.
Механізм початкового завантаження TLS використовує спільний токен для тимчасової автентифікації з сервером API Kubernetes для подання запиту на підписання сертифіката (CSR) для локально створеної пари ключів.
Запит автоматично затверджується, і операція завершується збереженням файлів ca.crt і kubelet.conf, які використовуються kubelet для приєднання до кластера, тоді як bootstrap-kubelet.conf видаляється.
Примітка:
Тимчасова автентифікація перевіряється через токен, збережений під час процесу kubeadm init (або за допомогою додаткових токенів, створених командою kubeadm token)
Тимчасова автентифікація відноситься до користувача, який є членом групи system:bootstrappers:kubeadm:default-node-token, якій було надано доступ до API CSR під час процесу kubeadm init
Автоматичне затвердження CSR управляється контролером csrapprover відповідно до конфігурації, присутньої в процесі kubeadm init
Внутрішній дизайн робочого процесу kubeadm upgrade
Команда kubeadm upgrade має підкоманди для керування оновленням кластера Kubernets, створеного за допомогою kubeadm. Вам слід виконати kubeadm upgrade apply на одному з вузлів панелі управління (ви можете вибрати, на якому саме); це запустить процес оновлення. Потім виконайте kubeadm upgrade node на всіх інших вузлах (як на робочих вузлах, так і на вузлах панелі управління).
І kubeadm upgrade apply, і kubeadm upgrade node мають підкоманду phase, яка надає доступ до внутрішніх фаз процесу оновлення. Докладніші відомості наведено у статті kubeadm upgrade phase.
Додатковими командами оновлення утиліти є kubeadm upgrade plan та kubeadm upgrade diff.
Усі підкоманди оновлення підтримують передачу конфігураційного файлу.
kubeadm upgrade plan
За бажанням ви можете запустити kubeadm upgrade plan перед запуском kubeadm upgrade apply. Підкоманда plan перевіряє, до яких версій можна оновитися, і перевіряє, чи можна оновити ваш поточний кластер.
kubeadm upgrade diff
Показує, які відмінності буде застосовано до існуючих статичних маніфестів пакунків для вузлів панелі управління. Більш розлогий спосіб зробити те саме — виконати kubeadm upgrade apply --dry-run або kubeadm upgrade node --dry-run.
kubeadm upgrade apply
Команда kubeadm upgrade apply готує кластер до оновлення всіх вузлів, а також оновлює вузол панелі управління, на якому вона виконується. Кроки, які вона виконує:
Виконує передпольотні перевірки, подібні до kubeadm init та kubeadm join, переконуючись, що образи контейнерів завантажено і кластер перебуває у стані, придатному для оновлення.
Оновлює файли маніфесту панелі управління на диску у /etc/kubernetes/manifests і чекає, поки kubelet перезапустить компоненти, якщо файли було змінено.
Завантажує оновлені конфігурації kubeadm і kubelet на кластер у ConfigMaps kubeadm-config і kubelet-config (обидві у просторі імен kube-system).
Записує оновлену конфігурацію kubelet для цього вузла у файл /var/lib/kubelet/config.yaml.
Налаштовує токен bootstrap і cluster-info ConfigMap для правил RBAC. Це те ж саме, що і на етапі kubeadm init і гарантує, що кластер продовжує підтримувати приєднання вузлів за допомогою токенів bootstrap.
Оновлює kube-proxy та надбудови CoreDNS умовно, якщо всі існуючі kube-apiservers у кластері вже було оновлено до цільової версії.
Виконує будь-які завдання після оновлення, такі як очищення застарілих функцій, що залежать від релізу.
kubeadm upgrade node
kubeadm upgrade node оновлює один вузол панелі управління або робочий вузол після запуску оновлення кластера (шляхом запуску kubeadm upgrade apply). Команда визначає, чи є вузол вузлом панелі управління, перевіряючи наявність файлу /etc/kubernetes/manifests/kube-apiserver.yaml. Знайшовши цей файл, інструмент kubeadm
припускає, що на цьому вузлі запущено Pod kube-apiserver.
Виконує передпольотні перевірки подібно до kubeadm upgrade apply.
Для вузлів панелі управління оновлює файли маніфесту панелі управління на диску у /etc/kubernetes/manifests і чекає, поки kubelet перезапустить компоненти, якщо файли було змінено.
Запише оновлену конфігурацію kubelet для цього вузла у /var/lib/kubelet/config.yaml.
(Для вузлів площини керування) Оновлює kube-proxy та CoreDNS надбудови умовно, за умови, що всі наявні API-сервери у кластері вже оновлені до цільової версії.
Виконує будь-які завдання після оновлення, такі як очищення застарілих функцій, специфічних для конкретного випуску.
Внутрішній дизайн робочого процесу kubeadm reset
Ви можете скористатися підкомандою kubeadm reset на вузлі, де раніше виконувалися команди kubeadm. Ця підкоманда виконує очищення вузла з best-effort зусиллями. Якщо певні дії не вдасться виконати, ви маєте втрутитися і виконати очищення вручну.
Команда підтримує фази. Докладні відомості наведено у статті kubeadm reset phase.
Команда підтримує файл конфігурації.
Додатково:
Правила IPVS, iptables і nftables не очищуються.
Конфігурацію CNI (мережевого втулка) не очищено.
Файл .kube/ у домашній теці користувача не очищується.
Команда виконує наступні етапи:
Виконує передпольотну перевірку вузла, щоб визначити, чи є він справним.
Для вузлів панелі управління видаляє всі локальні дані членів etcd.
Зупиняє роботу kubelet.
Зупиняє запуск контейнерів.
Відмонтує усі змонтовані теки у /var/lib/kubelet.
Видаляє усі файли та теки, якими керує kubeadm у /var/lib/kubelet та /etc/kubernetes.
11 - Інструмент командного рядка (kubectl)
Kubernetes надає інструмент командного рядка для взаємодії із кластером Kubernetes,
панеллю управління, використовуючи API Kubernetes.
Цей інструмент має назву kubectl.
Для отримання налаштувань kubectl шукає файл config в теці $HOME/.kube. Ви можете вказати інший файл kubeconfig у змінній оточення KUBECONFIG або у значенні ключа --kubeconfig.
Тут ми розглянемо синтаксис команд kubectl, опис операторів та розберемо їх на прикладах. Докладніше про кожну команду, включаючи всі підтримувані прапорці та субкоманди, див. довідкову документацію kubectl.
Інструкції з встановлення знаходяться у статті Встановлення kubectl; короткий посібник є у шпаргалці. Якщо ви звикли користуватись інструментом командного рядка docker, kubectl для користувачів Docker пояснює деякі еквівалентні команди для Kubernetes.
Синтаксис
Використовуйте наступний синтаксис для виконання команд kubectl у вашому терміналі:
kubectl [команда][ТИП][ІМʼЯ][прапорці]
де команда, ТИП, ІМʼЯ та прапорці визначаються наступним чином:
команда: Вказує операцію, яку ви хочете виконати з одним чи кількома ресурсами, наприклад create, get, describe, delete.
ТИП: Вказує тип ресурсу. Типи ресурсів нечутливі до регістру, і можна вказувати форми однини, множини чи абревіатури. Наприклад, наступні команди виводять той самий результат:
kubectl get pod pod1
kubectl get pods pod1
kubectl get po pod1
ІМʼЯ: Вказує імʼя ресурсу. Імена чутливі до регістру. Якщо імʼя відсутнє, виводяться деталі для всіх ресурсів, наприклад kubectl get pods.
При виконанні операції над кількома ресурсами можна вказати кожен ресурс за типом та іменем або вказати один чи кілька файлів:
Щоб вказати ресурси за типом та іменем:
Щоб групувати ресурси, якщо всі вони одного типу: ТИП1 імʼя1 імʼя2 імʼя<#>. Приклад: kubectl get pod example-pod1 example-pod2.
Щоб вказати кілька типів ресурсів окремо: ТИП1/імʼя1 ТИП1/імʼя2 ТИП2/імʼя3 ТИП<#>/імʼя<#>. Приклад: kubectl get pod/example-pod1 replicationcontroller/example-rc1.
Щоб вказати ресурси за допомогою одного чи кількох файлів: -f файл1 -f файл2 -f файл<#>.
Використовуйте YAML замість JSON, оскільки YAML зазвичай є зручнішим для користувача, особливо для файлів конфігурації. Приклад: kubectl get -f ./pod.yaml
прапорці: Є необовʼязковими. Наприклад, ви можете використовувати прапорці -s або --server, щоб вказати адресу та порт сервера API Kubernetes.
Увага:
Прапорці, які ви вказуєте в командному рядку, перевизначають стандартні значення та будь-які відповідні змінні середовища.
Якщо вам потрібна допомога, виконайте команду kubectl help у вікні термінала.
Автентифікація та перевизначення простору імен в кластері
Типово kubectl спочатку визначатиме, чи він виконується в середині Podʼа, і отже, в кластері. Програма починає з перевірки наявності змінних середовища KUBERNETES_SERVICE_HOST та KUBERNETES_SERVICE_PORT, а також наявності файлу токена службового облікового запису за шляхом /var/run/secrets/kubernetes.io/serviceaccount/token. Якщо всі три умови виконуються, вважається, що використовується автентифікація в кластері.
Для забезпечення зворотної сумісності, якщо під час автентифікації в кластері встановлено змінну середовища POD_NAMESPACE, вона перевизначить типовий простір імен скориставшись токеном службового облікового запису. Це буде впливати на будь-які маніфести або інструменти, які покладаються на типовий простір імен.
Змінна середовища POD_NAMESPACE
Якщо змінна середовища POD_NAMESPACE встановлена, операції CLI для ресурсів з обмеженим простором імен будуть отримувати типове значення від цієї змінної. Наприклад, якщо значення змінної — seattle, kubectl get pods поверне Podʼи з простору імен seattle. Це тому, що Podʼи є ресурсом обмеженим простором імен, і ми не вказали команді простір імен в командному рядку. Ознайомтесь з виводом kubectl api-resources, щоб визначити, чи ресурс обмежений простіром імен чи ні.
Явне використання --namespace <value> перевизначає цю поведінку.
Як kubectl обробляє токени ServiceAccount
Якщо:
маємо файл токена службового облікового запису Kubernetes, змонтований за шляхом /var/run/secrets/kubernetes.io/serviceaccount/token, і
встановлено змінну середовища KUBERNETES_SERVICE_HOST, і
встановлено змінну середовища KUBERNETES_SERVICE_PORT, і
ви не вказуєте простір імен явно в командному рядку kubectl
тоді kubectl вважатиме, що він працює у вашому кластері. Інструмент kubectl знаходить простір імен цього службового облікового запису (це такий самий простір імен, що й у Podʼа) та діє відповідно до цього простору імен. Це відрізняється від того, що відбувається поза кластером; коли kubectl працює за межами кластера і ви не вказуєте простір імен, команда kubectl діє в просторі імен, встановленому для поточного контексту у вашій конфігурації клієнта. Щоб змінити типовий простір імен для kubectl, ви можете використовувати наступну команду:
Отримати документацію про різні ресурси, такі як Podʼи, вузли, сервіси і т. д.
expose
kubectl expose (-f FILENAME | TYPE NAME | TYPE/NAME) [--port=port] [--protocol=TCP|UDP] [--target-port=number-or-name] [--name=name] [--external-ip=external-ip-of-service] [--type=type] [flags]
Надати доступ ззовні до контролера реплікації, Service або Pod, як до нового Service Kubernetes.
get
kubectl get (-f FILENAME | TYPE [NAME | /NAME | -l label]) [--watch] [--sort-by=FIELD] [[-o | --output]=OUTPUT_FORMAT] [flags]
Вивести список ресурсів.
kustomize
kubectl kustomize <dir> [flags] [options]
Вивести список ресурсів API, згенерованих з інструкцій у файлі kustomization.yaml. Аргумент повинен бути шляхом до теки, що містить файл, або URL репозиторію git з суфіксом шляху, який вказує на те ж саме відносно кореня репозиторію.
label
kubectl label (-f FILENAME | TYPE NAME | TYPE/NAME) KEY_1=VAL_1 ... KEY_N=VAL_N [--overwrite] [--all] [--resource-version=version] [flags]
Додати або оновити мітки одного чи кількох ресурсів.
logs
kubectl logs POD [-c CONTAINER] [--follow] [flags]
Вивести логи контейнера у Podʼі.
options
kubectl options
Список глобальних параметрів командного рядка, які застосовуються до всіх команд.
patch
kubectl patch (-f FILENAME | TYPE NAME | TYPE/NAME) --patch PATCH [flags]
Оновити одне чи кілька полів ресурсу за допомогою процесу стратегії обʼєднання патчів.
plugin
kubectl plugin [flags] [options]
Надає інструменти для взаємодії з втулками.
port-forward
kubectl port-forward POD [LOCAL_PORT:]REMOTE_PORT [...[LOCAL_PORT_N:]REMOTE_PORT_N] [flags]
Переспрямувати один або декілька локальних портів у Pod.
Експериментально: чекати на певний стан одного чи кількох ресурсів.
Щоб дізнатися більше про операції, що виконують команди, див. довідку kubectl.
Типи ресурсів
У наступній таблиці наведено список всіх підтримуваних типів ресурсів та їх скорочених аліасів.
(Цей вивід можна отримати за допомогою kubectl api-resources, він був актуальним на момент Kubernetes 1.25.0)
ІМʼЯ
СКОРОЧЕННЯ
ВЕРСІЯ API
ПРОСТІР ІМЕН
ТИП
bindings
v1
true
Binding
componentstatuses
cs
v1
false
ComponentStatus
configmaps
cm
v1
true
ConfigMap
endpoints
ep
v1
true
Endpoints
events
ev
v1
true
Event
limitranges
limits
v1
true
LimitRange
namespaces
ns
v1
false
Namespace
nodes
no
v1
false
Node
persistentvolumeclaims
pvc
v1
true
PersistentVolumeClaim
persistentvolumes
pv
v1
false
PersistentVolume
pods
po
v1
true
Pod
podtemplates
v1
true
PodTemplate
replicationcontrollers
rc
v1
true
ReplicationController
resourcequotas
quota
v1
true
ResourceQuota
secrets
v1
true
Secret
serviceaccounts
sa
v1
true
ServiceAccount
services
svc
v1
true
Service
mutatingwebhookconfigurations
admissionregistration.k8s.io/v1
false
MutatingWebhookConfiguration
validatingwebhookconfigurations
admissionregistration.k8s.io/v1
false
ValidatingWebhookConfiguration
customresourcedefinitions
crd,crds
apiextensions.k8s.io/v1
false
CustomResourceDefinition
apiservices
apiregistration.k8s.io/v1
false
APIService
controllerrevisions
apps/v1
true
ControllerRevision
daemonsets
ds
apps/v1
true
DaemonSet
deployments
deploy
apps/v1
true
Deployment
replicasets
rs
apps/v1
true
ReplicaSet
statefulsets
sts
apps/v1
true
StatefulSet
tokenreviews
authentication.k8s.io/v1
false
TokenReview
localsubjectaccessreviews
authorization.k8s.io/v1
true
LocalSubjectAccessReview
selfsubjectaccessreviews
authorization.k8s.io/v1
false
SelfSubjectAccessReview
selfsubjectrulesreviews
authorization.k8s.io/v1
false
SelfSubjectRulesReview
subjectaccessreviews
authorization.k8s.io/v1
false
SubjectAccessReview
horizontalpodautoscalers
hpa
autoscaling/v2
true
HorizontalPodAutoscaler
cronjobs
cj
batch/v1
true
CronJob
jobs
batch/v1
true
Job
certificatesigningrequests
csr
certificates.k8s.io/v1
false
CertificateSigningRequest
leases
coordination.k8s.io/v1
true
Lease
endpointslices
discovery.k8s.io/v1
true
EndpointSlice
events
ev
events.k8s.io/v1
true
Event
flowschemas
flowcontrol.apiserver.k8s.io/v1beta2
false
FlowSchema
prioritylevelconfigurations
flowcontrol.apiserver.k8s.io/v1beta2
false
PriorityLevelConfiguration
ingressclasses
networking.k8s.io/v1
false
IngressClass
ingresses
ing
networking.k8s.io/v1
true
Ingress
networkpolicies
netpol
networking.k8s.io/v1
true
NetworkPolicy
runtimeclasses
node.k8s.io/v1
false
RuntimeClass
poddisruptionbudgets
pdb
policy/v1
true
PodDisruptionBudget
podsecuritypolicies
psp
policy/v1beta1
false
PodSecurityPolicy
clusterrolebindings
rbac.authorization.k8s.io/v1
false
ClusterRoleBinding
clusterroles
rbac.authorization.k8s.io/v1
false
ClusterRole
rolebindings
rbac.authorization.k8s.io/v1
true
RoleBinding
roles
rbac.authorization.k8s.io/v1
true
Role
priorityclasses
pc
scheduling.k8s.io/v1
false
PriorityClass
csidrivers
storage.k8s.io/v1
false
CSIDriver
csinodes
storage.k8s.io/v1
false
CSINode
csistoragecapacities
storage.k8s.io/v1
true
CSIStorageCapacity
storageclasses
sc
storage.k8s.io/v1
false
StorageClass
volumeattachments
storage.k8s.io/v1
false
VolumeAttachment
Параметри виводу
Використовуйте наступні розділи для отримання інформації про те, як ви можете форматувати або сортувати вивід деяких команд. Докладні відомості щодо команд, які підтримують різні параметри виводу, див. в документації по kubectl.
Форматування виводу
Стандартний формат виводу для всіх команд kubectl – це читабельний текстовий формат. Щоб вивести деталі у вашому терміналі у певному форматі, ви можете додати параметр -o або --output до підтримуваної команди kubectl.
Синтаксис
kubectl [команда][ТИП][ІМʼЯ] -o <формат_виводу>
Залежно від операції kubectl, підтримуються наступні формати виводу:
Формат виводу
Опис
-o custom-columns=<специфікація>
Вивести таблицю, використовуючи розділений комою список власних стовпців.
-o custom-columns-file=<імʼя_файлу>
Вивести таблицю, використовуючи шаблон власних стовпців у файлі <імʼя_файлу>.
Вивести поля, визначені в виразі jsonpath у файлі <імʼя_файлу>.
-o name
Вивести лише імʼя ресурсу і нічого більше.
-o wide
Вивести у текстовому форматі з будь-якою додатковою інформацією. Для Pod включно з імʼям вузла.
-o yaml
Вивести обʼєкт API у форматі YAML.
Приклад
Тут наступна команда виводить інформацію про Pod у форматі YAML:
kubectl get pod web-pod-13je7 -o yaml
Нагадування: Дивіться довідку kubectl для отримання деталей щодо підтримуваних форматів виводу для кожної команди.
Власні стовпці
Щоб визначити власні стовпці та виводити лише ті деталі, які вам потрібні у вигляді таблиці, ви можете використовувати опцію custom-columns. Ви можете вибрати визначення спеціальних стовпців під час складення параметрів команди або використовувати файл шаблону: -o custom-columns=<spec> або -o custom-columns-file=<filename>.
Приклади
З використанням параметрів в командному рядку:
kubectl get pods <pod-name> -o custom-columns=NAME:.metadata.name,RSRC:.metadata.resourceVersion
З використанням файлу шаблону template.txt:
kubectl get pods <pod-name> -o custom-columns-file=template.txt
де template.txt містить:
NAME RSRC
metadata.name metadata.resourceVersion
Результати виводу будуть виглядати як для використання шаблону, так і для параметрів командного рядка, як:
NAME RSRC
submit-queue 610995
Стовпці на стороні сервера
kubectl підтримує отримання конкретної інформації в стовпці щодо обʼєктів від сервера. Це означає, що для будь-якого заданого ресурсу сервер поверне стовпці та рядки, що стосуються цього ресурсу, для показу його клієнту. Це дозволяє отримати послідовний, зручний для читання вивід для різних клієнтів, які використовуються для одного і того ж кластера, оскільки сервер ізолює деталі виведення.
Ця функція стандартно увімкнена. Щоб вимкнути її, додайте прапорець --server-print=false до команди kubectl get.
Приклади
Щоб вивести інформацію про стан Podʼа, використовуйте команду на зразок наступної:
kubectl get pods <pod-name> --server-print=false
Вивід буде подібний до:
NAME AGE
pod-name 1m
Сортування списку обʼєктів
Щоб вивести обʼєкти у відсортованому списку у вашому вікні термінала, ви можете додати прапорець --sort-by до команди kubectl. Впорядкуйте ваші обʼєкти, вказавши будь-яке числове чи рядкове поле з прапорцем --sort-by. Для вказання поля використовуйте вираз jsonpath.
Щоб вивести список Podʼів, відсортованих за назвами, зробіть наступне:
kubectl get pods --sort-by=.metadata.name
Приклади: Загальні операції
Використовуйте цей набір прикладів, щоб ознайомитися з тим, як використовувати найпоширеніші операції kubectl:
kubectl apply — Застосувати або оновити ресурс із файлу чи stdin.
# Створити сервіс, використовуючи визначення у файлі example-service.yaml.kubectl apply -f example-service.yaml
# Створити контролер реплікації, використовуючи визначення у файлі example-controller.yaml.kubectl apply -f example-controller.yaml
# Створити обʼєкти, які визначені у файлах з розширеннями .yaml, .yml, або .json у теці <directory>.kubectl apply -f <directory>
kubectl get — Показати відомості про один чи кілька ресурсів.
# Показати всі Podʼі у форматі звичайного тексту.kubectl get pods
# Показати всі Podʼі у форматі звичайного тексту та додаткову інформацію (наприклад, імʼя вузла).kubectl get pods -o wide
# Показати контролер реплікації із вказаним імʼям у форматі звичайного тексту. Порада: Ви можете скоротити та замінити тип ресурсу 'replicationcontroller' на скорочену назву 'rc'.kubectl get replicationcontroller <rc-name>
# Показати всі контролери реплікації та сервіси разом у форматі звичайного тексту.kubectl get rc,services
# Показати всі daemonsets у форматі звичайного тексту.kubectl get ds
# Показати всі Podʼи, які працюють на вузлі server01kubectl get pods --field-selector=spec.nodeName=server01
kubectl describe — Показати детальний стан одного чи кількох ресурсів, включаючи ті, які ще не ініціалізовані.
# Показати деталі вузла із імʼям <node-name>.kubectl describe nodes <node-name>
# Показати деталі Podʼа із імʼям <pod-name>.kubectl describe pods/<pod-name>
# Показати деталі всіх Podʼів, які керуються контролером реплікації із вказаним імʼям <rc-name>.# Памʼятайте: Будь-які Podʼи, які створює контролер реплікації, отримують префікс із імʼям контролера реплікації.kubectl describe pods <rc-name>
# Показати всі Podʼиkubectl describe pods
Примітка:
Команда kubectl get зазвичай використовується для отримання одного чи кількох ресурсів того ж типу ресурсу. Вона має багатий набір прапорців, що дозволяють налаштовувати формат виводу за допомогою прапорця -o або --output, наприклад. Ви можете вказати прапорець -w або --watch, щоб почати слідкування за оновленнями для певного обʼєкта. Команда kubectl describe більше фокусується на описі багатьох повʼязаних аспектів вказаного ресурсу. Вона може робити кілька викликів до API-сервера для побудови виводу для користувача. Наприклад, команда kubectl describe node отримує не тільки інформацію про вузол, але й підсумок Podʼів, які працюють на ньому, події, створені для вузла, і т. д.
kubectl delete — Видалити ресурси або з використанням файлу, або з stdin, або вказавши селектори міток, імена, селектори ресурсів чи самі ресурси.
# Видалити Pod, використовуючи тип та імʼя, вказане у файлі pod.yaml.kubectl delete -f pod.yaml
# Видалити всі Podʼи та сервіси із міткою '<label-key>=<label-value>'.kubectl delete pods,services -l <label-key>=<label-value>
# Видалити всі Podʼи, включаючи неініціалізовані.kubectl delete pods --all
kubectl exec — Виконати команду у контейнері Podʼа.
# Отримати вивід виконання команди 'date' у Podʼі <pod-name>. Типово вивід виконується з першого контейнера.kubectl exec <pod-name> -- date
# Отримати вивід виконання команди 'date' у контейнері <container-name> Podʼа <pod-name>.kubectl exec <pod-name> -c <container-name> -- date
# Отримати інтерактивний TTY та виконати /bin/bash у Podʼі <pod-name>. Типово вивід виконується з першого контейнера.kubectl exec -ti <pod-name> -- /bin/bash
kubectl logs — Вивести логи для контейнера у Podʼі.
# Отримати логи з Podʼа <pod-name>.kubectl logs <pod-name>
# Почати виведення логів у режимі стрічки з Podʼа <pod-name>. Це схоже на команду 'tail -f' у Linux.kubectl logs -f <pod-name>
kubectl diff — Переглянути відмінності запропонованих оновлень кластера.
# Відмінності ресурсів, включених у "pod.json".kubectl diff -f pod.json
# Відмінності, отримані з stdin.cat service.yaml | kubectl diff -f -
Приклади: Створення та використання втулків
Використовуйте цей набір прикладів, щоб ознайомитися із написанням та використанням втулків kubectl:
# створіть простий втулок будь-якою мовою та зробить файл виконуваним# так, щоб він починався префіксом "kubectl-"cat ./kubectl-hello
#!/bin/sh
# цей втулок виводить слова "hello world"echo"hello world"
Дайте втулку права на виконання:
chmod a+x ./kubectl-hello
# та перемістіть його в місце, яке є у вашому шляху (PATH)sudo mv ./kubectl-hello /usr/local/bin
sudo chown root:root /usr/local/bin
# Ви зараз створили та "встановили" втулок kubectl.# Ви можете почати використовувати цей втулок, викликаючи його з kubectl, # ніби це звичайна командаkubectl hello
hello world
# Ви можете "вилучити" втулок, видаливши його з теки у вашому# $PATH, де ви його розмістилиsudo rm /usr/local/bin/kubectl-hello
Щоб переглянути всі втулки, доступні для kubectl, використовуйте команду kubectl plugin list:
kubectl plugin list
Вивід буде схожий на:
The following kubectl-compatible plugins are available:
/usr/local/bin/kubectl-hello
/usr/local/bin/kubectl-foo
/usr/local/bin/kubectl-bar
kubectl plugin list також попереджає вас про втулки, які не мають прав на виконання, або які перекриваються з іншими втулками; наприклад:
sudo chmod -x /usr/local/bin/kubectl-foo # вилучити права виконанняkubectl plugin list
The following kubectl-compatible plugins are available:
/usr/local/bin/kubectl-hello
/usr/local/bin/kubectl-foo
- warning: /usr/local/bin/kubectl-foo identified as a plugin, but it is not executable
/usr/local/bin/kubectl-bar
error: one plugin warning was found
Ви можете думати про втулки як про можливість будувати більш складні функції на основі наявних команд kubectl:
cat ./kubectl-whoami
Наступні кілька прикладів передбачають, що ви вже зробили так, що kubectl-whoami має наступний вміст:
#!/bin/bash
# цей втулок використовує команду `kubectl config` для виведення# інформації про поточного користувача, на основі вибраного контекстуkubectl config view --template='{{ range .contexts }}{{ if eq .name "'$(kubectl config current-context)'" }}Current user: {{ printf "%s\n" .context.user }}{{ end }}{{ end }}'
Запуск вищезазначеної команди дає вам вивід із зазначенням користувача для поточного контексту у вашому файлі KUBECONFIG:
# зробіть файл виконавчимsudo chmod +x ./kubectl-whoami
# та перемістіть його у місце вказане в PATHsudo mv ./kubectl-whoami /usr/local/bin
kubectl whoami
Current user: plugins-user
Для отримання додаткової інформації про втулки, подивіться приклад CLI-втулка.
11.1 - Вступ до kubectl
kubectl — це версія CLI для Kubernetes, яка може виконувати багато різних речей.
Хоча це керівництво зосереджене на використанні kubectl для декларативного управління застосунками в Kubernetes, воно також охоплює інші функції kubectl.
Набори команд
Більшість команд kubectl зазвичай відносяться до однієї з кількох категорій:
Тип
Використання
Опис
Декларативне управління ресурсами
Розгортання та операційна діяльність (наприклад, GitOps)
Декларативне управління ресурсами Kubernetes за допомогою конфігурації ресурсів
Імперативне управління ресурсами
Тільки розробка
Виконання команд для управління ресурсами Kubernetes за допомогою аргументів командного рядка та прапорців
Виведення стану робочого навантаження
Налагодження
Виведення інформації про робочі навантаження
Взаємодія з контейнерами
Налагодження
Exec, attach, cp, logs
Управління кластером
Операції з кластером
Виведення та блокування вузлів
Декларативне управління застосунками
Найкращим підходом для управління ресурсами є використання декларативних файлів, які називаються конфігурацією ресурсів, разом з командою kubectl Apply. Ця команда читає локальну (або віддалену) структуру файлів та змінює стан кластера, щоб відображати заявлені наміри.
Apply
Apply — є переважним механізмом для управління ресурсами в кластері Kubernetes.
Виведення стану робочих навантажень
Користувачам потрібно переглядати стан робочих навантажень.
Виведення підсумкового стану та інформації про ресурси
Виведення повного стану та інформації про ресурси
Виведення конкретних полів з ресурсів
Запит ресурсів, які відповідають міткам
Налагодження робочих навантажень
kubectl підтримує налагодження, надаючи команди для:
Виведення логів контейнерів
Виведення подій кластера
Виконання або приєднання до контейнера
Копіювання файлів з контейнерів в кластері у файлову систему користувача
Управління кластером
Час від часу користувачам може знадобитися виконати операції на вузлах кластера. kubectl підтримує команди для виведення робочих навантажень з вузла, щоб його можна було відключити або налагодити.
Парадні команди
Користувачі можуть вважати, що використання конфігурації ресурсів надто багатослівне для розробки та віддають перевагу роботі з кластером імперативно за допомогою робочого процесу, схожого на роботу з оболонкою. kubectl пропонує парадні (porcelain 1) команди для створення та модифікації ресурсів.
Генерування + створення ресурсів таких, як Deployment, StatefulSet, Service, ConfigMap й так далі
Встановлення полів ресурсів
Редагування (поточних) ресурсів в текстовому редакторі
Porcelain тільки для розробки
Парадні команди призначені тільки для розробки та не рекомендуються для використання в операційній діяльності.
Ця сторінка містить перелік загальновживаних команд та прапорців kubectl.
Примітка:
Ці інструкції призначені для Kubernetes v1.32. Для перевірки версії скористайтесь командою kubectl version.
Автозавершення команд kubeclt
BASH
source <(kubectl completion bash)# встановлення автозавершення для bash в поточному терміналі, пакунок bash-completion повинен бути встановлений.echo"source <(kubectl completion bash)" >> ~/.bashrc # додавання автозавершення для bash в профіль bash для постіного використання
Ви також можете використовувати зручне скорочення для kubectl, яке також працює з автозавершенням:
aliask=kubectl
complete -o default -F __start_kubectl k
ZSH
source <(kubectl completion zsh)# встановлення автозавершення для zsh в поточному терміналіecho'[[ $commands[kubectl] ]] && source <(kubectl completion zsh)' >> ~/.zshrc # додавання автозавершення для zsh в профіль zsh для постіного використання
FISH
Примітка:
Вимагається версія kubectl 1.23 або вище.
echo'kubectl completion fish | source'> ~/.config/fish/completions/kubectl.fish&&source ~/.config/fish/completions/kubectl.fish
-A замість --all-namespaces
Додавання --all-namespaces трапляється досить часто, тому вам слід знати скорочення для --all-namespaces:
kubectl -A
Контекст та конфігурація kubectl
Встановіть, з яким кластером Kubernetes kubectl спілкується та змінює інформацію про конфігурацію. Див. документацію Автентифікація між кластерами за допомогою kubeconfig для детальної інформації про конфігураційний файл.
kubectl config view # Показати обʼєднані налаштування kubeconfig.# використовувати декілька файлів kubeconfig одночасно та переглядати обʼєднані конфігурації {#creating-objects}KUBECONFIG=~/.kube/config:~/.kube/config2
kubectl config view
# Показати обʼєднані налаштування kubeconfig, необроблені дані сертифікатів та експоновані секретиkubectl config view --raw
# отримання пароля для користувача e2ekubectl config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}'# отримання сертифіката для користувача e2ekubectl config view --raw -o jsonpath='{.users[?(.name == "e2e")].user.client-certificate-data}' | base64 -d
kubectl config view -o jsonpath='{.users[].name}'# показати першого користувачаkubectl config view -o jsonpath='{.users[*].name}'# отримати список користувачівkubectl config get-contexts # показати список контекстівkubectl config get-contexts -o name # отримати всі імена контекстівkubectl config current-context # показати поточний контекстkubectl config use-context my-cluster-name # встановити стандартний контекст у my-cluster-namekubectl config set-cluster my-cluster-name # встановити запис кластера у kubeconfig# налаштувати URL проксі-сервера для запитів, зроблених цим клієнтом у kubeconfigkubectl config set-cluster my-cluster-name --proxy-url=my-proxy-url
# додати нового користувача до kubeconf з підтримкою базової автентифікаціїkubectl config set-credentials kubeuser/foo.kubernetes.com --username=kubeuser --password=kubepassword
# постійно зберігати простір імен для всіх наступних команд kubectl у цьому контекстіkubectl config set-context --current --namespace=ggckad-s2
# встановити контекст, використовуючи конкретне імʼя користувача та простір іменkubectl config set-context gce --user=cluster-admin --namespace=foo \
&& kubectl config use-context gce
kubectl config unset users.foo # видалити користувача foo# скорочення для налаштування/показу контексту/простору імен (працює тільки для bash та сумісних з bash оболонок, поточний контекст має бути встановлений перед використанням kn для налаштування простору імен)aliaskx='f() { [ "$1" ] && kubectl config use-context $1 || kubectl config current-context ; } ; f'aliaskn='f() { [ "$1" ] && kubectl config set-context --current --namespace $1 || kubectl config view --minify | grep namespace | cut -d" " -f6 ; } ; f'
Kubectl apply
apply керує застосунками через файли, що визначають ресурси Kubernetes. Ця команда створює та оновлює ресурси в кластері, виконуючи команду kubectl apply. Це рекомендований спосіб керування застосунками Kubernetes в операційному середовищі. Дивіться Kubectl Book.
Створення обʼєктів
Маніфести Kubernetes можна визначати у форматах YAML або JSON. Можна використовувати розширення файлів .yaml, .yml та .json.
kubectl apply -f ./my-manifest.yaml # створити ресурс(и)kubectl apply -f ./my1.yaml -f ./my2.yaml # створити з декількох файлівkubectl apply -f ./dir # створити ресурс(и) з усіх манифестів у теціkubectl apply -f https://example.com/manifest.yaml # створити ресурс(и) з URL (Примітка: це приклад домену і не містить дійсного манифесту)kubectl create deployment nginx --image=nginx # запустити один екземпляо nginx# створити завдання, яке виводить "Hello World"kubectl create job hello --image=busybox:1.28 -- echo"Hello World"# створити CronJob, який виводить "Hello World" кожну хвилинуkubectl create cronjob hello --image=busybox:1.28 --schedule="*/1 * * * *" -- echo"Hello World"kubectl explain pods # отримати документацію для манифестів pod# створити декілька YAML обʼєктів зі stdin {#creating-objects}kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
name: busybox-sleep
spec:
containers:
- name: busybox
image: busybox:1.28
args:
- sleep
- "1000000"
---
apiVersion: v1
kind: Pod
metadata:
name: busybox-sleep-less
spec:
containers:
- name: busybox
image: busybox:1.28
args:
- sleep
- "1000"
EOF# створити секрет з декількома ключамиkubectl apply -f - <<EOF
apiVersion: v1
kind: Secret
metadata:
name: mysecret
type: Opaque
data:
password: $(echo -n "s33msi4" | base64 -w0)
username: $(echo -n "jane" | base64 -w0)
EOF
Перегляд і пошук ресурсів
# Отримати команди з базовим виводомkubectl get services # Вивід усіх сервісів у просторі іменkubectl get pods --all-namespaces # Вивід усіх Podʼів у всіх просторах іменkubectl get pods -o wide # Вивід усіх Podʼів у поточному просторі імен, з детальною інформацієюkubectl get deployment my-dep # Вивід конкретного deploymentkubectl get pods # Вивід усіх Podʼів у просторі іменkubectl get pod my-pod -o yaml # Отримати Pod в фоматі YAML# Опис команд з докладним виводомkubectl describe nodes my-node
kubectl describe pods my-pod
# Вивід сервісів, відсортованих за назвоюkubectl get services --sort-by=.metadata.name
# Вивід Podʼів, відсортованих за кількістю перезапусківkubectl get pods --sort-by='.status.containerStatuses[0].restartCount'# Вивід PersistentVolumes, відсортованих за ємністюkubectl get pv --sort-by=.spec.capacity.storage
# Отримати мітки version усіх Podʼів з міткою app=cassandrakubectl get pods --selector=app=cassandra -o \
jsonpath='{.items[*].metadata.labels.version}'# Отримати значення ключа з крапками, напр. 'ca.crt'kubectl get configmap myconfig \
-o jsonpath='{.data.ca\.crt}'# Отримати значення, закодоване у base64, з дефісами замість підкресленьkubectl get secret my-secret --template='{{index .data "key-name-with-dashes"}}'# Отримати всі робочі вузли (використовувати селектор для виключення результатів з міткою# з назвою 'node-role.kubernetes.io/control-plane')kubectl get node --selector='!node-role.kubernetes.io/control-plane'# Отримати всі запущені Podʼи у просторі іменkubectl get pods --field-selector=status.phase=Running
# Отримати ExternalIP усіх вузлівkubectl get nodes -o jsonpath='{.items[*].status.addresses[?(@.type=="ExternalIP")].address}'# Вивід імен Podʼів, що належать певному RC# Команда "jq" корисна для перетворень, які занадто складні для jsonpath, її можна знайти на https://jqlang.github.io/jq/sel=${$(kubectl get rc my-rc --output=json | jq -j '.spec.selector | to_entries | .[] | "\(.key)=\(.value),"')%?}echo$(kubectl get pods --selector=$sel --output=jsonpath={.items..metadata.name})# Показати мітки для всіх Podʼів (або будь-якого іншого обʼєкта Kubernetes, що підтримує мітки)kubectl get pods --show-labels
# Перевірити, які вузли готовіJSONPATH='{range .items[*]}{@.metadata.name}:{range @.status.conditions[*]}{@.type}={@.status};{end}{end}'\
&& kubectl get nodes -o jsonpath="$JSONPATH" | grep "Ready=True"# Перевірити, які вузли готові з custom-columnskubectl get node -o custom-columns='NODE_NAME:.metadata.name,STATUS:.status.conditions[?(@.type=="Ready")].status'# Вивести розкодовані секрети без зовнішніх інструментівkubectl get secret my-secret -o go-template='{{range $k,$v := .data}}{{"### "}}{{$k}}{{"\n"}}{{$v|base64decode}}{{"\n\n"}}{{end}}'# Вивід усіх секретів, які зараз використовуються Podʼомkubectl get pods -o json | jq '.items[].spec.containers[].env[]?.valueFrom.secretKeyRef.name' | grep -v null | sort | uniq
# Вивід всіх containerID initContainer усіх Podʼів# Корисно при очищенні зупинених контейнерів, уникаючи видалення initContainer.kubectl get pods --all-namespaces -o jsonpath='{range .items[*].status.initContainerStatuses[*]}{.containerID}{"\n"}{end}' | cut -d/ -f3
# Вивід подій, відсортованих за часовою позначкоюkubectl get events --sort-by=.metadata.creationTimestamp
# Вивід всіх попереджувальних подійkubectl events --types=Warning
# Порівняти поточний стан кластера зі станом, в якому б кластер знаходився, якби було застосовано маніфест.kubectl diff -f ./my-manifest.yaml
# Створити дерево всіх ключів, розділених крапками, що повертаються для вузлів# Корисно при пошуку ключа у складній вкладеній структурі JSONkubectl get nodes -o json | jq -c 'paths|join(".")'# Створити всіх ключів, розділених крапками, що повертаються для Podʼів тощоkubectl get pods -o json | jq -c 'paths|join(".")'# Вивести ENV для всіх Podʼів, за умови, що у вас є типовий контейнер для Podʼів, типовий простір імен і підтримка команди `env`.# Корисно при виконанні будь-якої підтримуваної команди для всіх Podʼів, не тільки `env`for pod in $(kubectl get po --output=jsonpath={.items..metadata.name}); doecho$pod&& kubectl exec -it $pod -- env; done# Отримати субресурс status для deploymentkubectl get deployment nginx-deployment --subresource=status
Оновлення ресурсів
kubectl set image deployment/frontend www=image:v2 # Rolling update контейнерів "www" в deployment "frontend", оновлення образуkubectl rollout history deployment/frontend # Перегляд історії deployment, включаючи ревізіюkubectl rollout undo deployment/frontend # Відкат до попереднього deploymentkubectl rollout undo deployment/frontend --to-revision=2# Відкат до конкретної ревізіїkubectl rollout status -w deployment/frontend # Спостереження за статусом rolling update deployment "frontend" до завершенняkubectl rollout restart deployment/frontend # Rolling restart deployment "frontend"cat pod.json | kubectl replace -f - # Заміна Pod на основі JSON, переданого через stdin# Примусова заміна, видалення та повторне створення ресурсу. Це призведе до простою сервісу.kubectl replace --force -f ./pod.json
# Створення сервісу для реплікованого nginx, який працює на порту 80 і підключається до контейнерів на порту 8000kubectl expose rc nginx --port=80 --target-port=8000# Оновлення версії (теґа) образу одноконтейнерного Podʼа до v4kubectl get pod mypod -o yaml | sed 's/\(image: myimage\):.*$/\1:v4/' | kubectl replace -f -
kubectl label pods my-pod new-label=awesome # Додавання міткиkubectl label pods my-pod new-label- # Видалення міткиkubectl label pods my-pod new-label=new-value --overwrite # Перезапис поточного значенняkubectl annotate pods my-pod icon-url=http://goo.gl/XXBTWq # Додавання анотаціїkubectl annotate pods my-pod icon-url- # Видалення анотаціїkubectl autoscale deployment foo --min=2 --max=10# Автомасштабування deployment "foo"
Накладання патчів на ресурси
# Часткове оновлення вузлаkubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'# Оновлення образу контейнера; spec.containers[*].name обовʼязково, тому що це ключ для злиттяkubectl patch pod valid-pod -p '{"spec":{"containers":[{"name":"kubernetes-serve-hostname","image":"new image"}]}}'# Оновлення образу контейнера за допомогою json patch з позиційними масивамиkubectl patch pod valid-pod --type='json' -p='[{"op": "replace", "path": "/spec/containers/0/image", "value":"new image"}]'# Вимкнення livenessProbe у deployment за допомогою json patch з позиційними масивамиkubectl patch deployment valid-deployment --type json -p='[{"op": "remove", "path": "/spec/template/spec/containers/0/livenessProbe"}]'# Додавання нового елементу до позиційного масивуkubectl patch sa default --type='json' -p='[{"op": "add", "path": "/secrets/1", "value": {"name": "whatever" } }]'# Оновлення кількості реплік deployment шляхом накладання патчу на його субресурс scalekubectl patch deployment nginx-deployment --subresource='scale' --type='merge' -p '{"spec":{"replicas":2}}'
Редагування ресурсів
Ви можете змінювати ресурси, використовуючи ваш улюблений редактор:
kubectl edit svc/docker-registry # Редагування service з назвою docker-registryKUBE_EDITOR="nano" kubectl edit svc/docker-registry # Використання альтернативного рекактора
Масштабування ресурсів
kubectl scale --replicas=3 rs/foo # Масштабування replicaset з назвою 'foo' до 3kubectl scale --replicas=3 -f foo.yaml # Масштабування ресурсу вказанеого у "foo.yaml" до 3kubectl scale --current-replicas=2 --replicas=3 deployment/mysql # Якщо deployment з назвою mysql має поточний розмір — 2, масштабувати mysql до 3kubectl scale --replicas=5 rc/foo rc/bar rc/baz # Масштабувати кілька контролерів реплікації
Видалення ресурсів
kubectl delete -f ./pod.json # Вилучити Pod використовуючи тип та назву, вказані в pod.jsonkubectl delete pod unwanted --now # Вилучити Pod негайно, без його належного завершенняkubectl delete pod,service baz foo # Вилучити Podʼи та сервіси з назвами "baz" та "foo"kubectl delete pods,services -l name=myLabel # Вилучити Podʼи та сервіси з міткою name=myLabelkubectl -n my-ns delete pod,svc --all # Вилучити всі Podʼи та сервіси в просторі імен my-ns,# Вилучити всі Podʼи, що збігаються з шаблоном awk pattern1 або pattern2kubectl get pods -n mynamespace --no-headers=true | awk '/pattern1|pattern2/{print $1}' | xargs kubectl delete -n mynamespace pod
Взаємодія з працюючими Podʼами
kubectl logs my-pod # вивести логи Podʼа (stdout)kubectl logs -l name=myLabel # вивести логи Podʼів з міткою name=myLabel (stdout)kubectl logs my-pod --previous # вивести логи Podʼа (stdout) для попереднього варіанта контейнераkubectl logs my-pod -c my-container # вивести логи контейнера в Podʼі (stdout, випадок з декількома контейнерами)kubectl logs -l name=myLabel -c my-container # вивести логи контейнера в Podʼі з міткою name=myLabel (stdout)kubectl logs my-pod -c my-container --previous # вивести логи контейнера в Podʼі (stdout, випадок з декількома контейнерами) для попереднього варіанта контейнераkubectl logs -f my-pod # транслювати логи Podʼа (stdout)kubectl logs -f my-pod -c my-container # транслювати логи контейнера в Podʼі (stdout, випадок з декількома контейнерами)kubectl logs -f -l name=myLabel --all-containers # транслювати всі логи Podʼів з міткою name=myLabel (stdout)kubectl run -i --tty busybox --image=busybox:1.28 -- sh # Запустити Pod як інтерактивну оболонкуkubectl run nginx --image=nginx -n mynamespace # Запустити один екземпляр Podʼа nginx в просторі імен mynamespacekubectl run nginx --image=nginx --dry-run=client -o yaml > pod.yaml
# Згенерувати специфікацію для запуску Podʼа nginx і записати її у файл pod.yamlkubectl attach my-pod -i # Підʼєднатися до працюючого контейнераkubectl port-forward my-pod 5000:6000 # Слухати порт 5000 на локальній машині і пересилати на порт 6000 на Podʼі my-podkubectl exec my-pod -- ls / # Виконати команду в існуючому Podʼі (випадок з 1 контейнером)kubectl exec --stdin --tty my-pod -- /bin/sh # Інтерактивний доступ до оболонки працюючого Podʼа (випадок з 1 контейнером)kubectl exec my-pod -c my-container -- ls / # Виконати команду в існуючому Podʼі (випадок з декількома контейнерами)kubectl debug my-pod -it --image=busybox:1.28 # Створити інтерактивну налагоджувальну сесію в існуючому Podʼі і відразу підʼєднатися до неїkubectl debug node/my-node -it --image=busybox:1.28 # Створити інтерактивну налагоджувальну сесію на вущлі і відразу підʼєднатися до неїkubectl top pod # Показати метрики для всіх Podʼів в стандартному просторі іменkubectl top pod POD_NAME --containers # Показати метрики для заданого Podʼа та його контейнерівkubectl top pod POD_NAME --sort-by=cpu # Показати метрики для заданого Podʼа і сортувати їх за 'cpu' або 'memory'
Копіювання файлів та тек до і з контейнерів
kubectl cp /tmp/foo_dir my-pod:/tmp/bar_dir # Скопіювати локальну теку /tmp/foo_dir до /tmp/bar_dir у віддаленому Podʼі в поточному просторі іменkubectl cp /tmp/foo my-pod:/tmp/bar -c my-container # Скопіювати локальний файл /tmp/foo до /tmp/bar у віддаленому Podʼі в конкретному контейнеріkubectl cp /tmp/foo my-namespace/my-pod:/tmp/bar # Скопіювати локальний файл /tmp/foo до /tmp/bar у віддаленому Podʼі в просторі імен my-namespacekubectl cp my-namespace/my-pod:/tmp/foo /tmp/bar # Скопіювати /tmp/foo з віддаленого Podʼа до /tmp/bar локально
Примітка:
kubectl cp потребує наявності бінарного файлу 'tar' у вашому образі контейнера. Якщо 'tar' відсутній, kubectl cp завершиться з помилкою. Для розширених випадків використання, таких як символічні посилання, розширення шаблонів або збереження режимів файлів, розгляньте можливість використання kubectl exec.
tar cf - /tmp/foo | kubectl exec -i -n my-namespace my-pod -- tar xf - -C /tmp/bar # Скопіювати локальний файл /tmp/foo до /tmp/bar у віддаленому Podʼі в просторі імен my-namespacekubectl exec -n my-namespace my-pod -- tar cf - /tmp/foo | tar xf - -C /tmp/bar # Скопіювати /tmp/foo з віддаленого Podʼа до /tmp/bar локально
Взаємодія з Deployment та Service
kubectl logs deploy/my-deployment # Вивести логи Podʼа для Deployment (одноконтейнерний випадок)kubectl logs deploy/my-deployment -c my-container # Вивести логи Podʼа для Deployment (багатоконтейнерний випадок)kubectl port-forward svc/my-service 5000# Слухати на локальному порту 5000 і переадресувати на порт 5000 на Service бекендkubectl port-forward svc/my-service 5000:my-service-port # Слухати на локальному порту 5000 і переадресувати на порт цільового Service з імʼям <my-service-port>kubectl port-forward deploy/my-deployment 5000:6000 # Слухати на локальному порту 5000 і переадресувати на порт 6000 на Podʼі, створеному <my-deployment>kubectl exec deploy/my-deployment -- ls # Виконати команду в першому Podʼі та першому контейнері в Deployment (одноконтейнерний або багатоконтейнерний випадок)
Взаємодія з вузлами та кластером
kubectl cordon my-node # Позначити my-node як непридатний до плануванняkubectl drain my-node # Вивільнити my-node для підготовки до обслуговуванняkubectl uncordon my-node # Позначити my-node як придатний до плануванняkubectl top node # Показати метрики для всіх вузлівkubectl top node my-node # Показати метрики для певного вузлаkubectl cluster-info # Показати адреси майстра та сервісівkubectl cluster-info dump # Вивести поточний стан кластера у stdoutkubectl cluster-info dump --output-directory=/path/to/cluster-state # Вивести поточний стан кластера у /path/to/cluster-state# Переглянути наявні taint, які є на поточних вузлах.kubectl get nodes -o='custom-columns=NodeName:.metadata.name,TaintKey:.spec.taints[*].key,TaintValue:.spec.taints[*].value,TaintEffect:.spec.taints[*].effect'# Якщо taint з таким ключем та ефектом вже існує, його значення замінюється, як зазначено.kubectl taint nodes foo dedicated=special-user:NoSchedule
kubectl api-resources --namespaced=true# Всі ресурси, які просторово обмеженіkubectl api-resources --namespaced=false# Всі ресурси, які не є просторово обмеженимиkubectl api-resources -o name # Усі ресурси з простим виведенням (тільки назва ресурсу)kubectl api-resources -o wide # Усі ресурси з розширеним виведенням (так званий "wide" формат)kubectl api-resources --verbs=list,get # Усі ресурси, які підтримують запити "list" та "get"kubectl api-resources --api-group=extensions # Усі ресурси в API групі "extensions"
Форматування виводу
Щоб вивести деталі у вікні термінала у певному форматі, додайте прапорець -o (або --output) до відповідної команди kubectl.
Формат виводу
Опис
-o=custom-columns=<spec>
Вивести таблицю, використовуючи список власних стовпців, розділених комами
-o=custom-columns-file=<filename>
Вивести таблицю, використовуючи шаблон власних стовпців з файлу <filename>
Вивести поля, визначені за допомогою шаблону на основі golang з файлу<filename>
-o=json
Вивести API обʼєкт у форматі JSON
-o=jsonpath=<template>
Вивести поля, визначені за допомогою виразу jsonpath
-o=jsonpath-file=<filename>
Вивести поля, визначені за допомогою виразу jsonpath з файлу <filename>
-o=name
Вивести лише назву ресурсу і нічого більше
-o=wide
Вивести в текстовому форматі з додатковою інформацією, включаючи імʼя вузла для Podʼів
-o=yaml
Вивести API обʼєкт у форматі YAML
Приклади використання -o=custom-columns:
# Усі образи, що працюють в кластеріkubectl get pods -A -o=custom-columns='DATA:spec.containers[*].image'# Усі образи, що працюють в просторі імен: default, згруповані по Podkubectl get pods --namespace default --output=custom-columns="NAME:.metadata.name,IMAGE:.spec.containers[*].image"# Усі образи, за винятком "registry.k8s.io/coredns:1.6.2"kubectl get pods -A -o=custom-columns='DATA:spec.containers[?(@.image!="registry.k8s.io/coredns:1.6.2")].image'# Усі поля metadata незалежно від назвиkubectl get pods -A -o=custom-columns='DATA:metadata.*'
Рівні деталізації виводу та налагодження для kubectl
Деталізація виводу в kubectl контролюється за допомогою прапорця -v або --v, за яким слідує ціле число, що представляє рівень логування. Загальні конвенції щодо логування Kubernetes та повʼязані рівні описані тут.
Рівень деталізації
Опис
--v=0
Загалом корисно, щоб цей рівень завжди був видимим для оператора кластера.
--v=1
Прийнятний стандартний рівень логування, якщо вам не потрібна висока деталізація.
--v=2
Корисна стабільна інформація про сервіс та важливі повідомлення логу, які можуть корелювати зі значними змінами в системі. Рекомендований стандартний рівень логування для більшості систем.
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
-h, --help
довідка kubectl
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
kubectl scale — Встановлення нового розміру для deployment, replica set або контролера реплікацій
kubectl set — Встановлення конкретних функцій для обʼєктів
kubectl taint — Оновлення taint на одному або кількох вузлах
kubectl top — Показ використання ресурсів (CPU/памʼять)
kubectl uncordon — Позначення вузла як придатного для планування
kubectl version — Вивід інформації про версію клієнта та сервера
kubectl wait — Експериментальна функція: очікування на визначену умову для одного або кількох ресурсів
11.3.2 - kubectl annotate
Огляд
Оновлення анотацій на одному або декількох ресурсах.
Всі обʼєкти 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]
Приклади
# Оновити 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'# Оновити всі Podʼи в просторі іменkubectl annotate pods --all description='my frontend running nginx'# Оновити Pod 'foo' лише у випадку, якщо ресурс не змінювався з версії 1kubectl annotate pods foo description='my frontend running nginx' --resource-version=1# Оновити Pod 'foo', видаливши анотацію з назвою 'description', якщо вона існує# Не потребує прапорця --overwritekubectl annotate pods foo description-
Параметри
--all
Вибрати всі ресурси у просторі імен вказаних типів ресурсів.
-A, --all-namespaces
Якщо true, перевірити вказану дію в усіх просторах імен.
--allow-missing-template-keys Типово: true
Якщо це значення встановлено, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-annotate"
Імʼя менеджера, що використовується для відстеження права власності на поле.
--field-selector string
Селектор (запит поля) для фільтрації підтримує '=', '==' і '!=' (наприклад, --field-selector key1=value1,key2=value2). Сервер підтримує лише обмежену кількість запитів до полів кожного типу.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс для оновлення анотації
-h, --help
довідка annotate
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
--list
Якщо true, показувати анотації для даного ресурсу.
--local
Якщо значення true, annotation НЕ буде звертатися до api-server, а виконуватиметься локально.
Якщо true, дозволити перезапис анотацій, інакше відхиляти оновлення анотацій, які перезаписують наявні анотації.
-R, --recursive
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--resource-version string
Якщо значення не порожнє, оновлення анотації буде успішним, тільки якщо це поточна версія ресурсу для обʼєкта. Дійсно лише при зазначенні одного ресурсу.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
# Вивести підтримувані ресурси APIkubectl api-resources
# Вивести підтримувані ресурси API з більш детальною інформацієюkubectl api-resources -o wide
# Вивести підтримувані ресурси API відсортовані за колонкоюkubectl api-resources --sort-by=name
# Вивести підтримувані ресурси API, які мають простір іменkubectl api-resources --namespaced=true# Вивести підтримувані ресурси API, які не мають простору іменkubectl api-resources --namespaced=false# Вивести підтримувані ресурси API з конкретною APIGroupkubectl api-resources --api-group=rbac.authorization.k8s.io
Параметри
--api-group string
Обмеження на ресурси у вказаній групі API.
--cached
Використовувати кешований список ресурсів, якщо він доступний.
--categories strings
Обмеження на ресурси, які належать до вказаних категорій.
-h, --help
довідка api-resources
--namespaced Типово: true
Якщо false, будуть повернуті ресурси без простору імен, інакше стандартно будуть повернуті ресурси з простором імен.
--no-headers
При використанні стандартного або власного формату виводу стовпців не друкувати заголовки (заголовки стандартно друкуються).
-o, --output string
Формат виводу. Один з: (wide, name).
--sort-by string
Якщо поле не порожнє, відсортувати список ресурсів за вказаним полем. Поле може бути як 'name', так і 'kind'.
--verbs strings
Обмежитися ресурсами, які підтримують вказані дієслова.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Виводити підтримувані версії API на сервері у вигляді "група/версія".
kubectl api-versions
Приклади
# Вивести підтримуванні версії API kubectl api-versions
Параметри
-h, --help
довідка api-versions
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Застосовує конфігурацію до ресурсу за назвою файлу або stdin. Імʼя ресурсу має бути вказано обовʼязково. Ресурс буде створено, якщо його ще не існує. Щоб використовувати 'apply', завжди створюйте ресурс спочатку за допомогою 'apply' або 'create --save-config'.
Приймаються формати JSON і YAML.
Альфа-застереження: функціональність --prune ще не завершена. Не використовуйте, якщо ви не знаєте поточного стану. Див. https://issues.k8s.io/34274.
kubectl apply (-f FILENAME | -k DIRECTORY)
Приклади
# Застосувати конфігурацію з pod.json до Podkubectl apply -f ./pod.json
# Застосувати ресурси з теки, що містить kustomization.yaml — наприклад, dir/kustomization.yamlkubectl apply -k dir/
# Застосувати JSON, що передається через stdin до Podcat pod.json | kubectl apply -f -
# Застосувати конфігурацію з усіх файлів, які закінчуються на '.json'kubectl apply -f '*.json'# Примітка: --prune все ще знаходиться в альфа-версії# Застосувати конфігурацію з manifest.yaml, яка відповідає мітці app=nginx і видалити всі інші ресурси, які не знаходяться в файлі і відповідають мітці app=nginxkubectl apply --prune -f manifest.yaml -l app=nginx
# Застосувати конфігурацію з manifest.yaml і видалити всі інші config map, які не знаходяться в файліkubectl apply --prune -f manifest.yaml --all --prune-allowlist=core/v1/ConfigMap
Параметри
--all
Вибрати всі ресурси у просторі імен вказаних типів ресурсів.
--allow-missing-template-keys Типово: true
Якщо це значення встановлено, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
Має бути "background", "orphan" або "foreground". Вибирає стратегію каскадного видалення для залежних елементів (наприклад, Podʼів, створених Replication Controller). Стандартне значення — background.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
Імʼя менеджера, що використовується для відстеження права власності на поле.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс для оновлення анотації
--force
Якщо true, негайно видалити ресурси з API і оминути належне видалення. Зверніть увагу, що негайне видалення деяких ресурсів може призвести до неузгодженості або втрати даних і потребує підтвердження.
--force-conflicts
Якщо значення true, серверне застосування (server-side apply) буде примусово вносити зміни всупереч конфліктам.
--grace-period int Типово: -1
Період часу в секундах, який дається ресурсу для належного завершення роботи. Ігнорується, якщо значення відʼємне. Встановлюється у 1 для негайного завершення роботи. Може бути встановлене у 0, тільки якщо --force має значення true (примусове видалення).
-h, --help
довідка apply
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
--openapi-patch Типово: true
Якщо true, використовувати openapi для обчислення різниці, коли openapi присутній і ресурс можна знайти в специфікації openapi. В іншому випадку, повернутись до використання вбудованих типів.
Автоматично вирішувати конфлікти між зміненою та поточною конфігурацією, використовуючи значення зі зміненої конфігурації
--prune
Автоматично видаляти обʼєкти ресурсів, які не зʼявляються у конфігураціях і створюються за допомогою --save-config. Слід використовувати з -l або --all.
--prune-allowlist strings
Замінити список стандартний дозволів (allowlist) <group/version/kind> для --prune
-R, --recursive
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--server-side
Якщо значення true, apply виконується на сервері, а не на клієнті.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--subresource string
Якщо вказано, apply працюватиме на підресурсі запитуваного обʼєкта. Дозволено лише при використанні --server-side. Цей прапорець є бета-версією і може змінюватися у майбутньому.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--timeout duration
Час очікування перед прийнятям рішення про відмову видалення, нуль означає визначення таймауту залежно від розміру обʼєкта
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
--wait
Якщо true, очікувати, поки ресурси зникнуть, перш ніж повернутися. Очікує фіналізаторів.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Редагуйте останні анотації last-applied-configuration ресурсів зі стандартного редактора.
Команда edit-last-applied дозволяє безпосередньо редагувати будь-який API-ресурс, який ви можете отримати за допомогою інструментів командного рядка. Вона відкриє редактор, визначений вашими змінними середовища KUBE_EDITOR або EDITOR, або використає стандартний редактор — 'vi' для Linux або 'notepad' для Windows. Ви можете редагувати кілька обʼєктів, але зміни застосовуються поодинці. Команда приймає імена файлів або аргументи командного рядка, але файли, на які ви посилаєтесь, повинні бути збереженими версіями ресурсів.
Стандартний формат — YAML. Для редагування в JSON вкажіть "-o json".
Прапорець --windows-line-endings може бути використано для примусового завершення рядків в стилі Windows, інакше буде використано типовий варіант для вашої операційної системи.
У разі виникнення помилки під час оновлення буде створено тимчасовий файл на диску, який містить ваші незастосовані зміни. Найбільш поширеною помилкою під час оновлення ресурсу є зміна іншим редактором цього ресурсу на сервері. У такому випадку вам доведеться застосувати ваші зміни до новішої версії ресурсу або оновити вашу тимчасовий збережену копію, щоб включити останню версію ресурсу.
# Редагувати анотації last-applied-configuration за типом/імʼям у форматі YAMLkubectl apply edit-last-applied deployment/nginx
# Редагувати анотації last-applied-configuration за файлом у форматі JSONkubectl apply edit-last-applied -f deploy.yaml -o json
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
--windows-line-endings
Стандартно використовується закінчення рядка, притаманне вашій платформі.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Дивіться також
kubectl apply — Застосувати конфігурацію до ресурсу за назвою файлу або з stdin
11.3.5.2 - kubectl apply set-last-applied
Огляд
Встановлює останню last-applied-configuration анотацію, встановивши її, щоб відповідати вмісту файлу. Це призводить до того, що last-applied-configuration оновлюється так, ніби 'kubectl apply -f<file> ' було запущено без оновлення будь-яких інших частин обʼєкта.
kubectl apply set-last-applied -f FILENAME
Приклади
# Встановити last-applied-configuration ресурсу, щоб відповідати вмісту файлуkubectl apply set-last-applied -f deploy.yaml
# Виконати set-last-applied для кожного файлу конфігурації у директоріїkubectl apply set-last-applied -f path/
# Встановити last-applied-configuration ресурсу, щоб відповідати вмісту файлу; створить анотацію, якщо вона ще не існуєkubectl apply set-last-applied -f deploy.yaml --create-annotation=true
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--create-annotation
Створить анотації 'last-applied-configuration', якщо поточні обʼєкти не мають таких анотацій
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, які містять анотації last-applied-configuration
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Дивіться також
kubectl apply — Застосувати конфігурацію до ресурсу за назвою файлу або з stdin
11.3.5.3 - kubectl apply view-last-applied
Огляд
Переглянути останні застосовані конфігурації за типом/іменем або файлом.
Стандартно вивід буде зроблено у stdout у форматі YAML. Ви можете змінити формат виводу за допомогою опції -o.
# Переглянути анотації last-applied-configuration за типом/імʼям у форматі YAMLkubectl apply view-last-applied deployment/nginx
# Переглянути анотації last-applied-configuration за файлом у форматі JSONkubectl apply view-last-applied -f deploy.yaml -o json
Параметри
--all
Вибрати всі ресурси у просторі імен вказаних типів ресурсів.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що містить анотацію last-applied-configuration
-h, --help
довідка view-last-applied
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
-o, --output string Типово: "yaml"
Формат виводу. Має буьти одним з (yaml, json)
-R, --recursive
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Дивіться також
kubectl apply — Застосувати конфігурацію до ресурсу за назвою файлу або з stdin
11.3.6 - kubectl attach
Огляд
Приєднатися до процесу, який вже запущено всередині існуючого контейнера.
kubectl attach (POD | TYPE/NAME) -c CONTAINER
Приклади
# Отримати вивід з запущеного Podʼа mypod; використовуйте анотацію 'kubectl.kubernetes.io/default-container'# для вибору контейнера, до якого потрібно приєднатися, або буде обрано перший контейнер у Podʼіkubectl attach mypod
# Отримати вивід з контейнера ruby-container з Podʼа mypodkubectl attach mypod -c ruby-container
# Перемкнутися в режим raw terminal; відправляє stdin в 'bash' у контейнері ruby-container з Podʼа mypod# і відправляє stdout/stderr з 'bash' назад до клієнтаkubectl attach mypod -c ruby-container -i -t
# Отримати вивід з першого Podʼа replica set з назвою nginxkubectl attach rs/nginx
Параметри
-c, --container string
Назва контейнера. Якщо не вказано, використовуйте анотацію kubectl.kubernetes.io/default-container для вибору контейнера, який буде приєднано, інакше буде обрано перший контейнер у Pod
-h, --help
довідка attach
--pod-running-timeout duration Типово: 1m0s
Тривалість часу (наприклад, 5s, 2m або 3h, більше нуля) для очікування, поки не запрацює хоча б один Pod
-q, --quiet
Виводити дані лише з віддаленого сеансу
-i, --stdin
Передайте stdin в контейнер
-t, --tty
Stdin є TTY
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
kubectl auth reconcile — Узгоджує правила для обʼєктів ролі RBAC, привʼязки ролей, кластерної ролі та привʼязки кластерної ролі
kubectl auth whoami — Експериментально: Перевірити атрибути власного субʼєкта
11.3.7.1 - kubectl auth can-i
Огляд
Перевіряє, чи дозволена дія.
VERB — дієслово API Kubernetes, таке як 'get', 'list', 'watch', 'delete' тощо. TYPE — це ресурс Kubernetes. Скорочення та групи будуть розпізнані. NONRESOURCEURL — часткова URL-адреса, яка починається з "/". NAME — назва певного ресурсу Kubernetes. Ця команда чудово поєднується з імпровізацією. Дивіться глобальний прапорець --as.
# Перевірити, чи можу я створювати Podʼи в будь-якому просторі іменkubectl auth can-i create pods --all-namespaces
# Перевірити, чи можу я переглядати списки deployment у моєму поточному просторі іменkubectl auth can-i list deployments.apps
# Перевірити, чи може служюовий обліковий запис "foo" у просторі імен "dev" переглядати перелік Podʼів# у просторі імен "prod"# Ви повинні мати дозвіл на використання імперсонації для глобальної опції "--as"kubectl auth can-i list pods --as=system:serviceaccount:dev:foo -n prod
# Перевірити, чи можу я виконувати всі дії в моєму поточному просторі імен ("*" означає все)kubectl auth can-i '*''*'# Перевірити, чи можу я отримати завдання з назвою "bar" у просторі імен "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/
# Перевірити, чи можу я затвердити certificates.k8s.iokubectl auth can-i approve certificates.k8s.io
# Переглянути всі дозволені дії в просторі імен "foo"kubectl auth can-i --list --namespace=foo
Параметри
-A, --all-namespaces
Якщо true, перевірити вказану дію в усіх просторах імен.
-h, --help
Довідка can-i
--list
Якщо true, виводить усі дозволені дії.
--no-headers
Якщо true, виводить дозволені дії без заголовків
-q, --quiet
Якщо true, заборонити вивід і просто повернути код результату.
--subresource string
SubResource, такі як pod/log або deployment/scale
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Узгодження правил для ролі RBAC, привʼязки ролі, ролі кластера та обʼєктів привʼязки ролі кластера.
Створюються відсутні обʼєкти, а для обʼєктів простору імен створюється відповідний простір імен, якщо потрібно.
Наявні ролі буде оновлено з урахуванням дозволів вхідних обʼєктів і вилучено зайві дозволи, якщо вказано --remove-extra-permissions.
Існуючі привʼязки буде оновлено до обʼєктів вхідних даних і вилучено зайві обʼєкти, якщо вказано --remove-extra-subjects.
Це бажано застосовувати для ресурсів RBAC, щоб забезпечити семантично усвідомлене обʼєднання правил і обʼєктів.
kubectl auth reconcile -f FILENAME
Приклади
# Узгодження ресурсів RBAC з файлуkubectl auth reconcile -f my-rbac-rules.yaml
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс для узгодження
-h, --help
Довідка reconcile
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--remove-extra-permissions
Якщо true, видаляє зайві дозволи, додані до ролей
--remove-extra-subjects
Якщо true, видаляє зайвих субʼєктів, доданих до rolebindings
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Експериментально: Перевірте, хто ви і які у вас атрибути (групи, додаткові).
Ця команда корисна для ознайомлення з поточними атрибутами користувача, особливо якщо у кластері Kubernacle увімкнено динамічну автентифікацію, наприклад, вебхук, проксі-авторизацію або OIDC-провайдер, увімкнено в кластері Kubernetes.
kubectl auth whoami
Приклади
# Отримати атрибути вашого субʼєктаkubectl auth whoami
# Отримати атрибути вашого субʼєкта у форматі JSONkubectl auth whoami -o json
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Створює автомасштабувальник, який автоматично вибирає і встановлює кількість Podʼів, що запускаються в кластері Kubernetes.
Шукає deployment, replica set, stateful set або контролер реплікації за назвою і створює автомасштабувальник, який використовує даний ресурс як зразок. Автомасштабувальник може автоматично збільшувати або зменшувати кількість розгорнутих у системі Podʼів за потребою.
kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME)[--min=MINPODS] --max=MAXPODS [--cpu-percent=CPU]
Приклади
# Автоматично масштабувати deployment "foo" з кількістю Podʼів від 2 до 10, # цільове використання CPU не вказано, тому буде використано стандартну # політику автосмасштабуванняkubectl autoscale deployment foo --min=2 --max=10# Автоматично масштабувати контролер реплікації "foo" з кількістю Podʼів від # 1 до 5, цільове використання CPU на рівні 80%kubectl autoscale rc foo --max=5 --cpu-percent=80
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--cpu-percent int32 Типово: -1
Цільове середнє використання CPU (представлене у відсотках від запитуваного CPU) для всіх Podʼів. Якщо він не вказаний або відʼємний, буде використано стандартну політику автомасштабування.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
Імʼя менеджера, що використовується для відстеження права власності на поле.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс для автомасштабування
-h, --help
Довідка autoscale
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
--max int32 Типово: -1
Верхня межа для кількості Podʼів, яку може встановити автомасштабування. Обовʼязково.
--min int32 Типово: -1
Нижня межа для кількості Podʼів, яка може бути встановлена автомасштабуванням. Якщо не вказано або значення відʼємне, сервер застосує стандартне значення.
--name string
Імʼя для новоствореного обʼєкта. Якщо не вказано, буде використано імʼя вхідного ресурсу.
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--save-config
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
kubectl certificate approve дозволяє адміністратору кластера затвердити запит на підписання сертифіката (CSR). Ця дія вказує контролеру підпису сертифікатів видати сертифікат запитувачу з атрибутами, вказаними у CSR.
ЗАСТЕРЕЖЕННЯ: Залежно від запитуваних атрибутів, виданий сертифікат потенційно може надати заявнику доступ до ресурсів кластера або автентифікацію в якості запитуваного облікового запису. Перш ніж затверджувати CSR, переконайтеся, що ви розумієте, що може робити підписаний сертифікат.
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс для оновленння
--force
Оновіть CSR, навіть якщо його вже затверджено.
-h, --help
Довідка approve
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
kubectl certificate deny дозволяє адміністратору кластера відхилити запит на підписання сертифіката (CSR). Ця дія вказує контролеру підписання сертифікатів не видавати сертифікат запитувачу.
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс для оновленння
--force
Оновіть CSR, навіть якщо його вже відхилено.
-h, --help
Довідка deny
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Виведіть адреси панелі управління та сервісів з міткою kubernetes.io/cluster-service=true. Для подальшого налагодження та діагностики проблем кластера використовуйте 'kubectl cluster-info dump'.
kubectl cluster-info [flags]
Приклади
# Вивести адресу панелі управління та сервісів кластераkubectl cluster-info
Параметри
-h, --help
Довідка cluster-info
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Виведення інформації про кластер, придатної для налагодження та діагностики проблем кластера. Стандартно все виводиться до stdout. За бажанням ви можете вказати теку за допомогою --output-directory. Якщо ви вкажете теку, Kubernetes створить набір файлів у цій теці. Типово команда виводить дані лише у поточному просторі імен та просторі імен "kube-system", але ви можете перемикнутися на інший простір імен за допомогою прапорця --namespaces або вказати --all-namespaces для виводу даних з усіх просторів імен.
Команда також виводить логи усіх pods у кластері; ці логи виводяться до різних тек, залежно від простору імен та назви pod.
kubectl cluster-info dump [flags]
Приклади
# Вивести поточний стан кластера до stdoutkubectl cluster-info dump
# Вивести поточний стан кластера до /path/to/cluster-statekubectl cluster-info dump --output-directory=/path/to/cluster-state
# Вивести всі простори імен до stdoutkubectl cluster-info dump --all-namespaces
# Вивести набір просторів імен до /path/to/cluster-statekubectl cluster-info dump --namespaces default,kube-system --output-directory=/path/to/cluster-state
Параметри
-A, --all-namespaces
Якщо true, перевірити вказану дію в усіх просторах імен.
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
Куди виводити файли. Якщо порожньо або '-' використовує stdout, інакше створює ієрархію тек у цій теці
--pod-running-timeout duration Типово: 20s
Тривалість часу (наприклад, 5s, 2m або 3h, більше нуля) для очікування, поки не запрацює хоча б один Pod
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Вивести код завершення команд для вказаного командного інтерпретатора (bash, zsh, fish або powershell). Щоб забезпечити інтерактивне завершення команд kubectl, код оболонки слід опрацювати. Це можна зробити, отримавши його з .bash_profile.
Докладні інструкції про те, як це зробити, можна знайти тут:
Примітка для користувачів zsh: [1] завершення zsh підтримуються лише у версіях zsh >= 5.2.
kubectl completion SHELL
Приклади
# Встановлення bash completion на macOS за допомогою homebrew## Якщо використовується Bash 3.2, включений в macOSbrew install bash-completion
## або, якщо використовується Bash 4.1+brew install bash-completion@2
## Якщо kubectl встановлено через homebrew, це повинно почати працювати негайно## Якщо ви встановили іншими способами, можливо, вам потрібно додати completion до вашої теки completionkubectl completion bash > $(brew --prefix)/etc/bash_completion.d/kubectl
# Встановлення bash completion на Linux## Якщо bash-completion не встановлено на Linux, встановіть пакет 'bash-completion'## через менеджер пакетів вашого дистрибутива.## Завантажте код завершення kubectl для bash в поточну оболонкуsource <(kubectl completion bash)## Запишіть код завершення bash у файл і підключіть його з .bash_profilekubectl completion bash > ~/.kube/completion.bash.inc
printf"
# kubectl shell completion
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"# Завантажте код завершення kubectl для fish[2] в поточну оболонкуkubectl completion fish | source# Щоб завантажити завершення для кожної сесії, виконайте один раз:kubectl completion fish > ~/.config/fish/completions/kubectl.fish
# Завантажте код завершення kubectl для powershell в поточну оболонкуkubectl completion powershell | Out-String | Invoke-Expression
# Налаштуйте код завершення kubectl для powershell, щоб запускатися при старті## Збережіть код завершення в сценарій і виконайте в профіліkubectl completion powershell > $HOME\.kube\completion.ps1
Add-Content $PROFILE"$HOME\.kube\completion.ps1"## Виконайте код завершення в профіліAdd-Content $PROFILE"if (Get-Command kubectl -ErrorAction SilentlyContinue) {
kubectl completion powershell | Out-String | Invoke-Expression
}"## Додайте код завершення безпосередньо в сценарій $PROFILEkubectl completion powershell >> $PROFILE
Параметри
-h, --help
Довідник completion
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Змінюйте файли kubeconfig за допомогою субкоманд на кшталт "kubectl config set current-context my-context".
Порядок завантаження відповідає наступним правилам:
Якщо встановлено прапорець --kubeconfig, то завантажується лише цей файл. Прапорець може бути встановлений лише один раз і злиття не відбувається.
Якщо встановлено змінну середовища $KUBECONFIG, то вона використовується як список шляхів (звичайні правила розмежування шляхів у вашій системі). Ці шляхи обʼєднуються. Коли значення змінюється, воно змінюється у файлі, який визначає строфу. Коли значення створюється, воно створюється у першому існуючому файлі. Якщо у ланцюжку не існує жодного файлу, то створюється останній файл у списку.
В іншому випадку використовується ${HOME}/.kube/config і злиття не відбувається.
kubectl config SUBCOMMAND
Параметри
-h, —-help
Довідник config
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, —-namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, —-version=raw виводить інформацію про версію та завершує роботу; —-version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
# Видалити кластер minikube з kubeconfigkubectl config delete-cluster minikube
-h, --help
Довідка delete-cluster
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
# Видалити контекст для кластера minikubekubectl config delete-context minikube
Параметри
-h, --help
Довідка delete-context
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
# Вивести перелік кластерів, які відомі kubectlkubectl config get-clusters
Параметри
-h, --help
Довідка get-clusters
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Показати один або декілька контекстів з файлу kubeconfig.
kubectl config get-contexts [(-o|--output=)name)]
Приклади
# Показати перелік всіх контекстів з файлу kubeconfigkubectl config get-contexts
# Показати опис одного контексту з файлу kubeconfigkubectl config get-contexts my-context
Параметри
-h, --help
Довідка get-contexts
--no-headers
При використанні стандартного або власного формату виводу стовпців не друкувати заголовки (заголовки стандартно друкуються).
-o, --output string
Формат виводу. Один з: (name).
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
# Перелік користувачів, відомих kubectlkubectl config get-users
Параметри
-h, --help
Довідка get-users
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
# Перейменуйте контекст 'old-name' на 'new-name' у вашому файлі kubeconfigkubectl config rename-context old-name new-name
Параметри
-h, --help
Довідка rename-context
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Встановлює індивідуальне значення у файлі kubeconfig.
PROPERTY_NAME — це імʼя, розділене крапками, де кожен токен представляє або імʼя атрибута, або ключ map. Ключі map можуть не містити крапок.
PROPERTY_VALUE — нове значення, яке ви хочете встановити. Двійкові поля, такі як 'certificate-authority-data', очікують рядок у кодуванні base64, якщо не використовується прапорець --set-raw-bytes.
Якщо вказати імʼя атрибута, яке вже існує, нові поля буде додано до наявних значень.
kubectl config set PROPERTY_NAME PROPERTY_VALUE
Приклади
# Встановити поле server для кластера my-cluster на https://1.2.3.4kubectl config set clusters.my-cluster.server https://1.2.3.4
# Встановити поле certificate-authority-data для кластера my-clusterkubectl config set clusters.my-cluster.certificate-authority-data $(echo"cert_data_here" | base64 -i -)# Встановити поле cluster в контексті my-context на my-clusterkubectl config set contexts.my-context.cluster my-cluster
# Встановити поле client-key-data для користувача cluster-admin з використанням опції --set-raw-byteskubectl config set users.cluster-admin.client-key-data cert_data_here --set-raw-bytes=true
Параметри
-h, --help
Довідка set
--set-raw-bytes tristate[=true]
При записі []byte PROPERTY_VALUE, записувати заданий рядок так як є, без декодування base64.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Якщо вказати назву, яка вже існує, нові поля буде обʼєднано з наявними значеннями для цих полів.
kubectl config set-cluster NAME [--server=server][--certificate-authority=path/to/certificate/authority][--insecure-skip-tls-verify=true][--tls-server-name=example.com]
Приклади
# Встановити тільки поле server для запису кластера e2e без змін інших значеньkubectl config set-cluster e2e --server=https://1.2.3.4
# Вбудувати дані CA для запису кластера e2ekubectl config set-cluster e2e --embed-certs --certificate-authority=~/.kube/e2e/kubernetes.ca.crt
# Вимкнути перевірку сертифікатів для запису кластера e2ekubectl config set-cluster e2e --insecure-skip-tls-verify=true# Встановити власне імʼя сервера TLS для перевірки для запису кластера e2ekubectl config set-cluster e2e --tls-server-name=my-cluster-name
# Встановити URL проксі для запису кластера e2ekubectl config set-cluster e2e --proxy-url=https://1.2.3.4
Параметри
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--embed-certs tristate[=true]
embed-certs для запису кластера в kubeconfig
-h, --help
Довідка set-cluster
--insecure-skip-tls-verify tristate[=true]
insecure-skip-tls-verify для запису кластера в kubeconfig
--proxy-url string
proxy-url для запису кластера в kubeconfig
--server string
server для запису кластера в kubeconfig
--tls-server-name string
tls-server-name ля запису кластера в kubeconfig
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
# Встановіть поле користувача у записі контексту gce, не змінюючи інших значеньkubectl config set-context gce --user=cluster-admin
Параметри
--cluster string
cluster для запису контексту в kubeconfig
--current
Змінити поточний контекст
-h, --help
Довідка set-context
--namespace string
namespace для запису контексту в kubeconfig
--user string
user для запису контексту в kubeconfig
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Токен на предʼявника та базова авторизація є взаємозаперечними.
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]
Приклади
# Встановити тільки поле "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-command=/path/to/the/executable --exec-api-version=client.authentication.k8s.io/v1beta1 --exec-interactive-mode=Never
# Визначити нові аргументи для втулка автентифікації 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-
Параметри
--auth-provider string
Провайдер авторизації/автентифікації для запису користувача у kubeconfig
--auth-provider-arg strings
аргументи 'key=value' для провайдера авторизації/автентифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для запису користувача у kubeconfig
--client-key string
Шлях до файлу ключа клієнта для запису користувача у kubeconfig
--embed-certs tristate[=true]
Додати клієнтський сертифікат/ключ для входу користувача у kubeconfig
--exec-api-version string
Версія API втулка exec credential для запису користувача у kubeconfig
--exec-arg strings
Нові аргументи команди втулка exec credential для запису користувача у kubeconfig
--exec-command string
Команди втулка exec credential для запису користувача у kubeconfig
--exec-env strings
'key=value' значеня зміних оточення для втулка exec credential
--exec-interactive-mode string
Режим InteractiveMode втулка exec credentials для запису користувача у kubeconfig
--exec-provide-cluster-info tristate[=true]
ProvideClusterInfo втулка exec credentials для запису користувача у kubeconfig
-h, --help
Довідка set-credentials
--password string
Пароль для запису користувача у kubeconfig
--token string
Токен для запису користувача у kubeconfig
--username string
Імʼя користувачадля запису користувача у kubeconfig
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
PROPERTY_NAME — це імʼя, розділене крапками, де кожен токен представляє або імʼя атрибута, або ключ map. Ключі map можуть не містити крапок.
kubectl config unset PROPERTY_NAME
Приклади
# Видалити поточний контекстkubectl config unset current-context
# Видалити простір імен у контексті fookubectl config unset contexts.foo.namespace
Параметри
-h, --help
Довідка unset
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
# Використання контексту для кластера minikubekubectl config use-context minikube
Параметри
-h, --help
Довідка use-context
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Показує обʼєднану конфігурацію kubeconfig або вказаний файл kubeconfig.
Ви можете використовувати --output jsonpath={...} для вибору конкретних полів конфігурації.
kubectl config view [options]
Приклади
# Показати обʼєднані налаштування kubeconfigkubectl config view
# Показати обʼєднані налаштування kubeconfig, необроблені дані сертифіката та показати секретиkubectl config view --raw
# Отримати пароль для користувача e2ekubectl config view -o jsonpath='{.users[?(@.name == "e2e")].user.password}'
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--flatten
Спростити отриманий файл kubeconfig до окремого вихідного файлу (корисно для створення переносних файлів kubeconfig)
-h, --help
Довідка view
--merge tristate[=true] Типово: true
Обʼєднати повну ієрархію файлів kubeconfig
--minify
Вилучити з виводу всю інформацію, яка не використовується в current-context
Показувати необроблені байт-дані та конфіденційні дані
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
# Позначити вузол "foo" як не придатний для плануванняkubectl cordon foo
Параметри
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
-h, --help
Довідка cordon
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
# !!!Увага!!!# Вимагає наявності двійкового файлу 'tar' у вашому контейнері.# Якщо 'tar' відсутній, 'kubectl cp' не вдасться виконати.## Для розширених випадків використання, таких як символічні посилання, розширення# шаблонів або збереження режиму файлу, розгляньте можливість використання 'kubectl exec'.# Скопіювати локальний файл /tmp/foo до /tmp/bar у віддаленому Pod в просторі імен <some-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 в просторі імен <some-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
Параметри
-c, --container string
Назва контейнера. Якщо не вказано, використовуйте анотацію kubectl.kubernetes.io/default-container для вибору контейнера, який буде приєднано, інакше буде обрано перший контейнер у Pod
-h, --help
Довідка cp
--no-preserve
Права власності та дозволи на скопійований файл/теку не будуть збережені в контейнері
--retries int
Вказати кількість спроб для завершення операції копіювання з контейнера. Вкажіть 0 для вимкнення або будь-яке відʼємне значення для нескінченної кількості спроб. Стандартне значення — 0 (без повторних спроб).
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
# Створити Pod з використанням даних з pod.jsonkubectl create -f ./pod.json
# Створити Pod на основі JSON, переданого у стандартний ввідcat pod.json | kubectl create -f -
# Редагувати дані у registry.yaml у форматі JSON, а потім створити ресурс з використанням відредагованих данихkubectl create -f registry.yaml --edit -o json
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--edit
Відредагувати ресурс API перед створенням
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що використовуються для створення ресурсу
-h, --help
Довідка create
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
Необроблений URI для POST на сервер. Використовує транспорт, вказаний у файлі kubeconfig.
-R, --recursive
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--save-config
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
--windows-line-endings
Має значення лише якщо --edit=true. Стандартно використовується закінчення рядка, притаманне вашій платформі.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
kubectl create clusterrole NAME --verb=verb --resource=resource.group [--resource-name=resourcename][--dry-run=server|client|none]
Приклади
# Створити кластерну роль з назвою "pod-reader", яка дозволяє користувачу виконувати "get", "watch" та "list" для Podʼівkubectl create clusterrole pod-reader --verb=get,list,watch --resource=pods
# Створити кластерну роль з назвою "pod-reader" із вказаними іменами ресурсівkubectl create clusterrole pod-reader --verb=get --resource=pods --resource-name=readablepod --resource-name=anotherpod
# Створити кластерну роль з назвою "foo" із вказаною API Groupkubectl create clusterrole foo --verb=get,list,watch --resource=rs.apps
# Створити кластерну роль з назвою "foo" із вказаним субресурсомkubectl create clusterrole foo --verb=get,list,watch --resource=pods,pods/status
# Створити кластерну роль з назвою "foo" із вказаним NonResourceURLkubectl create clusterrole "foo" --verb=get --non-resource-url=/logs/*
# Створити кластерну роль з назвою "monitoring" із вказаним правилом агрегаціїkubectl create clusterrole monitoring --aggregation-rule="rbac.example.com/aggregate-to-monitoring=true"
Селектор міток агрегації для обʼєднання ClusterRoles.
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-h, --help
Довідка clusterrole
--non-resource-url strings
Частковий URL, до якого користувач повинен мати доступ.
Ресурс у білому списку, до якого застосовується правило, повторіть цей прапорець для кожного елемента
--save-config
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
--verb strings
Дієслово, яке застосовується до ресурсів, що містяться в правилі
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Створення привʼязки кластерної ролі для певної кластерної ролі.
kubectl create clusterrolebinding NAME --clusterrole=NAME [--user=username][--group=groupname][--serviceaccount=namespace:serviceaccountname][--dry-run=server|client|none]
Приклади
# Створити привʼязування кластерної ролі для user1, user2 та group1, використовуючи кластерну роль cluster-adminkubectl create clusterrolebinding cluster-admin --clusterrole=cluster-admin --user=user1 --user=user2 --group=group1
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--clusterrole string
ClusterRole на яку повинна посилатися привʼязка ClusterRoleBinding
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
--group strings
Групи для привʼязки до кластерної ролі. Прапорець можна повторити, щоб додати кілька груп.
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--serviceaccount strings
Службові облікові записи для привʼязки до кластерної ролі, у форматі <простір імен>:<імʼя>. Прапорець можна повторювати для додавання декількох службових облікових записів.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--user strings
Імена користувачів для привʼязки до кластерної ролі. Прапорець можна повторити, щоб додати кількох користувачів.
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Створює ConfigMap на основі файлу, теки або вказаного літерального значення.
Один ConfigMap може містити одну або декілька пар ключ/значення.
При створенні ConfigMap на основі файлу, стандартним значенням ключа буде імʼя файлу, а значенням — його вміст. Якщо назва файлу є невірним ключем, ви можете вказати альтернативний ключ.
При створенні ConfigMap на основі теки кожен файл, назва якого є допустимим ключем у теці, буде запаковано до ConfigMap. Будь-які записи у теці, окрім звичайних файлів, ігноруються (наприклад, субтеки, символічні посилання, пристрої, канали й т.д.).
kubectl create configmap NAME [--from-file=[key=]source][--from-literal=key1=value1][--dry-run=server|client|none]
Приклади
# Створити новий ConfigMap з назвою my-config на основі теки barkubectl 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=config2kubectl 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/foo.env --from-env-file=path/to/bar.env
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--append-hash
Додайте хеш configmap до назви configmap.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
--from-env-file strings
Вкажіть шлях до файлу для отримання рядків з парами key=val для створення configmap.
--from-file strings
Файл ключа можна вказати за допомогою шляху до файлу, у цьому випадку імʼя файлу буде використано як ключ configmap, або за допомогою ключа і шляху до файлу, у цьому випадку буде використано заданий ключ. Якщо вказати теку, буде виконано ітерацію для кожного названого файлу у цій теці, імʼя якого є допустимим ключем configmap.
--from-literal strings
Вкажіть ключ і літеральне значення для вставки в configmap (тобто mykey=somevalue)
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
# Створити крон-завданняkubectl create cronjob my-job --image=busybox --schedule="*/1 * * * *"# Створити крон-завдання з командоюkubectl create cronjob my-job --image=busybox --schedule="*/1 * * * *" -- date
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
Політика перезапуску job. Підтримувані значення: OnFailure, Never
--save-config
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--schedule string
Розклад у форматі Cron, за яким має виконуватися завдання.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
kubectl create deployment NAME --image=image -- [COMMAND][args...]
Приклади
# Створити deployment з назвою my-dep, що використовує образ busyboxkubectl create deployment my-dep --image=busybox
# Створити deployment з командоюkubectl create deployment my-dep --image=busybox -- date
# Створити deployment з назвою my-dep, що використовує образ nginx з 3 реплікамиkubectl create deployment my-dep --image=nginx --replicas=3# Створити deployment з назвою my-dep, що використовує образ busybox і відкриває порт 5701kubectl create deployment my-dep --image=busybox --port=5701# Створити deployment з назвою my-dep, що містить декілька контейнерівkubectl create deployment my-dep --image=busybox:latest --image=ubuntu:latest --image=nginx
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-h, --help
Довідка deployment
--image strings
Назви образів для запуску. Deployment може містити кілька образів для багатоконтейнерних pod.
Кількість реплік для створення. Стандартно дорівнює 1.
--save-config
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
kubectl create ingress NAME --rule=host/path=service:port[,tls[=secret]]
Приклади
# Створити один ingress з назвою 'simple', який направляє запити з foo.com/bar на svc1:8080 з TLS-сертифікатом "my-cert"kubectl create ingress simple --rule="foo.com/bar=svc1:8080,tls=my-cert"# Створити ingress, який захоплює усі шляхи "/path" і направляє їх на сервіс svc:port з класом ingress "otheringress"kubectl create ingress catch-all --class=otheringress --rule="/path=svc:port"# Створити ingress з двома анотаціями: ingress.annotation1 і ingress.annotations2kubectl 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 з декількома хостами і типом шляху як Prefixkubectl 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, використовуючи конкретний секрет і типом шляху як Prefixkubectl 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"
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--annotation strings
Анотація для вставки в обʼєкт ingress у форматі annotation=value
--class string
Ingress Class що буде використано
--default-backend string
Стандартний сервіс бекенду, у форматі svcname:port
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
Правило у форматі host/path=service:port[,tls=secretname]. Шляхи, що містять початковий символ '*', вважаються pathType=Prefix. tls — необовʼязковий аргумент.
--save-config
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
kubectl create job NAME --image=image [--from=cronjob/name] -- [COMMAND][args...]
Приклади
# Створити задачу (job)kubectl create job my-job --image=busybox
# Створити задачу з командоюkubectl create job my-job --image=busybox -- date
# Створити задачу на основі крон-завдання з назвою "a-cronjob"kubectl create job test-job --from=cronjob/a-cronjob
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
--from string
Імʼя ресурсу, з якого буде створено Job (підтримується тільки cronjob).
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
kubectl create namespace NAME [--dry-run=server|client|none]
Приклади
# Створити простір імен з іменем my-namespacekubectl create namespace my-namespace
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Створіть бюджет розладу роботи Podʼів із зазначеною назвою, селектором і бажаним мінімумом доступних Podʼів.
kubectl create poddisruptionbudget NAME --selector=SELECTOR --min-available=N [--dry-run=server|client|none]
Приклади
# Створити бюджет розладу роботи Podʼів з назвою "my-pdb",# який вибере всі Podʼи з міткою app=rails і вимагатиме, щоб принаймні один з них був доступний в будь-який моментkubectl create poddisruptionbudget my-pdb --selector=app=rails --min-available=1# Створити бюджет розладу роботи Podʼів з назвою "my-pdb",# який вибере всі Podʼи з міткою app=nginx і вимагатиме, щоб принаймні половина вибраних Podʼів була доступна в будь-який моментkubectl create pdb my-pdb --selector=app=nginx --min-available=50%
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-h, --help
Довідка poddisruptionbudget
--max-unavailable string
Максимальна кількість або відсоток недоступних Podʼів, яких вимагає цей бюджет.
--min-available string
Мінімальна кількість або відсоток доступних Podʼів, яких вимагає цей бюджет.
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--selector string
Селектор мітки, який буде використано для цього бюджету. Підтримуються лише вимоги до селектора на основі рівності.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Створює клас пріоритету з вказаним імʼям, значенням, globalDefault та описом.
kubectl create priorityclass NAME --value=VALUE --global-default=BOOL [--dry-run=server|client|none]
Приклади
# Створити клас пріоритету з назвою high-prioritykubectl 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, який не може випереджувати Podʼи з нижчим пріоритетомkubectl create priorityclass high-priority --value=1000 --description="high priority" --preemption-policy="Never"
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--description string
description — довільний рядок, який зазвичай містить вказівки щодо того, коли слід використовувати цей клас пріоритету.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
--global-default
global-default вказує, чи слід вважати цей PriorityClass стандартним пріоритетом.
preemption-policy — це політика випередження Podʼів з нижчим пріоритетом.
--save-config
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
--value int32
значення цього класу пріоритету.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Створення квоти ресурсів із зазначеною назвою, жорсткими обмеженнями та необовʼязковими діапазонами.
kubectl create quota NAME [--hard=key1=value1,key2=value2][--scopes=Scope1,Scope2][--dry-run=server|client|none]
Приклади
# Створити нову квоту ресурсів з назвою my-quotakubectl create quota my-quota --hard=cpu=1,memory=1G,pods=2,services=3,replicationcontrollers=2,resourcequotas=1,secrets=5,persistentvolumeclaims=10# Створити нову квоту ресурсів з назвою best-effortkubectl create quota best-effort --hard=pods=100 --scopes=BestEffort
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
--hard string
Розділений комами набір пар resource=quantity, які визначають жорсткі межі.
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--scopes string
Розділений комами набір діапазонів квот, які повинні відповідати кожному обʼєкту, що відстежується за допомогою квоти.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
kubectl create role NAME --verb=verb --resource=resource.group/subresource [--resource-name=resourcename][--dry-run=server|client|none]
Приклади
# Створити роль з назвою "pod-reader", яка дозволяє користувачу виконувати "get", "watch" і "list" для Podʼівkubectl create role pod-reader --verb=get --verb=list --verb=watch --resource=pods
# Створити роль з назвою "pod-reader" з вказаними ResourceNamekubectl create role pod-reader --verb=get --resource=pods --resource-name=readablepod --resource-name=anotherpod
# Створити роль з назвою "foo" з вказаною API Groupkubectl create role foo --verb=get,list,watch --resource=rs.apps
# Створити роль з назвою "foo" з вказаним SubResourcekubectl create role foo --verb=get,list,watch --resource=pods,pods/status
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
Ресурс у білому списку, до якого застосовується правило, повторіть цей прапорець для кожного елемента
--save-config
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
--verb strings
Дієслово, яке застосовується до ресурсів, що містяться в правилі
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Створення привʼязки для певної ролі або кластерної ролі.
kubectl create rolebinding NAME --clusterrole=NAME|--role=NAME [--user=username][--group=groupname][--serviceaccount=namespace:serviceaccountname][--dry-run=server|client|none]
Приклади
# Створити привʼязки ролей для user1, user2 та group1, використовуючи роль adminkubectl create rolebinding admin --clusterrole=admin --user=user1 --user=user2 --group=group1
# Створити привʼязки ролей для serviceaccount monitoring:sa-dev, використовуючи роль adminkubectl create rolebinding admin-binding --role=admin --serviceaccount=monitoring:sa-dev
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--clusterrole string
ClusterRole на яку повинна посилатися привʼязка ClusterRoleBinding
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
--group strings
Групи для привʼязки до кластерної ролі. Прапорець можна повторити, щоб додати кілька груп.
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--serviceaccount strings
Службові облікові записи для привʼязки до кластерної ролі, у форматі <простір імен>:<імʼя>. Прапорець можна повторювати для додавання декількох службових облікових записів.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--user strings
Імена користувачів для привʼязки до кластерної ролі. Прапорець можна повторити, щоб додати кількох користувачів.
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
В результаті буде створено файл ~/.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]
Приклади
# Якщо у вас ще немає файлу .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.jsonkubectl create secret docker-registry my-secret --from-file=path/to/.docker/config.json
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
Імʼя користувача для автентифікації в реєстрі Docker
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
--from-file strings
Файли ключів можна вказати за допомогою шляху до файлу, у цьому випадку їм буде присвоєно стандартне імʼя.dockerconfigjson, або за бажанням за допомогою імені та шляху до файлу, у цьому випадку буде використано вказане імʼя. Якщо вказати теку, буде виконано ітераційний пошук кожного файлу з іменем, що є дійсним секретним ключем. Для цієї команди ключем завжди має бути .dockerconfigjson.
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Створення секрету на основі файлу, теки або вказаного літерального значення.
Один секрет може містити одну або декілька пар ключ/значення.
При створенні секрету на основі файлу, стандартно ключем буде назва файлу, а значенням — його вміст. Якщо імʼя файлу не є допустимим ключем або ви хочете вибрати свій власний ключ, ви можете вказати альтернативний ключ.
При створенні секрету на основі теки, кожен файл, імʼя якого є дійсним ключем у теці, буде запаковано у секрет. Будь-які записи теки, окрім звичайних файлів, ігноруються (наприклад, підтеки, символічні посилання, пристрої, канали й т.д.).
kubectl create secret generic NAME [--type=string][--from-file=[key=]source][--from-literal=key1=value1][--dry-run=server|client|none]
Приклади
# Створити новий секрет з назвою my-secret з ключами для кожного файлу в теці barkubectl 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=topsecretkubectl 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 з файлів envkubectl create secret generic my-secret --from-env-file=path/to/foo.env --from-env-file=path/to/bar.env
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--append-hash
Додайте хеш secret до назви secret.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
--from-env-file strings
Вкажіть шлях до файлу для отримання рядків з парами key=val для створення secret.
--from-file strings
Файл ключа можна вказати за допомогою шляху до файлу, у цьому випадку імʼя файлу буде використано як ключ, або за допомогою ключа і шляху до файлу, у цьому випадку буде використано заданий ключ. Якщо вказати теку, буде виконано ітерацію для кожного названого файлу у цій теці, імʼя якого є допустимим ключем secret.
--from-literal strings
Вкажіть ключ і літеральне значення для вставки в secret (тобто mykey=somevalue)
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--type string
Тип секрету, який необхідно створити
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Створення TLS-секрету із заданої пари публічного/приватного ключа.
Пара відкритий/закритий ключ повинна існувати заздалегідь. Сертифікат відкритого ключа повинен бути зашифрований у форматі .PEM і відповідати заданому закритому ключу.
kubectl create secret tls NAME --cert=path/to/cert/file --key=path/to/key/file [--dry-run=server|client|none]
Приклади
# Створіть новий TLS-секрет з імʼям tls-secret із заданою парою ключівkubectl create secret tls tls-secret --cert=path/to/tls.crt --key=path/to/tls.key
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--append-hash
Додайте хеш secret до назви secret.
--cert string
Шлях до PEM-закодованого сертифіката відкритого ключа.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-h, --help
Довідка tls
--key string
Шлях до приватного ключа, повʼязаного з даним сертифікатом.
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
kubectl create service clusterip NAME [--tcp=<port>:<targetPort>][--dry-run=server|client|none]
Приклади
# Створити новий сервіс ClusterIP з назвою my-cskubectl create service clusterip my-cs --tcp=5678:8080
# Створити новий сервіс ClusterIP з назвою my-cs (у режимі headless)kubectl create service clusterip my-cs --clusterip="None"
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--clusterip string
Призначте власний ClusterIP або встановіть значення "None" для сервісу "headless" (без балансування навантаження).
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--tcp strings
Пари портів можна вказати у вигляді '<порт>:<цільовий порт>'.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Створення сервісу ExternalName із зазначеним імʼям.
Сервіс ExternalName посилається на зовнішню DNS-адресу, а не лише на Podʼи, що дозволить авторам застосунків посилатися на сервіси, які існують за межами платформи, в інших кластерах або локально.
kubectl create service externalname NAME --external-name external.name [--dry-run=server|client|none]
Приклади
# Створіть новий сервіс ExternalName з іменем my-nskubectl create service externalname my-ns --external-name bar.com
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--external-name string
Зовнішня назва сервісу
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--tcp strings
Пари портів можна вказати у вигляді '<порт>:<цільовий порт>'.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
kubectl create service loadbalancer NAME [--tcp=port:targetPort][--dry-run=server|client|none]
Приклади
# Створіть новий сервіс LoadBalancer з назвою my-lbskubectl create service loadbalancer my-lbs --tcp=5678:8080
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--tcp strings
Пари портів можна вказати у вигляді '<порт>:<цільовий порт>'.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
kubectl create service nodeport NAME [--tcp=port:targetPort][--dry-run=server|client|none]
Приклади
# Створіть новий сервіс NodePort з назвою my-nskubectl create service nodeport my-ns --tcp=5678:8080
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-h, --help
Довідка nodeport
--node-port int
Порт, який використовується для експонування сервісу на кожному вузлі кластера.
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--tcp strings
Пари портів можна вказати у вигляді '<порт>:<цільовий порт>'.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Створення службового облікового запису з вказаним імʼям.
kubectl create serviceaccount NAME [--dry-run=server|client|none]
Приклади
# Створіть новий служюовий обліковий записк з назвою my-service-accountkubectl create serviceaccount my-service-account
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-create"
Імʼя менеджера, що використовується для відстеження права власності на поле.
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Запит на отримання токена службового облікового запису.
kubectl create token SERVICE_ACCOUNT_NAME
Приклади
# Запит токена для автентифікації на kube-apiserver як службовий обліковий запис "myapp" у поточному просторі іменkubectl create token myapp
# Запит токена для службового облікового запису у власному просторі іменkubectl create token myapp --namespace myns
# Запит токена із власним часом діїkubectl create token myapp --duration 10m
# Запит токена із власною аудиторієюkubectl create token myapp --audience https://example.com
# Запит токена, привʼязаного до обʼєкта типу Secretkubectl create token myapp --bound-object-kind Secret --bound-object-name mysecret
# Запит токена, привʼязаного до обʼєкта типу Secret з конкретним UIDkubectl create token myapp --bound-object-kind Secret --bound-object-name mysecret --bound-object-uid 0d4691ed-659b-4935-a832-355f77ee47cc
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--audience strings
Аудиторія запитуваного токена. Якщо не встановлено, стандартно запитується токен для використання з сервером API Kubernetes. Може бути повторений для запиту токена, дійсного для декількох аудиторій.
--bound-object-kind string
Тип обʼєкта, до якого привʼязується токен. Підтримуються типи Node, Pod, Secret. Якщо задано, має бути вказано --bound-object-name.
--bound-object-name string
Імʼя обʼєкта, до якого потрібно привʼязати токен. Термін дії токена закінчиться, коли обʼєкт буде видалено. Потрібно вказати --bound-object-kind.
--bound-object-uid string
UID обʼєкта, до якого потрібно привʼязати токен. Потрібні --bound-object-kind та --bound-object-name. Якщо не вказано, використовується UID наявного обʼєкта.
--duration duration
Запитуваний термін життя випущеного токена. Якщо не вказано або вказано 0, то термін життя буде визначено сервером автоматично. Сервер може повернути токен з більшим або меншим терміном дії.
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Налагодження ресурсів кластера за допомогою інтерактивних контейнерів налагодження.
'debug' автоматизує виконання поширених завдань налагодження для обʼєктів кластера, ідентифікованих за ресурсом та імʼям. Типово будуть використовуватися Podʼи, якщо ресурс не вказано.
Дія, яку виконує 'debug', залежить від вказаного ресурсу. Підтримувані дії включають:
Workload: Створити копію поточного Podʼа зі зміненими атрибутами, наприклад, змінити теґ образу на нову версію.
Workload: Додати ефемерний контейнер до вже працюючого Podʼа, наприклад, щоб додати утиліти для налагодження без перезапуску Podʼа.
Node: Створити новий Pod, який працює у host namespaces вузла та має доступ до файлової системи вузла.
# Створити інтерактивну сесію налагодження в Pod mypod та одразу приєднатися до неї.kubectl debug mypod -it --image=busybox
# Створити інтерактивну сесію налагодження для Pod з файлу pod.yaml та одразу приєднатися до неї.# (вимагає увімкнення функції EphemeralContainers в кластері)kubectl debug -f pod.yaml -it --image=busybox
# Створити контейнер налагодження з назвою debugger, використовуючи власний автоматизований образ для налагодження.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 namespaces та файлову систему вузла буде змонтовано у /host.kubectl debug node/mynode -it --image=busybox
Параметри
--arguments-only
Якщо вказано, все, що знаходиться після --, буде передано до нового контейнера як Args замість Command.
--attach
Якщо значення true, дочекайтись запуску контейнера, а потім приєднати його так, ніби було викликано команду 'kubectl attach ...'. Стандартне значення false, якщо не задано параметр '-i/--stdin', у цьому випадку стандартне значення true.
-c, --container string
Назва контейнера, який буде використано для налагодження.
--copy-to string
Створіює копію цільового Pod з цією назвою.
--custom string
Шлях до JSON або YAML-файлу, що містить часткову специфікацію контейнера для налаштування вбудованих профілів налагодження.
--env stringToString Типово: []
Змінні оточення, які потрібно встановити в контейнері.
-f, --filename strings
визначення ресурсу для налагодження
-h, --help
Довідка debug
--image string
Назва образу контейнера для запуску.
--image-pull-policy string
Політика отримання образів для контейнера. Якщо залишити порожнім, це значення не буде вказано клієнтом і буде стандартно визначене сервером.
--keep-annotations
Якщо значення true, зберігати оригінальні анотації p
Podʼів (цей прапорець працює лише при використанні '--copy-to').
--keep-init-containers Default: true
Запустити ініціалізаційні контейнери для pod. Стандартно дорівнює true (цей прапорець працює лише у випадку використання з '--copy-to').
--keep-labels
Якщо значення true, зберігати оригінальні мітки Podʼів (цей прапорець працює лише при використанні '--copy-to').
--keep-liveness
Якщо значення true, зберегти оригінальні проби життєздатності Podʼа. (Цей прапорець працює лише при використанні '--copy-to').
--keep-readiness
Якщо значення true, зберегти оригінальні проби готовності Podʼа. (Цей прапорець працює лише при використанні '--copy-to').
--keep-startup
Якщо значення true, зберігати оригінальні проби запуску (цей прапорець працює лише при використанні '--copy-to').
--profile string Типово: "legacy"
Варіанти: " legacy", "general", "baseline", "netadmin", "restricted" або "sysadmin".
-q, --quiet
Якщо true, то придушити інформаційні повідомлення.
--replace
При використанні з '--copy-to' видаляє оригінальний Pod.
--same-node
Якщо використовується з '--copy-to', призначити копію цільового Pod на той самий вузол.
--set-image stringToString Типово: []
При використанні з '--copy-to', список пар name=image для зміни образів контейнерів, подібно до того, як працює команда 'kubectl set image'.
--share-processes Типово: true
При використанні з '--copy-to' вмикає спільне використання простору імен процесів у копії.
-i, --stdin
Залишати stdin відкритим у контейнері (контейнерах), навіть якщо до нього нічого не приєднано.
--target string
При використанні ефемерного контейнера, спрямовувати процеси до цього контейнера.
-t, --tty
Призначення TTY для контейнера налагодження.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Видалення ресурсів за іменами файлів, stdin, ресурсами та іменами, або за ресурсами та селекторами міток.
Приймаються формати JSON та YAML. Можна вказати лише один тип аргументів: імена файлів, ресурси та імена, або ресурси та селектори міток.
Деякі ресурси, такі як Podʼи, підтримують належне видалення. Ці ресурси визначають стандартний період перед примусовим завершенням (пільговий період), але ви можете змінити це значення за допомогою прапорця --grace-period або передати --now, щоб встановити пільговий період на 1. Оскільки ці ресурси часто представляють сутності в кластері, видалення може не бути підтверджене одразу. Якщо вузол, який хостить Pod, відключений або не може досягти API-сервера, завершення може зайняти значно більше часу, ніж пільговий період. Щоб примусово видалити ресурс, ви повинні вказати прапорець --force. Примітка: лише підмножина ресурсів підтримує належне видалення. За відсутності підтримки, прапорець --grace-period ігнорується.
ВАЖЛИВО: Примусове видалення Podʼів не чекає підтвердження, що процеси Podʼа завершені, що може залишити ці процеси запущеними, поки вузол не виявить видалення та не завершить належне видалення. Якщо ваші процеси використовують спільне сховище або звертаються до віддаленого API та залежать від імені Podʼа для ідентифікації, примусове видалення цих Podʼів може призвести до запуску кількох процесів на різних машинах з однаковою ідентифікацією, що може призвести до пошкодження даних або неконсистентності. Примусово видаляйте Pod лише коли ви впевнені, що Pod завершено, або якщо ваш застосунок може витримати кілька копій одного Podʼа, які працюють одночасно. Також, якщо ви примусово видаляєте Pod, планувальник може розмістити нові Pod на цих вузлах до того, як вузол звільнить ці ресурси, що спричинить негайне виселення цих Podʼів.
Зверніть увагу, що команда delete НЕ перевіряє версію ресурсу, тому якщо хтось подасть оновлення ресурсу в той момент, коли ви подасте команду delete, їхнє оновлення буде втрачено разом з рештою ресурсу.
Після видалення CustomResourceDefinition інвалідація кешу виявлення може тривати до 6 годин. Якщо ви не хочете чекати, можливо, варто запустити "kubectl api-resources", щоб оновити кеш виявлення.
# Видалити Pod, використовуючи тип та імʼя, вказані в pod.jsonkubectl delete -f ./pod.json
# Видалити ресурси з теки, що містить kustomization.yaml — наприклад, dir/kustomization.yamlkubectl delete -k dir
# Видалити ресурси з усіх файлів, що закінчуються на '.json'kubectl delete -f '*.json'# Видалити Pod на основі типу та імені в JSON, переданому в stdincat pod.json | kubectl delete -f -
# Видалити Podʼи та сервіси з іменами "baz" та "foo"kubectl delete pod,service baz foo
# Видалити Podʼи та сервіси з міткою name=myLabelkubectl delete pods,services -l name=myLabel
# Видалити Pod з мінімальною затримкоюkubectl delete pod foo --now
# Примусово видалити Pod на мертвому вузліkubectl delete pod foo --force
# Видалити всі Podʼиkubectl delete pods --all
# Видаляє всі Podʼи, тільки якщо користувач підтвердить видаленняkubectl delete pods --all --interactive
Параметри
--all
Вилучити всі ресурси у просторі імен вказаних типів ресурсів.
-A, --all-namespaces
Якщо вказано, показати список запитуваних обʼєктів у всіх просторах назв. Простір імен у поточному контексті ігнорується, навіть якщо вказано --namespace.
Має бути "background", "orphan" або "foreground". Вибирає стратегію каскадного видалення для залежних елементів (наприклад, Podʼів, створених Replication Controller). Стандартне значення — background.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-selector string
Селектор (запит поля) для фільтрації підтримує '=', '==' і '!=' (наприклад, --field-selector key1=value1,key2=value2). Сервер підтримує лише обмежену кількість запитів до полів кожного типу.
-f, --filename strings
містить ресурс, який потрібно видалити.
--force
Якщо true, негайно видалити ресурси з API і оминути процедуру належного видалення. Зверніть увагу, що негайне видалення деяких ресурсів може призвести до неузгодженості або втрати даних і потребує підтвердження.
--grace-period int Типово: -1
Період часу в секундах, який дається ресурсу для належного завершення роботи. Ігнорується, якщо значення відʼємне. Встановлюється у 1 для негайного завершення роботи. Може бути встановлене у 0, тільки якщо --force має значення true (примусове видалення).
-h, --help
Довідка delete
--ignore-not-found
Вважати "resource not found" за успішне видалення. Стандартно дорівнює "true", якщо вказано --all.
-i, --interactive
Якщо true, видаляти ресурс тільки після підтвердження користувача.
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
--now
Якщо значення true, ресурсам дається сигнал про негайне припинення роботи (так само, як і --grace-period=1).
-o, --output string
Режим виводу. Використовуйте "-o name" для скороченого виводду (resource/name).
--raw string
Необроблений URI для DELETE на сервер. Використовує транспорт, вказаний у файлі kubeconfig.
-R, --recursive
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--timeout duration
Час очікування перед прийнятям рішення про відмову видалення, нуль означає визначення таймауту залежно від розміру обʼєкта
--wait Типово: true
Якщо true, очікувати, поки ресурси зникнуть, перш ніж повернутися. Очікує фіналізаторів.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Показує детальну інформацію про певний ресурс або групу ресурсів.
Виводіть детальний опис вибраних ресурсів, включно з повʼязаними ресурсами, такими як події або контролери. Ви можете вибрати один обʼєкт за назвою, всі обʼєкти цього типу, вказати префікс назви або селектор міток. Наприклад:
kubectl describe TYPE NAME_PREFIX
спочатку перевірить наявність точного збігу між TYPE і NAME_PREFIX. Якщо такого ресурсу не існує, він виведе дані для кожного ресурсу, який має назву з префіксом NAME_PREFIX.
Для отримання повного списку підтримуваних ресурсів скористайтеся "kubectl api-resources".
# Вивести опис вузла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=myLabelkubectl describe pods -l name=myLabel
# Вивести опис всіх Podʼів, керовані контролером реплікації 'frontend'# (Podʼи, створені rc, отримують імʼя rc як префікс у назві Podʼа)kubectl describe pods frontend
Параметри
-A, --all-namespaces
Якщо вказано, показати список запитуваних обʼєктів у всіх просторах назв. Простір імен у поточному контексті ігнорується, навіть якщо вказано --namespace.
--chunk-size int Типово: 500
Повертати великі списки частинами, а не всі одразу. Для вимкнення задайте 0. Цей прапорець є бета-версією і може змінюватися в майбутньому.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс для отриманні інформації
-h, --help
Довідка describe
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
-R, --recursive
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--show-events Типово: true
Якщо true, показувати події, повʼязані з описаним обʼєктом.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Порівнює конфігурації, вказані за назвою файлу або stdin, між поточною онлайн-конфігурацією та конфігурацією, яка була б застосована.
На виході завжди буде YAML.
Змінна середовища KUBECTL_EXTERNAL_DIFF може бути використана для вибору вашої власної команди diff. Користувачі також можуть використовувати зовнішні команди з параметрами, наприклад: KUBECTL_EXTERNAL_DIFF="colordiff -N -u"
Стандартно команду "diff", доступну у вашому шляху, буде запущено з параметрами "-u" (уніфікований diff) і "-N" (вважати відсутні файли порожніми).
Стан завершення роботи: 0 — Відмінностей не знайдено. 1 — Відмінності знайдено. >1 — Запуск Kubectl або diff завершився з помилкою.
Зауваження: якщо використовується KUBECTL_EXTERNAL_DIFF, очікується, що його буде застосовано відповідно до цієї конвенції.
kubectl diff -f FILENAME
Приклади
# Diff resources included in pod.jsonkubectl diff -f pod.json
# Diff file read from stdincat service.yaml | kubectl diff -f -
Параметри
--concurrency int Типово: 1
Кількість обʼєктів для паралельної обробки у порівнянні з реальною версією. Більша кількість = швидше, але більше памʼяті, вводу/виводу та процесора за коротший проміжок часу.
Імʼя менеджера, що використовується для відстеження права власності на поле.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що містить конфігурацію для diff
--force-conflicts
Якщо значення true, серверне застосування (server-side apply) буде примусово вносити зміни всупереч конфліктам.
-h, --help
Довідка diff
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
--prune
Включити ресурси, які буде видалено під час обрізання. Можна використовувати з параметром -l і типово показує всі ресурси, які буде вилучено
--prune-allowlist strings
Замінити список стандартний дозволів (allowlist) <group/version/kind> для --prune
-R, --recursive
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--server-side
Якщо значення true, apply виконується на сервері, а не на клієнті.
--show-managed-fields
Якщо true, включити керовані поля в diff.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Зазначений вузол будо позначено, як не придатний для розміщення робочих навантажень для запобігання створенню нових Podʼів на ньому. 'drain' виселяє Podʼи, якщо API сервер підтримує розлади або виселення. В іншому випадку він використовує звичайний DELETE, щоб видалити Podʼи. 'drain' виселяє або видаляє всі Podʼи, окрім дзеркальних Podʼів (які не можна видалити за допомогою API сервера). Якщо це самокерований Pod демона, drain не спрацює, якщо немає --ignore-daemonsets, і Pod не буде видалено, бо такі Podʼи будуть негайно замінені новими контролером DaemonSet, який не звертає уваги на позначку unschedulable. Якщо є якісь Podʼи, які не є дзеркальними Podʼами, і які не керуються контролером реплікації, replica set, daemon set, stateful set, або job то drain не видалить жодного Pod, якщо ви не скористаєтеся опцією --force. --force також дозволить продовжити видалення, якщо відсутній керуючий ресурс одного або декількох Podʼів.
'drain' чекає на коректне завершення. Ви не повинні працювати на машині, поки команда не завершиться.
Коли ви будете готові повернути вузол до експлуатації, скористайтеся командою kubectl uncordon, яка зробить вузол знову доступним для планування.
kubectl drain NODE
Приклади
# Спорожнити вузол "foo", навіть якщо на ньому є Podʼи, які не керуються контролером реплікації, replica set, job, daemon set або stateful setkubectl drain foo --force
# Як вище, але перервати, якщо наявні Podʼи, які не керуються контролером реплікації, replica set, job, daemon set або stateful set, і використовувати пільговий період у 15 хвилинkubectl drain foo --grace-period=900
Параметри
--chunk-size int Типово: 500
Повертати великі списки частинами, а не всі одразу. Для вимкнення задайте 0. Цей прапорець є бета-версією і може змінюватися в майбутньому.
--delete-emptydir-data
Продовжувати, навіть якщо є Podʼи, що використовують emptyDir (локальні дані, які буде видалено, коли вузол буде спорожнено).
--disable-eviction
Примусово виводити ресурси за допомогою delete, навіть якщо підтримується виселення. Це дозволить обійти перевірку PodDisruptionBudgets, використовуйте з обережністю.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--force
Продовжувати, навіть якщо є Podʼи, які не задекларували контролер.
--grace-period int Типово: -1
Період часу в секундах, який дається ресурсу для належного завершення роботи. Якщо значення відʼємне, то буде використано стандартне значення, вказане у Pod.
-h, --help
Довідка drain
--ignore-daemonsets
Ігнорувати Podʼи керовані DaemonSet.
--pod-selector string
Селектор міток для фільтрування Podʼів на вузлі
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--skip-wait-for-delete-timeout int
Якщо хначення DeletionTimestamp Podʼа старіще за N секунд, пропускати очікування Podʼа. Значення секунд має бути більще за 0, щоб його оминути.
--timeout duration
Час очікування перед прийнятям рішення про відмову видалення, нуль означає нескіченно
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Редагування ресурсу за допомогою стандартного редактора.
Команда edit дозволяє вам безпосередньо редагувати будь-який ресурс API, який ви можете отримати за допомогою інструментів командного рядка. Вона відкриє редактор, визначений вашими змінними оточення KUBE_EDITOR або EDITOR, або відкриє "vi" для Linux чи "notepad" для Windows. Під час спроби відкрити редактор спочатку буде використано оболонку, визначену у змінній оточення 'SHELL'. Якщо її не визначено, буде використано стандартну оболонку, якою є "/bin/bash" для Linux або "cmd" для Windows.
Ви можете редагувати декілька обʼєктів, хоча зміни застосовуються по одній за раз. Команда приймає імена файлів, а також аргументи командного рядка, хоча файли, на які ви вказуєте, мають бути попередньо збереженими версіями ресурсів.
Редагування виконується за допомогою версії API, використаної для отримання ресурсу. Щоб редагувати з використанням певної версії API, повністю вкажіть ресурс, версію і групу.
Стандартний формат — YAML. Для редагування у форматі JSON вкажіть "-o json".
Прапорець --windows-line-endings може бути використаний для забезпечення примусового завершення рядків у форматі Windows, інакше буде використано типовий для вашої операційної системи.
Якщо під час оновлення виникне помилка, на диску буде створено тимчасовий файл, який міститиме ваші незастосовані зміни. Найпоширенішою помилкою при оновленні ресурсу є зміна ресурсу на сервері іншим редактором. У цьому випадку вам доведеться застосувати ваші зміни до новішої версії ресурсу або оновити вашу тимчасову збережену копію, щоб вона містила останню версію ресурсу.
kubectl edit (RESOURCE/NAME | -f FILENAME)
Приклади
# Змінити сервіс з назвою 'registry'kubectl edit svc/registry
# Використовувати альтернативний редакторKUBE_EDITOR="nano" kubectl edit svc/registry
# Редагувати job 'myjob' у форматі JSON з використанням формату API v1kubectl edit job.v1.batch/myjob -o json
# Редагувати deployment 'mydeployment' в YAML і зберегти змінений конфіг в його анотаціїkubectl edit deployment/mydeployment -o yaml --save-config
# Редагувати субресурс 'status' для deployment 'mydeployment'kubectl edit deployment mydeployment --subresource='status'
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--field-manager string Типово: "kubectl-edit"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, для редагування ресурсів
-h, --help
Довідка edit
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--save-config
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--subresource string
Якщо вказано, редагування працюватиме з субресурсом запитуваного обʼєкта. Цей прапорець є бета-версією і може змінюватися у майбутньому.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
--windows-line-endings
Стандартно використовується закінчення рядка, притаманне вашій платформі.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Виводить таблицю з найважливішою інформацією про події. Ви можете запитувати події для простору імен, для всіх просторів імен або відфільтрувати лише ті, що стосуються вказаного ресурсу.
# Вивести список нещодавніх подій у стандартному просторі іменkubectl events
# Показати нещодавні події у всіх просторах іменkubectl events --all-namespaces
# Вивести список нещодавніх подій для вказаного pod, потім дочекатися нових подій і виводити їх по мірі надходженняkubectl events --for pod/web-pod-13je7 --watch
# Показати нещодавні події у форматі YAMLkubectl events -oyaml
# Показати лише нещодавні події типу 'Warning' або 'Normal'kubectl events --types=Warning,Normal
Параметри
-A, --all-namespaces
Якщо вказано, показати список запитуваних обʼєктів у всіх просторах назв. Простір імен у поточному контексті ігнорується, навіть якщо вказано --namespace.
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--chunk-size int Типово: 500
Повертати великі списки частинами, а не всі одразу. Для вимкнення задайте 0. Цей прапорець є бета-версією і може змінюватися в майбутньому.
--for string
Відфільтрувати події, щоб залишити лише ті, що стосуються вказаного ресурсу.
-h, --help
Довідка events
--no-headers
При використанні стандартного або власного формату виводу стовпців не друкувати заголовки.
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--types strings
Вивести лише події заданих типів.
-w, --watch
Після отримання списку бажаних подій слідкувати за новими подіями.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
# Отримати вивід від виконання команди 'date' з Pod mypod, використовуючи типово перший контейнерkubectl exec mypod -- date
# Отримати вивід команди 'date' у ruby-контейнері з Pod mypodkubectl exec mypod -c ruby-container -- date
# Перехід у режим необробленого терміналу; надсилає stdin до 'bash' у ruby-контейнері з 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 deployment mydeployment, з використанням стандартно першого контейнераkubectl exec deploy/mydeployment -- date
# Отримати вивід команди 'date' з першого Pod сервісу myservice, використовуючи стандартно перший контейнерkubectl exec svc/myservice -- date
Параметри
-c, --container string
Назва контейнера. Якщо не вказано, використовуйте анотацію kubectl.kubernetes.io/default-container для вибору контейнера, який буде приєднано, інакше буде обрано перший контейнер у pod
-f, --filename strings
Імʼя файлу, теки або URL до файлів, для виконання ресурсів
-h, --help
Довідка exec
--pod-running-timeout duration Типово: 1m0s
Тривалість часу (наприклад, 5s, 2m або 3h, більше нуля) для очікування, поки не запрацює хоча б один Pod
-q, --quiet
Виводити лише дані, отримані під час віддаленого сеансу
-i, --stdin
Передати stdin до контейнера
-t, --tty
Stdin є TTY
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Ця команда описує поля, повʼязані з кожним підтримуваним ресурсом API. Поля ідентифікуються за допомогою простого ідентифікатора JSONPath:
<type>.<fieldName>[.<fieldName>]
Інформація про кожне поле отримується з сервера у форматі OpenAPI.
Використовуйте "kubectl api-resources" для отримання повного списку підтримуваних ресурсів.
kubectl explain TYPE [--recursive=FALSE|TRUE][--api-version=api-version-group][-o|--output=plaintext|plaintext-openapiv2]
Приклади
# Отримати документацію про ресурс та його поляkubectl explain pods
# Отримати всі поля ресурсуkubectl explain pods --recursive
# Отримати пояснення щодо deployment у підтримуваних версіях apikubectl explain deployments --api-version=apps/v1
# Отримати документацію щодо певного поля ресурсуkubectl explain pods.spec.containers
# Отримати документацію ресурсів у іншому форматіkubectl explain deployment --output=plaintext-openapiv2
Параметри
--api-version string
Використовувати вказану api-version (group/version) ресурсу.
-h, --help
Довідка explain
-o, --output string Типово: "plaintext"
Формат, у якому потрібно показати схему. Допустимими значеннями є: (plaintext, plaintext-openapiv2).
--recursive
Якщо значення true, вивести назви всіх полів рекурсивно. Інакше, вивести доступні поля з їхнім описом.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Шукає deployment, service, replica set, replica controller або pod за назвою і використовує селектор для цього ресурсу як селектор для нового service на зазначеному порту. 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]
Приклади
# Створити сервіс для реплікованого nginx, який працює на порту 80 та підключається до контейнерів на порту 8000kubectl expose rc nginx --port=80 --target-port=8000# Створити сервіс для контролера реплікації, визначеного типом та іменем у "nginx-controller.yaml", який працює на порту 80 та підключається до контейнерів на порту 8000kubectl expose -f nginx-controller.yaml --port=80 --target-port=8000# Створити сервіс для Pod 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 та підключається до контейнерів на порту 8000kubectl expose rs nginx --port=80 --target-port=8000# Створити сервіс для deployment nginx, який працює на порту 80 та підключається до контейнерів на порту 8000kubectl expose deployment nginx --port=80 --target-port=8000
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--cluster-ip string
ClusterIP, який буде призначено сервісу. Залиште порожнім для автоматичного призначення або встановіть значення "None", щоб створити сервіс headless.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--external-ip string
Додаткова зовнішня IP-адреса (не керована Kubernetes), яку буде використано для сервісу. Якщо цю IP-адресу перенаправлено на вузол, до сервісу можна отримати доступ з цієї IP-адреси на додачу до згенерованої IP-адреси сервісу.
--field-manager string Типово: "kubectl-expose"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, яки визначають ресурс, для експонування сервісу
-h, --help
Довідка expose
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
-l, --labels string
Мітки, які будуть застосовані до сервісу, створеного цим викликом.
--load-balancer-ip string
IP для призначення LoadBalancer. Якщо поле порожнє, буде створено та використано ефемерний IP (залежить від хмарного провайдера).
Метод, який використовується для перевизначення згенерованого обʼєкта: json, merge або strategic.
--overrides string
Вбудоване перевизначення JSON для згенерованого обʼєкта. Якщо він не порожній, то використовується для перевизначення згенерованого обʼєкта. Вимагає, щоб обʼєкт надавав дійсне поле apiVersion.
--port string
Порт, на якому має працювати сервіс. Копіюється з ресурсу, що експонується, якщо не вказано
--protocol string
Мережевий протокол для сервісу, який буде створено. Стандартно — "TCP".
-R, --recursive
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--save-config
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--selector string
Селектор міток, який потрібно використовувати для цього сервісу. Підтримуються лише вимоги до селектора на основі рівності. Якщо порожньо (стандартно), виводитиметься селектор з контролера реплікації або replica set.
--session-affinity
Якщо не порожньо, встановлює сесійну подібнітсть для сервісу. Допустимі значення: None, ClientIP.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--target-port string
Назва або номер порту в контейнері, на який сервіс повинен спрямовувати трафік. Необовʼязково.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--type string
Тип сервісу: ClusterIP, NodePort, LoadBalancer або ExternalName. Стандартно використовується 'ClusterIP'.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Виводить таблицю з найважливішою інформацією про вказані ресурси. Ви можете відфільтрувати список за допомогою селектора міток і прапорця --selector. Якщо потрібний тип ресурсу є простором назв, ви побачите результати лише у поточному просторі назв, якщо не вказати якийсь namespaces.
Зазначивши виведення як "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]
Приклади
# Вивести перелік всіх Podʼів у форматі виводу pskubectl get pods
# Вивести перелік всії Podʼів у форматі виводу ps з додатковою інформацією (наприклад, імʼя вузла)kubectl get pods -o wide
# Вивести перелік один контролер реплікації з вказаним NAME у форматі виводу pskubectl get replicationcontroller web
# Вивести перелік deployment у форматі виводу JSON, у версії "v1" групи API "apps"kubectl get deployments.v1.apps -o json
# Вивести один Pod у форматі виводу JSONkubectl get -o json pod web-pod-13je7
# Вивести перелік Podʼів, визначений типом та іменем у "pod.yaml", у форматі виводу JSONkubectl get -f pod.yaml -o json
# Вивести перелік ресурси з теки з kustomization.yaml - наприклад, dir/kustomization.yamlkubectl get -k dir/
# Повернути лише значення фази вказаного Podkubectl 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
# Вивести перелік всіх контролерів реплікації та сервіси разом у форматі виводу pskubectl get rc,services
# Вивести перелік один або більше ресурсів за їх типом та іменамиkubectl get rc/web service/frontend pods/web-pod-13je7
# Вивести перелік субресурс 'status' для одного Podkubectl get pod web-pod-13je7 --subresource status
# Вивести перелік всіх deployments в namespace 'backend'kubectl get deployments.apps --namespace backend
# Вивести перелік всіх pods пристуніх в усіх namespaceskubectl get pods --all-namespaces
Параметри
-A, --all-namespaces
Якщо вказано, показати список запитуваних обʼєктів у всіх просторах назв. Простір імен у поточному контексті ігнорується, навіть якщо вказано --namespace.
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--chunk-size int Типово: 500
Повертати великі списки частинами, а не всі одразу. Для вимкнення задайте 0. Цей прапорець є бета-версією і може змінюватися в майбутньому.
--field-selector string
Селектор (запит поля) для фільтрації підтримує '=', '==' і '!=' (наприклад, --field-selector key1=value1,key2=value2). Сервер підтримує лише обмежену кількість запитів до полів кожного типу.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, яки визначають ресурс, для отримання з сервера.
-h, --help
Довідка get
--ignore-not-found
Якщо запитуваний обʼєкт не існує, команда поверне код виходу 0.
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
-L, --label-columns strings
Приймає список міток, розділених комами, які буде представлено у вигляді стовпчиків. Назви чутливі до регістру. Ви також можете використовувати декілька прапорців, наприклад, -L label1 -L label2...
--no-headers
При використанні стандартного або власного формату виводу стовпців не друкувати заголовки (заголовки стандартно друкуються).
Виводити обʼєкти подій спостереження, якщо використовується --watch або --watch-only. Існуючі обʼєкти виводяться як початкові події ADDED.
--raw string
Необроблений URI для запиту з сервер. Використовує транспорт, вказаний у файлі kubeconfig.
-R, --recursive
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--server-print Типово: true
Якщо це значення true, сервер має повернути відповідний вивід таблиці. Підтримує API розширення та CRD.
--show-kind
Якщо є, вкажіть тип ресурсу для запитуваного обʼєкта (обʼєктів).
--show-labels
Під час друку показувати всі мітки в останньому стовпчику (стандартно приховувати стовпчик міток)
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--sort-by string
Якщо поле не порожнє, відсортувати список ресурсів за вказаним полем. Специфікація поля виражається у вигляді виразу JSONPath (наприклад, '{.metadata.name}'). Поле в ресурсі API, визначене цим виразом JSONPath, має бути цілим чи рядком.
--subresource string
Якщо вказано, редагування працюватиме з субресурсом запитуваного обʼєкта. Цей прапорець є бета-версією і може змінюватися у майбутньому.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
-w, --watch
Після отримання списку бажаних подій слідкувати за новими подіями.
--watch-only
Спостерігати за змінами запитуваного обʼєкта (обʼєктів), не переглядаючи/отримуючи їх спочатку.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Створення набору ресурсів KRM за допомогою файлу 'kustomization.yaml'. Аргумент DIR має бути шляхом до теки з файлом 'kustomization.yaml' або URL-адресою git-сховища з суфіксом шляху, що вказує на те саме відносно кореня сховища. Якщо DIR не вказано, буде використано символ ".".
kubectl kustomize DIR [flags]
Приклади
# Створити поточну робочу текуkubectl kustomize
# Створити теку конфігурації зі спільним доступомkubectl kustomize /home/config/production
# Побудувати з githubkubectl kustomize https://github.com/kubernetes-sigs/kustomize.git/examples/helloWorld?ref=v1.0.6
Параметри
--as-current-user
використовувати uid та gid виконавця команди для запуску функції в контейнері
--enable-alpha-plugins
увімкнути втулки kustomize
--enable-helm
Увімкніть використання генератора наповнювача чартів Helm.
-e, --env strings
список змінних оточення, які будуть використовуватися функціями
--helm-api-versions strings
Версії Kubernetes api, що використовуються Helm для Capabilities.APIVersions
--helm-command string Типово: "helm"
команда helm (шлях до виконавчого файлу)
--helm-debug
Увімкнути налагоджувальний вивід з генератора інфлятора чартів Helm.
--helm-kube-version string
Версія Kubernetes, що використовується Helm для Capabilities.KubeVersion
якщо встановлено значення 'LoadRestrictionsNone', локальні кастомізації можуть завантажувати файли ззовні свого кореня. Однак це порушує можливість переміщення кастомізації.
--mount strings
список параметрів сховища, отриманий з файлової системи
--network
вмикає доступ до мережі для функцій, які декларують про це
--network-name string Типово: "bridge"
мережа docker для запуску контейнера
-o, --output string
Якщо вказано, записати вивід у цей шлях.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Ключ і значення мітки повинні починатися з літери або цифри і можуть містити літери, цифри, дефіси, крапки і підкреслення, до 63 символів кожна.
За бажанням, ключ може починатися з префікса субдомену DNS і одного символу "/", наприклад, 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]
Приклади
# Оновити 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' тільки якщо ресурс не змінився з версії 1kubectl label pods foo status=unhealthy --resource-version=1# Оновити pod 'foo', видаливши мітку з назвою 'bar', якщо вона існує# Не потребує прапорця --overwritekubectl label pods foo bar-
Параметри
--all
Вибрати всі ресурси у просторі імен вказаних типів ресурсів.
-A, --all-namespaces
Якщо true, перевірити вказану дію в усіх просторах імен.
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-label"
Імʼя менеджера, що використовується для відстеження права власності на поле.
--field-selector string
Селектор (запит поля) для фільтрації підтримує '=', '==' і '!=' (наприклад, --field-selector key1=value1,key2=value2). Сервер підтримує лише обмежену кількість запитів до полів кожного типу.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, яки визначають ресурс, для оновлення міток.
-h, --help
Довідка label
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
--list
Якщо true, показувати мітки для даного ресурсу.
--local
Якщо значення true, мітка НЕ буде звертатися до api-server, а виконуватиметься локально.
Якщо true, дозволити перезапис міток, інакше відхиляти оновлення міток, які перезаписують наявні мітки.
-R, --recursive
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--resource-version string
Якщо значення не порожнє, оновлення мітки буде успішним, тільки якщо це поточна версія ресурсу для обʼєкта. Дійсно лише при зазначенні одного ресурсу.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
# Вивести знімок логів з Podʼа nginx з одним контейнеромkubectl logs nginx
# Вивести знімки логів з пакета nginx, додаючи до кожного рядка імʼя вихідного пакета та контейнера.kubectl logs nginx --prefix
# Вивести знімки логів з pod nginx, обмеживши виведення до 500 байтkubectl logs nginx --limit-bytes=500# Вивести знімки логів з pod nginx, зачекавши до 20 секунд на їх запуск.kubectl logs nginx --pod-running-timeout=20s
# Вивести знімок логів з Podʼа nginx з кількома контейнерамиkubectl logs nginx --all-containers=true# Вивести знімок логів з всіх Podʼів в deployment nginxkubectl logs deployment/nginx --all-pods=true# Вивести знімок логів з усіх контейнерів у Podʼах, визначених міткою app=nginxkubectl logs -l app=nginx --all-containers=true# Вивести знімок логів з всіх Podʼів з міткою app=nginx, обмживши запити логів 10 Podʼамиkubectl logs -l app=nginx --max-log-requests=10# Вивести знімок логів з попереднього завершеного контейнера ruby з Podʼа web-1kubectl logs -p -c ruby web-1
# Почати трансляцію логів з Podʼа nginx, продовжувати навіть за наявності помилокkubectl logs nginx -f --ignore-errors=true# Почати трансляцію логів контейнера ruby у Podʼі web-1kubectl logs -f -c ruby web-1
# Почати трансляцію логів з усіх контейнерів у Podʼах, визначених міткою app=nginxkubectl logs -f -l app=nginx --all-containers=true# Показати лише останні 20 рядків виводу в Podʼі nginxkubectl logs --tail=20 nginx
# Показати всі логи з Podʼа nginx, записані за останню годинуkubectl logs --since=1h nginx
# Показати всі логи з позначками часу від Podʼа nginx, починаючи з 30 серпня 2024 року, о 06:00:00 UTCkubectl logs nginx --since-time=2024-08-30T06:00:00Z --timestamps=true# Показати логи з kubelet з простроченим сертифікатом сервераkubectl logs --insecure-skip-tls-verify-backend nginx
# Вивести знімок логів з першого контейнера завдання з назвою hellokubectl logs job/hello
# Вивести знімок логів з контейнера nginx-1 у deployment з назвою nginxkubectl logs deployment/nginx -c nginx-1
Параметри
--all-containers
Отримайте логи всіх контейнерів у pod(ах).
--all-pods
Отримати логи з усіх Pod(ів). Встановлює префікс у true.
-c, --container string
Вивести логи цього контейнера
-f, --follow
Вкажіть, чи потрібно транслювати логи.
-h, --help
Довідка logs
--ignore-errors
Якщо ви переглядаєте / стежите за логами pod, дозвольте будь-яким помилкам, що трапляються, бути не фатальними
--insecure-skip-tls-verify-backend
Пропустити перевірку ідентичності kubelet, з якого запитуються логи. Теоретично, зловмисник може повернути недійсний вміст логу. Можливо, ви захочете використати цей параметр, якщо термін дії сертифікатів, що обслуговують ваш kubelet, закінчився.
--limit-bytes int
Максимальна кількість байт логів для виводу. Стандартно без обмежень.
--max-log-requests int Типово: 5
Вкажіть максимальну кількість паралельних логів, які слід відстежувати при використанні селектора. Стандартно встановлено значення 5.
--pod-running-timeout duration Типово: 20s
Тривалість часу (наприклад, 5s, 2m або 3h, більше нуля) для очікування, поки не запрацює хоча б один Pod
--prefix
До початку кожного рядка логу додайте джерело логу (імʼя pod та імʼя контейнера)
-p, --previous
Якщо true, вивести логи для попереднього екземпляра контейнера в pod, якщо він існує.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--since duration
Виводити лише ті логи, що є новішими за відносну тривалість, наприклад, 5s, 2m або 3h. Стандартно для всіх логів. Можна використовувати лише один з параметрів since-time / since.
--since-time string
Виводити логи лише після певної дати (RFC3339). Стандартно для всіх логів. Можна використовувати лише один з параметрів since-time / since.
--tail int Типово: -1
Рядки нещодавнього файлу логу для показу. Стандартно дорівнює -1 без селектора, показуючи всі рядки логу, інакше 10, якщо селектор вказано.
--timestamps
Додайте мітки часу до кожного рядка у виводі логу
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Виводить список прапорців, успадкованих усіма командами
kubectl options [flags]
Приклади
# Вивести список прапорців, успадкованих усіма командамиkubectl options
Параметри
-h, --help
Довідка options
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Оновлення полів ресурсу за допомогою патча стратегічного злиття, патча злиття JSON або патча JSON.
Підтримуються формати JSON і YAML.
Примітка: Стратегічне злиття не підтримується для власних ресурсів користувача.
kubectl patch (-f FILENAME | TYPE NAME)[-p PATCH|--patch-file FILE]
Приклади
# Частково оновити вузол за допомогою патчів стратегічного злиття, вказавши патч як JSONkubectl patch node k8s-node-1 -p '{"spec":{"unschedulable":true}}'# Частково оновити вузол за допомогою патчів стратегічного злиття, вказавши патч як YAMLkubectl 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"}]'# Оновити кількість реплік deployment через субресурс 'scale' за допомогою злиття патчівkubectl patch deployment nginx-deployment --subresource='scale' --type='merge' -p '{"spec":{"replicas":2}}'
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-patch"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, яки визначають ресурс для оновлення.
-h, --help
Довідка patch
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
--local
Якщо true, патч буде працювати з вмістом файлу, а не з ресурсом на стороні сервера.
Патч, який буде застосовано до JSON-файлу ресурсу.
--patch-file string
Файл, що містить патч, який буде застосовано до ресурсу.
-R, --recursive
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--subresource string
Якщо вказано, редагування працюватиме з субресурсом запитуваного обʼєкта. Цей прапорець є бета-версією і може змінюватися у майбутньому.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--type string Типово: "strategic"
Тип патчу, що застосовується; один з [json merge strategic].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Втулки надають розширену функціональність, яка не є частиною основного коду kubectl. Будь ласка, зверніться до документації та прикладів для отримання додаткової інформації про те, як писати власні втулки.
Найпростіший спосіб знайти та встановити втулки — за допомогою субпроєкту kubernetes krew. Щоб встановити krew, відвідайте krew.sigs.k8s.io.
kubectl plugin [flags]
Приклади
# Вивести перелік всіх доступних втулківkubectl plugin list
# Вивести перелік назв двійкових файлів доступних втулків без шляхівkubectl plugin list --name-only
Параметри
-h, --help
Довідка plugin
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
kubectl plugin list — список усіх виконуваних файлів втулків видимих у PATH користувача
11.3.32.1 - kubectl plugin list
Огляд
Показати всі доступні файли втулків у PATH користувача. Для виводу тільки назв двійкових файлів використовуйте прапорець --name-only.
Доступними вважаються файли втулків, які є:
виконуваними
будь-де в PATH користувача
починаються з "kubectl-"
kubectl plugin list [flags]
Приклади
# Вивести перелік всіх доступних втулківkubectl plugin list
# Вивести перелік назв двійкових файлів доступних втулків без шляхівkubectl plugin list --name-only
Параметри
-h, --help
Довідка list
--name-only
Якщо значення true, показувати лише назву команди кожного втулка, а не повний шлях до нього
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Дивіться також
kubectl plugin — Впроваджує утиліти для взаємодії з втулками.
11.3.33 - kubectl port-forward
Огляд
Перенаправте один або кілька локальних портів у Pod.
Використовуйте тип/назву ресурсу, наприклад, deployment/mydeployment, для вибору Podʼа. Якщо його не вказано, тип ресурсу стандартно дорівнюватиме 'pod'.
Якщо є кілька Podʼів, що відповідають критеріям, автоматично буде обрано один з них. Сеанс перенаправлення завершується після завершення роботи вибраного Podʼа, і для відновлення перенаправлення потрібно повторно виконати команду.
# Слухати на портах 5000 і 6000 локально, перенаправляючи дані з/на порти 5000 і 6000 у Podkubectl port-forward pod/mypod 50006000# Слухати на портах 5000 і 6000 локально, перенаправляючи дані з/на порти 5000 і 6000 у Pod, обраний за допомогою deploymentkubectl port-forward deployment/mydeployment 50006000# Слухати на порту 8443 локально, перенаправляючи на targetPort порту сервісу з імʼям "https" у Pod, обраний за допомогою сервісуkubectl port-forward service/myservice 8443:https
# Слухати на порту 8888 локально, перенаправляючи на порт 5000 у Podkubectl port-forward pod/mypod 8888:5000
# Слухати на порту 8888 на всіх адресах, перенаправляючи на порт 5000 у Podkubectl port-forward --address 0.0.0.0 pod/mypod 8888:5000
# Слухати на порту 8888 на localhost та вибраній IP-адресі, перенаправляючи на порт 5000 у Podkubectl port-forward --address localhost,10.19.21.23 pod/mypod 8888:5000
# Слухати на випадковому порту локально, перенаправляючи на 5000 у Podkubectl port-forward pod/mypod :5000
Параметри
--address strings Типово: "localhost"
Адреси для прослуховування (через кому). Допускається вказувати лише IP-адреси або localhost. Якщо вказано localhost, kubectl спробує привʼязатися до адрес 127.0.0.1 та ::1 і завершить роботу, якщо жодна з цих адрес не буде доступною для привʼязки.
-h, --help
Довідка port-forward
--pod-running-timeout duration Типово: 1m0s
Тривалість часу (наприклад, 5s, 2m або 3h, більше нуля) для очікування, поки не запрацює хоча б один Pod
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Створює проксі-сервер або шлюз на рівні програми між localhost і сервером API Kubernetes. Він також дозволяє передавати статичний вміст за вказаним HTTP-шляхом. Всі вхідні дані надходять через один порт і перенаправляються на порт віддаленого сервера Kubernetes API, за винятком шляху, що збігається зі шляхом до статичного контенту.
# Проксіювати Kubernetes API і більше нічогоkubectl proxy --api-prefix=/
# Проксіювати лише частину Kubernetes API та деякі статичні файли# Ви можете отримати інформацію про Podʼи за допомогою 'curl localhost:8001/api/v1/pods'kubectl proxy --www=/my/files --www-prefix=/static/ --api-prefix=/api/
# Проксіювати весь Kubernetes API за іншим коренем# Ви можете отримати інформацію про Podʼи за допомогою 'curl localhost:8001/custom/api/v1/pods'kubectl proxy --api-prefix=/custom/
# Запустити проксі до сервера Kubernetes API на порту 8011, обслуговуючи статичний контент з ./local/www/kubectl proxy --port=8011 --www=./local/www/
# Запустити проксі до сервера Kubernetes API на довільному локальному порту# Обраний порт для сервера буде виведено в stdoutkubectl proxy --port=0# Запустити проксі до сервера Kubernetes API, змінюючи префікс API на k8s-api# Це робить, наприклад, API підів доступним за адресою localhost:8001/k8s-api/v1/pods/kubectl proxy --api-prefix=/k8s-api
Регулярний вираз для хостів, які повинен приймати проксі.
--accept-paths string Типово: "^.*"
Регулярний вираз для шляхів, які повинен приймати проксі.
--address string Типово: "127.0.0.1"
IP-адреса, на якій буде здійснюватися обслуговування.
--api-prefix string Типово: "/"
Префікс для обслуговування проксі API.
--append-server-path
Якщо значення true, вмикає автоматичне додавання шляху до сервера kube context до кожного запиту.
--disable-filter
Якщо це значення встановлено, воно вимикає фільтрацію запитів у проксі-сервері. Це небезпечно і може зробити вас вразливими до XSRF-атак, якщо ви використовуєте відкритий порт.
-h, --help
Довідка proxy
--keepalive duration
keepalive задає період підтримки активного мережевого зʼєднання. Встановіть значення 0, щоб вимкнути keepalive.
-p, --port int Типово: 8001
Порт, на якому буде запущено проксі. Встановіть 0, щоб вибрати випадковий порт.
--reject-methods string Типово: "^$"
Регулярний вираз для HTTP-методів, які проксі повинен відхиляти (еаприклад --reject-methods='POST,PUT,PATCH').
Регулярний вираз для шляхів, які проксі має відхиляти. Шляхи, вказані тут, буде відхилено, навіть якщо їх буде прийнято за допомогою --accept-paths.
-u, --unix-socket string
Сокет Unix, на якому буде запущено проксі.
-w, --www string
Також обслуговуватимуться статичні файли із заданої теки з вказаним префіксом.
-P, --www-prefix string Типово: "/static/"
Префікс для обслуговування статичних файлів, якщо вказано теку зі статичними файлами.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Приймаються формати JSON та YAML. Якщо ви замінюєте наявний ресурс, необхідно надати повну специфікацію ресурсу. Її можна отримати за допомогою
kubectl get TYPE NAME -o yaml
kubectl replace -f FILENAME
Приклади
# Замінити pod, використовуючи дані з pod.jsonkubectl replace -f ./pod.json
# Замінити pod на основі JSON, переданого в stdincat pod.json | kubectl replace -f -
# Оновити версію образу (тег) одноконтейнерного pod до v4kubectl get pod mypod -o yaml | sed 's/\(image: myimage\):.*$/\1:v4/' | kubectl replace -f -
# Примусово замінити, видалити, а потім перестворити ресурсkubectl replace --force -f ./pod.json
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
Має бути "background", "orphan" або "foreground". Вибирає стратегію каскадного видалення для залежних елементів (наприклад, Podʼів, створених Replication Controller). Стандартне значення — background.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-replace"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-f, --filename strings
Імʼя файлів, яки містять конфігурацію для заміни.
--force
Якщо true, негайно видалити ресурси з API і обійти належне видалення. Зверніть увагу, що негайне видалення деяких ресурсів може призвести до неузгодженості або втрати даних і потребує підтвердження.
--grace-period int Типово: -1
Період часу в секундах, який дається ресурсу для належного завершення роботи. Якщо значення відʼємнеі – ігнорується. Встановіть значення 1 для негайного припинення роботи. Можна встановити у 0, лише якщо --force має значення true (примусове видалення).
-h, --help
Довідка replace
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
Необроблений URI для PUT на сервер. Використовує транспорт, вказаний у файлі kubeconfig.
-R, --recursive
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--save-config
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--subresource string
Якщо вказано, редагування працюватиме з субресурсом запитуваного обʼєкта. Цей прапорець є бета-версією і може змінюватися у майбутньому.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--timeout duration
Час очікування перед прийнятям рішення про відмову видалення, нуль означає визначення тайм-ауту за розміром обʼєкту
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
--wait
Якщо true, очікувати, поки ресурси зникнуть, перш ніж повернутися. Очікує фіналізаторів.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Керування розгортанням одного або декількох ресурсів.
Допустимі типи ресурсів включають:
deployments
daemonsets
statefulsets
kubectl rollout SUBCOMMAND
Приклади
# Відкотитись до попереднього deploymentkubectl rollout undo deployment/abc
# Перевірити статус розгортання daemonsetkubectl rollout status daemonset/foo
# Перезапустити deploymentkubectl rollout restart deployment/abc
# Перезапустити deployment з міткою 'app=nginx'kubectl rollout restart deployment --selector=app=nginx
Параметри
-h, --help
Довідка rollout
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Переглянути попередні версії та конфігурації розгортання.
kubectl rollout history(TYPE NAME | TYPE/NAME)[flags]
Приклади
# Переглянути історію розгортання deploymentkubectl rollout history deployment/abc
# Переглянути деталі daemonset ревізії 3kubectl rollout history daemonset/abc --revision=3
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс, який потрібно отримати з сервера.
-h, --help
Довідка history
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--revision int
Переглянути деталі, включаючи podTemplate вказаної ревізії
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Призупинені ресурси не будуть узгоджуватися контролером. Щоб відновити роботу призупиненого ресурсу, скористайтеся "kubectl rollout resume". Наразі призупинення підтримується лише у deployment.
kubectl rollout pause RESOURCE
Приклади
# Позначити deployment nginx як призупинений# Будь-який поточний стан deployment продовжить свою роботу; нові оновлення# deployment не матимуть ефекту, доки deployment призупиненоkubectl rollout pause deployment/nginx
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--field-manager string Типово: "kubectl-rollout"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс, який потрібно отримати з сервера.
-h, --help
Довідка pause
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
# Перезапустити всі deployment у просторі імен test-namespacekubectl rollout restart deployment -n test-namespace
# Перезапустіть deploymentkubectl rollout restart deployment/nginx
# Перезапустити набір демонівkubectl rollout restart daemonset/abc
# Перезапустити deployment з міткою app=nginxkubectl rollout restart deployment --selector=app=nginx
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--field-manager string Типово: "kubectl-rollout"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс, який потрібно отримати з сервера.
-h, --help
Довідка restart
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Призупинені ресурси не будуть узгоджуватися контролером. Відновивши ресурс, ми дозволимо йому знову бути узгодженим. Наразі лише deployments підтримують відновлення.
kubectl rollout resume RESOURCE
Приклади
# Відновити роботу призупиненого deploymentkubectl rollout resume deployment/nginx
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--field-manager string Типово: "kubectl-rollout"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс, який потрібно отримати з сервера.
-h, --help
Довідка resume
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Стандартно "rollout status" буде стежити за статусом останнього розгортання, доки воно не завершиться. Якщо ви не бажаєте чекати на завершення розгортання, ви можете використати --watch=false. Зауважте, що якщо у проміжку між ними розпочнеться нове розгортання, то "rollout status" продовжуватиме стежити за останньою ревізією. Якщо ви хочете привʼязатися до певної ревізії і перервати процес, якщо його буде перенесено на іншу ревізію, скористайтеся --revision=N, де N — ревізія, за якою ви хочете стежити.
kubectl rollout status (TYPE NAME | TYPE/NAME)[flags]
Приклади
# Перегляд статусу розгортання deploymentkubectl rollout status deployment/nginx
Параметри
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс, який потрібно отримати з сервера.
-h, --help
Довідка status
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
-R, --recursive
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--revision int
Закріпити за певною ревізією для показу її статусу. Стандартно дорівнює 0 (остання ревізія).
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--timeout duration
Час очікування перед прийнятям рішення про відмову видалення, нуль означає визначення тайм-ауту за розміром обʼєкту
-w, --watch Типово: true
Відстежувати статус розгортання, доки воно не завершиться.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
kubectl rollout undo (TYPE NAME | TYPE/NAME)[flags]
# Відкотитися до попередньої версії deploymentkubectl rollout undo deployment/abc
# Відкотитися до ревізії 3 daemonsetkubectl rollout undo daemonset/abc --to-revision=3# Перевірити відкат до попередньої версії за допомогою dry-runkubectl rollout undo --dry-run=server deployment/abc
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс, який потрібно отримати з сервера.
-h, --help
Довідка undo
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--to-revision int
Ревізія для відкату. Стандартно 0 (остання ревізія).
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
kubectl run NAME --image=image [--env="key=value"][--port=port][--dry-run=server|client][--overrides=inline-json][--command] -- [COMMAND][args...]
Приклади
# Запустити pod nginxkubectl run nginx --image=nginx
# Запустити pod hazelcast і дозволити контейнеру відкривати порт 5701kubectl 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 частковим набором значень, розібраних з JSONkubectl 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>
Параметри
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--annotations strings
Анотації для застосування до pod.
--attach
Якщо значення true, дочекайтеся запуску Pod, а потім приєднайтеся до нього так, ніби було викликано команду 'kubectl attach ...'. Стандартно має значення false, якщо не задано параметр '-i/--stdin', у цьому випадку значення буде true. За допомогою '--restart=Never' повертається код завершення процесу контейнера.
Має бути "background", "orphan" або "foreground". Вибирає стратегію каскадного видалення для залежних елементів (наприклад, Pods, створених ReplicationController). Стандартно — background.
--command
Якщо присутні істинні та додаткові аргументи, використовуйте їх як поле 'command' у контейнері, а не поле 'args', яке використовується стандартно.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--env strings
Змінні оточення для установки в контейнері.
--expose --port
Якщо значення true, створить сервіс ClusterIP, асоційований з podʼом. Потрібен --port.
--field-manager string Типово: "kubectl-run"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-f, --filename strings
імʼя файлу для заміни ресурсу.
--force
Якщо true, негайно видалити ресурси з API і обійти належне видалення. Зверніть увагу, що негайне видалення деяких ресурсів може призвести до неузгодженості або втрати даних і потребує підтвердження.
--grace-period int Default: -1
Період часу в секундах, який дається ресурсу для належного завершення роботи. Ігнорується, якщо значення відʼємне. Встановлюється у 1 для негайного завершення роботи. Може бути встановлено у 0, тільки якщо --force має значення true (примусове видалення).
-h, --help
Довідка run
--image string
Назва образу контейнера для запуску.
--image-pull-policy string
Політика отримання образів для контейнера. Якщо залишити порожнім, це значення не буде вказано клієнтом і буде використано сервером стандартна поведінка.
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
-l, --labels string
Мітки через кому для застосування до pod. Перевизначить попередні значення.
--leave-stdin-open
Якщо pod запущено в інтерактивному режимі або за допомогою stdin, залиште stdin відкритим після завершення першого приєднання. Типово, stdin буде закрито після завершення першого приєднання.
Метод, який використовується для перевизначення згенерованого обʼєкта: json, merge або strategic.
--overrides string
Вбудоване перевизначення JSON для згенерованого обʼєкта. Якщо він не порожній, то використовується для перевизначення згенерованого обʼєкта. Вимагає, щоб обʼєкт надавав дійсне поле apiVersion.
--pod-running-timeout duration Типово: 1m0s
Тривалість часу (наприклад, 5s, 2m або 3h, більше нуля) для очікування, поки не запрацює хоча б один Pod
--port string
Порт, який експонує цей контейнер.
--privileged
Якщо true, запустити контейнер у привілейованому режимі.
-q, --quiet
Якщо true, не виводити повідомлення.
-R, --recursive
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--restart string Типово: "Always"
Політика перезапуску Pod. Підтримувані значення: [Always, OnFailure, Never]
--rm
Якщо значення true, видалити pod після його виходу. Діє лише при приєднанні до контейнера, наприклад, за допомогою '--attach' або '-i/--stdin'.
--save-config
Якщо значення true, конфігурація поточного обʼєкта буде збережена в його анотації. В іншому випадку, анотацію буде збережено без змін. Цей прапорець корисно встановити, якщо ви хочете застосувати kubectl до цього обʼєкта у майбутньому.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
-i, --stdin
Залишати stdin відкритим на контейнері в pod, навіть якщо до нього нічого не приєднано.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--timeout duration
Час очікування перед прийнятям рішення про відмову видалення, нуль означає визначення таймауту залежно від розміру обʼєкта
-t, --tty
Призначити TTY для контейнера в pod.
--wait
Якщо true, очікувати, поки ресурси зникнуть, перш ніж повернутися. Очікує фіналізаторів.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Встановлення нового розміру для deployment, replica set, replication controller або stateful set.
Scale також дозволяє користувачам вказати одну або декілька передумов для дії масштабування.
Якщо вказано параметр --current-replicas або --resource-version, його буде перевірено перед спробою масштабування, і буде гарантовано, що передумови буде виконано, коли масштабування буде надіслано на сервер.
kubectl scale [--resource-version=version][--current-replicas=count] --replicas=COUNT (-f FILENAME | TYPE NAME)
Приклади
# Масштабувати replica set з назвою 'foo' до 3kubectl scale --replicas=3 rs/foo
# Масштабувати ресурс, визначений типом та назвою, вказаними у "foo.yaml", до 3kubectl scale --replicas=3 -f foo.yaml
# Якщо поточний розмір deployment з назвою mysql дорівнює 2, масштабувати mysql до 3kubectl scale --current-replicas=2 --replicas=3 deployment/mysql
# Масштабування декількох контролерів реплікаціїkubectl scale --replicas=5 rc/example1 rc/example2 rc/example3
# Масштабувати stateful set з назвою 'web' до 3kubectl scale --replicas=3 statefulset/web
Параметри
--all
Вибрати всі ресурси у просторі імен вказаних типів ресурсів.
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--current-replicas int Типово: -1
Передумова для поточного розміру. Вимагає, щоб поточний розмір ресурсу відповідав цьому значенню для масштабування. -1 ( стандартно) для відсутності умови.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс, якому потрібно задати новий розмір.
-h, --help
Довідка scale
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--replicas int
Нова бажана кількість реплік. Обовʼязково.
--resource-version string
Передумова для версії ресурсу. Вимагає, щоб поточна версія ресурсу відповідала цьому значенню для масштабування./p>
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--timeout duration
Час очікування перед прийнятям рішення про відмову видалення, нуль означає визначення тайм-ауту за розміром обʼєкту. Будь-які інші значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h).
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Ці команди допоможуть вам внести зміни до наявних ресурсів застосунку.
kubectl set SUBCOMMAND
Параметри
-h, --help
Довідка set
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
kubectl set subject — Оновити обліковий запис користувача, групи або сервісу у привʼязці ролі або привʼязці ролі кластера
11.3.39.1 - kubectl set env
Огляд
Оновити змінні середовища у шаблоні Pod.
Вивести перелік визначення змінних середовища в одному або декількох Pod, шаблонах Pod. Додати, оновити або видалити визначення змінних середовища контейнера в одному або декількох шаблонах Pod (в рамках контролерів реплікації або конфігурацій deployment). Переглянути або змінити визначення змінних середовища у всіх контейнерах у вказаних Pod або шаблонах Pod, або тільки тих, що відповідають шаблону.
Якщо передано "--env -", змінні середовища можуть бути прочитані зі STDIN за допомогою стандартного синтаксису env.
Перелік можливих ресурсів містить (незалежно від регістру):
kubectl set env RESOURCE/NAME KEY_1=VAL_1 ... KEY_N=VAL_N
Приклади
# Оновити deployment 'registry' новою змінною середовищаkubectl set env deployment/registry STORAGE_DIR=/local
# Вивести перелік змінних середовища, визначених в deployment 'sample-build'kubectl set env deployment/sample-build --list
# Вивести перелік змінних середовища, визначених у всіх podʼахkubectl set env pods --all --list
# Вивести змінений deployment у форматі YAML, не змінюючи обʼєкт на серверіkubectl set env deployment/sample-build STORAGE_DIR=/data -o yaml
# Оновити всі контейнери у всіх контролерах реплікації в проєкті, додавши змінну середовища ENV=prodkubectl set env rc --all ENV=prod
# Імпортувати змінні середовища з secretkubectl set env --from=secret/mysecret deployment/myapp
# Імпортувати змінні середовища з config map з префіксомkubectl set env --from=configmap/myconfigmap --prefix=MYSQL_ deployment/myapp
# Імпортувати конкретні ключі з config mapkubectl set env --keys=my-example-key --from=configmap/myconfigmap deployment/myapp
# Видалити змінну середовища ENV з контейнера 'c1' у всіх deploymentkubectl set env deployments --all --containers="c1" ENV-
# Видалити змінну середовища ENV з файлу визначення deployment на диску та# оновити конфігурацію deployment на серверіkubectl set env -f deploy.json ENV-
# Встановити деякі змінні середовища з локальної оболонки у конфігурацію deployment на серверіenv | grep RAILS_ | kubectl set env -e - deployment/registry
Параметри
--all
Якщо true, вибрати всі ресурси в просторі імен вказаних типів ресурсів
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
-c, --containers string Типово: "*"
Назви контейнерів у вибраних шаблонах pod для зміни, можна використовувати підстановочні знаки
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
-e, --env strings
Вкажіть пару ключ-значення для змінної оточення, яку потрібно встановити у кожному контейнері.
--field-manager string Типово: "kubectl-set"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс, для оновлення env.
--from string
Імʼя ресурсу, з якого потрібно підʼєднати змінні оточення.
-h, --help
Довідка env
--keys strings
Список ключів через кому для імпорту з вказаного ресурсу
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
--list
Якщо встановлено, виводити оточення та будь-які зміни у стандартному форматі. Цей прапорець буде вилучено, коли ми матимемо kubectl view env.
--local
Якщо значення true, set env НЕ звʼязуватиметься з api-serverʼом, а виконуватиметься локально.
Якщо true, дозволити перезапис оточення, інакше відхилити оновлення, які перезаписують існуюче оточення.
--prefix string
Префікс для додавання до імен змінних
-R, --recursive
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--resolve
Якщо true, показувати посилання на secret або configmap під час виведення списку змінних
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Дивіться також
kubectl set — встановлення певних властивостей для обʼєктів
11.3.39.2 - kubectl set image
Огляд
Оновити наявні образи контейнерів ресурсів.
Можливі ресурси включають (не чутливі до регістру):
kubectl set image (-f FILENAME | TYPE NAME)CONTAINER_NAME_1=CONTAINER_IMAGE_1 ... CONTAINER_NAME_N=CONTAINER_IMAGE_N
Приклади
# Встановити образ контейнера nginx в deployment як 'nginx:1.9.1', а образ контейнера busybox на 'busybox'kubectl set image deployment/nginx busybox=busybox nginx=nginx:1.9.1
# Оновити образ контейнера nginx у всіх deployment та контролерах реплікації на 'nginx:1.9.1'kubectl set image deployments,rc nginx=nginx:1.9.1 --all
# Оновити образи всіх контейнерів у daemonset 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
Параметри
--all
Якщо true, вибрати всі ресурси в просторі імен вказаних типів ресурсів
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-set"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс, для отримання ресурсів з сервера.
-h, --help
Довідка image
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
--local
Якщо значення true, set image НЕ звʼязуватиметься з api-serverʼом, а виконуватиметься локально.
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Дивіться також
kubectl set — встановлення певних властивостей для обʼєктів
11.3.39.3 - kubectl set resources
Огляд
Вказує вимоги до обчислювальних ресурсів (ЦП, памʼять) для будь-якого ресурсу, який визначає шаблон pod. Якщо pod успішно заплановано, йому гарантовано надається запитана кількість ресурсів, які він може використовувати до зазначених меж.
Для кожного обчислювального ресурсу, якщо межа вказана, а запит пропущено, стандартний запит буде дорівнювати межі.
Можливі ресурси включають (незалежно від регістру): Використовуйте "kubectl api-resources" для повного списку підтримуваних ресурсів.
kubectl set resources (-f FILENAME | TYPE NAME)([--limits=LIMITS & --requests=REQUESTS]
Приклади
# Встановити межі використання ЦП для контейнера nginx у deployment на "200m" та памʼяті на "512Mi"kubectl set resources deployment nginx -c=nginx --limits=cpu=200m,memory=512Mi
# Встановити запити та межі ресурсів для всіх контейнерів у deployment nginxkubectl set resources deployment nginx --limits=cpu=200m,memory=512Mi --requests=cpu=100m,memory=256Mi
# Видалити запити ресурсів для контейнерів у deployment nginxkubectl 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
Параметри
--all
Якщо true, вибрати всі ресурси в просторі імен вказаних типів ресурсів
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
-c, --containers string Типово: "*"
Назви контейнерів у вибраних шаблонах pod для зміни, стандартно вибрані всі контейнери, можна використовувати підстановочні знаки
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-set"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс, для отримання ресурсів з сервера.
-h, --help
Довідка resources
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
--limits string
Вимоги до ресурсів для цього контейнера. Наприклад, 'cpu=100m,memory=256Mi'. Зверніть увагу, що серверні компоненти можуть призначати запити залежно від конфігурації сервера, наприклад, граничних діапазонів.
--local
Якщо значення true, set resources НЕ звʼязуватиметься з api-serverʼом, а виконуватиметься локально.
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--requests string
Вимоги до ресурсів для цього контейнера. Наприклад, 'cpu=100m,memory=256Mi'. Зверніть увагу, що серверні компоненти можуть призначати запити залежно від конфігурації сервера, наприклад, граничних діапазонів.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Дивіться також
kubectl set — встановлення певних властивостей для обʼєктів
11.3.39.4 - kubectl set selector
Огляд
Встановити селектор на ресурс. Зауважте, що новий селектор замінить старий, якщо ресурс вже мав селектор перед викликом команди 'set selector'.
Селектор повинен починатися з літери або цифри та може містити літери, цифри, дефіси, крапки та підкреслення, до 63 символів. Якщо вказано --resource-version, оновлення використовуватимуть цю версію ресурсу, інакше використовуватиметься наявна версія ресурсу. Примітка: зараз селектори можна встановлювати лише на обʼєкти типу Service.
kubectl set selector (-f FILENAME | TYPE NAME) EXPRESSIONS [--resource-version=version]
Приклади
# Встановіть мітки і селектор перед створенням пари deployment/servicekubectl 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 -
Параметри
--all
Якщо true, вибрати всі ресурси в просторі імен вказаних типів ресурсів
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-set"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс.
-h, --help
Довідка selector
--local
Якщо значення true, анотація НЕ звʼязуватиметься з api-сервером, а виконуватиметься локально.
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--resource-version string
Якщо значення не порожнє, оновлення селекторів буде успішним, тільки якщо це поточна версія ресурсу для обʼєкта. Дійсно тільки при вказівці одного ресурсу.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Дивіться також
kubectl set — встановлення певних властивостей для обʼєктів
11.3.39.5 - kubectl set serviceaccount
Огляд
Оновлення службового облікового запису ресурсів шаблону pod.
Можливі ресурси (нечутливі до регістру) можуть бути такими:
kubectl set serviceaccount (-f FILENAME | TYPE NAME) SERVICE_ACCOUNT
Приклади
# Встановити службовий обліковий запис nginx-deployment у serviceaccount1kubectl set serviceaccount deployment nginx-deployment serviceaccount1
# Вивести результат (у форматі YAML) оновленого deployment nginx з службовим обліковим записом з локального файлу, не звертаючись до сервера APIkubectl set sa -f nginx-deployment.yaml serviceaccount1 --local --dry-run=client -o yaml
Параметри
--all
Якщо true, вибрати всі ресурси в просторі імен вказаних типів ресурсів
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-set"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурс для отримання з сервера.
-h, --help
Довідка serviceaccount
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
--local
Якщо значення true, set serviceaccount НЕ звʼязуватиметься з api-сервером, а виконуватиметься локально.
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Дивіться також
kubectl set — встановлення певних властивостей для обʼєктів
11.3.39.6 - kubectl set subject
Огляд
Оновлює user, group або service account в обʼєкті RoleBinding або ClusterRoleBinding.
kubectl set subject (-f FILENAME | TYPE NAME)[--user=username][--group=groupname][--serviceaccount=namespace:serviceaccountname][--dry-run=server|client|none]
Приклади
# Оновлення привʼязки кластерних ролей для serviceaccount1kubectl set subject clusterrolebinding admin --serviceaccount=namespace:serviceaccount1
# Оновлення привʼязки ролей для user1, user2 і group1kubectl set subject rolebinding admin --user=user1 --user=user2 --group=group1
# Вивести результат (у форматі YAML) оновлення субʼєктів привʼязки ролей локально, без звернення до сервераkubectl create rolebinding admin --role=admin --user=admin -o yaml --dry-run=client | kubectl set subject --local -f - --user=foo -o yaml
Параметри
--all
Якщо true, вибрати всі ресурси в просторі імен вказаних типів ресурсів
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-set"
Імʼя менеджера, що використовується для відстеження права власності на поле.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурси для оновлення.
--group strings
Групи для привʼязки до ролі.
-h, --help
Довідка subject
-k, --kustomize string
Обробити теку kustomization. Цей прапорець не можна використовувати разом з -f або -R.
--local
Якщо значення true, set subject НЕ звʼязуватиметься з api-сервером, а виконуватиметься локально.
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--serviceaccount strings
Службові облікові записи для привʼязки до ролі.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--user strings
Імена користувачів для привʼязки до ролі.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Дивіться також
kubectl set — встановлення певних властивостей для обʼєктів
11.3.40 - kubectl taint
Огляд
Оновлення taint на одному або декількох вузлах.
Taint складається з ключа, значення та ефекту. Як аргумент тут він має вигляд ключ=значення:ефект.
Ключ повинен починатися з літери або цифри і може містити літери, цифри, дефіси, крапки і підкреслення, до 253 символів.
За бажанням, ключ може починатися з префікса субдомену DNS і одного символу "/", наприклад, example.com/my-app.
Значення не є обовʼязковим. Якщо вказано, воно повинно починатися з літери або цифри і може містити літери, цифри, дефіси, крапки та символи підкреслення (до 63 символів).
Ефект має бути NoSchedule, PreferNoSchedule або NoExecute.
Наразі taint може бути застосовано лише до вузла.
kubectl taint NODE NAME KEY_1=VAL_1:TAINT_EFFECT_1 ... KEY_N=VAL_N:TAINT_EFFECT_N
Приклади
# Оновити вузол 'foo', додавши taint з ключем 'dedicated', значенням 'special-user' та ефектом 'NoSchedule'# Якщо taint з цим ключем та ефектом вже існує, його значення буде замінено на вказанеkubectl taint nodes foo dedicated=special-user:NoSchedule
# Видалити з вузла 'foo' taint з ключем 'dedicated' та ефектом 'NoSchedule', якщо він існуєkubectl taint nodes foo dedicated:NoSchedule-
# Видалити з вузла 'foo' всі taint з ключем 'dedicated'kubectl taint nodes foo dedicated-
# Додати taint з ключем 'dedicated' на вузли, що мають мітку myLabel=Xkubectl taint node -l myLabel=X dedicated=foo:PreferNoSchedule
# Додати до вузла 'foo' taint з ключем 'bar' без значенняkubectl taint nodes foo bar:NoSchedule
Параметри
--all
Вибрати всі вузли в кластері
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
--field-manager string Типово: "kubectl-taint"
Імʼя менеджера, що використовується для відстеження права власності на поле.
Якщо true, дозволити перезапис taint, інакше відхиляти оновлення taint, які перезаписують наявні taint.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--validate string[="strict"] Типово: "strict"
Повинно бути одним із: strict (або true), warn, ignore (або false). "true" або "strict" буде використовувати схему для перевірки вводу і відхилятиме запит, якщо він невірний. Буде виконана перевірка на стороні сервера, якщо ServerSideFieldValidation увімкнено на api-server, але якщо ні, то повернеться до менш надійної перевірки на стороні клієнта. "warn" попередить про невідомі або повторювані поля, не блокуючи запит, якщо на боці сервера API увімкнено перевірку полів, і буде поводитися як " ignore" у протилежному випадку. "false" або "ignore" не виконуватимуть жодної перевірки схеми, мовчки відкидаючі будь-які невідомі або дубльовані поля.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Команда top дозволяє вам спостерігати за використанням ресурсів вузлами та Podʼами.
Ця команда вимагає наявності працюючого та налаштованого Metrics Server в кластері.
kubectl top [flags]
Параметри
-h, --help
Довідка top
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
kubectl top node — Показати використання ресурсів (процесор/памʼять) вузлами
kubectl top pod — Показувати використання ресурсів (процесора/памʼять) Podʼами
11.3.41.1 - kubectl top node
Огляд
Показати використання ресурсів (процесор/памʼять) вузлами.
Команда top-node дозволяє переглядати використання ресурсів вузлами кластера.
kubectl top node [NAME | -l label]
Приклади
# Показати метріки для всіх вузлівShow metrics for all nodeskubectl top node
# Показати метріки для вузла NODE_NAMEkubectl top node NODE_NAME
Параметри
-h, --help
Довідка node
--no-headers
Якщо присутній, то виводити без заголовків.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--show-capacity
Вивести ресурси вузлів на основі Capacity замість Allocatable (стандартно) для вузлів.
--sort-by string
Якщо поле не порожнє, відсортувати список ресурсів за вказаним полем. Поле може мати значення 'cpu' або 'memory'.
--use-protocol-buffers Типово: true
Дозволяє використовувати протокол-буфери для доступу до API Metrics.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Дивіться також
kubectl top — Показ використання ресурсів (CPU/памʼять)
11.3.41.2 - kubectl top pod
Огляд
Показувати використання ресурсів (процесора/памʼять) pod'ами
Команда 'top pod' дозволяє вам переглядати використання ресурсів (процесора/памʼяті) podʼами.
Через затримку конвеєра метрик, вони можуть бути недоступні протягом декількох хвилин з моменту створення podʼів.
kubectl top pod [NAME | -l label]
Приклади
# Показати метрики для всіх podʼів у стандартному просторі іменkubectl top pod
# Показати метрики для всіх podʼів у вказаному просторі іменkubectl top pod --namespace=NAMESPACE
# Показати метрики для вказаного podʼа та його контейнерівkubectl top pod POD_NAME --containers
# Показати метрики для podʼів, визначених міткою name=myLabelkubectl top pod -l name=myLabel
Параметри
-A, --all-namespaces
Якщо вказано, вивести перелік запитуваних обʼєктів у всіх просторах назв. Простір назв у поточному контексті ігнорується, навіть якщо вказано --namespace.
--containers
Якщо є, показати використання контейнерів в межах pod.
--field-selector string
Селектор (запит поля) для фільтрації підтримує '=', '==' і '!=' (наприклад, --field-selector key1=value1,key2=value2). Сервер підтримує лише обмежену кількість запитів до полів кожного типу.
-h, --help
Довідка pod
--no-headers
Якщо присутній, то виводити без заголовків.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--sort-by string
Якщо поле не порожнє, відсортувати список ресурсів за вказаним полем. Поле може мати значення 'cpu' або 'memory'.
--sum
Вивести сумарне використання ресурсів
--use-protocol-buffers Типово: true
Дозволяє використовувати протокол-буфери для доступу до API Metrics.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Дивіться також
kubectl top — Показ використання ресурсів (CPU/памʼять)
11.3.42 - kubectl uncordon
Огляд
Позначає вузол як готовий для планування.
kubectl uncordon NODE
Приклади
# Позначити вузол "foo" як готовий для плануванняkubectl uncordon foo
Параметри
--dry-run string[="unchanged"] Типово: "none"
Має бути "none", "server" або "client". Якщо це стратегія client, вивести лише обʼєкт, який міг би бути надісланим, не надсилаючи його. Якщо це стратегія server, надіслати запит на стороні сервера без збереження ресурсу.
-h, --help
Довідка uncordon
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Вивести інформацію про версії клієнта та сервера для поточного контексту.
kubectl version [flags]
Приклади
# Вивести версії клієнта та сервера для поточного контекстуkubectl version
Параметри
--client
Якщо true, показує лише клієнтську версію (server не вимагається).
-h, --help
Довідка version
-o, --output string
Формат виводу. Один з: (json, yaml).
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Експериментально: Очікувати на певний стан одного чи кількох ресурсів.
Команда бере кілька ресурсів і чекає, доки у полі стану кожного з них не зʼявиться вказана умова.
Крім того, команда може чекати на створення або видалення заданого набору ресурсів, вказавши ключове слово "create" чи "delete" як значення прапорця --for.
Успішне повідомлення буде виведено у stdout із зазначенням того, що вказану умову було виконано. Ви можете скористатися опцією -o, щоб змінити місце виведення.
# Очікувати, поки Pod "busybox1" не міститиме умови статусу типу "Ready"kubectl wait --for=condition=Ready pod/busybox1
# Типове значення умови статусу є true; ви можете очікувати на інші значення після знаку рівності (порівнюється після простого складання Unicode, яке є загальнішою формою нечутливості до регістру)kubectl wait --for=condition=Ready=false pod/busybox1
# Очікувати, поки Pod "busybox1" не міститиме фази статусу "Running"kubectl wait --for=jsonpath='{.status.phase}'=Running pod/busybox1
# Очікувати, поки Pod "busybox1" не буде в стані Readykubectl wait --for='jsonpath={.status.conditions[?(@.type=="Ready")].status}=True' pod/busybox1
# Очікувати, поки сервіс "loadbalancer" не матиме ingresskubectl wait --for=jsonpath='{.status.loadBalancer.ingress}' service/loadbalancer
# Очікувати створення секретного "busybox1" з таймаутом у 30сkubectl create secret generic busybox1
kubectl wait --for=create secret/busybox1 --timeout=30s
# Очікувати, поки Pod "busybox1" не буде видалено, з таймаутом 60с, після виконання команди "delete"kubectl delete pod/busybox1
kubectl wait --for=delete pod/busybox1 --timeout=60s
Параметри
--all
Якщо true, вибрати всі ресурси в просторі імен вказаних типів ресурсів
-A, --all-namespaces
Якщо вказано, вивести перелік запитуваних обʼєктів у всіх просторах імен. Простір імен у поточному контексті ігнорується, навіть якщо вказано --namespace.
--allow-missing-template-keys Типово: true
Якщо true, ігнорувати будь-які помилки в шаблонах, коли в шаблоні відсутнє поле або ключ map. Застосовується лише до форматів виводу golang та jsonpath.
--field-selector string
Селектор (запит поля) для фільтрації підтримує '=', '==' і '!=' (наприклад, --field-selector key1=value1,key2=value2). Сервер підтримує лише обмежену кількість запитів до полів кожного типу.
-f, --filename strings
Імʼя файлу, теки або URL до файлів, що ідентифікують ресурси.
--for string
Умова для очікування: [create|delete|condition=condition-name[=condition-value]|jsonpath='{JSONPath expression}'=[JSONPath value]]. Стандартне значення condition-value дорівнює true. Значення умови порівнюються після простого згортання регістру Unicode, що є більш загальною формою нечутливості до регістру.
-h, --help
Довідка wait
--local
Якщо значення true, НЕ звʼязуватиметься з api-сервером, а виконуватиметься локально.
Рекурсивно обробити теку, вказану у -f, --filename. Корисно, якщо ви хочете керувати повʼязаними маніфестами, організованими в одній теці.
-l, --selector string
Селектор (запит на мітки) для фільтрації, що підтримує '=', '==' і '!=' (наприклад, -l key1=value1,key2=value2). Обʼєкти, щоб мати збіг, повинні задовольняти усім зазначеним обмеженням міток.
--show-managed-fields
Якщо true, зберігати managedFields при виводі обʼєктів у форматі JSON або YAML.
--template string
Рядок шаблону або шлях до файлу шаблону для використання з -o=go-template, -o=go-template-file. Формат шаблону — golang-шаблони [http://golang.org/pkg/text/template/#pkg-overview].
--timeout duration Типово: 30s
Час очікування перед прийнятям рішення про відмову видалення, нуль означає визначення тайм-ауту за розміром обʼєкту
Параметри батьківських команд
--as string
Імʼя користувача, яке використовується для виконання операції. Користувач може бути звичайним користувачем або службовим обліковим записом в просторі імен.
--as-group strings
Група, яка використовується для операції; цей прапорець можна повторити для вказівки декількох груп.
--as-uid string
UID, який використовується для операції.
--cache-dir string Типово: "$HOME/.kube/cache"
Типове розташування теки кешу
--certificate-authority string
Шлях до файлу сертифіката для центра сертифікації
--client-certificate string
Шлях до файлу клієнтського сертифіката для TLS
--client-key string
Шлях до файлу ключа клієнта для TLS
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--disable-compression
Якщо true, відмовляється від стиснення відповіді для всіх запитів до сервера
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
--version version[=true]
--version, --version=raw виводить інформацію про версію та завершує роботу; --version=vX.Y.Z... задає відповідну версію
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
CIDR, відкриті в фаєврволі GCE для трафіку L4 LB та перевірок стану
--cluster string
Назва файлу kubeconfig кластера, який слід використовувати
--context string
Назва контексту kubeconfig, який слід використовувати
--default-not-ready-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration notReady:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Вказує tolerationSeconds для toleration unreachable:NoExecute, який типово додається до кожного Pod, який ще не має такої толерантності.
-h, --help
Довідка kubectl
--insecure-skip-tls-verify
Якщо true, сертифікат сервера не буде перевірятися на дійсність. Це зробить ваші HTTPS-зʼєднання небезпечними
--kubeconfig string
Шлях до файлу kubeconfig, який слід використовувати для CLI-запитів.
--log-backtrace-at traceLocation Default: :0
коли логування попадаж в рядок file:N, видавати trace стека
--log-dir string
Якщо не порожньо, записати лог-файли в цю теку
--log-file string
Якщо не порожньо, використовувати цей файл
--log-file-max-size uint Типово: 1800
Визначає максимальний розмір, до якого може вирости файл логу. Одиниця виміру — мегабайти. Якщо значення дорівнює 0, максимальний розмір файлу необмежений.
--log-flush-frequency duration Типово: 5s
Максимальна кількість секунд між очищеннями журналу
--logtostderr Типово: true
писати лог в standard error, а не у файл
--match-server-version
Вимагає, щоб версія сервера відповідала версії клієнта
-n, --namespace string
Якщо присутній, простір імен для цього CLI-запиту
--one-output
Якщо true, записувати логи лише до їхнього власного рівня важливості (замість того, щоб записувати до кожного нижчого рівня важливості)
--password string
Пароль для базової автентифікації на API-сервері
--profile string Типово: "none"
Імʼя профілю для захоплення. Одне із (none|cpu|heap|goroutine|threadcreate|block|mutex)
--profile-output string Типово: "profile.pprof"
Імʼя файлу, в який записується профіль
--request-timeout string Типово: "0"
Час очікування перед відмовою у виконанні окремого запиту до сервера. Ненульові значення повинні містити відповідну одиницю часу (наприклад, 1s, 2m, 3h). Значення нуль означає відсутність тайм-ауту запитів.
-s, --server string
Адреса та порт сервера API Kubernetes
--skip-headers
Якщо true, уникати префіксів заголовків у повідомленнях логу
--skip-log-headers
Якщо true, уникати заголовків при відкритті файлів логів
--stderrthreshold severity Типово: 2
логи, що дорівнюють або перевищують цей поріг, потрапляють до stderr
--tls-server-name string
Імʼя сервера, яке використовується для перевірки дійсності сертифіката сервера. Якщо воно не надане, використовується імʼя хоста, яке використовується для звʼязку з сервером
--token string
Токен на предʼявника для автентифікації на API-сервері
--user string
Імʼя користувача kubeconfig, яке слід використовувати
--username string
Імʼя користувача для базової автентифікації на API-сервері
-v, --v Level
число рівня повноти записів логу
--version version[=true]
Вивести інформацію про версію та вийти
--vmodule moduleSpec
список параметрів pattern=N, розділених комами, для файл-фільтрованого логування.
--warnings-as-errors
Трактувати попередження, отримані від сервера, як помилки і виходити з ненульовим кодом виходу
Змінні оточення
KUBECONFIG
Шлях до файлу конфігурації kubectl ("kubeconfig"). Типово: "$HOME/.kube/config"
KUBECTL_COMMAND_HEADERS
Якщо встановлено false, вимикає додаткові HTTP заголовки, що деталізують виконану команду kubectl (версія Kubernetes v1.22 або пізніше)
KUBECTL_EXPLAIN_OPENAPIV3
Вмикає чи вимикає використання нового джерела даних OpenAPIv3 для викликів `kubectl explain`. OpenAPIV3 типово увімкнено з версії Kubernetes 1.24.
KUBECTL_ENABLE_CMD_SHADOW
Якщо встановлено true, зовнішні втулки можна використовувати як субкоманди для вбудованих команд, якщо субкоманда не існує. На альфа-стадії ця функція може бути використана лише для команди create (наприклад, kubectl create networkpolicy).
KUBECTL_PORT_FORWARD_WEBSOCKETS
Якщо встановлено true, команда kubectl port-forward спробує передавати дані, використовуючи протокол веб-сокетів. Якщо перехід до веб-сокетів не вдасться, команди повернуться до використання поточного протоколу SPDY.
KUBECTL_REMOTE_COMMAND_WEBSOCKETS
Якщо встановлено true, команди kubectl exec, cp та attach спробують передавати дані, використовуючи протокол веб-сокетів. Якщо перехід до веб-сокетів не вдасться, команди повернуться до використання поточного протоколу SPDY.
kubectl version — Вивести інформацію про клієнтську та серверну версії
kubectl wait — Експериментально: Чекати на конкретну умову для одного або кількох ресурсів
11.6 - Підтримка JSONPath
Kubectl підтримує шаблони JSONPath.
Шаблон JSONPath складається з виразів JSONPath, які заключені в фігурні дужки {}. Kubectl використовує вирази JSONPath для фільтрації конкретних полів у JSON-обʼєкті та форматування виводу. Окрім оригінального синтаксису шаблону JSONPath, дійсні наступні функції та синтаксис:
Використовуйте подвійні лапки для цитування тексту всередині виразів JSONPath.
Використовуйте оператори range, end для ітерації списків.
Використовуйте відʼємні індекси зрізу для кроку назад через список. Відʼємні індекси не "обгортають" список і є дійсними, поки -index + listLength >= 0.
Примітка:
Оператор $ є необовʼязковим, оскільки вираз завжди починається стандартно з обʼєкта кореня.
Результат обʼєкта виводиться як його функція String().
Приклади використання kubectl та виразів JSONPath:
kubectl get pods -o json
kubectl get pods -o=jsonpath='{@}'kubectl get pods -o=jsonpath='{.items[0]}'kubectl get pods -o=jsonpath='{.items[0].metadata.name}'kubectl get pods -o=jsonpath="{.items[*]['metadata.name', 'status.capacity']}"kubectl get pods -o=jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.startTime}{"\n"}{end}'kubectl get pods -o=jsonpath='{.items[0].metadata.labels.kubernetes\.io/hostname}'
Примітка:
У Windows потрібно подвійні лапки для будь-якого шаблону JSONPath, що містить пробіли (не одинарні лапки, як показано вище для bash). Це означає, що потрібно використовувати одинарні лапки або екрановані подвійні лапки для будь-яких літералів у шаблоні. Наприклад:
kubectl get pods -o=jsonpath="{range .items[*]}{.metadata.name}{'\t'}{.status.startTime}{'\n'}{end}"kubectl get pods -o=jsonpath="{range .items[*]}{.metadata.name}{\"\t\"}{.status.startTime}{\"\n\"}{end}"
Примітка:
JSONPath регулярні вирази не підтримуються. Якщо ви хочете використовувати регулярні вирази, ви можете скористатися інструментом, таким як jq.
# kubectl не підтримує регулярні вирази для JSONpath виводу# Наступна команда не працюєkubectl get pods -o jsonpath='{.items[?(@.metadata.name=~/^test$/)].metadata.name}'# Наступна команда досягає бажаного результатуkubectl get pods -o json | jq -r '.items[] | select(.metadata.name | test("test-")).metadata.name'
11.7 - kubectl для користувачів Docker
Ви можете використовувати інструмент командного рядка Kubernetes kubectl для взаємодії з сервером API. Використання kubectl є простим, якщо ви знайомі з інструментом командного рядка Docker. Однак, існує декілька відмінностей між командами Docker і командами kubectl. У наступних розділах показано субкоманду Docker та опис еквівалентної команди kubectl.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
55c103fa1296 nginx "nginx -g 'daemon of…" 9 seconds ago Up 9 seconds 0.0.0.0:80->80/tcp nginx-app
kubectl:
# запуск pod з nginxkubectl create deployment --image=nginx nginx-app
deployment.apps/nginx-app created
# додати env до nginx-appkubectl set env deployment/nginx-app DOMAIN=cluster
deployment.apps/nginx-app env updated
Примітка:
Команди kubectl виводять тип і назву створеного або зміненого ресурсу, які потім можна використовувати у наступних командах. Ви можете експонувати новий Service після створення Deployment.
# експонування порта через servicekubectl expose deployment nginx-app --port=80 --name=nginx-http
service "nginx-http" exposed
За допомогою kubectl ви можете створити Deployment, щоб переконатися, що N Podʼів працюють під управлінням nginx, де N — це кількість реплік, вказана у специфікації, типово дорівнює 1. Ви також можете створити Service з селектором, який відповідає міткам Podʼів. Докладні відомості наведено у статті Використання Service для доступу до застосунку у кластері.
Стандартно образи запускаються у фоновому режимі, подібно до docker run -d .... Щоб запустити щось на передньому плані, скористайтеся kubectl run для створення Pod:
kubectl run [-i][--tty] --attach <name> --image=<image>
На відміну від docker run ..., якщо ви вкажете --attach, то приєднаєте stdin, stdout і stderr. Ви не можете контролювати, які саме потоки буде приєднано (docker -a ...). Щоб відʼєднатися від контейнера, ви можете використатись комбінацією клавіш Ctrl+P, а потім Ctrl+Q.
docker ps
Для виводу переліку того, що працює, скористайтеся командою kubectl get:
docker:
docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
14636241935f ubuntu:16.04 "echo test" 5 seconds ago Exited (0) 5 seconds ago cocky_fermi
55c103fa1296 nginx "nginx -g 'daemon of…" About a minute ago Up About a minute 0.0.0.0:80->80/tcp nginx-app
kubectl:
kubectl get po
NAME READY STATUS RESTARTS AGE
nginx-app-8df569cb7-4gd89 1/1 Running 0 3m
ubuntu 0/1 Completed 0 20s
docker attach
Щоб приєднати процес, який вже запущено у контейнері, див. kubectl attach.
docker:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
55c103fa1296 nginx "nginx -g 'daemon of…" 5 minutes ago Up 5 minutes 0.0.0.0:80->80/tcp nginx-app
docker attach 55c103fa1296
...
kubectl:
kubectl get pods
NAME READY STATUS RESTARTS AGE
nginx-app-5jyvm 1/1 Running 0 10m
kubectl attach -it nginx-app-5jyvm
...
Щоб відʼєднатися від контейнера, ви можете скористатись комбінацією клавіш Ctrl+P, а потім Ctrl+Q.
docker exec
Щоб виконати команду у контейнері, див. kubectl exec.
docker:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
55c103fa1296 nginx "nginx -g 'daemon of…" 6 minutes ago Up 6 minutes 0.0.0.0:80->80/tcp nginx-app
docker exec 55c103fa1296 cat /etc/hostname
55c103fa1296
kubectl:
kubectl get po
NAME READY STATUS RESTARTS AGE
nginx-app-5jyvm 1/1 Running 0 10m
Існує невелика різниця між Podʼами та контейнерами; стандартно Podʼи не завершують роботу, якщо їхні процеси завершуються. Замість цього вони перезапускають процес. Це схоже на параметр запуску docker --restart=always з однією суттєвою відмінністю. У docker вивід для кожного виклику процесу обʼєднується, а у Kubernetes кожен виклик є окремим. Щоб переглянути результати попереднього запуску у Kubernetes, зробіть так:
Щоб зупинити і видалити запущений процес, див. kubectl delete.
docker:
docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a9ec34d98787 nginx "nginx -g 'daemon of" 22 hours ago Up 22 hours 0.0.0.0:80->80/tcp, 443/tcp nginx-app
docker stop a9ec34d98787
a9ec34d98787
docker rm a9ec34d98787
a9ec34d98787
kubectl:
kubectl get deployment nginx-app
NAME READY UP-TO-DATE AVAILABLE AGE
nginx-app 1/1 1 1 2m
kubectl get po -l app=nginx-app
NAME READY STATUS RESTARTS AGE
nginx-app-2883164633-aklf7 1/1 Running 0 2m
kubectl delete deployment nginx-app
deployment "nginx-app" deleted
kubectl get po -l app=nginx-app
# Нічого не повертає
Примітка:
Якщо ви використовуєте kubectl, ви не можете видалити безпосередньо сам pod. Спочатку слід вилучити Deployment, якому належить цей pod. Якщо ви видалите безпосередньо сам Pod, то у Deployment буде перестворено цей Pod.
docker login
У kubectl немає прямого аналога docker login. Якщо вас цікавить використання Kubernetes з приватним реєстром, див. Використання приватного реєстру.
docker version
Щоб отримати версії клієнта і сервера, див. kubectl version.
docker:
docker version
Client version: 1.7.0
Client API version: 1.19
Go version (client): go1.4.2
Git commit (client): 0baf609
OS/Arch (client): linux/amd64
Server version: 1.7.0
Server API version: 1.19
Go version (server): go1.4.2
Git commit (server): 0baf609
OS/Arch (server): linux/amd64
Kubernetes master is running at https://203.0.113.141
KubeDNS is running at https://203.0.113.141/api/v1/namespaces/kube-system/services/kube-dns/proxy
kubernetes-dashboard is running at https://203.0.113.141/api/v1/namespaces/kube-system/services/kubernetes-dashboard/proxy
Grafana is running at https://203.0.113.141/api/v1/namespaces/kube-system/services/monitoring-grafana/proxy
Heapster is running at https://203.0.113.141/api/v1/namespaces/kube-system/services/monitoring-heapster/proxy
InfluxDB is running at https://203.0.113.141/api/v1/namespaces/kube-system/services/monitoring-influxdb/proxy
11.8 - Правила використання kubectl
Рекомендовані правила використання kubectl.
Використання kubectl у багаторазових скриптах
Для стабільного виводу у скрипті:
Використовуйте одну з машинно-орієнтованих форм виводу, таких як -o name, -o json, -o yaml, -o go-template, або -o jsonpath.
Повністю вказуйте версію. Наприклад, jobs.v1.batch/myjob. Це гарантує, що kubectl не використовуватиме свою стандартну версію, яка може змінюватися з часом.
Не покладайтеся на контекст, налаштування або інші неявні стани.
Субресурси
Ви можете використовувати бета-прапорець --subresource для команд kubectl, таких як get, patch, edit та replace для отримання та оновлення субресурсів для всіх ресурсів, які їх підтримують. На цей момент підтримуються лише субресурси status та scale.
Для kubectl edit, субресурс scale не підтримується. Якщо ви використовуєте --subresource з kubectl edit і вказуєте scale як субресурс, команда викличе помилку.
Контракт API для субресурсу ідентичний до повного ресурсу. Оновлюючи субресурс status до нового значення, майте на увазі, що субресурс може бути потенційно узгоджений контролером до іншого значення.
Рекомендації
kubectl run
Для того, щоб kubectl run відповідав принципу інфраструктури як код:
Присвойте образу версію зі специфічним теґом і не переносіть цей теґ на нову версію. Наприклад, використовуйте :v1234, v1.2.3, r03062016-1-4, а не :latest (Для отримання додаткової інформації дивіться Поради щодо конфігурації).
Перевірте в скрипті наявність образу з великою кількістю параметрів.
Перейдіть до файлів конфігурації, перевірених у контролі вихідного коду, для отримання можливостей, які є необхідними, але не можуть бути виражені за допомогою прапорців kubectl run.
Ви можете використовувати прапорець --dry-run=client, щоб переглянути обʼєкт, який буде відправлений до вашого кластера, без реального його надсилання.
kubectl apply
Ви можете використовувати kubectl apply для створення або оновлення ресурсів. Для отримання додаткової інформації про використання kubectl apply для оновлення ресурсів, дивіться Kubectl Book.
12 - Компоненти інструментів
12.1 - Функціональні можливості
Ця сторінка містить огляд різних функціональних можливостей, які адміністратор може вказати для різних компонентів Kubernetes.
Функціональні можливості — це набір пар ключ=значення, які описують функції Kubernetes. Ви можете увімкнути або вимкнути ці функції, використовуючи прапорець командного рядка --feature-gates на кожному компоненті Kubernetes.
Кожен компонент Kubernetes дозволяє вам увімкнути або вимкнути набір функціональних можливостей, які стосуються цього компонента. Використовуйте прапорець -h, щоб побачити повний набір функціональних можливостей для всіх компонентів. Щоб встановити функціональні можливості для компонента, такого як kubelet, використовуйте прапорець --feature-gates, призначений для списку пар функцій:
--feature-gates=...,GracefulNodeShutdown=true
Наступні таблиці є підсумком функціональних можливостей, які ви можете встановити на різних компонентах Kubernetes.
Стовпець "З версії" містить випуск Kubernetes, коли функція вперше введена або змінено її стадію випуску.
Стовпець "До" містить останній випуск Kubernetes, в якому ви все ще можете використовувати функціональну можливість.
Функціональні можливості для функцій Alpha або Beta
Функціональні можливості для функцій у стані Alpha або Beta
Властивість
Стандартно
Стадія
Починаючи з
До
AllowUnsafeMalformedObjectDeletion
false
Alpha
1.32
–
AnonymousAuthConfigurableEndpoints
false
Alpha
1.31
1.31
AnonymousAuthConfigurableEndpoints
true
Beta
1.32
–
AnyVolumeDataSource
false
Alpha
1.18
1.23
AnyVolumeDataSource
true
Beta
1.24
–
APIResponseCompression
false
Alpha
1.7
1.15
APIResponseCompression
true
Beta
1.16
–
APIServerIdentity
false
Alpha
1.20
1.25
APIServerIdentity
true
Beta
1.26
–
APIServerTracing
false
Alpha
1.22
1.26
APIServerTracing
true
Beta
1.27
–
AuthorizeNodeWithSelectors
false
Alpha
1.31
1.31
AuthorizeNodeWithSelectors
true
Beta
1.32
–
AuthorizeWithSelectors
false
Alpha
1.31
1.31
AuthorizeWithSelectors
true
Beta
1.32
–
CBORServingAndStorage
false
Alpha
1.32
–
CloudControllerManagerWebhook
false
Alpha
1.27
–
ClusterTrustBundle
false
Alpha
1.27
–
ClusterTrustBundleProjection
false
Alpha
1.29
–
ComponentFlagz
false
Alpha
1.32
–
ComponentSLIs
false
Alpha
1.26
1.26
ComponentSLIs
true
Beta
1.27
–
ComponentStatusz
false
Alpha
1.32
–
ConcurrentWatchObjectDecode
false
Beta
1.31
–
ConsistentListFromCache
false
Alpha
1.28
1.30
ConsistentListFromCache
true
Beta
1.31
–
ContainerCheckpoint
false
Alpha
1.25
1.29
ContainerCheckpoint
true
Beta
1.30
–
ContextualLogging
false
Alpha
1.24
–
ContextualLogging
true
Beta
1.30
–
CoordinatedLeaderElection
false
Alpha
1.31
–
CPUManagerPolicyAlphaOptions
false
Alpha
1.23
–
CPUManagerPolicyBetaOptions
true
Beta
1.23
–
CPUManagerPolicyOptions
false
Alpha
1.22
1.22
CPUManagerPolicyOptions
true
Beta
1.23
–
CRDValidationRatcheting
false
Alpha
1.28
1.29
CRDValidationRatcheting
true
Beta
1.30
–
CrossNamespaceVolumeDataSource
false
Alpha
1.26
–
CSIMigrationPortworx
false
Alpha
1.23
1.24
CSIMigrationPortworx
false
Beta
1.25
1.30
CSIMigrationPortworx
true
Beta
1.31
–
CSIVolumeHealth
false
Alpha
1.21
–
CustomCPUCFSQuotaPeriod
false
Alpha
1.12
–
DisableAllocatorDualWrite
false
Alpha
1.31
–
DisableNodeKubeProxyVersion
false
Alpha
1.29
1.30
DisableNodeKubeProxyVersion
true
Beta
1.31
–
DRAAdminAccess
false
Alpha
1.32
–
DRAResourceClaimDeviceStatus
false
Alpha
1.32
–
DynamicResourceAllocation
false
Alpha
1.30
1.31
DynamicResourceAllocation
false
Beta
1.32
–
EventedPLEG
false
Alpha
1.25
–
ExternalServiceAccountTokenSigner
false
Alpha
1.32
–
GracefulNodeShutdown
false
Alpha
1.20
1.20
GracefulNodeShutdown
true
Beta
1.21
–
GracefulNodeShutdownBasedOnPodPriority
false
Alpha
1.23
1.23
GracefulNodeShutdownBasedOnPodPriority
true
Beta
1.24
–
HonorPVReclaimPolicy
false
Alpha
1.23
1.30
HonorPVReclaimPolicy
true
Beta
1.31
–
HPAScaleToZero
false
Alpha
1.16
–
ImageMaximumGCAge
false
Alpha
1.29
1.29
ImageMaximumGCAge
true
Beta
1.30
–
ImageVolume
false
Alpha
1.31
–
InPlacePodVerticalScaling
false
Alpha
1.27
–
InTreePluginPortworxUnregister
false
Alpha
1.23
–
JobBackoffLimitPerIndex
false
Alpha
1.28
1.28
JobBackoffLimitPerIndex
true
Beta
1.29
–
JobManagedBy
false
Alpha
1.30
1.31
JobManagedBy
false
Beta
1.32
–
JobPodReplacementPolicy
false
Alpha
1.28
1.28
JobPodReplacementPolicy
true
Beta
1.29
–
JobSuccessPolicy
false
Alpha
1.30
1.30
JobSuccessPolicy
true
Beta
1.31
–
KubeletCgroupDriverFromCRI
false
Alpha
1.28
1.30
KubeletCgroupDriverFromCRI
true
Beta
1.31
–
KubeletCrashLoopBackOffMax
false
Alpha
1.32
–
KubeletFineGrainedAuthz
false
Alpha
1.32
–
KubeletInUserNamespace
false
Alpha
1.22
–
KubeletPodResourcesDynamicResources
false
Alpha
1.27
–
KubeletPodResourcesDynamicResources
false
Alpha
1.27
–
KubeletPodResourcesGet
false
Alpha
1.27
–
KubeletSeparateDiskGC
false
Alpha
1.29
1.30
KubeletSeparateDiskGC
true
Beta
1.31
–
KubeletTracing
false
Alpha
1.25
1.26
KubeletTracing
true
Beta
1.27
–
LocalStorageCapacityIsolationFSQuotaMonitoring
false
Alpha
1.15
1.30
LocalStorageCapacityIsolationFSQuotaMonitoring
false
Beta
1.31
–
LoggingAlphaOptions
false
Alpha
1.24
–
LoggingBetaOptions
true
Beta
1.24
–
MatchLabelKeysInPodAffinity
false
Alpha
1.29
1.30
MatchLabelKeysInPodAffinity
true
Beta
1.31
–
MatchLabelKeysInPodTopologySpread
false
Alpha
1.25
1.26
MatchLabelKeysInPodTopologySpread
true
Beta
1.27
–
MaxUnavailableStatefulSet
false
Alpha
1.24
–
MemoryQoS
false
Alpha
1.22
–
MultiCIDRServiceAllocator
false
Alpha
1.27
1.30
MultiCIDRServiceAllocator
false
Beta
1.31
–
MutatingAdmissionPolicy
false
Alpha
1.30
–
NFTablesProxyMode
false
Alpha
1.29
1.30
NFTablesProxyMode
true
Beta
1.31
–
NodeInclusionPolicyInPodTopologySpread
false
Alpha
1.25
1.25
NodeInclusionPolicyInPodTopologySpread
true
Beta
1.26
–
NodeLogQuery
false
Alpha
1.27
1.29
NodeLogQuery
false
Beta
1.30
–
NodeSwap
false
Alpha
1.22
1.27
NodeSwap
false
Beta
1.28
1.29
NodeSwap
true
Beta
1.30
–
OpenAPIEnums
false
Alpha
1.23
1.23
OpenAPIEnums
true
Beta
1.24
–
PodAndContainerStatsFromCRI
false
Alpha
1.23
–
PodDeletionCost
false
Alpha
1.21
1.21
PodDeletionCost
true
Beta
1.22
–
PodLevelResources
false
Alpha
1.32
–
PodLifecycleSleepAction
false
Alpha
1.29
1.29
PodLifecycleSleepAction
true
Beta
1.30
–
PodLifecycleSleepActionAllowZero
false
Alpha
1.32
–
PodLogsQuerySplitStreams
false
Alpha
1.32
–
PodReadyToStartContainersCondition
false
Alpha
1.28
1.28
PodReadyToStartContainersCondition
true
Beta
1.29
–
PortForwardWebsockets
false
Alpha
1.30
1.30
PortForwardWebsockets
true
Beta
1.31
–
PreferAlignCpusByUncoreCache
false
Alpha
1.32
–
ProcMountType
false
Alpha
1.12
1.30
ProcMountType
false
Beta
1.31
–
QOSReserved
false
Alpha
1.11
–
RecoverVolumeExpansionFailure
false
Alpha
1.23
1.31
RecoverVolumeExpansionFailure
true
Beta
1.32
–
RecursiveReadOnlyMounts
false
Alpha
1.30
1.30
RecursiveReadOnlyMounts
true
Beta
1.31
–
RelaxedEnvironmentVariableValidation
false
Alpha
1.30
1.31
RelaxedEnvironmentVariableValidation
true
Beta
1.32
–
ReloadKubeletServerCertificateFile
true
Beta
1.31
–
ResilientWatchCacheInitialization
true
Beta
1.31
–
ResourceHealthStatus
false
Alpha
1.31
–
RetryGenerateName
false
Alpha
1.30
–
RotateKubeletServerCertificate
false
Alpha
1.7
1.11
RotateKubeletServerCertificate
true
Beta
1.12
–
RuntimeClassInImageCriApi
false
Alpha
1.29
–
SchedulerAsyncPreemption
false
Alpha
1.32
–
SchedulerQueueingHints
true
Beta
1.28
1.28
SchedulerQueueingHints
false
Beta
1.29
1.31
SchedulerQueueingHints
true
Beta
1.32
–
SELinuxChangePolicy
false
Alpha
1.32
–
SELinuxMount
false
Alpha
1.30
–
SELinuxMountReadWriteOncePod
false
Alpha
1.25
1.26
SELinuxMountReadWriteOncePod
false
Beta
1.27
1.27
SELinuxMountReadWriteOncePod
true
Beta
1.28
–
SeparateTaintEvictionController
true
Beta
1.29
–
ServiceAccountTokenNodeBinding
false
Alpha
1.29
1.30
ServiceAccountTokenNodeBinding
true
Beta
1.31
–
ServiceTrafficDistribution
false
Alpha
1.30
1.30
ServiceTrafficDistribution
true
Beta
1.31
–
SidecarContainers
false
Alpha
1.28
1.28
SidecarContainers
true
Beta
1.29
–
StorageVersionAPI
false
Alpha
1.20
–
StorageVersionHash
false
Alpha
1.14
1.14
StorageVersionHash
true
Beta
1.15
–
StorageVersionMigrator
false
Alpha
1.30
1.32
StrictCostEnforcementForVAP
false
Beta
1.31
–
StrictCostEnforcementForWebhooks
false
Beta
1.31
–
StructuredAuthenticationConfiguration
false
Alpha
1.29
1.29
StructuredAuthenticationConfiguration
true
Beta
1.30
–
SupplementalGroupsPolicy
false
Alpha
1.31
–
SystemdWatchdog
true
Beta
1.32
–
TopologyAwareHints
false
Alpha
1.21
1.22
TopologyAwareHints
false
Beta
1.23
1.23
TopologyAwareHints
true
Beta
1.24
–
TopologyManagerPolicyAlphaOptions
false
Alpha
1.26
–
TopologyManagerPolicyBetaOptions
false
Beta
1.26
1.27
TopologyManagerPolicyBetaOptions
true
Beta
1.28
–
TranslateStreamCloseWebsocketRequests
false
Alpha
1.29
1.29
TranslateStreamCloseWebsocketRequests
true
Beta
1.30
–
UnauthenticatedHTTP2DOSMitigation
false
Beta
1.28
1.28
UnauthenticatedHTTP2DOSMitigation
true
Beta
1.29
–
UnknownVersionInteroperabilityProxy
false
Alpha
1.28
–
UserNamespacesPodSecurityStandards
false
Alpha
1.29
–
UserNamespacesSupport
false
Alpha
1.28
1.29
UserNamespacesSupport
false
Beta
1.30
–
VolumeAttributesClass
false
Alpha
1.29
1.30
VolumeAttributesClass
false
Beta
1.31
–
VolumeCapacityPriority
false
Alpha
1.21
–
WatchCacheInitializationPostStartHook
false
Beta
1.31
–
WatchFromStorageWithoutResourceVersion
false
Beta
1.30
–
WatchList
false
Alpha
1.27
1.31
WatchList
true
Beta
1.32
–
WatchListClient
false
Beta
1.30
–
WindowsCPUAndMemoryAffinity
false
Alpha
1.32
–
WindowsGracefulNodeShutdown
false
Alpha
1.32
–
WindowsHostNetwork
true
Alpha
1.26
–
WinDSR
false
Alpha
1.14
–
WinOverlay
false
Alpha
1.14
1.19
WinOverlay
true
Beta
1.20
–
Функціональні можливості для стабільних або застарілих функцій
Функціональні можливості для стабільних або застарілих функцій
Властивість
Стандартно
Стадія
Починаючи з
До
AdmissionWebhookMatchConditions
false
Alpha
1.27
1.27
AdmissionWebhookMatchConditions
true
Beta
1.28
1.29
AdmissionWebhookMatchConditions
true
GA
1.30
–
AggregatedDiscoveryEndpoint
false
Alpha
1.26
1.26
AggregatedDiscoveryEndpoint
true
Beta
1.27
1.29
AggregatedDiscoveryEndpoint
true
GA
1.30
–
AllowDNSOnlyNodeCSR
false
Deprecated
1.31
–
AllowInsecureKubeletCertificateSigningRequests
false
Deprecated
1.31
–
AllowServiceLBStatusOnNonLB
false
Deprecated
1.29
–
APIListChunking
false
Alpha
1.8
1.8
APIListChunking
true
Beta
1.9
1.28
APIListChunking
true
GA
1.29
–
AppArmor
true
Beta
1.4
1.30
AppArmor
true
GA
1.31
–
AppArmorFields
true
Beta
1.30
1.30
AppArmorFields
true
GA
1.31
–
CPUManager
false
Alpha
1.8
1.9
CPUManager
true
Beta
1.10
1.25
CPUManager
true
GA
1.26
–
CronJobsScheduledAnnotation
true
Beta
1.28
1.31
CronJobsScheduledAnnotation
true
GA
1.32
–
CustomResourceFieldSelectors
false
Alpha
1.30
1.30
CustomResourceFieldSelectors
true
Beta
1.31
1.31
CustomResourceFieldSelectors
true
GA
1.32
–
DefaultHostNetworkHostPortsInPodTemplates
false
Deprecated
1.28
–
DevicePluginCDIDevices
false
Alpha
1.28
1.28
DevicePluginCDIDevices
true
Beta
1.29
1.30
DevicePluginCDIDevices
true
GA
1.31
–
DisableCloudProviders
false
Alpha
1.22
1.28
DisableCloudProviders
true
Beta
1.29
1.30
DisableCloudProviders
true
GA
1.31
–
DisableKubeletCloudCredentialProviders
false
Alpha
1.23
1.28
DisableKubeletCloudCredentialProviders
true
Beta
1.29
1.30
DisableKubeletCloudCredentialProviders
true
GA
1.31
–
EfficientWatchResumption
false
Alpha
1.20
1.20
EfficientWatchResumption
true
Beta
1.21
1.23
EfficientWatchResumption
true
GA
1.24
–
ElasticIndexedJob
true
Beta
1.27
1.30
ElasticIndexedJob
true
GA
1.31
–
ExecProbeTimeout
true
GA
1.20
–
JobPodFailurePolicy
false
Alpha
1.25
1.25
JobPodFailurePolicy
true
Beta
1.26
1.30
JobPodFailurePolicy
true
GA
1.31
–
KMSv1
true
Deprecated
1.28
1.28
KMSv1
false
Deprecated
1.29
–
KubeProxyDrainingTerminatingNodes
false
Alpha
1.28
1.30
KubeProxyDrainingTerminatingNodes
true
Beta
1.30
1.30
KubeProxyDrainingTerminatingNodes
true
GA
1.31
–
LoadBalancerIPMode
false
Alpha
1.29
1.30
LoadBalancerIPMode
true
Beta
1.30
1.31
LoadBalancerIPMode
true
GA
1.32
–
LogarithmicScaleDown
false
Alpha
1.21
1.21
LogarithmicScaleDown
true
Beta
1.22
1.30
LogarithmicScaleDown
true
GA
1.31
–
MemoryManager
false
Alpha
1.21
1.21
MemoryManager
true
Beta
1.22
1.31
MemoryManager
true
GA
1.32
–
PDBUnhealthyPodEvictionPolicy
false
Alpha
1.26
1.26
PDBUnhealthyPodEvictionPolicy
true
Beta
1.27
1.30
PDBUnhealthyPodEvictionPolicy
true
GA
1.31
–
PersistentVolumeLastPhaseTransitionTime
false
Alpha
1.28
1.28
PersistentVolumeLastPhaseTransitionTime
true
Beta
1.29
1.30
PersistentVolumeLastPhaseTransitionTime
true
GA
1.31
–
PodDisruptionConditions
false
Alpha
1.25
1.25
PodDisruptionConditions
true
Beta
1.26
1.30
PodDisruptionConditions
true
GA
1.31
–
PodIndexLabel
true
Beta
1.28
1.31
PodIndexLabel
true
GA
1.32
–
PodSchedulingReadiness
false
Alpha
1.26
1.26
PodSchedulingReadiness
true
Beta
1.27
1.29
PodSchedulingReadiness
true
GA
1.30
–
RemainingItemCount
false
Alpha
1.15
1.15
RemainingItemCount
true
Beta
1.16
1.28
RemainingItemCount
true
GA
1.29
–
RetryGenerateName
false
Alpha
1.30
1.30
RetryGenerateName
true
Beta
1.31
1.31
RetryGenerateName
true
GA
1.32
–
ServiceAccountTokenJTI
false
Alpha
1.29
1.29
ServiceAccountTokenJTI
true
Beta
1.30
1.31
ServiceAccountTokenJTI
true
GA
1.32
–
ServiceAccountTokenNodeBindingValidation
false
Alpha
1.29
1.29
ServiceAccountTokenNodeBindingValidation
true
Beta
1.30
1.31
ServiceAccountTokenNodeBindingValidation
true
GA
1.32
–
ServiceAccountTokenPodNodeInfo
false
Alpha
1.29
1.29
ServiceAccountTokenPodNodeInfo
true
Beta
1.30
1.31
ServiceAccountTokenPodNodeInfo
true
GA
1.32
–
SizeMemoryBackedVolumes
false
Alpha
1.20
1.21
SizeMemoryBackedVolumes
true
Beta
1.22
1.31
SizeMemoryBackedVolumes
true
GA
1.32
–
StatefulSetAutoDeletePVC
false
Alpha
1.23
1.26
StatefulSetAutoDeletePVC
true
Beta
1.27
1.31
StatefulSetAutoDeletePVC
true
GA
1.32
–
StatefulSetStartOrdinal
false
Alpha
1.26
1.26
StatefulSetStartOrdinal
true
Beta
1.27
1.30
StatefulSetStartOrdinal
true
GA
1.31
–
StructuredAuthorizationConfiguration
false
Alpha
1.29
1.29
StructuredAuthorizationConfiguration
true
Beta
1.30
1.31
StructuredAuthorizationConfiguration
true
GA
1.32
–
TopologyManagerPolicyOptions
false
Alpha
1.26
1.27
TopologyManagerPolicyOptions
true
Beta
1.28
1.31
TopologyManagerPolicyOptions
true
GA
1.32
–
ValidatingAdmissionPolicy
false
Alpha
1.26
1.27
ValidatingAdmissionPolicy
false
Beta
1.28
1.29
ValidatingAdmissionPolicy
true
GA
1.30
–
WatchBookmark
false
Alpha
1.15
1.15
WatchBookmark
true
Beta
1.16
1.16
WatchBookmark
true
GA
1.17
–
Використання функцій
Стадії функцій
Кожна функція може бути в стані Alpha, Beta або GA (загальнодоступна).
Alpha означає:
Функція є типово вимкненою.
Функція може містити помилки. Увімкнення функції може призвести до непередбачуваної поведінки.
Підтримка функції може бути припинена в будь-який момент без попередження.
API може змінюватися в несумісний спосіб в майбутніх випусках без попередження.
Рекомендується використовувати функцію в кластерах з коротким терміном життя через значний ризик помилок та відсутність довгострокової підтримки.
Beta означає:
Зазвичай функція є типово увімкненою. Бета API групи є типово вимкненими.
Функція є добре протестованою. Увімкнення функції вважається безпечним.
Підтримка загального функціонала не буде припинена, хоча деталі можуть змінюватися.
Схема та/або семантика обʼєктів можуть змінюватися несумісними способами в наступному бета або стабільному випуску. Коли це станеться, ми надамо інструкції для переходу на наступну версію. Це може вимагати видалення, редагування та повторного створення API обʼєктів. Процес редагування може потребувати певних зусиль. Це може вимагати простою для застосунків, які залежать від функції.
Рекомендується використовувати лише для некритичних для бізнесу випадків через можливість несумісних змін у наступних випусках. Якщо у вас є кілька кластерів, які можуть бути оновлені незалежно, ви можете послабити це обмеження.
Примітка:
Будь ласка, спробуйте Beta функції та надайте про них відгуки! Після виходу з бета-версії, можливо, буде недоцільно вносити більше змін.
Функція в стані Загальна доступність (GA) також називається стабільною функцією. Це означає:
Функція завжди увімкнена; ви не можете її вимкнути.
Відповідний перемикач функціональної можливості більше не потрібен.
Стабільні версії функцій зʼявлятимуться у випущеному програмному забезпеченні для багатьох наступних версій.
Перелік функціональних можливостей
Кожна функціональна можливість створена для вмикання/вимикання певної функції.
AdmissionWebhookMatchConditions: Вмикає умови збігу для модифікації та перевірки вебхуків допуску.
AggregatedDiscoveryEndpoint: Вмикає єдину точку доступу до HTTP /discovery/<version>, яка підтримує власне кешування HTTP за допомогою теґів, що містять усі відомі APIResources на сервері API.
AllowDNSOnlyNodeCSR: Дозволяє kubelet запитувати сертифікат без будь-якого доступного Node IP, лише з DNS-іменами.
AllowInsecureKubeletCertificateSigningRequests: Ввімкнення перевірки допуску вузла CertificateSigningRequests для підписувачів kubelet. Якщо ви не вимкнете цю функціональну можливість, Kubernetes вимагатиме, щоб нові сертифікати kubelet мали commonName, що відповідає system:node:$nodeName.
AllowServiceLBStatusOnNonLB: Дозволяє встановлювати .status.ingress.loadBalancer для сервісів типів, відмінних від LoadBalancer.
AllowUnsafeMalformedObjectDeletion: Дозволяє оператору кластера визначати пошкоджені ресурси за допомогою операції list, а також вводить опцію ignoreStoreReadErrorWithClusterBreakingPotential, яку оператор може встановити для виконання небезпечної та примусової операції delete таких пошкоджених ресурсів за допомогою API Kubernetes.
AppArmor: Вмикає використання примусового контролю доступу AppArmor для Podʼів, що працюють на вузлах Linux. Докладнішу інформацію наведено у Посібнику з AppArmor.
AppArmorFields:
Вмикає параметри контексту безпеки, повʼязані з AppArmor.
AuthorizeNodeWithSelectors: Дозволяє авторизатору вузла використовувати детальну авторизацію за допомогою селекторів. Потрібно увімкнути AuthorizeWithSelectors.
CBORServingAndStorage: Вмикає CBOR як [підтримуване кодування для запитів і відповідей] (/docs/reference/using-api/api-concepts/#cbor-encoding), а також як бажане кодування сховища для власних ресурсів користувача.
CloudControllerManagerWebhook: Вмикання веб-хуків у менеджері хмарних контролерів.
ClusterTrustBundle: Вмикає обʼєкти ClusterTrustBundle та інтеграцію kubelet.
ComponentFlagz: Увімкнення точки доступу flagz компонента. Докладнішу інформацію наведено у zpages.
ComponentSLIs: Вмикає точку доступу /metrics/slis на таких компонентах Kubernetes як kubelet, kube-scheduler, kube-proxy, kube-controller-manager, cloud-controller-manager що дозволяє вам отримувати метрики перевірки працездатності.
ComponentStatusz: Вмикає точку доступу statusz компонента. Докладнішу інформацію наведено у zpages.
ConcurrentWatchObjectDecode: Вмикає одночасне декодування обʼєктів watch. Це потрібно для того, щоб уникнути голодування кешу watch API-сервера, коли встановлений вебхук перетворення.
ConsistentListFromCache:
Покращує продуктивність API сервера Kubernetes, обслуговуючи узгоджені запити list безпосередньо з кешу спостереження, що підвищує масштабованість та скорочує час відгуку. Для узгодженого списку з кешу Kubernetes потрібна новіша версія etcd (v3.4.31+ або v3.5.13+), яка містить виправлення для функції запиту на прогрес спостереження. Якщо надана стара версія etcd, Kubernetes автоматично визначить це і повернеться до обслуговування узгоджених читань з etcd. Сповіщення про прогрес забезпечують узгодженість кешу спостереження з etcd, одночасно зменшуючи потребу у витратних читаннях кворуму з etcd.
ContainerCheckpoint: Вмикає kubelet checkpoint API. Дивіться Kubelet Checkpoint API для більш детальної інформації.
ContextualLogging: Вмикає додаткові деталі у виведенні логів компонентів Kubernetes, які підтримують контекстне ведення логів.
CoordinatedLeaderElection: Вмикає поведінку, що підтримує API LeaseCandidate, а також забезпечує детерміноване обрання лідера для панелі управління Kubernetes.
CPUManagerPolicyAlphaOptions: Дозволяє тонко налаштовувати політики CPUManager, експериментальні, альфа-опції якості. Ця функціональна можливість захищає групу опцій CPUManager, які мають рівень якості альфа. Ці функціональні можливості ніколи не будуть переведені у бета-версію або стабільну версію.
CPUManagerPolicyBetaOptions: Дозволяє тонко налаштовувати політики CPUManager, експериментальні, бета-опції якості. Ця функціональна можливість захищає групу опцій CPUManager, які мають рівень якості бета. Ці функціональні можливості ніколи не будуть переведені у стабільну версію.
CPUManagerPolicyOptions: Дозволяє тонко налаштовувати політики CPUManager.
CRDValidationRatcheting: Ввімкнути оновлення власних ресурсів, щоб вони містили порушення їхньої схеми OpenAPI, якщо частини ресурсу, що порушують оновлення не змінилися. Докладніші відомості наведено у статті Проковзування валідації.
CronJobsScheduledAnnotation: Встановіть час запланованого завдання як анотацію для завдань, створених від імені CronJob.
CrossNamespaceVolumeDataSource: Вмикає використання перехресного простору назв джерела даних тома щоб дозволити вам вказувати простір імен джерела у полі dataSourceRef у PersistentVolumeClaim.
CSIMigrationPortworx: Вмикає shimʼи та логіку передачі для маршрутизації операцій тому з вбудованого втулка Portworx до втулка Portworx CSI. Вимагає встановлення та налаштування втулка Portworx CSI в кластері.
CSIVolumeHealth: Вмикає підтримку моніторингу стану справності томів CSI на вузлі.
CustomCPUCFSQuotaPeriod: Дозволяє вузлам змінювати cpuCFSQuotaPeriod в
конфігурації kubelet.
CustomResourceFieldSelectors: Вмикає selectableFields в API CustomResourceDefinition, щоб дозволити фільтрацію запитів list, watch та deletecollection для власних ресурсів.
DefaultHostNetworkHostPortsInPodTemplates:
Ця функціональна можливість керує моментом, коли стандартне значення для .spec.containers[*].ports[*].hostPort назначається для Podʼів, які використовують hostNetwork: true. Типовим з версії Kubernetes v1.28 є те, що стандартне значення встановлюється лише для Podʼів.
Вмикаючи цю функціональну можливість, стандартне значення буде назначено навіть для .spec вбудованого PodTemplate (наприклад, у Deployment), що є способом, яким працювали старі версії Kubernetes. Вам слід мігрувати свій код так, щоб він не залежав від старої поведінки.
DevicePluginCDIDevices: Вмикає підтримку ідентифікаторів пристроїв CDI в API Device Plugin.
DisableAllocatorDualWrite:
Ви можете увімкнути функціональну можливість MultiCIDRServiceAllocator. Сервер API підтримує міграцію зі старих розподільників bitmap ClusterIP на нові розподільники IPAddress.
Сервер API виконує подвійний запис на обидва розподільники. Ця функція вимикає подвійний запис на нові розподільники ClusterIP; ви можете увімкнути цю функцію, якщо ви завершили відповідний етап міграції.
DisableCloudProviders:
Увімкнення цієї функції деактивувало функціонал у kube-apiserver, kube-controller-manager і kubelet, які повʼязані з параметром --cloud-provider аргументу командного рядка.
У Kubernetes v1.31 і новіших версіях єдиними допустимими значеннями для --cloud-provider є порожній рядок (без інтеграції з хмарним провайдером) або "external" (інтеграція через окремий cloud-controller-manager).
DisableKubeletCloudCredentialProviders: Увімкнення функціональної можливості деактивувало застарілу функціональність вбудовану в kubelet, що дозволяла kubelet автентифікуватися в реєстрі контейнерів хмарного провайдера для отримання образів контейнерів.
DisableNodeKubeProxyVersion: Вимикає встановлення поля kubeProxyVersion вузла.
DRAAdminAccess:
Вмикає підтримку запиту доступу адміністратора у заявці на ресурс. Вимога ресурсу з доступом адміністратора надає доступ до пристроїв, які використовуються, і може увімкнути додаткові дозволи доступу, коли робить пристрій доступним у контейнері.
Ця функціональна можливість не має ефекту, якщо ви також не увімкнули функціональну можливість DynamicResourceAllocation.
DRAResourceClaimDeviceStatus: Вмикає підтримку поля ResourceClaim.status.devices та встановлення цього статусу з драйверів DRA.
DynamicResourceAllocation: Дозволяє підтримувати ресурси з власними параметрами та життєвим циклом які не залежать від Pod. Розподілом ресурсів займається планувальник Kubernetes використовуючи "структуровані параметри".
EfficientWatchResumption: Дозволяє надсилати користувачам події закладок (сповіщення про хід виконання), що походять зі сховища. Застосовується лише до операцій спостереження.
ElasticIndexedJob: Дозволяє масштабувати індексовані завдання шляхом зміни параметрів spec.completions та spec.parallelism таким чином, щоб spec.completions == spec.parallelism. Детальніше див. у документації про еластичні індексовані завдання.
EventedPLEG: Вмикає підтримку kubelet для отримання подій життєвого циклу контейнера з container runtime через розширення до CRI. (PLEG, скорочення від "Pod lifecycle event generator" — генератор подій життєвого циклу Pod). Щоб ця функція була корисною, вам також потрібно увімкнути підтримку подій життєвого циклу контейнера у кожному середовищі виконання контейнерів, що працює у вашому кластері. Якщо середовище виконання контейнера не оголошує про підтримку подій життєвого циклу контейнера, то kubelet автоматично перемикається на застарілий загальний механізм PLEG, навіть якщо ви увімкнули цю функціональну можливість.
ExecProbeTimeout: Переконайтеся, що kubelet дотримується таймаутів exec probe. Ця функція існує на випадок, якщо будь-яке з ваших робочих навантажень залежить від виправленої помилки, коли Kubernetes ігнорував тайм-аути exec probe. Дивіться проби готовності.
ExternalServiceAccountTokenSigner: Увімкніть параметр `--service-account-signing-endpoint', щоб kube-apiserver використовував зовнішнього підписувача для підписання токенів та керування ключами для перевірки токенів.
GracefulNodeShutdown: Вмикає підтримку відповідного завершення роботи у kubelet. Під час вимкнення системи kubelet намагатиметься виявити подію вимкнення і завершити роботу Podʼів, запущених на вузлі, відповідним чином. Докладніші відомості наведено у статті Відповідне вимикання вузла.
GracefulNodeShutdownBasedOnPodPriority: Дозволяє kubelet перевіряти пріоритети Pod під час відповідного завершення роботи вузла.
HonorPVReclaimPolicy: Дотримуватися політики відновлення постійного тому, коли він має значення Delete, незалежно від впорядкування видалення PV-PVC. Докладніші відомості наведено у документації Завершувач захисту від видалення постійних томів.
HPAScaleToZero: Дозволяє встановлювати minReplicas у 0 для ресурсів HorizontalPodAutoscaler при використанні власних або зовнішніх метрик.
ImageMaximumGCAge: Вмикає поле конфігурації kubelet imageMaximumGCAge, що дозволяє адміністратору вказати вік, після якого образ буде викинуто у смітник.
ImageVolume: Дозволити використання джерела тому image у Pod. За допомогою цього джерела томів ви можете змонтувати образ контейнера як том лише для читання.
InPlacePodVerticalScaling: Дозволяє вертикальне масштабування Podʼів на місці.
InTreePluginPortworxUnregister: Припиняє реєстрацію вбудованого втулка Portworx у kubelet та контролерах томів.
JobBackoffLimitPerIndex: Дозволяє вказати максимальну кількість повторних спроб для кожного індексу в проіндексованих завданнях.
JobManagedBy: Дозволяє делегувати узгодження обʼєкта Job зовнішньому контролеру.
JobPodFailurePolicy: Дозволяє користувачам визначати обробку несправностей контейнерів на основі кодів виходу з контейнера та стану контейнерів.
JobPodReplacementPolicy: Дозволяє вказувати заміну для Podʼів, що завершуються, в Job
JobSuccessPolicy: Дозволяє користувачам вказувати, коли Job може бути визнаний успішним на основі набору успішних Podʼів.
KubeletCgroupDriverFromCRI: Вмикає виявлення параметра конфігурації драйвера cgroup kubelet з CRI. Ви можете використовувати цю функціональну можливість на вузлах з kubelet, які її підтримують, і де є середовище виконання контейнерів CRI, що підтримує виклик CRI RuntimeConfig. Якщо як CRI, так і kubelet підтримують цю функцію, kubelet ігнорує налаштування конфігурації cgroupDriver (або застарілий аргумент командного рядка --cgroup-driver). Якщо ви увімкнете цю функціональну можливість, а середовище виконання контейнерів не підтримує її, kubelet повертається до використання драйвера, налаштованого за допомогою параметра конфігурації cgroupDriver. Дивіться Конфігурація драйвера cgroup для отримання додаткової інформації.
KubeletCrashLoopBackOffMax: Дозволяє підтримувати конфігуровані максимальні значення backoff для кожного вузла для перезапуску контейнерів у стані CrashLoopBackOff.
KubeletPodResourcesDynamicResources: Розширює ресурси gRPC точки доступа Podʼа kublet, щоб включати ресурси, що виділені в ResourceClaims через API DynamicResourceAllocation. Див. звіт про виділення ресурсів для отримання додаткових відомостей. З цією інформацією про ресурси, клієнти можуть належним чином відстежувати вільні обчислювальні ресурси на вузлі.
KubeletPodResourcesDynamicResources: Розширює ресурси gRPC точки доступу Podʼа kubelet, щоб включити ресурси, виділені в ResourceClaims через API DynamicResourceAllocation. Див. звіт про виділення ресурсів для отримання додаткової інформації, інформацією про доступні ресурси, що дозволяє клієнтам належним чином відстежувати вільні обчислювальні ресурси на вузлі.
KubeletPodResourcesGet: Вмикає точку доступу Get gRPC в kubeletʼах для ресурсів Pod. Цей API доповнює звіт про розподіл ресурсів.
KubeletSeparateDiskGC: Функція розділеної файлової системи образів дозволяє kubelet виконувати збір сміття образів (шарів лише для читання) та/або контейнерів (шарів для запису), розгорнутих на окремих файлових системах.
KubeletTracing: Додавання підтримки розподіленого трасування в kubelet. Якщо увімкнено, інтерфейс CRI kubelet та автентифіковані http-сервери використовуються для генерації відрізків трасування OpenTelemetry. Дивіться Трасування для системних компонентів Kubernetes для більш детальної інформації.
KubeProxyDrainingTerminatingNodes: Реалізація очищення зʼєднань для термінальних вузлів для сервісів externalTrafficPolicy: Cluster.
LocalStorageCapacityIsolationFSQuotaMonitoring: Якщо LocalStorageCapacityIsolation увімкнено для локального ефемерного сховища, резервна файлова система для томів emptyDir підтримує квоти проєктів і UserNamespacesSupport увімкнено, квоти проєктів використовуються для моніторингу споживання сховища томів emptyDir, а не шляхом проходу файловою системою, що забезпечує кращу продуктивність і точність.
LogarithmicScaleDown: Вмикає напіввипадковий вибір Podʼів для виселення при зменшенні масштабу контролера на основі логарифмічного обʼєднання міток часу Podʼів.
LoggingAlphaOptions: Дозволяє тонко налаштовувати експериментальні, альфа-якості параметрів логування.
LoggingBetaOptions: Дозволяє тонко налаштовувати експериментальні, бета-якості параметрів логування.
MatchLabelKeysInPodAffinity: Вмикає поля matchLabelKeys та mismatchLabelKeys для pod (anti)affinity.
MaxUnavailableStatefulSet: Дозволяє встановити поле maxUnavailable для rolling update strategy набору StatefulSet. Поле визначає максимальну кількість Podʼів, які можуть бути недоступні під час оновлення.
MemoryManager: Дозволяє встановити спорідненість памʼяті для контейнера на основі топології NUMA.
MemoryQoS: Вмикає захист памʼяті та обмеження використання памʼяті на pod/контейнер за допомогою контролера памʼяті cgroup v2.
MultiCIDRServiceAllocator: Відстежуйте розподіл IP-адрес для IP кластера сервісів за допомогою обʼєктів IPAddress.
У версіях Kubernetes v1.30 та v1.31 ця функціональна можливість існувала, але не мала жодного ефекту.
NFTablesProxyMode: Дозволяє запуск kube-proxy у режимі nftables.
NodeInclusionPolicyInPodTopologySpread: Вмикає використання nodeAffinityPolicy та nodeTaintsPolicy в Обмеження поширення топології Podʼів при обчисленні відхилення розповсюдження топології вузлів.
NodeLogQuery: Дозволяє запитувати логи сервісів вузла за допомогою точки доступу /logs.
NodeSwap: Дозволяє kubelet виділяти памʼять підкачки для робочих навантажень Kubernetes на вузлі. Має використовуватися з KubeletConfiguration.failSwapOn, встановленим у false. За більш детальною інформацією зверніться до swap memory
OpenAPIEnums: Дозволяє заповнювати поля "enum" схем OpenAPI у специфікації, що повертається від сервера API.
PDBUnhealthyPodEvictionPolicy: Вмикає поле unhealthyPodEvictionPolicy в полі PodDisruptionBudget. Визначає, коли слід розглядати можливість виселення несправних Podʼів. Будь ласка, дивіться Політику виселення несправних Podʼів для більш детальної інформації.
PersistentVolumeLastPhaseTransitionTime: Додає нове поле до PersistentVolume, яке містить мітку часу, коли том востаннє змінював свою фазу.
PodAndContainerStatsFromCRI: Налаштуйте kubelet на збір статистики контейнерів і Podʼів під час виконання CRI-контейнера, а не на збір статистики з cAdvisor. Починаючи з версії 1.26, це також включає збір метрик з CRI та надсилання їх за допомогою /metrics/cadvisor (замість того, щоб cAdvisor відправляв їх безпосередньо).
PodDeletionCost: Вмикає функцію Pod Deletion Cost, яка дозволяє користувачам впливати на порядок зменшення масштабу ReplicaSet.
PodDisruptionConditions: Вмикає підтримку додавання спеціальної умови, яка вказує на те, що Pod видаляється через збій.
PortForwardWebsockets: Дозволити потокове передавання WebSocket підпротоколу portforward (port-forward) від клієнтів, які запитують версію v2 (v2.portforward.k8s.io) підпротоколу.
PreferAlignCpusByUncoreCache: Якщо увімкнено PreferAlignCpusByUncoreCache, а CPU Manager Policy встановлено на static, контейнери podʼів Guaranteed будуть індивідуально вирівнюватися з групою кешу uncore на основі політики best-effort. Ця функція може оптимізувати продуктивність для певних робочих навантажень, які чутливі до кешу, шляхом мінімізації розподілу CPU між кешами uncore.
ProcMountType: Дозволяє керувати типом монтування proc для контейнерів, встановлюючи поле procMount Podʼа у securityContext.
QOSReserved: Дозволяє резервувати ресурси на рівні QoS, запобігаючи тим самим тому, щоб підсистеми на рівнях QoS нижчого рівня виходили за межі ресурсів, запитаних на рівнях QoS вищого рівня (наразі лише памʼять).
RecoverVolumeExpansionFailure: Дозволяє користувачам редагувати свої PVC до менших розмірів, щоб можна було відновити їх після попередніх збоїв під час розширення томів. Докладні відомості див. у статті Відновлення після збою під час розширення томів.
RecursiveReadOnlyMounts: Вмикає підтримку рекурсивних монтувань лише для читання. Докладні відомості наведено у статті монтування лише для читання.
RelaxedEnvironmentVariableValidation: Дозволити майже всі друковані символи ASCII у змінних оточення.
ReloadKubeletServerCertificateFile:
Дозволяє TLS-серверу kubelet оновлювати свій сертифікат, якщо вказаний файл сертифіката змінено.
Ця функція корисна при вказівці tlsCertFile і tlsPrivateKeyFile в конфігурації kubelet. Функція gate не впливає на інші випадки, такі як використання TLS boostrap.
RemainingItemCount: Дозволити серверам API показувати кількість елементів, що залишилися, у відповіді на запит chunking list request.
ResilientWatchCacheInitialization: Дозволяє відмовостійку ініціалізацію кешу watch, щоб уникнути перевантаження панелі управління.
ResourceHealthStatus: Вмикає поле allocatedResourcesStatus у файлі .status для Pod. У полі буде показано додаткові відомості для кожного контейнера у Pod, а також інформацію про стан кожного пристрою, призначеного для Pod. Докладні відомості наведено у статті Втулок пристрою та несправні пристрої.
RetryGenerateName: Дозволяє повторити спробу створення обʼєкта, коли API server очікується, що сервер API server згенерує name. Якщо цю можливість увімкнено, запити з використанням generateName будуть автоматично повторюватися, якщо панель управління виявить конфлікт імен з наявним обʼєктом, але не більше 8 спроб.
RetryGenerateName:
Дозволяє повторити спробу створення обʼєкта, коли очікується, що API server створить name.
Коли цю можливість увімкнено, запити з використанням generateName автоматично повторюються у випадку, якщо панель управління виявляє конфлікт імен з наявним обʼєктом, до обмеження у 8 спроб.
RotateKubeletServerCertificate: Вмикає ротацію серверного TLS-сертифікату в kubelet. Дивіться kubelet configuration для більш детальної інформації.
RuntimeClassInImageCriApi: Дозволяє витягувати зображення на основі класу виконання Podʼів, які посилаються на них.
SchedulerAsyncPreemption: Дозволяє запуск деяких вибагливих операцій в межах планувальника, повʼязаних з випередженням, асинхронно. Асинхронна обробка випередження покращує загальну продуктивність планування Pod.
SchedulerQueueingHints: Вмикає функцію покращення підказок планувальника, що дозволяє зменшити кількість марних перезапитів. Планувальник повторно спробує запланувати Podʼи, якщо щось зміниться у кластері, що може призвести до того, що Pod буде заплановано. Підказки щодо черги — це внутрішні сигнали, які дозволяють планувальнику відфільтрувати зміни у кластері, які мають відношення до незапланованого Podʼа, на основі попередніх спроб планування.
SELinuxChangePolicy:
Вмикає поле spec.securityContext.seLinuxChangePolicy.
За допомогою цього поля можна відмовитися від застосування мітки SELinux до томів podʼів за допомогою параметрів монтування. Це потрібно, якщо один том, який підтримує монтування за допомогою параметрів монтування SELinux, використовується спільно з іншими томами, які мають різні мітки SELinux, наприклад, привілейованим і непривілейованим томами.
Увімкнення SELinuxChangePolicy вимагає увімкнення SELinuxMountReadWriteOncePod.
SELinuxMount:
Прискорює запуск контейнера, дозволяючи kubelet монтувати томи для Pod безпосередньо з правильною міткою SELinux замість того, щоб рекурсивно змінювати кожен файл на томах. Це розширює можливості покращення продуктивності за допомогою SELinuxMountReadWriteOncePod, поширюючи реалізацію на всі томи.
Для увімкнення SELinuxMount потрібно, щоб було увімкнено SELinuxChangePolicy.
SELinuxMountReadWriteOncePod: Прискорює запуск контейнера, дозволяючи kubelet монтувати томи для Pod безпосередньо з правильною міткою SELinux замість того, щоб рекурсивно змінювати кожен файл на томах. Початкова реалізація була зосереджена на томах ReadWriteOncePod.
SeparateTaintEvictionController: Дозволяє запуск TaintEvictionController, який виконує Taint-based Evictions, у контролері, відокремленому від NodeLifecycleController. Коли цю можливість увімкнено, користувачі можуть за бажанням вимкнути виселення на основі Taint, встановивши прапорець --controllers=-taint-eviction-controller у kube-controller-manager.
ServiceAccountTokenJTI: Контролює, чи вбудовуються JTI (UUID) у згенеровані токени службових облікових записів, і чи записуються ці JTI до логу аудиту Kubernetes для майбутніх запитів, зроблених цими токенами.
ServiceAccountTokenNodeBinding: Контролює, чи дозволяє сервер API привʼязувати токени службових облікових записів до обʼєктів Node.
ServiceAccountTokenNodeBindingValidation: Керує тим, чи буде apiserver перевіряти посилання на Node у токенах службових облікових записів.
ServiceAccountTokenPodNodeInfo: Керує тим, чи вбудовувати імʼя вузла та uid для повʼязаного з ним вузла при видачі токенів службових облікових записів, привʼязаних до обʼєктів Pod.
ServiceTrafficDistribution: Дозволяє використовувати необовʼязкове поле spec.trafficDistribution у Services. У цьому полі можна вказати параметри розподілу трафіку між точками доступу Service.
SidecarContainers: Дозволити встановлювати restartPolicy контейнера init значення Always, щоб контейнер ставав sidecar-контейнером (контейнери init, які можна перезапустити). Дивіться Контейнери Sidecar та restartPolicy для отримання більш детальної інформації.
SizeMemoryBackedVolumes: Дозволяє kubelet визначати обмеження розміру для памʼяті, яка використовується для томів (головним чином для томів emptyDir).
StatefulSetAutoDeletePVC: Дозволяє використовувати необовʼязкове поле .spec.persistentVolumeClaimRetentionPolicy, що забезпечує контроль над видаленням PVC у життєвому циклі StatefulSet. Дивіться PersistentVolumeClaim retention для більш детальної інформації.
StatefulSetStartOrdinal: Дозволити налаштування порядкового номера старту у StatefulSet. Дивіться Початковий порядковий номер для більш детальної інформації.
StructuredAuthorizationConfiguration: Вмикає структуровану конфігурацію авторизації, щоб адміністратори кластера могли вказати більше одного webhook авторизації в ланцюжку обробників серверів API.
SystemdWatchdog: Дозволяє використання systemd watchdog для моніторингу статусу справності kubelet. Див. Kubelet Systemd Watchdog для отримання додаткових відомостей.
TopologyAwareHints: Вмикає маршрутизацію з урахуванням топології на основі підказок топології у EndpointSlices. Див. статтю Підказки з урахуванням топології для отримання детальнішої інформації.
TopologyManagerPolicyAlphaOptions: Дозволяє тонке налаштування політик менеджера топології, експериментальні варіанти з альфа-якістю. Ця функціональна можливість захищає групу параметрів менеджера топології, рівень якості яких є альфа. Ця функціональна можливість ніколи не перейде до бета-версії або стабільної версії.
TopologyManagerPolicyBetaOptions: Дозволяє тонке налаштування політик менеджера топології, експериментальні варіанти з бета-якістю. Ця функціональна можливість захищає групу параметрів менеджера топології, рівень якості яких є бета. Ця функціональна можливість ніколи не перейде до стабільної версії.
TranslateStreamCloseWebsocketRequests: Дозволити WebSocket потік підпротоколу віддалених команд (exec, cp, attach) від клієнтів, які запитують версію 5 (v5) підпротоколу.
UnauthenticatedHTTP2DOSMitigation: Вмикає помʼякшення наслідків відмови в обслуговуванні (DoS) HTTP/2 для неавторизованих клієнтів. У версіях Kubernetes від 1.28.0 до 1.28.2 ця функція не включена.
UnknownVersionInteroperabilityProxy: Проксі-запити ресурсів до правильного однорангового kube-apiserver, коли існує декілька kube-апісерверів у різних версіях. Докладнішу інформацію наведено у статті Проксі змішаних версій.
UserNamespacesPodSecurityStandards: Дозволити помʼякшення політик стандартів безпеки для Podʼів, які працюють з просторами імен. Ви маєте встановити значення цієї можливості узгоджено на всіх вузлах кластера, а також увімкнути UserNamespacesSupport, щоб використовувати цю можливість.
UserNamespacesSupport: Вмикання підтримки простору імен користувача для Podʼів.
ValidatingAdmissionPolicy: Вмикання підтримки ValidatingAdmissionPolicy для використання валідації CEL у контролі допуску.
VolumeAttributesClass: Вмикання підтримки класів VolumeAttributesClasses. Докладні відомості див. у статті Класи атрибутів томів.
VolumeCapacityPriority: Вмикання підтримки пріоритезації вузлів у різних топологіях на основі доступної місткості PV.
WatchBookmark: Вмикає підтримку подій закладок для спостереження.
WatchCacheInitializationPostStartHook: Вмикає post-start-hook для ініціалізації watchcache як частину readyz (з таймаутом).
WatchFromStorageWithoutResourceVersion: Дозволяє watch без resourceVersion працювати зі сховища.
WatchListClient: Дозволяє клієнту API запитувати потік даних замість отримання повного списку. Ця функціональність доступна в client-go і вимагає, щоб на сервері була ввімкнена функція WatchList. Якщо WatchList не підтримується на сервері, клієнт повернеться до стандартного запиту списку.
WindowsCPUAndMemoryAffinity: Додає підтримку спорідненості CPU та памʼяті до вузлів Windows за допомогою CPUManager, MemoryManager та менеджера топології.
WindowsGracefulNodeShutdown: Вмикає підтримку у kubelet підтримки належного завершення роботи вузла Windows. Під час вимкнення системи kubelet намагатиметься виявити подію вимкнення і належним чином завершити роботу podʼів, запущених на вузлі. Докладніші відомості наведено у статті Graceful Node Shutdown.
WindowsHostNetwork: Вмикає підтримку приєднання контейнерів Windows до мережевого простору імен хостів.
WinDSR: Дозволяє kube-proxy створювати DSR-балансувальники навантаження для Windows.
WinOverlay: Дозволяє kube-proxy працювати в режимі оверлею для Windows.
Починаючи з Kubernetes 1.24, нові бета-версії API стандартно не увімкнені. При увімкненні бета-версії вам також потрібно буде увімкнути всі повʼязані з цим API ресурси. Наприклад, щоб увімкнути певний ресурс, наприклад storage.k8s.io/v1beta1/csistoragecapacities, встановіть --runtime-config=storage.k8s.io/v1beta1/csistoragecapacities. Докладнішу інформацію про прапорці командного рядка наведено в Версіювання API.
12.2 - Функціональні можливості (вилучені)
Ця сторінка містить список функціональних можливостей воріт, які були видалені. Інформація на цій сторінці є довідковою. Вилучені функціональні можливості відрізняються від GA або застарілих тим, що вилучені функціональні можливості більше не розпізнається як дійсний функціональний елемент. Однак, GA'ed або застарілі функціональні ворота все ще розпізнаються відповідними компонентами Kubernetes, хоча вони не можуть спричинити жодних відмінностей у поведінці кластера.
У стовпчику "З" вказано реліз Kubernetes, у якому зʼявилася функція
або змінено стадію її випуску.
Стовпець "До", якщо він не порожній, містить останній випуск Kubernetes, у якому
ви все ще можете використовувати функціональні можливості. Якщо стадія функції "Deprecated"
або "GA", стовпець "До" вказує на випуск Kubernetes, з якого функцію було вилучено.
Feature Gates Removed
Властивість
Стандартно
Стадія
З
До
Accelerators
false
Alpha
1.6
1.10
Accelerators
–
Deprecated
1.11
1.11
AdvancedAuditing
false
Alpha
1.7
1.7
AdvancedAuditing
true
Beta
1.8
1.11
AdvancedAuditing
true
GA
1.12
1.27
AffinityInAnnotations
false
Alpha
1.6
1.7
AffinityInAnnotations
–
Deprecated
1.8
1.8
AllowExtTrafficLocalEndpoints
false
Beta
1.4
1.6
AllowExtTrafficLocalEndpoints
true
GA
1.7
1.9
AllowInsecureBackendProxy
true
Beta
1.17
1.20
AllowInsecureBackendProxy
true
GA
1.21
1.25
APIPriorityAndFairness
false
Alpha
1.18
1.19
APIPriorityAndFairness
true
Beta
1.20
1.28
APIPriorityAndFairness
true
GA
1.29
1.30
APISelfSubjectReview
false
Alpha
1.26
1.26
APISelfSubjectReview
true
Beta
1.27
1.27
APISelfSubjectReview
true
GA
1.28
1.29
AttachVolumeLimit
false
Alpha
1.11
1.11
AttachVolumeLimit
true
Beta
1.12
1.16
AttachVolumeLimit
true
GA
1.17
1.21
BalanceAttachedNodeVolumes
false
Alpha
1.11
1.21
BalanceAttachedNodeVolumes
false
Deprecated
1.22
1.22
BlockVolume
false
Alpha
1.9
1.12
BlockVolume
true
Beta
1.13
1.17
BlockVolume
true
GA
1.18
1.21
BoundServiceAccountTokenVolume
false
Alpha
1.13
1.20
BoundServiceAccountTokenVolume
true
Beta
1.21
1.21
BoundServiceAccountTokenVolume
true
GA
1.22
1.23
CloudDualStackNodeIPs
false
Alpha
1.27
1.28
CloudDualStackNodeIPs
true
Beta
1.29
1.29
CloudDualStackNodeIPs
true
GA
1.30
1.31
ConfigurableFSGroupPolicy
false
Alpha
1.18
1.19
ConfigurableFSGroupPolicy
true
Beta
1.20
1.22
ConfigurableFSGroupPolicy
true
GA
1.23
1.25
ConsistentHTTPGetHandlers
true
GA
1.25
1.30
ControllerManagerLeaderMigration
false
Alpha
1.21
1.21
ControllerManagerLeaderMigration
true
Beta
1.22
1.23
ControllerManagerLeaderMigration
true
GA
1.24
1.26
CRIContainerLogRotation
false
Alpha
1.10
1.10
CRIContainerLogRotation
true
Beta
1.11
1.20
CRIContainerLogRotation
true
GA
1.21
1.22
CronJobControllerV2
false
Alpha
1.20
1.20
CronJobControllerV2
true
Beta
1.21
1.21
CronJobControllerV2
true
GA
1.22
1.23
CronJobTimeZone
false
Alpha
1.24
1.24
CronJobTimeZone
true
Beta
1.25
1.26
CronJobTimeZone
true
GA
1.27
1.28
CSIBlockVolume
false
Alpha
1.11
1.13
CSIBlockVolume
true
Beta
1.14
1.17
CSIBlockVolume
true
GA
1.18
1.21
CSIDriverRegistry
false
Alpha
1.12
1.13
CSIDriverRegistry
true
Beta
1.14
1.17
CSIDriverRegistry
true
GA
1.18
1.21
CSIInlineVolume
false
Alpha
1.15
1.15
CSIInlineVolume
true
Beta
1.16
1.24
CSIInlineVolume
true
GA
1.25
1.26
CSIMigration
false
Alpha
1.14
1.16
CSIMigration
true
Beta
1.17
1.24
CSIMigration
true
GA
1.25
1.26
CSIMigrationAWS
false
Alpha
1.14
1.16
CSIMigrationAWS
false
Beta
1.17
1.22
CSIMigrationAWS
true
Beta
1.23
1.24
CSIMigrationAWS
true
GA
1.25
1.26
CSIMigrationAWSComplete
false
Alpha
1.17
1.20
CSIMigrationAWSComplete
–
Deprecated
1.21
1.21
CSIMigrationAzureDisk
false
Alpha
1.15
1.18
CSIMigrationAzureDisk
false
Beta
1.19
1.22
CSIMigrationAzureDisk
true
Beta
1.23
1.23
CSIMigrationAzureDisk
true
GA
1.24
1.26
CSIMigrationAzureDiskComplete
false
Alpha
1.17
1.20
CSIMigrationAzureDiskComplete
–
Deprecated
1.21
1.21
CSIMigrationAzureFile
false
Alpha
1.15
1.20
CSIMigrationAzureFile
false
Beta
1.21
1.23
CSIMigrationAzureFile
true
Beta
1.24
1.25
CSIMigrationAzureFile
true
GA
1.26
1.29
CSIMigrationAzureFileComplete
false
Alpha
1.17
1.20
CSIMigrationAzureFileComplete
–
Deprecated
1.21
1.21
CSIMigrationGCE
false
Alpha
1.14
1.16
CSIMigrationGCE
false
Beta
1.17
1.22
CSIMigrationGCE
true
Beta
1.23
1.24
CSIMigrationGCE
true
GA
1.25
1.27
CSIMigrationGCEComplete
false
Alpha
1.17
1.20
CSIMigrationGCEComplete
–
Deprecated
1.21
1.21
CSIMigrationOpenStack
false
Alpha
1.14
1.17
CSIMigrationOpenStack
true
Beta
1.18
1.23
CSIMigrationOpenStack
true
GA
1.24
1.25
CSIMigrationOpenStackComplete
false
Alpha
1.17
1.20
CSIMigrationOpenStackComplete
–
Deprecated
1.21
1.21
CSIMigrationRBD
false
Alpha
1.23
1.27
CSIMigrationRBD
false
Deprecated
1.28
1.30
CSIMigrationvSphere
false
Alpha
1.18
1.18
CSIMigrationvSphere
false
Beta
1.19
1.24
CSIMigrationvSphere
true
Beta
1.25
1.25
CSIMigrationvSphere
true
GA
1.26
1.28
CSIMigrationvSphereComplete
false
Beta
1.19
1.21
CSIMigrationvSphereComplete
–
Deprecated
1.22
1.22
CSINodeExpandSecret
false
Alpha
1.25
1.26
CSINodeExpandSecret
true
Beta
1.27
1.28
CSINodeExpandSecret
true
GA
1.29
1.30
CSINodeInfo
false
Alpha
1.12
1.13
CSINodeInfo
true
Beta
1.14
1.16
CSINodeInfo
true
GA
1.17
1.22
CSIPersistentVolume
false
Alpha
1.9
1.9
CSIPersistentVolume
true
Beta
1.10
1.12
CSIPersistentVolume
true
GA
1.13
1.16
CSIServiceAccountToken
false
Alpha
1.20
1.20
CSIServiceAccountToken
true
Beta
1.21
1.21
CSIServiceAccountToken
true
GA
1.22
1.24
CSIStorageCapacity
false
Alpha
1.19
1.20
CSIStorageCapacity
true
Beta
1.21
1.23
CSIStorageCapacity
true
GA
1.24
1.27
CSIVolumeFSGroupPolicy
false
Alpha
1.19
1.19
CSIVolumeFSGroupPolicy
true
Beta
1.20
1.22
CSIVolumeFSGroupPolicy
true
GA
1.23
1.25
CSRDuration
true
Beta
1.22
1.23
CSRDuration
true
GA
1.24
1.25
CustomPodDNS
false
Alpha
1.9
1.9
CustomPodDNS
true
Beta
1.10
1.13
CustomPodDNS
true
GA
1.14
1.16
CustomResourceDefaulting
false
Alpha
1.15
1.15
CustomResourceDefaulting
true
Beta
1.16
1.16
CustomResourceDefaulting
true
GA
1.17
1.18
CustomResourcePublishOpenAPI
false
Alpha
1.14
1.14
CustomResourcePublishOpenAPI
true
Beta
1.15
1.15
CustomResourcePublishOpenAPI
true
GA
1.16
1.18
CustomResourceSubresources
false
Alpha
1.10
1.10
CustomResourceSubresources
true
Beta
1.11
1.15
CustomResourceSubresources
true
GA
1.16
1.18
CustomResourceValidation
false
Alpha
1.8
1.8
CustomResourceValidation
true
Beta
1.9
1.15
CustomResourceValidation
true
GA
1.16
1.18
CustomResourceValidationExpressions
false
Alpha
1.23
1.24
CustomResourceValidationExpressions
true
Beta
1.25
1.28
CustomResourceValidationExpressions
true
GA
1.29
1.30
CustomResourceWebhookConversion
false
Alpha
1.13
1.14
CustomResourceWebhookConversion
true
Beta
1.15
1.15
CustomResourceWebhookConversion
true
GA
1.16
1.18
DaemonSetUpdateSurge
false
Alpha
1.21
1.21
DaemonSetUpdateSurge
true
Beta
1.22
1.24
DaemonSetUpdateSurge
true
GA
1.25
1.28
DefaultPodTopologySpread
false
Alpha
1.19
1.19
DefaultPodTopologySpread
true
Beta
1.20
1.23
DefaultPodTopologySpread
true
GA
1.24
1.25
DelegateFSGroupToCSIDriver
false
Alpha
1.22
1.22
DelegateFSGroupToCSIDriver
true
Beta
1.23
1.25
DelegateFSGroupToCSIDriver
true
GA
1.26
1.27
DevicePlugins
false
Alpha
1.8
1.9
DevicePlugins
true
Beta
1.10
1.25
DevicePlugins
true
GA
1.26
1.27
DisableAcceleratorUsageMetrics
false
Alpha
1.19
1.19
DisableAcceleratorUsageMetrics
true
Beta
1.20
1.24
DisableAcceleratorUsageMetrics
true
GA
1.25
1.27
DownwardAPIHugePages
false
Alpha
1.20
1.20
DownwardAPIHugePages
false
Beta
1.21
1.21
DownwardAPIHugePages
true
Beta
1.22
1.26
DownwardAPIHugePages
true
GA
1.27
1.28
DRAControlPlaneController
false
Alpha
1.26
1.31
DryRun
false
Alpha
1.12
1.12
DryRun
true
Beta
1.13
1.18
DryRun
true
GA
1.19
1.27
DynamicAuditing
false
Alpha
1.13
1.18
DynamicAuditing
–
Deprecated
1.19
1.19
DynamicKubeletConfig
false
Alpha
1.4
1.10
DynamicKubeletConfig
true
Beta
1.11
1.21
DynamicKubeletConfig
false
Deprecated
1.22
1.25
DynamicProvisioningScheduling
false
Alpha
1.11
1.11
DynamicProvisioningScheduling
–
Deprecated
1.12
–
DynamicVolumeProvisioning
true
Alpha
1.3
1.7
DynamicVolumeProvisioning
true
GA
1.8
1.12
EnableAggregatedDiscoveryTimeout
true
Deprecated
1.16
1.17
EnableEquivalenceClassCache
false
Alpha
1.8
1.12
EnableEquivalenceClassCache
–
Deprecated
1.13
1.23
EndpointSlice
false
Alpha
1.16
1.16
EndpointSlice
false
Beta
1.17
1.17
EndpointSlice
true
Beta
1.18
1.20
EndpointSlice
true
GA
1.21
1.24
EndpointSliceNodeName
false
Alpha
1.20
1.20
EndpointSliceNodeName
true
GA
1.21
1.24
EndpointSliceProxying
false
Alpha
1.18
1.18
EndpointSliceProxying
true
Beta
1.19
1.21
EndpointSliceProxying
true
GA
1.22
1.24
EndpointSliceTerminatingCondition
false
Alpha
1.20
1.21
EndpointSliceTerminatingCondition
true
Beta
1.22
1.25
EndpointSliceTerminatingCondition
true
GA
1.26
1.27
EphemeralContainers
false
Alpha
1.16
1.22
EphemeralContainers
true
Beta
1.23
1.24
EphemeralContainers
true
GA
1.25
1.26
EvenPodsSpread
false
Alpha
1.16
1.17
EvenPodsSpread
true
Beta
1.18
1.18
EvenPodsSpread
true
GA
1.19
1.21
ExpandCSIVolumes
false
Alpha
1.14
1.15
ExpandCSIVolumes
true
Beta
1.16
1.23
ExpandCSIVolumes
true
GA
1.24
1.26
ExpandedDNSConfig
false
Alpha
1.22
1.25
ExpandedDNSConfig
true
Beta
1.26
1.27
ExpandedDNSConfig
true
GA
1.28
1.29
ExpandInUsePersistentVolumes
false
Alpha
1.11
1.14
ExpandInUsePersistentVolumes
true
Beta
1.15
1.23
ExpandInUsePersistentVolumes
true
GA
1.24
1.26
ExpandPersistentVolumes
false
Alpha
1.8
1.10
ExpandPersistentVolumes
true
Beta
1.11
1.23
ExpandPersistentVolumes
true
GA
1.24
1.26
ExperimentalCriticalPodAnnotation
false
Alpha
1.5
1.12
ExperimentalCriticalPodAnnotation
false
Deprecated
1.13
1.16
ExperimentalHostUserNamespaceDefaulting
false
Beta
1.5
1.27
ExperimentalHostUserNamespaceDefaulting
false
Deprecated
1.28
1.29
ExternalPolicyForExternalIP
true
GA
1.18
1.22
GCERegionalPersistentDisk
true
Beta
1.10
1.12
GCERegionalPersistentDisk
true
GA
1.13
1.16
GenericEphemeralVolume
false
Alpha
1.19
1.20
GenericEphemeralVolume
true
Beta
1.21
1.22
GenericEphemeralVolume
true
GA
1.23
1.24
GRPCContainerProbe
false
Alpha
1.23
1.23
GRPCContainerProbe
true
Beta
1.24
1.26
GRPCContainerProbe
true
GA
1.27
1.28
HPAContainerMetrics
false
Alpha
1.20
1.26
HPAContainerMetrics
true
Beta
1.27
1.29
HPAContainerMetrics
true
GA
1.30
1.31
HugePages
false
Alpha
1.8
1.9
HugePages
true
Beta
1.10
1.13
HugePages
true
GA
1.14
1.16
HugePageStorageMediumSize
false
Alpha
1.18
1.18
HugePageStorageMediumSize
true
Beta
1.19
1.21
HugePageStorageMediumSize
true
GA
1.22
1.24
HyperVContainer
false
Alpha
1.10
1.19
HyperVContainer
false
Deprecated
1.20
1.20
IdentifyPodOS
false
Alpha
1.23
1.23
IdentifyPodOS
true
Beta
1.24
1.24
IdentifyPodOS
true
GA
1.25
1.26
ImmutableEphemeralVolumes
false
Alpha
1.18
1.18
ImmutableEphemeralVolumes
true
Beta
1.19
1.20
ImmutableEphemeralVolumes
true
GA
1.21
1.24
IndexedJob
false
Alpha
1.21
1.21
IndexedJob
true
Beta
1.22
1.23
IndexedJob
true
GA
1.24
1.25
IngressClassNamespacedParams
false
Alpha
1.21
1.21
IngressClassNamespacedParams
true
Beta
1.22
1.22
IngressClassNamespacedParams
true
GA
1.23
1.24
Initializers
false
Alpha
1.7
1.13
Initializers
–
Deprecated
1.14
1.14
InTreePluginAWSUnregister
false
Alpha
1.21
1.30
InTreePluginAzureDiskUnregister
false
Alpha
1.21
1.30
InTreePluginAzureFileUnregister
false
Alpha
1.21
1.30
InTreePluginGCEUnregister
false
Alpha
1.21
1.30
InTreePluginOpenStackUnregister
false
Alpha
1.21
1.30
InTreePluginRBDUnregister
false
Alpha
1.23
1.27
InTreePluginRBDUnregister
false
Deprecated
1.28
1.30
InTreePluginvSphereUnregister
false
Alpha
1.21
1.30
IPTablesOwnershipCleanup
false
Alpha
1.25
1.26
IPTablesOwnershipCleanup
true
Beta
1.27
1.27
IPTablesOwnershipCleanup
true
GA
1.28
1.29
IPv6DualStack
false
Alpha
1.15
1.20
IPv6DualStack
true
Beta
1.21
1.22
IPv6DualStack
true
GA
1.23
1.24
JobMutableNodeSchedulingDirectives
true
Beta
1.23
1.26
JobMutableNodeSchedulingDirectives
true
GA
1.27
1.28
JobReadyPods
false
Alpha
1.23
1.23
JobReadyPods
true
Beta
1.24
1.28
JobReadyPods
true
GA
1.29
1.30
JobTrackingWithFinalizers
false
Alpha
1.22
1.22
JobTrackingWithFinalizers
false
Beta
1.23
1.24
JobTrackingWithFinalizers
true
Beta
1.25
1.25
JobTrackingWithFinalizers
true
GA
1.26
1.28
KMSv2
false
Alpha
1.25
1.26
KMSv2
true
Beta
1.27
1.28
KMSv2
true
GA
1.29
1.31
KMSv2KDF
false
Beta
1.28
1.28
KMSv2KDF
true
GA
1.29
1.31
KubeletConfigFile
false
Alpha
1.8
1.9
KubeletConfigFile
–
Deprecated
1.10
1.10
KubeletCredentialProviders
false
Alpha
1.20
1.23
KubeletCredentialProviders
true
Beta
1.24
1.25
KubeletCredentialProviders
true
GA
1.26
1.28
KubeletPluginsWatcher
false
Alpha
1.11
1.11
KubeletPluginsWatcher
true
Beta
1.12
1.12
KubeletPluginsWatcher
true
GA
1.13
1.16
KubeletPodResources
false
Alpha
1.13
1.14
KubeletPodResources
true
Beta
1.15
1.27
KubeletPodResources
true
GA
1.28
1.29
KubeletPodResourcesGetAllocatable
false
Alpha
1.21
1.22
KubeletPodResourcesGetAllocatable
true
Beta
1.23
1.27
KubeletPodResourcesGetAllocatable
true
GA
1.28
1.29
LegacyNodeRoleBehavior
false
Alpha
1.16
1.18
LegacyNodeRoleBehavior
true
Beta
1.19
1.20
LegacyNodeRoleBehavior
false
GA
1.21
1.22
LegacyServiceAccountTokenCleanUp
false
Alpha
1.28
1.28
LegacyServiceAccountTokenCleanUp
true
Beta
1.29
1.29
LegacyServiceAccountTokenCleanUp
true
GA
1.30
1.31
LegacyServiceAccountTokenNoAutoGeneration
true
Beta
1.24
1.25
LegacyServiceAccountTokenNoAutoGeneration
true
GA
1.26
1.28
LegacyServiceAccountTokenTracking
false
Alpha
1.26
1.26
LegacyServiceAccountTokenTracking
true
Beta
1.27
1.27
LegacyServiceAccountTokenTracking
true
GA
1.28
1.29
LocalStorageCapacityIsolation
false
Alpha
1.7
1.9
LocalStorageCapacityIsolation
true
Beta
1.10
1.24
LocalStorageCapacityIsolation
true
GA
1.25
1.26
MinDomainsInPodTopologySpread
false
Alpha
1.24
1.24
MinDomainsInPodTopologySpread
false
Beta
1.25
1.26
MinDomainsInPodTopologySpread
true
Beta
1.27
1.29
MinDomainsInPodTopologySpread
true
GA
1.30
1.31
MinimizeIPTablesRestore
false
Alpha
1.26
1.26
MinimizeIPTablesRestore
true
Beta
1.27
1.27
MinimizeIPTablesRestore
true
GA
1.28
1.29
MixedProtocolLBService
false
Alpha
1.20
1.23
MixedProtocolLBService
true
Beta
1.24
1.25
MixedProtocolLBService
true
GA
1.26
1.27
MountContainers
false
Alpha
1.9
1.16
MountContainers
false
Deprecated
1.17
1.17
MountPropagation
false
Alpha
1.8
1.9
MountPropagation
true
Beta
1.10
1.11
MountPropagation
true
GA
1.12
1.14
MultiCIDRRangeAllocator
false
Alpha
1.25
1.28
NamespaceDefaultLabelName
true
Beta
1.21
1.21
NamespaceDefaultLabelName
true
GA
1.22
1.23
NetworkPolicyEndPort
false
Alpha
1.21
1.21
NetworkPolicyEndPort
true
Beta
1.22
1.24
NetworkPolicyEndPort
true
GA
1.25
1.26
NetworkPolicyStatus
false
Alpha
1.24
1.27
NewVolumeManagerReconstruction
false
Alpha
1.25
1.26
NewVolumeManagerReconstruction
true
Beta
1.27
1.29
NewVolumeManagerReconstruction
true
GA
1.30
1.31
NodeDisruptionExclusion
false
Alpha
1.16
1.18
NodeDisruptionExclusion
true
Beta
1.19
1.20
NodeDisruptionExclusion
true
GA
1.21
1.22
NodeLease
false
Alpha
1.12
1.13
NodeLease
true
Beta
1.14
1.16
NodeLease
true
GA
1.17
1.23
NodeOutOfServiceVolumeDetach
false
Alpha
1.24
1.25
NodeOutOfServiceVolumeDetach
true
Beta
1.26
1.27
NodeOutOfServiceVolumeDetach
true
GA
1.28
1.31
NonPreemptingPriority
false
Alpha
1.15
1.18
NonPreemptingPriority
true
Beta
1.19
1.23
NonPreemptingPriority
true
GA
1.24
1.25
OpenAPIV3
false
Alpha
1.23
1.23
OpenAPIV3
true
Beta
1.24
1.26
OpenAPIV3
true
GA
1.27
1.28
PersistentLocalVolumes
false
Alpha
1.7
1.9
PersistentLocalVolumes
true
Beta
1.10
1.13
PersistentLocalVolumes
true
GA
1.14
1.16
PodAffinityNamespaceSelector
false
Alpha
1.21
1.21
PodAffinityNamespaceSelector
true
Beta
1.22
1.23
PodAffinityNamespaceSelector
true
GA
1.24
1.25
PodDisruptionBudget
false
Alpha
1.3
1.4
PodDisruptionBudget
true
Beta
1.5
1.20
PodDisruptionBudget
true
GA
1.21
1.25
PodHasNetworkCondition
false
Alpha
1.25
1.27
PodHostIPs
false
Alpha
1.28
1.28
PodHostIPs
true
Beta
1.29
1.30
PodHostIPs
true
GA
1.30
1.31
PodOverhead
false
Alpha
1.16
1.17
PodOverhead
true
Beta
1.18
1.23
PodOverhead
true
GA
1.24
1.25
PodPriority
false
Alpha
1.8
1.10
PodPriority
true
Beta
1.11
1.13
PodPriority
true
GA
1.14
1.18
PodReadinessGates
false
Alpha
1.11
1.11
PodReadinessGates
true
Beta
1.12
1.13
PodReadinessGates
true
GA
1.14
1.16
PodSecurity
false
Alpha
1.22
1.22
PodSecurity
true
Beta
1.23
1.24
PodSecurity
true
GA
1.25
1.27
PodShareProcessNamespace
false
Alpha
1.10
1.11
PodShareProcessNamespace
true
Beta
1.12
1.16
PodShareProcessNamespace
true
GA
1.17
1.19
PreferNominatedNode
false
Alpha
1.21
1.21
PreferNominatedNode
true
Beta
1.22
1.23
PreferNominatedNode
true
GA
1.24
1.25
ProbeTerminationGracePeriod
false
Alpha
1.21
1.21
ProbeTerminationGracePeriod
false
Beta
1.22
1.24
ProbeTerminationGracePeriod
true
Beta
1.25
1.27
ProbeTerminationGracePeriod
true
GA
1.28
1.28
ProxyTerminatingEndpoints
false
Alpha
1.22
1.25
ProxyTerminatingEndpoints
true
Beta
1.26
1.27
ProxyTerminatingEndpoints
true
GA
1.28
1.29
PVCProtection
false
Alpha
1.9
1.9
PVCProtection
–
Deprecated
1.10
1.10
ReadOnlyAPIDataVolumes
true
Beta
1.8
1.9
ReadOnlyAPIDataVolumes
–
GA
1.10
1.10
ReadWriteOncePod
false
Alpha
1.22
1.26
ReadWriteOncePod
true
Beta
1.27
1.28
ReadWriteOncePod
true
GA
1.29
1.30
RemoveSelfLink
false
Alpha
1.16
1.19
RemoveSelfLink
true
Beta
1.20
1.23
RemoveSelfLink
true
GA
1.24
1.29
RequestManagement
false
Alpha
1.15
1.16
RequestManagement
–
Deprecated
1.17
1.17
ResourceLimitsPriorityFunction
false
Alpha
1.9
1.18
ResourceLimitsPriorityFunction
–
Deprecated
1.19
1.19
ResourceQuotaScopeSelectors
false
Alpha
1.11
1.11
ResourceQuotaScopeSelectors
true
Beta
1.12
1.16
ResourceQuotaScopeSelectors
true
GA
1.17
1.18
RetroactiveDefaultStorageClass
false
Alpha
1.25
1.25
RetroactiveDefaultStorageClass
true
Beta
1.26
1.27
RetroactiveDefaultStorageClass
true
GA
1.28
1.28
RootCAConfigMap
false
Alpha
1.13
1.19
RootCAConfigMap
true
Beta
1.20
1.20
RootCAConfigMap
true
GA
1.21
1.22
RotateKubeletClientCertificate
true
Beta
1.8
1.18
RotateKubeletClientCertificate
true
GA
1.19
1.21
RunAsGroup
true
Beta
1.14
1.20
RunAsGroup
true
GA
1.21
1.22
RuntimeClass
false
Alpha
1.12
1.13
RuntimeClass
true
Beta
1.14
1.19
RuntimeClass
true
GA
1.20
1.24
ScheduleDaemonSetPods
false
Alpha
1.11
1.11
ScheduleDaemonSetPods
true
Beta
1.12
1.16
ScheduleDaemonSetPods
true
GA
1.17
1.18
SCTPSupport
false
Alpha
1.12
1.18
SCTPSupport
true
Beta
1.19
1.19
SCTPSupport
true
GA
1.20
1.22
SeccompDefault
false
Alpha
1.22
1.24
SeccompDefault
true
Beta
1.25
1.26
SeccompDefault
true
GA
1.27
1.28
SecurityContextDeny
false
Alpha
1.27
1.29
SelectorIndex
false
Alpha
1.18
1.18
SelectorIndex
true
Beta
1.19
1.19
SelectorIndex
true
GA
1.20
1.25
ServerSideApply
false
Alpha
1.14
1.15
ServerSideApply
true
Beta
1.16
1.21
ServerSideApply
true
GA
1.22
1.31
ServerSideFieldValidation
false
Alpha
1.23
1.24
ServerSideFieldValidation
true
Beta
1.25
1.26
ServerSideFieldValidation
true
GA
1.27
1.31
ServiceAccountIssuerDiscovery
false
Alpha
1.18
1.19
ServiceAccountIssuerDiscovery
true
Beta
1.20
1.20
ServiceAccountIssuerDiscovery
true
GA
1.21
1.23
ServiceAppProtocol
false
Alpha
1.18
1.18
ServiceAppProtocol
true
Beta
1.19
1.19
ServiceAppProtocol
true
GA
1.20
1.22
ServiceInternalTrafficPolicy
false
Alpha
1.21
1.21
ServiceInternalTrafficPolicy
true
Beta
1.22
1.25
ServiceInternalTrafficPolicy
true
GA
1.26
1.27
ServiceIPStaticSubrange
false
Alpha
1.24
1.24
ServiceIPStaticSubrange
true
Beta
1.25
1.25
ServiceIPStaticSubrange
true
GA
1.26
1.27
ServiceLBNodePortControl
false
Alpha
1.20
1.21
ServiceLBNodePortControl
true
Beta
1.22
1.23
ServiceLBNodePortControl
true
GA
1.24
1.25
ServiceLoadBalancerClass
false
Alpha
1.21
1.21
ServiceLoadBalancerClass
true
Beta
1.22
1.23
ServiceLoadBalancerClass
true
GA
1.24
1.25
ServiceLoadBalancerFinalizer
false
Alpha
1.15
1.15
ServiceLoadBalancerFinalizer
true
Beta
1.16
1.16
ServiceLoadBalancerFinalizer
true
GA
1.17
1.20
ServiceNodeExclusion
false
Alpha
1.8
1.18
ServiceNodeExclusion
true
Beta
1.19
1.20
ServiceNodeExclusion
true
GA
1.21
1.22
ServiceNodePortStaticSubrange
false
Alpha
1.27
1.27
ServiceNodePortStaticSubrange
true
Beta
1.28
1.28
ServiceNodePortStaticSubrange
true
GA
1.29
1.30
ServiceTopology
false
Alpha
1.17
1.19
ServiceTopology
false
Deprecated
1.20
1.22
SetHostnameAsFQDN
false
Alpha
1.19
1.19
SetHostnameAsFQDN
true
Beta
1.20
1.21
SetHostnameAsFQDN
true
GA
1.22
1.24
SkipReadOnlyValidationGCE
false
Alpha
1.28
1.28
SkipReadOnlyValidationGCE
true
Deprecated
1.29
1.30
StableLoadBalancerNodeSet
true
Beta
1.27
1.29
StableLoadBalancerNodeSet
true
GA
1.30
1.31
StartupProbe
false
Alpha
1.16
1.17
StartupProbe
true
Beta
1.18
1.19
StartupProbe
true
GA
1.20
1.23
StatefulSetMinReadySeconds
false
Alpha
1.22
1.22
StatefulSetMinReadySeconds
true
Beta
1.23
1.24
StatefulSetMinReadySeconds
true
GA
1.25
1.26
StorageObjectInUseProtection
true
Beta
1.10
1.10
StorageObjectInUseProtection
true
GA
1.11
1.24
StreamingProxyRedirects
false
Beta
1.5
1.5
StreamingProxyRedirects
true
Beta
1.6
1.17
StreamingProxyRedirects
true
Deprecated
1.18
1.21
StreamingProxyRedirects
false
Deprecated
1.22
1.24
SupportIPVSProxyMode
false
Alpha
1.8
1.8
SupportIPVSProxyMode
false
Beta
1.9
1.9
SupportIPVSProxyMode
true
Beta
1.10
1.10
SupportIPVSProxyMode
true
GA
1.11
1.20
SupportNodePidsLimit
false
Alpha
1.14
1.14
SupportNodePidsLimit
true
Beta
1.15
1.19
SupportNodePidsLimit
true
GA
1.20
1.23
SupportPodPidsLimit
false
Alpha
1.10
1.13
SupportPodPidsLimit
true
Beta
1.14
1.19
SupportPodPidsLimit
true
GA
1.20
1.23
SuspendJob
false
Alpha
1.21
1.21
SuspendJob
true
Beta
1.22
1.23
SuspendJob
true
GA
1.24
1.25
Sysctls
true
Beta
1.11
1.20
Sysctls
true
GA
1.21
1.22
TaintBasedEvictions
false
Alpha
1.6
1.12
TaintBasedEvictions
true
Beta
1.13
1.17
TaintBasedEvictions
true
GA
1.18
1.20
TaintNodesByCondition
false
Alpha
1.8
1.11
TaintNodesByCondition
true
Beta
1.12
1.16
TaintNodesByCondition
true
GA
1.17
1.18
TokenRequest
false
Alpha
1.10
1.11
TokenRequest
true
Beta
1.12
1.19
TokenRequest
true
GA
1.20
1.21
TokenRequestProjection
false
Alpha
1.11
1.11
TokenRequestProjection
true
Beta
1.12
1.19
TokenRequestProjection
true
GA
1.20
1.21
TopologyManager
false
Alpha
1.16
1.17
TopologyManager
true
Beta
1.18
1.26
TopologyManager
true
GA
1.27
1.28
TTLAfterFinished
false
Alpha
1.12
1.20
TTLAfterFinished
true
Beta
1.21
1.22
TTLAfterFinished
true
GA
1.23
1.24
UserNamespacesStatelessPodsSupport
false
Alpha
1.25
1.27
ValidateProxyRedirects
false
Alpha
1.12
1.13
ValidateProxyRedirects
true
Beta
1.14
1.21
ValidateProxyRedirects
true
Deprecated
1.22
1.24
VolumePVCDataSource
false
Alpha
1.15
1.15
VolumePVCDataSource
true
Beta
1.16
1.17
VolumePVCDataSource
true
GA
1.18
1.21
VolumeScheduling
false
Alpha
1.9
1.9
VolumeScheduling
true
Beta
1.10
1.12
VolumeScheduling
true
GA
1.13
1.16
VolumeSnapshotDataSource
false
Alpha
1.12
1.16
VolumeSnapshotDataSource
true
Beta
1.17
1.19
VolumeSnapshotDataSource
true
GA
1.20
1.22
VolumeSubpath
true
GA
1.10
1.24
VolumeSubpathEnvExpansion
false
Alpha
1.14
1.14
VolumeSubpathEnvExpansion
true
Beta
1.15
1.16
VolumeSubpathEnvExpansion
true
GA
1.17
1.24
WarningHeaders
true
Beta
1.19
1.21
WarningHeaders
true
GA
1.22
1.24
WindowsEndpointSliceProxying
false
Alpha
1.19
1.20
WindowsEndpointSliceProxying
true
Beta
1.21
1.21
WindowsEndpointSliceProxying
true
GA
1.22
1.24
WindowsGMSA
false
Alpha
1.14
1.15
WindowsGMSA
true
Beta
1.16
1.17
WindowsGMSA
true
GA
1.18
1.20
WindowsHostProcessContainers
false
Alpha
1.22
1.22
WindowsHostProcessContainers
true
Beta
1.23
1.25
WindowsHostProcessContainers
true
GA
1.26
1.27
WindowsRunAsUserName
false
Alpha
1.16
1.16
WindowsRunAsUserName
true
Beta
1.17
1.17
WindowsRunAsUserName
true
GA
1.18
1.20
ZeroLimitedNominalConcurrencyShares
false
Beta
1.29
1.29
ZeroLimitedNominalConcurrencyShares
true
GA
1.30
1.31
Опис вилучених функціональних можливостей
Accelerators: Надавав ранню форму втулка для ввімкнення підтримки графічного процесора Nvidia під час використання Docker Engine; більше не доступний. Див. Втулки пристроїв для альтернатив.
AllowExtTrafficLocalEndpoints: Вмикає сервіс для маршрутизації зовнішніх запитів до локальних точок доступу вузла.
AllowInsecureBackendProxy: Дозволяє користувачам пропускати перевірку TLS для kubelet на запитах до логів Pod.
APIPriorityAndFairness: Дозволяє керувати паралельністю запитів за допомоги приорітезації та справедливості на кожному сервері. (Перейменовано з RequestManagement)
APISelfSubjectReview: Вмикає API SelfSubjectReview, який дозволяє користувачам бачити автентифікаційну інформацію субʼєкта запиту. Дивіться API доступу до автентифікаційної інформації для клієнта для більш детальної інформації.
AttachVolumeLimit: Вмикає втулки томів, щоб повідомляти про обмеження на кількість томів які може бути приєднано до вузла. Див. розділ динамічні обмеження тому для детальнішої інформації.
BalanceAttachedNodeVolumes: Включити підрахунок volume на вузлі, який слід враховувати для збалансованого розподілу ресурсів при плануванні. Вузлу, який має ближче завантаження процесора, завантаження памʼяті та кількість томів, віддається перевага при прийнятті рішень планувальником.
BlockVolume: Увімкніть визначення та споживання необроблених блокових пристроїв у Podʼах. Див. статтю Підтримка необроблених блокових томів для більш детальної інформації.
BoundServiceAccountTokenVolume:
Переносить томи ServiceAccount для використання спроєцьованого тому, що складається з ServiceAccountTokenVolumeProjection. Адміністратори кластера можуть використовувати метрику serviceaccount_stale_tokens_total для моніторингу робочих навантажень, які залежать від розширених токенів. Якщо таких навантажень немає, вимкніть розширені токени, запустивши kube-apiserver з прапорцем --service-account-extend-token-expiration=false.
CloudDualStackNodeIPs: Вмикає двостековий kubelet --node-ip із зовнішніми хмарними провайдерами. Див. статтю Налаштування подвійного стека IPv4/IPv6 для більш детальної інформації.
ConsistentHTTPGetHandlers: Нормалізувати передачу URL-адреси та заголовка HTTP-запиту для життєвого циклу обробників з пробами.
ControllerManagerLeaderMigration: Вмикає міграцію лідерів для kube-controller-manager та cloud-controller-manager що дозволяє оператору кластера в реальному часі мігрувати контролери з kube-controller-manager у зовнішній контролер-менеджер (наприклад, cloud-controller-manager) у кластері HA без простоїв.
CRIContainerLogRotation: Вмикає ротацію логів контейнера для середовища виконання контейнерів CRI. Стандартний максимальний розмір файлу логу становить 10 МБ, а максимальна кількість файлів логу для контейнера — 5. Ці значення можна налаштувати у конфігурації kubelet. Див. статтю ведення логів на рівні вузла
для більш детальної інформації.
CronJobControllerV2: Використовуйте альтернативну реалізацію контролера CronJob. В іншому випадку буде обрано версію 1 цього ж контролера.
CronJobTimeZone: Дозволити використання необовʼязкового поля timeZone у CronJobs
CSIBlockVolume: Вмикає підтримку блочного сховища зовнішніми драйверами томів CSI. Див. статтю Підтримка CSI для блочних томів для детальнішої інформації.
CSIDriverRegistry: Вмикає всю логіку, повʼязану з обʼєктом CSIDriver API в csi.storage.k8s.io.
CSIInlineVolume: Увімкніть підтримку томів CSI Inline для Podʼів.
CSIMigration: Вмикає shimʼи та логіку передачі для маршрутизації операцій тому з вбудованого втулка до втулка CSI.
CSIMigrationAWS: Вмикає shimʼи та логіку передачі для маршрутизації операцій тому з вбудованого втулка AWS-EBS до втулка EBS CSI. Підтримує відновлення до втулка EBS для операцій монтування на вузлах, на яких функція вимкнена або на яких втулок EBS CSI не встановлено та не налаштовано. Не підтримує відновлення для операцій надання, для них втулок CSI повинен бути встановлений та налаштований.
CSIMigrationAWSComplete: Припиняє реєстрування вбудованих втулків EBS в kubelet та контролерах томів та вмикає shimʼи та логіку перекладу для маршрутизації операцій з томами від вбудованого втулка EBS AWS до втулка EBS CSI. Вимагає ввімкнених прапорців CSIMigration та CSIMigrationAWS та встановленого та налаштованого втулка EBS CSI на всіх вузлах кластера. Цей прапорець було відзначено як застарілий на користь прапорця InTreePluginAWSUnregister, який перешкоджає реєстрації вбудованого втулка EBS.
CSIMigrationAzureDisk: Вмикає shimʼи та логіку передачі для маршрутизації операцій тому з вбудованого втулка Azure-Disk до втулка AzureDisk CSI. Підтримує відновлення до втулка AzureDisk для операцій монтування на вузлах, на яких функція вимкнена або на яких втулок AzureDisk CSI не встановлено та не налаштовано. Не підтримує відновлення для операцій надання, для них втулок CSI повинен бути встановлений та налаштований. Вимагає увімкнення прапорця функції CSIMigration.
CSIMigrationAzureDiskComplete: Припиняє реєстрування вбудованих втулків Azure-Disk в kubelet та контролерах томів та вмикає shimʼи та логіку перекладу для маршрутизації операцій з томами від вбудованого втулка Azure-Disk до втулка AzureDisk CSI. Вимагає ввімкнених прапорців CSIMigration та CSIMigrationAzureDisk та встановленого та налаштованого втулка AzureDisk CSI на всіх вузлах кластера. Цей прапорець було відзначено як застарілий на користь прапорця InTreePluginAzureDiskUnregister, який перешкоджає реєстрації вбудованого втулка AzureDisk.
CSIMigrationAzureFile: Вмикає shimʼи та логіку передачі для маршрутизації операцій тому з вбудованого втулка Azure-File до втулка AzureFile CSI. Підтримує відновлення до втулка AzureFile для операцій монтування на вузлах, на яких функція вимкнена або на яких втулок AzureFile CSI не встановлено та не налаштовано. Не підтримує відновлення для операцій надання, для них втулок CSI повинен бути встановлений та налаштований. Вимагає увімкнення прапорця функції CSIMigration.
CSIMigrationAzureFileComplete: Припиняє реєстрування вбудованих втулків Azure-File в kubelet та контролерах томів та вмикає shimʼи та логіку перекладу для маршрутизації операцій з томами від вбудованого втулка Azure-File до втулка AzureFile CSI. Вимагає ввімкнених прапорців CSIMigration та CSIMigrationAzureFile та встановленого та налаштованого втулка AzureFile CSI на всіх вузлах кластера. Цей прапорець було відзначено як застарілий на користь прапорця InTreePluginAzureFileUnregister, який перешкоджає реєстрації вбудованого втулка AzureFile.
CSIMigrationGCE: Вмикає shimʼи та логіку передачі для маршрутизації операцій тому з вбудованого втулка GCE-PD до втулка PD CSI. Підтримує відновлення до втулка PD для операцій монтування на вузлах, на яких функція вимкнена або на яких втулок PD CSI не встановлено та не налаштовано. Не підтримує відновлення для операцій надання, для них втулок CSI повинен бути встановлений та налаштований. Вимагає увімкнення прапорця функції CSIMigration.
CSIMigrationGCEComplete: Припиняє реєстрування вбудованих втулків GCE-PD в kubelet та контролерах томів та вмикає shimʼи та логіку перекладу для маршрутизації операцій з томами від вбудованого втулка GCE-PD до втулка GCE-PD CSI. Вимагає ввімкнених прапорців CSIMigration та CSIMigrationGCE та встановленого та налаштованого втулка GCE-PD CSI на всіх вузлах кластера. Цей прапорець було відзначено як застарілий на користь прапорця InTreePluginGCEUnregister, який перешкоджає реєстрації вбудованого втулка GCE-PD.
CSIMigrationOpenStack: Вмикає shimʼи та логіку передачі для маршрутизації операцій тому з вбудованого втулка Cinder до втулка Cinder CSI. Підтримує відновлення до втулка Cinder для операцій монтування на вузлах, на яких функція вимкнена або на яких втулок Cinder CSI не встановлено та не налаштовано. Не підтримує відновлення для операцій надання, для них втулок CSI повинен бути встановлений та налаштований. Вимагає увімкнення прапорця функції CSIMigration.
CSIMigrationOpenStackComplete: Припиняє реєстрування вбудованих втулків Cinder в kubelet та контролерах томів та вмикає shimʼи та логіку перекладу для маршрутизації операцій з томами від вбудованого втулка Cinder до втулка Cinder CSI. Вимагає ввімкнених прапорців CSIMigration та CSIMigrationOpenStack та встановленого та налаштованого втулка Cinder CSI на всіх вузлах кластера. Цей прапорець було відзначено як застарілий на користь прапорця InTreePluginOpenStackUnregister, який перешкоджає реєстрації вбудованого втулка Cinder OpenStack.
CSIMigrationRBD:
Вмикає shimʼи та логіку передачі для маршрутизації операцій тому з вбудованого втулка RBD до втулка Ceph RBD CSI. Вимагає увімкнення функціональної можливості CSIMigration та встановлення та налаштування втулка Ceph CSI в кластері.
Цю функціональну можливість було відзначено як застарілу на користь функціональної можливості InTreePluginRBDUnregister, який запобігає реєстрації вбудованого втулка RBD.
CSIMigrationvSphere: Вмикає shimʼи та логіку передачі для маршрутизації операцій тому з вбудованого втулка vSphere до втулка vSphere CSI. Підтримує відновлення до втулка vSphere для операцій монтування на вузлах, на яких функція вимкнена або на яких втулок vSphere CSI не встановлено та не налаштовано. Не підтримує відновлення для операцій надання, для них втулок CSI повинен бути встановлений та налаштований. Вимагає увімкнення прапорця функції CSIMigration.
CSIMigrationvSphereComplete: Припиняє реєстрацію вбудованого втулка vSphere в kubelet та контролерах томів та вмикає shimʼи та логіку перекладу для маршрутизації операцій з томами від вбудованого втулка vSphere до втулка vSphere CSI. Вимагає ввімкнених прапорців CSIMigration та CSIMigrationvSphere та встановленого та налаштованого втулка vSphere CSI на всіх вузлах кластера. Цей прапорець було відзначено як застарілий на користь прапорця InTreePluginvSphereUnregister, який перешкоджає реєстрації вбудованого втулка vSphere.
CSINodeExpandSecret: Вмикає передачу секретних даних автентифікації до втулка CSI для використання під час операції NodeExpandVolume CSI.
CSINodeInfo: Вмикає всю логіку, повʼязану з обʼєктом API CSINodeInfo в csi.storage.k8s.io.
CSIPersistentVolume: Вмикає виявлення та монтування томів, які надаються через сумісний втулок томів CSI (Container Storage Interface).
CSIServiceAccountToken: Дозволяє CSI-драйверам отримувати токен службового облікового запису для Podʼів, для яких вони монтували томи. Див.
Запити токенів.
CSIStorageCapacity: Вмикає втулок CSI для публікації інформації про обсяг сховища та використання цієї інформації планувальником Kubernetes під час планування Podʼів. Див. Обсяг сховища. Для отримання додаткових відомостей див. документацію про типи томів csi.
CSIVolumeFSGroupPolicy: Дозволяє CSIDrivers використовувати поле fsGroupPolicy. Це поле керує тим, чи підтримують томи, створені CSIDriver, власність томів та зміни дозволів, коли ці томи монтуються.
CSRDuration: Дозволяє клієнтам запитувати час дії для сертифікатів, виданих через Kubernetes CSR API.
CustomPodDNS: Дозволяє змінювати налаштування DNS для Pod за допомогою властивості dnsConfig. Для отримання додаткової інформації див. DNS-налаштування Pod.
CustomResourceDefaulting: Вмикає підтримку CRD для стандартних значень в схемах перевірки OpenAPI v3.
CustomResourceSubresources: Вмикає субресурси /status та /scale для ресурсів, створених з CustomResourceDefinition.
CustomResourceValidation: Вмикає перевірку на основі схеми для ресурсів, створених з CustomResourceDefinition.
CustomResourceValidationExpressions: Вмикає перевірку мови виразів у CRD, яка буде перевіряти власний ресурс клієнта на основі правил валідації, написаних у розширенні x-kubernetes-validations.
CustomResourceWebhookConversion: Вмикає конверсію на основі webhook для ресурсів, створених з CustomResourceDefinition.
DaemonSetUpdateSurge: Дозволяє робочим навантаженням DaemonSet зберігати доступність під час оновлення на кожному вузлі. Див. Виконання поетапного оновлення DaemonSet.
DefaultPodTopologySpread: Дозволяє використовувати втулок планування PodTopologySpread для виконання стандартного розподілу.
DelegateFSGroupToCSIDriver: Якщо підтримується драйвером CSI, делегує роль застосовуючи fsGroup з securityContext Pod до драйвера, передаючи fsGroup через виклики CSI NodeStageVolume та NodePublishVolume.
DevicePlugins: Вмикає device-plugins
на основі виділення ресурсів на вузлах.
DownwardAPIHugePages: Вмикає використання великих сторінок (hugepages) у downward API.
DRAControlPlaneController: Дозволяє підтримувати ресурси з власними параметрами та життєвим циклом, який не залежить від Pod. Розподілом ресурсів займається контролер панелі управління драйвера ресурсу.
DryRun: Вмикає запити dry rin на боці сервера, щоб можна було тестувати валідацію, злиття та мутацію без впровадження змін.
DynamicAuditing: Використовувалося для увімкнення динамічного аудиту до версії 1.19.
DynamicKubeletConfig: Вмикає динамічну конфігурацію kubelet. Функція більше не підтримується за межами підтримуваної політики відхилення. Функціональну можливість було вилучено з kubelet у версії 1.24.
DynamicProvisioningScheduling: Розширює стандартний планувальник, щоб врахувати топологію тома і обробляти виділення PV. Цю функцію було замінено функцією VolumeScheduling у версії 1.12.
DynamicVolumeProvisioning: Вмикає динамічне виділення постійних томів для Podʼів.
EnableAggregatedDiscoveryTimeout: Вмикає пʼятисекундний тайм-аут для агрегованих викликів виявлення.
EnableEquivalenceClassCache: Дозволяє планувальнику кешувати еквівалентність вузлів при плануванні Podʼів.
EndpointSlice: Вмикає EndpointSlices для більш масштабованих і розширюваних мережевих точок доступу. Див. статтю Увімкнення EndpointSlices.
EndpointSliceNodeName: Вмикає поле EndpointSlice nodeName.
EndpointSliceProxying: Якщо цю опцію увімкнено, kube-proxy на Linux використовуватиме EndpointSlices як основне джерело даних замість точок доступу, що дає змогу підвищити масштабованість і продуктивність. Див. статтю Увімкнення Endpoint Slices.
EndpointSliceTerminatingCondition: Вмикає поля умов terminating та serving EndpointSlice.
EphemeralContainers: Вмикає можливість додавання ефемерних контейнерів до запущених Podʼів.
ExpandedDNSConfig: Дозволяє використовувати kubelet і kube-apiserver, щоб отримати більше шляхів пошуку DNS і довший список шляхів пошуку DNS. Ця функція потребує підтримки середовища виконання контейнерів (Containerd: v1.5.6 або новішої версії, CRI-O: v1.22 або новішої версії). Див. статтю Розширена конфігурація DNS.
ExperimentalCriticalPodAnnotation: Увімкнути позначення певних Podʼів як критичних, щоб гарантувати їх планування. Ця функція застаріла внаслідок використання пріоритетів та випередження для Podʼів, починаючи з версії 1.13.
ExperimentalHostUserNamespaceDefaulting: Дозволяє встановлення стандартного простору імен для хосту. Призначено для контейнерів, які використовують інші простори імен хосту, монтування хосту або контейнери, які мають привілеї або використовують конкретні не іменовані можливості (наприклад, MKNODE, SYS_MODULE і т. д.). Слід вмикати лише у випадку, якщо перепризначення (remapping) просторів імен користувача увімкнено в демоні Docker.
ExternalPolicyForExternalIP: Виправляє помилку, коли ExternalTrafficPolicy не застосовується до Service ExternalIPs.
GCERegionalPersistentDisk: Увімкніть регіональну функцію PD у GCE.
GenericEphemeralVolume: Дозволяє створювати ефемерні, вбудовані томи, які підтримують усі функції звичайних томів (можуть надаватися сторонніми постачальниками сховищ, відстеження ємності сховища, відновлення зі знімка тощо). Див. статтю Ефемерні томи.
HPAContainerMetrics: Дозволяє HorizontalPodAutoscalers виконувати масштабування на основі метрик з окремих контейнерів у межах цільових Podʼів.
HugePages: Увімкніть виділення та використання попередньо виділених величезних сторінок.
HugePageStorageMediumSize: Увімкніть підтримку декількох розмірів попередньо виділених величезних сторінок.
HyperVContainer: Вмикає ізоляцію Hyper-V для контейнерів Windows
IdentifyPodOS: Дозволяє вказати поле Pod OS. Це допомагає достовірно ідентифікувати операційну систему під час допуску до сервера API.
ImmutableEphemeralVolumes: Дозволяє позначати окремі Secrets та ConfigMaps як незмінні для кращої безпеки та продуктивності.
IndexedJob: Дозволяє контролеру Job керувати завершенням Pod за індексом завершення.
IngressClassNamespacedParams: Дозволяє посилатися на параметри в межах простору імен у ресурсі IngressClass. Ця можливість додає два поля — Scope та Namespace до IngressClass.spec.parameters.
Initializers: Дозволяє асинхронно координувати створення обʼєктів за допомогою втулка допуску Initializers.
InTreePluginAWSUnregister: Припиняє реєстрацію вбудованого втулка aws-ebs у kubelet та контролерах томів.
InTreePluginAzureDiskUnregister: Припиняє реєстрацію вбудованого втулка azuredisk у kubelet та контролерах томів.
InTreePluginAzureFileUnregister: Припиняє реєстрацію вбудованого втулка azurefile у kubelet та контролерах томів.
InTreePluginGCEUnregister: Припиняє реєстрацію вбудованого втулка gce-pd у kubelet та контролерах томів.
InTreePluginOpenStackUnregister: Припиняє реєстрацію вбудованого втулка OpenStack cinder у kubelet та контролерах томів.
InTreePluginRBDUnregister: Припиняє реєстрацію вбудованого втулка RBD у kubelet та контролерах томів.
InTreePluginvSphereUnregister: Припиняє реєстрацію вбудованого втулка vSphere у kubelet та контролерах томів.
IPTablesOwnershipCleanup: Це призводить до того, що kubelet більше не створює застарілі правила iptables.
JobMutableNodeSchedulingDirectives: Дозволяє оновити директиви планування вузлів у шаблоні pod Job.
JobReadyPods: Дозволяє відстежувати кількість Podʼів, які мають станReady. Кількість Ready Podʼів записується у statusJob.
JobTrackingWithFinalizers: Дозволяє відстежувати завершення Job, не покладаючись на те, що Pods залишаться в кластері на невизначений час. Контролер Job використовує завершувачі Pod і поле у статусі Job для відстеження завершених Podʼів, щоб зарахувати їх до списку завершених.
KMSv2KDF: Дозволяє KMS v2 генерувати одноразові ключі шифрування даних. Докладні відомості наведено у статті Використання постачальника KMS для шифрування даних. Якщо у вашому кластері не увімкнено елемент KMSv2, значення елемента KMSv2KDF не матиме жодного впливу.
KubeletCredentialProviders: Вмикає постачальників облікових даних для kubelet exec для отримання облікових даних для отримання образів.
KubeletPluginsWatcher: Вмикає утиліту для відстеження втулків на основі проб, щоб дозволити kubelet виявляти втулки, такі як драйвери томів CSI.
KubeletPodResources: Вмикає ресурси точки доступу gRPC kubelet Pod. Докладніші відомості наведено у статті Підтримка моніторингу пристроїв.
KubeletPodResourcesGetAllocatable: Вмикає функцію GetAllocatableResources для ресурсів pod у kubelet. Цей API доповнює звіт про розподіл ресурсів
LegacyNodeRoleBehavior: Якщо вимкнено, застаріла поведінка балансувальників навантаження сервісів та вимкнення вузлів ігноруватиме мітку node-role.kubernetes.io/master на користь специфічних міток, що надаються мітками NodeDisruptionExclusion та ServiceNodeExclusion.
LegacyServiceAccountTokenCleanUp: Вмикає очищення токенів службових облікових записів, що базуються на Secret, коли вони не використовуються протягом певного часу (стандартно — один рік).
MinimizeIPTablesRestore: Вмикає нову логіку покращення продуктивності в режимі kube-proxy iptables.
MixedProtocolLBService: Вмикає використання різних протоколів в одному екземплярі Service типу LoadBalancer.
MountContainers: Вмикає використання контейнерів утиліт на хості як монтувальника томів.
MountPropagation: Дозволяє надавати спільний доступ до тому, змонтованого одним контейнером, іншим контейнерам або Podʼам. Докладніші відомості наведено у статті поширення монтування.
NamespaceDefaultLabelName: Налаштуйте API Server на встановлення незмінної міткиkubernetes.io/metadata.name у всіх просторах назв, що містить назву простору назв.
NetworkPolicyEndPort: Дозволяє визначити порти у правилі NetworkPolicy як діапазон номерів портів.
NetworkPolicyStatus: Вмикає субресурс status для обʼєктів NetworkPolicy.
NewVolumeManagerReconstruction:
Дозволяє покращити виявлення змонтованих томів під час запуску kubelet. Оскільки відповідний код було суттєво перероблено, у версіях Kubernetes від 1.25 до 1.29 можна було вимкнути цю функцію у випадку, якщо kubelet застряг під час запуску або не розмонтував томи з завершених Podʼів.
Цей рефакторинг лежав в основі функції SELinuxMountReadWriteOncePod у версіях Kubernetes 1.25 та 1.26.
NodeDisruptionExclusion: Дозволяє використовувати мітку вузла node.kubernetes.io/exclude-disruption, яка запобігає евакуації вузлів під час збоїв у зоні.
NodeLease: Увімкніть новий Lease API для звітування про пульс вузла, який може бути використаний як сигнал про стан вузла.
NodeOutOfServiceVolumeDetach: Коли вузол позначено як такий, що не працює, за допомогою taint node.kubernetes.io/out-of-service, то Podʼи на цьому вузлі будуть примусово видалені, якщо вони не можуть толерувати цю позначку, а операції відʼєднання томів для Podʼів, що завершують роботу на цьому вузлі, будуть виконані негайно. Видалені Podʼи можуть бути швидко відновлені на інших вузлах.
NonPreemptingPriority: Вмикає поле preemptionPolicy для PriorityClass та Pod.
OpenAPIV3: Дозволяє серверу API публікувати OpenAPI v3.
PersistentLocalVolumes: Вмикає використання типу тому local у Podʼах. Якщо запитується local том, необхідно вказати спорідненість тому до Podʼів.
PodHasNetworkCondition: Дозволити kubelet позначати стан PodHasNetwork для контейнерів. Його було перейменовано на PodReadyToStartContainersCondition у версії 1.28.
PodHostIPs: Вмикає поле status.hostIPs для Podʼів та downward API. Це поле дозволяє вам показувати IP-адреси хостів робочим навантаженням.
PodOverhead: Вмикає PodOverhead для врахування накладних витрат на Pod.
PodPriority: Дозволяє випередження та зміну планування Podʼів на основі їх пріоритетів.
PodReadinessGates: Дозволяє увімкнути налаштування поля PodReadinessGate для розширення оцінювання готовності Pod. Дивіться Готовність Podʼа для більш детальної інформації.
PodSecurity: Вмикає втулок допуску PodSecurity.
PodShareProcessNamespace: Вмикає параметр shareProcessNamespace у Pod для спільного використання єдиного простору імен процесів між контейнерами, запущеними у Pod. Більш детальну інформацію можна знайти у статті Спільний простір імен процесів між контейнерами у Pod.
PreferNominatedNode: Цей прапорець вказує планувальнику, чи будуть номіновані вузли перевірятися першими перед тим, як обходити всі інші вузли кластера.
Починаючи з Kubernetes v1.10, ці типи томів завжди є тільки для читання, і ви не можете відмовитися від цього.
ReadWriteOncePod: Дозволяє використовувати ReadWriteOncePod режим доступу до PersistentVolume.
RemoveSelfLink: Встановлює поле .metadata.selfLink порожнім (порожній рядок) для всіх обʼєктів і колекцій. Це поле застаріло з випуску Kubernetes v1.16. Коли цю можливість увімкнено, поле .metadata.selfLink залишається частиною API Kubernetes, але завжди не встановлене.
RequestManagement: Дозволяє керувати паралельністю запитів з пріоритетами та справедливістю на кожному сервері API. Замінено на APIPriorityAndFairness з 1.17.
ResourceLimitsPriorityFunction: Вмикає функцію пріоритету планувальника, яка присвоює найнижчу можливу оцінку 1 вузлу, який задовольняє хоча б одному з лімітів процесора та памʼяті вхідного Podʼа. Це має на меті розірвати звʼязки між вузлами з однаковими оцінками.
ResourceQuotaScopeSelectors: Вмикає селектори області обмежень ресурсів.
RetroactiveDefaultStorageClass: Дозволяє призначати StorageClass незвʼязаним постійним томам (PVC) ретроактивно.
RootCAConfigMap: Налаштуйте kube-controller-manager на публікацію ConfigMap з назвою kube-root-ca.crt у кожному просторі імен. Цей ConfigMap містить пакет CA, який використовується для перевірки зʼєднань з kube-apiserver. Докладні відомості наведено у статті Токени привʼязаних службових облікових записів.
RotateKubeletClientCertificate: Вмикає ротацію клієнтського TLS-сертифікату в kubelet. Дивіться kubelet configuration для більш детальної інформації.
RunAsGroup: Вмикає контроль за первинним ідентифікатором групи, встановленим у процесах ініціалізації контейнерів.
RuntimeClass: Вмикає RuntimeClass для вибору конфігурацій середовища виконання контейнера.
ScheduleDaemonSetPods: Дозволяє Podʼам DemonSet плануватися стандартним планувальником замість контролера DaemonSet.
SCTPSupport: Вмикає значення protocolSCTP в означеннях Pod, Service, Endpoints, EndpointSlice та NetworkPolicy.
SeccompDefault: Дозволяє використовувати RuntimeDefault як стандартний профіль seccomp для всіх робочих навантажень. Профіль seccomp вказується в ecurityContext Pod та/або Container.
SecurityContextDeny: Ця можливість сигналізує про те, що контролер допуску SecurityContextDeny є застарілим.
SelectorIndex: Дозволяє використовувати індекси на основі міток і полів у кеші спостереження сервера API для прискорення роботи зі списками.
ServerSideFieldValidation: Вмикає перевірку полів на стороні сервера. Це означає, що перевірка схеми ресурсів виконується на стороні сервера API, а не на стороні клієнта (наприклад, командний рядок kubectl create або kubectl apply).
ServiceAccountIssuerDiscovery: Вмикає точки доступу OIDC discovery (URL видачі та JWKS) для видачі службових облікових записів в API-сервері. Див. Налаштування службових облікових записів для контейнерів Pod для отримання додаткових відомостей.
ServiceAppProtocol: Вмикає поле appProtocol у Services та Endpoints.
ServiceInternalTrafficPolicy: Вмикає поле internalTrafficPolicy у Services.
ServiceIPStaticSubrange: Вмикає стратегію розподілу службових кластерних IP-адрес, згідно з якою діапазон ClusterIP поділяється на частини. Динамічні адреси ClusterIP призначатимуться переважно з верхнього діапазону, що дасть змогу користувачам призначати статичні адреси ClusterIP з нижнього діапазону з низьким ризиком колізій. Докладніші відомості наведено у статті Уникнення колізій.
ServiceLBNodePortControl: Вмикає поле allocateLoadBalancerNodePorts у Services.
ServiceLoadBalancerFinalizer: Вмикає захист завершувача для Service load balancers.
ServiceNodeExclusion: Дозволяє виключати вузли з балансувальників навантаження, створених хмарним постачальником. Вузол може бути виключений, якщо він має мітку "node.kubernetes.io/exclude-from-external-load-balancers".
ServiceTopology: Вмикає сервіс для маршрутизації трафіку на основі топології вузлів кластера.
SetHostnameAsFQDN: Дозволяє вказати повне доменне імʼя (FQDN) як імʼя хосту Podʼів. Див. розділ Поле setHostnameAsFQDN у Pod.
SkipReadOnlyValidationGCE: Пропустити перевірку, що томи GCE PersistentDisk перебувають у режимі лише для читання.
StableLoadBalancerNodeSet: Дозволяє зменшити кількість переконфігурацій балансувальника навантаження контролером послуг (KCCM) внаслідок зміни стану вузла.
StatefulSetMinReadySeconds: Дозволяє контролеру StatefulSet дотримуватися значення minReadySeconds.
StorageObjectInUseProtection: Відкладення видалення обʼєктів PersistentVolume або PersistentVolumeClaim, якщо вони все ще використовуються.
StreamingProxyRedirects: Доручає серверу API перехоплювати (і виконувати) перенаправлення від бекенда ('kubelet') для потокових запитів. Прикладами потокових запитів є запити exec, attach і port-forward.
SupportIPVSProxyMode: Вмикає балансування навантаження сервісів у кластері за допомогою IPVS. Докладні відомості див. у статті проксі-сервери.
SupportNodePidsLimit: Вмикає підтримку обмеження PID на вузлі. Параметр pid=<number> в опціях --system-reserved і --kube-reserved можна вказати, щоб гарантувати, що вказану кількість ідентифікаторів процесів буде зарезервовано для системи в цілому і для системних демонів Kubernetes відповідно.
SupportPodPidsLimit: Вмикання підтримки обмеження PID у Podʼах.
SuspendJob: Дозволяє призупиняти та поновлювати виконання Jobs. Докладнішу інформацію дивіться у документації про Job.
Sysctls: Вмикання підтримки параметрів ядра у просторі імен (sysctls), які можна задавати для кожного з Podʼів. Докладні відомості наведено у sysctls.
TaintBasedEvictions: Дозволяє виселяти Podʼи з вузлів на основі taints на вузлах і толерантностей на Podʼах. Детальніше дивіться у статті taint та tolerances.
TaintNodesByCondition: Дозволяє автоматичне позначення вузлів taints на основі станів вузлів.
TokenRequest: Вмикає точку доступу TokenRequest для ресурсів службових облікових записів.
TokenRequestProjection: Вмикає інʼєкцію токенів службових облікових записів у Pod через projected том.
TTLAfterFinished: Дозволити TTL-контролеру очищати ресурси після завершення їх виконання.
UserNamespacesStatelessPodsSupport: Увімкніть підтримку простору імен користувачів для stateless Podʼів. Ці функціональні можливості були замінені на UserNamespacesSupport у випуску Kubernetes v1.28.
ValidateProxyRedirects: Цей прапорець визначає, чи повинен сервер API перевіряти, що перенаправлення виконуються тільки на той самий хост. Використовується лише якщо увімкнено прапорець StreamingProxyRedirects.
VolumePVCDataSource: Підтримка вказівки існуючого PVC як DataSource.
VolumeScheduling: Вмикає планування з урахуванням топології тома і робить привʼязку PersistentVolumeClaim (PVC) обізнаною з рішеннями щодо планування. Це також дозволяє використовувати тип тома local при використанні разом з функціональною можливістю PersistentLocalVolumes.
VolumeSnapshotDataSource: Вмикання підтримки джерела даних для створення знімків томів.
VolumeSubpath: Дозволяє монтувати субшлях тому в контейнері.
VolumeSubpathEnvExpansion: Вмикання поля SubPathExpr для розгортання змінних оточення у SubPath.
WarningHeaders: Дозволяє надсилати заголовки попередження в відповідях API.
WindowsEndpointSliceProxying: Якщо увімкнено, kube-proxy, що працює на Windows, використовуватиме EndpointSlices як основне джерело даних замість Endpoints, що забезпечує масштабованість і покращення продуктивності. Див. статтю Увімкнення Endpoint Slices.
WindowsGMSA: Дозволяє передавати специфікацію облікових даних GMSA від Podʼів до середовища виконання контейнера.
WindowsHostProcessContainers: Вмикає підтримку контейнерів Windows HostProcess.
WindowsRunAsUserName: Вмикання підтримки запуску програм у контейнерах Windows від імені не типового користувача. Докладні відомості наведено у статті Налаштування RunAsUserName.
ZeroLimitedNominalConcurrencyShares: Дозволити priority & fairness на сервері API використовувати нульове значення для поля nominalConcurrencyShares секції limited рівня пріоритету.
12.3 - kubelet
Огляд
Kubelet є основним "агентом вузла", який працює на кожному вузлі. Він може зареєструвати вузол на apiserver, використовуючи одне з наступного: імʼя хосту; прапорець для перевизначення імені хоста; або спеціальну логіку для провайдера хмарних послуг.
Kubelet працює в термінах PodSpec. PodSpe — це обʼєкт YAML або JSON, який описує Pod. Kubelet приймає набір PodSpec, які надаються різними механізмами (переважно через apiserver) і забезпечує, що контейнери, описані в цих PodSpec, працюють і є справними. Kubelet не управляє контейнерами, які не були створені Kubernetes.
Крім PodSpec з apiserver, є два способи, як маніфест контейнера може бути наданий kubelet.
Файл: Шлях, переданий як прапорець у командному рядку. Файли за цим шляхом будуть періодично моніторитися на наявність оновлень. Період моніторингу стандартно становить 20 секунд і налаштовується за допомогою прапорця.
HTTP endpoint: HTTP endpoint, переданий як параметр у командному рядку. Цей endpoint перевіряється кожні 20 секунд (також налаштовується за допомогою прапорця).
kubelet [flags]
Параметри
--address string Типово: 0.0.0.0
IP-адреса, на якій буде працювати kubelet (встановіть 0.0.0.0 або :: для прослуховування на всіх інтерфейсах та в усіх сімействах IP-адрес) (ЗАСТАРІЛО: Цей параметр слід встановлювати через конфігураційний файл, вказаний прапорцем --config kubelet. Дивіться kubelet-config-file для отримання додаткової інформації.)
--allowed-unsafe-sysctls strings
Список небезпечних sysctl або шаблонів sysctl, розділених комами (завершуються на *). Використовуйте їх на свій ризик. (ЗАСТАРІЛО: Цей параметр слід встановлювати через конфігураційний файл, вказаний прапорцем --config kubelet. Дивіться kubelet-config-file для отримання додаткової інформації.)
--anonymous-auth Типово: true
Дозволяє анонімні запити до сервера kubelet. Запити, які не відхилені іншим методом автентифікації, розглядаються як анонімні. Анонімні запити мають імʼя користувача system:anonymous та імʼя групи system:unauthenticated. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--authentication-token-webhook
Використовуйте API TokenReview для визначення автентифікації за допомогою маркерів доступу. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
Тривалість кешування відповідей від вебхук аутентифікатора маркерів. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--authorization-mode string Типово: AlwaysAllow
Режим авторизації для сервера kubelet. Дійсні варіанти — "AlwaysAllow" або "Webhook". Режим Webhook використовує API SubjectAccessReview для визначення авторизації. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
Тривалість кешування відповідей "authorized" від вебхук авторизатора. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
Тривалість кешування відповідей "unauthorized" від веб-хук авторизатора. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--bootstrap-kubeconfig string
Шлях до файлу kubeconfig, який буде використовуватися для отримання клієнтського сертифіката для kubelet. Якщо файл, вказаний прапорцем --kubeconfig, не існує, використовується файл bootstrap kubeconfig для запиту клієнтського сертифіката від API сервера. У разі успіху, файл kubeconfig, що посилається на згенерований клієнтський сертифікат і ключ, буде записано за шляхом, вказаним прапорцем --kubeconfig. Файл клієнтського сертифіката і ключа буде збережено в теці, на яку вказує прапорець --cert-dir.
--cert-dir string Типово: /var/lib/kubelet/pki
Тека, де розташовані TLS сертифікати. Якщо вказані прапорці --tls-cert-file та --tls-private-key-file, цей прапорець буде ігноруватися.
--cgroup-driver string Типово: cgroupfs
Драйвер, який kubelet використовує для управління cgroups на хості. Можливі значення: "cgroupfs", "systemd". (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--cgroup-root string Типово: ''
Необовʼязковий кореневий cgroup для використання з Podʼами. Обробляється контейнерним середовищем на основі принципу найкращих зусиль. Типово: '', що означає використання стандартного значення контейнерного середовища. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--cgroups-per-qos Типово: true
Увімкнути створення ієрархії QoS cgroup. Якщо це вірно, створюються cgroup верхнього рівня QoS та cgroup Podʼів. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--client-ca-file string
Якщо встановлено, будь-який запит, що містить клієнтський сертифікат, підписаний однією з організацій, зазначених у файлі client-ca-file, буде автентифіковано з ідентичністю, що відповідає CommonName клієнтського сертифіката. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--cloud-config string
Шлях до файлу конфігурації постачальника хмари. Порожній рядок означає відсутність файлу конфігурації. (ЗАСТАРІЛО: буде видалено в версії 1.25 або пізніше, на користь видалення коду постачальників хмари з kubelet.)
--cloud-provider string
Постачальник для хмарних сервісів. Встановіть порожній рядок для запуску без постачальника хмари. Встановіть 'external' для запуску з зовнішнім постачальником хмари. Якщо встановлено, постачальник хмари визначає імʼя вузла (консультуйтеся з документацією постачальника хмари, щоб дізнатися, чи і як використовується імʼя хоста).
--cluster-dns strings
Список IP-адрес DNS-серверів, розділений комами. Це значення використовується для DNS-серверів контейнерів у випадку Podʼів з "dnsPolicy: ClusterFirst". Примітка: всі DNS-сервери у списку МАЮТЬ обслуговувати один і той же набір записів, інакше розвʼязання імен у кластері може працювати некоректно. Немає гарантії, який саме DNS-сервер буде використовуватися для розвʼязання імен. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--cluster-domain string
Домен для цього кластера. Якщо встановлено, kubelet налаштує всі контейнери для пошуку в цьому домені на додаток до пошукових доменів хоста. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--config string
Kubelet завантажить свою початкову конфігурацію з цього файлу. Шлях може бути абсолютним або відносним; відносні шляхи починаються з поточної робочої теки kubelet. Пропустіть цей прапорець, щоб використовувати вбудовані стандартні значення конфігурації. Прапорці командного рядка переважають над конфігурацією з цього файлу.
--config-dir string Типово: ''
Шлях до теки для вказівки додаткових конфігурацій, що дозволяє користувачу за бажанням зазначити додаткові конфігурації для перевизначення значень, що надаються стандартно і в прапорці `--config`. Примітка: Встановіть змінну середовища 'KUBELET_CONFIG_DROPIN_DIR_ALPHA', щоб вказати теку.
--container-log-max-files int32 Типово: 5
<Увага: бета-функція> Встановіть максимальну кількість файлів логів контейнерів, які можуть бути присутніми для контейнера. Число має бути >= 2. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--container-log-max-size string Типово: 10Mi
<Увага: бета-функція> Встановіть максимальний розмір (наприклад, 10Mi) файлу логу контейнера до того, як буде виконано його ротацію. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
Точка доступу до віддаленого сервісу. UNIX доменні сокети підтримуються в Linux, тоді як точки доступу 'npipe' і 'tcp' підтримуються у Windows. Приклади: 'unix:///path/to/runtime.sock', 'npipe:////./pipe/runtime'. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--contention-profiling
Дозволяє профілювання блоків, якщо профілювання увімкнено. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--cpu-cfs-quota Типово: true
Вмикає застосування квоти CPU CFS для контейнерів, у яких вказано ліміти CPU. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--cpu-cfs-quota-period duration Типово: 100ms
Встановлює значення періоду квоти CPU CFS, cpu.cfs_period_us, зазвичай використовується стандартне значення ядра Linux. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--cpu-manager-policy string Типово: none
Політика керування CPU для використання. Можливі значення: "none", "static". (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--cpu-manager-policy-options string
Набір параметрів політики " key=value" менеджера процесорів, які можна використовувати для точного налаштування їхньої поведінки. Якщо не надано, залишити стандартну поведінку. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
<Увага: альфа-функція> Період узгодження політики керування CPU. Приклади: "10s", або "1m". Якщо не вказано, використовується стандартна частота оновлення статусу вузла. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--enable-controller-attach-detach Типово: true
Дозволяє контролеру Attach/Detach керувати приєднанням/відʼєднанням томів, запланованих до цього вузла, і забороняє kubelet виконувати будь-які операції приєднання/відʼєднання. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--enable-debugging-handlers Типово: true
Вмикає серверні точки доступу для збору логів та локального запуску контейнерів і команд. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--enable-server Типово: true
Вмикає сервер kubelet. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--enforce-node-allocatable strings Типово: pods
Список рівнів застосування обмежень розподілу ресурсів вузла, розділений комами, який буде застосовуватися kubelet. Прийнятні опції: "none", "pods", "system-reserved" та "kube-reserved". Якщо зазначені останні дві опції, обовʼязково також встановити --system-reserved-cgroup і --kube-reserved-cgroup, відповідно. Якщо зазначено "none", додаткові опції не повинні бути встановлені. Дивіться офіційну документацію для отримання додаткової інформації. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--event-burst int32 Типово: 100
Максимальний розмір сплеску записів подій, тимчасово дозволяє записам подій збільшуватися до цього числа, не перевищуючи --event-qps. Число має бути >= 0. Якщо встановлено 0, буде використано стандартне значення (100). (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--event-qps int32 Типово: 50
QPS для обмеження створення подій. Число має бути >= 0. Якщо 0, буде використано стандартне значення QPS (50). (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
Набір порогів виселення (наприклад, "memory.available<1Gi"), досягнення яких спричиняє виселення Podʼів. На вузлі Linux стандартне значення також включає "nodefs.inodesFree<5%". (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--eviction-max-pod-grace-period int32
Максимальний допустимий період завершення (в секундах) для використання при завершенні Podʼів у відповідь на досягнення мʼякого порогу виселення. Якщо значення відʼємне, використовувати значення, вказане у Podʼі. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--eviction-minimum-reclaim strings
Набір мінімальних відновлень (наприклад, "imagefs.available=2Gi"), що описує мінімальну кількість ресурсів, яку kubelet буде відновлювати під час виселення Podʼів, якщо цей ресурс знаходиться під тиском. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
Тривалість, протягом якої kubelet має чекати перед виходом із стану тиску виселення. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--eviction-soft strings
Набір порогів виселення (наприклад, "memory.available<1.5Gi"), які при досягненні протягом відповідного пільгового періоду спричинять виселення Podʼів. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--eviction-soft-grace-period strings
Набір пільгових періодів виселення (наприклад, "memory.available=1m30s"), які відповідають тривалості, протягом якої мʼякий поріг виселення має утримуватись перед тим, як буде ініційовано виселення Podʼів. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--exit-on-lock-contention
Чи повинен kubelet завершити роботу після конфлікту файлів блокування.
Якщо встановлено true, жорсткі пороги виселення будуть ігноруватися при розрахунку доступних ресурсів вузла. Дивіться тут для отримання додаткової інформації. (ЗАСТАРІЛО: буде видалено в версії 1.25 або пізніше)
--experimental-mounter-path string Типово: mount
[Експериментально] Шлях до виконуваного файлу монтувальника. Залиште порожнім, щоб використовувати стандартний mount. (ЗАСТАРІЛО: буде видалено в версії 1.24 або пізніше на користь використання CSI.)
--fail-cgroupv1 Default: true
Забороняє запуск kubelet на хості за допомогою cgroup v1.
--fail-swap-on Типово: true
Змушує kubelet не запускатися, якщо на вузлі увімкнено своп. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
Тривалість між перевірками конфігураційних файлів на наявність нових даних. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--hairpin-mode string Типово: promiscuous-bridge
Як kubelet повинен налаштовувати hairpin NAT. Це дозволяє точкам доступу Service балансувати навантаження назад на себе, якщо вони намагаються отримати доступ до власного Service. Допустимі значення: "promiscuous-bridge", "hairpin-veth" та "none". (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--healthz-bind-address string Типово: 127.0.0.1
IP-адреса, на якій буде працювати сервер healthz (встановіть на "0.0.0.0" або "::" для прослуховування на всіх інтерфейсах та IP-сімействах). (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--healthz-port int32 Типово: 10248
Порт точки доступу healthz на localhost (встановіть 0 щоб вимкнути). (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
-h, --help
Довідка kubelet
--hostname-override string
Якщо не порожній, буде використовуватися цей рядок як ідентифікатор замість фактичного імені хоста. Якщо встановлено --cloud-provider, постачальник хмарних послуг визначає імʼя вузла (звіртесь з документацією постачальника хмарних послуг, щоб дізнатися, як використовується імʼя хосту).
--http-check-frequency duration Типово: 20s
Тривалість між перевірками HTTP на наявність нових даних. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--image-credential-provider-bin-dir string
Шлях до теки, де знаходяться двійкові файли втулка постачальника облікових даних.
--image-credential-provider-config string
Шлях до конфігураційного файлу втулка постачальника облікових даних.
--image-gc-high-threshold int32 Типово: 85
Відсоток використання диска, після якого завжди виконується видалення непотрібних образів. Значення має бути в діапазоні [0, 100], щоб вимкнути збирання сміття, встановіть значення 100. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--image-gc-low-threshold int32 Типово: 80
Відсоток використання диска, до якого прибирання образів ніколи не виконується. Найменше використання диска, при якому проводиться збір сміття. Значення повинні бути в межах [0, 100] і не повинні перевищувати значення --image-gc-high-threshold. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--image-service-endpoint string
Точка доступу до віддаленого сервісу образів. Якщо не вказано, стандартно буде така ж, як і у --container-runtime-endpoint. UNIX доменні сокети підтримуються в Linux, тоді як точки доступу `npipe` і `tcp` підтримуються у Windows. Приклади: unix:///path/to/runtime.sock, npipe:////./pipe/runtime. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--kernel-memcg-notification
Якщо увімкнено, kubelet буде інтегруватися з повідомленням memcg ядра для визначення, чи перевищено порогові значення пам’яті для виселення, замість періодичного опитування. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--kube-api-burst int32 Типово: 100
Сплеск, який буде використовуватися при спілкуванні з API сервером Kubernetes. Число має бути >= 0. Якщо встановлено 0, буде використано стандартне значення (100). Не стосується пудьсу API подій та вузлів, для яких обмеження швидкості контролюється іншим набором прапорців. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
Тип вмісту запитів, що надсилаються до apiserver. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--kube-api-qps int32 Типово: 50
QPS, який буде використовуватися при спілкуванні з API сервером Kubernetes. Число має бути >= 0. Якщо встановлено 0, буде використано стандартне значення (50). Не стосується пульсу API подій та вузлів, для яких обмеження швидкості контролюється іншим набором прапорців. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--kube-reserved strings Типово: <None>
Набір пар <resource name>=<resource quantity> (наприклад, "cpu=200m,memory=500Mi,ephemeral-storage=1Gi,pid='100'"), які описують ресурси, зарезервовані для компонентів системи Kubernetes. В даний час підтримуються cpu, memory та локальне ephemeral-storage для кореневої файлової системи. Дивіться тут для отримання додаткової інформації. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--kube-reserved-cgroup string Типово: ''
Абсолютне імʼя верхнього рівня cgroup, яке використовується для управління компонентами Kubernetes, для яких ресурси обчислення були зарезервовані за допомогою прапорця --kube-reserved. Наприклад, "/kube-reserved". (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--kubeconfig string
Шлях до файлу kubeconfig, що визначає, як підключитися до API сервера. Надання --kubeconfig увімкне режим API сервера, тоді як пропуск --kubeconfig увімкне автономний (standalone) режим.
--kubelet-cgroups string
Необовʼязкове абсолютне імʼя cgroups для створення та запуску kubelet. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--local-storage-capacity-isolation> Типово: true
Якщо true, увімкнено ізоляцію локального тимчасового зберігання. Інакше функція ізоляції локального зберігання буде вимкнена. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--lock-file string
<Попередження: Альфа функція> Шлях до файлу, який kubelet використовуватиме як файл блокування.
--log-flush-frequency duration Типово: 5s
Максимальна кількість секунд між очищеннями логу.
--log-json-info-buffer-size string Типово: '0'
[Alpha] У форматі JSON з розділеними вихідними потоками інформаційні повідомлення можуть бути буферизовані на деякий час для підвищення продуктивності. Стандартне значення, що дорівнює нулю байтів, вимикає буферизацію. Розмір може бути вказаний у байтах (512), кратних 1000 (1K), кратних 1024 (2Ki) або степенях цих значень (3M, 4G, 5Mi, 6Gi). Щоб використовувати це, увімкніть функціональну можливість LoggingAlphaOptions. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--log-json-split-stream
[Alpha] У форматі JSON помилки записуються у stderr, а інформаційні повідомлення — у stdout. Стандартно всі повідомлення записуються в один потік stdout. Щоб використовувати це, увімкніть функціональну можливість LoggingAlphaOptions. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--log-text-info-buffer-size string Типово: '0'
[Alpha] У текстовому форматі з розділеними вихідними потоками інформаційні повідомлення можуть бути буферизовані на деякий час для підвищення продуктивності. Стандартне значення, що дорівнює нулю байтів, вимикає буферизацію. Розмір може бути вказаний у байтах (512), кратних 1000 (1K), кратних 1024 (2Ki) або степенях цих значень (3M, 4G, 5Mi, 6Gi). Щоб використовувати це, увімкніть функціональну можливість LoggingAlphaOptions. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--log-text-split-stream
[Alpha] У текстовому форматі помилки записуються у stderr, а інформаційні повідомлення — у stdout. Стандартно всі повідомлення записуються в один потік stdout. Щоб використовувати це, увімкніть функціональну можливість LoggingAlphaOptions. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--logging-format string Типово: text
Встановлює формат логу. Дозволені формати: "json" (контрольований LoggingBetaOptions, "text"). (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--make-iptables-util-chains Типово: true
Якщо значення істинне, kubelet забезпечить наявність правил утиліти iptables на хості. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--manifest-url string
URL для доступу до додаткових специфікацій Pod, які потрібно запустити. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--manifest-url-header strings
Список HTTP-заголовків, розділених комами, які слід використовувати при доступі до URL, наданого параметру --manifest-url. Кілька заголовків з однаковою назвою будуть додані в тому ж порядку, в якому вони надані. Цей параметр можна використовувати кілька разів. Наприклад: --manifest-url-header 'a:hello,b:again,c:world' --manifest-url-header 'b:beautiful'. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--max-open-files int Типово: 1000000
Кількість файлів, які може відкрити процес kubelet. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--max-pods int32 Типово: 110
Кількість Podʼів, які можуть працювати на цьому kubelet. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--maximum-dead-containers int32 Типово: -1
Максимальна кількість старих екземплярів контейнерів, які можна зберігати глобально. Кожен контейнер займає певний простір на диску. Щоб вимкнути, встановіть відʼємне число. (ЗАСТАРІЛО: Замість цього використовуйте --eviction-hard або --eviction-soft. Буде видалено в майбутніх версіях.)
Максимальна кількість старих екземплярів, які потрібно зберігати для кожного контейнера. Кожен контейнер займає певний обсяг дискового простору. (ЗАСТАРІЛО: Замість цього використовуйте --eviction-hard або --eviction-soft. Буде видалено в майбутніх версіях.)
--memory-manager-policy string Типово: None
Політика Memory Manager для використання. Можливі значення: "None", "Static". (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--minimum-container-ttl-duration duration
Мінімальний вік для завершеного контейнера перед тим, як його буде прибрано. Приклади: "300ms", "10s" або "2h45m". (ЗАСТАРІЛО: Замість цього використовуйте --eviction-hard або --eviction-soft. Буде видалено в майбутніх версіях.)
Мінімальний вік для невикористаного образу перед тим, як його буде прибрано. Приклади: "300ms", "10s" або "2h45m". (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--node-ip string
IP-адреса (або список IP-адрес для двох стеків, розділених комами) вузла. Якщо не встановлено, kubelet використовуватиме стандартну IPv4-адресу вузла, якщо така є, або його стандартну IPv6-адресу, якщо IPv4-адрес немає. Ви можете передати "::", щоб віддати перевагу стандартній IPv6-адресі замість стандартної IPv4-адреси.
--node-labels <пари key=value>
<Попередження: Alpha функція>Мітки для додавання під час реєстрації вузла в кластері. Мітки повинні бути у форматі key=value, розділені ','. Мітки в просторі 'kubernetes.io' повинні починатися з дозволеного префікса ('kubelet.kubernetes.io', 'node.kubernetes.io') або бути в спеціально дозволеному наборі ('beta.kubernetes.io/arch', 'beta.kubernetes.io/instance-type', 'beta.kubernetes.io/os', 'failure-domain.beta.kubernetes.io/region', 'failure-domain.beta.kubernetes.io/zone', 'kubernetes.io/arch', 'kubernetes.io/hostname', 'kubernetes.io/os', 'node.kubernetes.io/instance-type', 'topology.kubernetes.io/region', 'topology.kubernetes.io/zone').
--node-status-max-images int32 Типово: 50
Максимальна кількість образів для показу в node.status.images. Якщо вказано -1, обмеження не буде застосовано. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
Визначає, як часто kubelet сповіщає про статус вузла у майстер. Примітка: будьте обережні при зміні константи, вона повинна узгоджуватися з nodeMonitorGracePeriod в контролері вузлів. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--oom-score-adj int32 Типово: -999
Значення oom-score-adj для процесу kubelet. Значення повинні бути в межах від [-1000, 1000]. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--pod-cidr string
CIDR для використання IP-адрес Pod, використовується тільки в автономному (standalone) режимі. У кластерному режимі це отримується від майстра. Для IPv6 максимальна кількість виділених IP-адрес складає 65536. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
Вказаний образ не буде видалений під час прибирання образів. Реалізації CRI мають власну конфігурацію для налаштування цього образу. (ЗАСТАРІЛО: буде видалено в 1.27. Прибирання образів буде отримувати інформацію про образи пісочниць з CRI.)
--pod-manifest-path string
Шлях до теки, що містить файли статичних Pod для запуску, або шлях до одного файлу статичного Pod. Файли, що починаються з крапки, будуть ігноруватися. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--pod-max-pids int Типово: -1
Встановлює максимальну кількість процесів на Pod. Якщо -1, kubelet стандартно використовує доступну на вузлі ємність PID. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--pods-per-core int32
Кількість Podʼів на ядро, які можуть працювати на цьому kubelet. Загальна кількість Podʼів на цьому kubelet не може перевищувати --max-pods, тому буде використовуватися --max-pods, якщо цей розрахунок призведе до більшої кількості дозволених Podʼів на kubelet. Значення 0 вимикає це обмеження. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--port int32 Типово: 10250
Порт, на якому kubelet буде обслуговувати запити. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--protect-kernel-defaults
Стандартна поведінка kubelet для налаштування ядра. Якщо встановлено, kubelet видасть помилку, якщо будь-яке з налаштувань ядра відрізняється від стандартних значень kubelet. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--provider-id string
Унікальний ідентифікатор для ідентифікації вузла в базі даних машин, тобто у постачальника хмари.
--qos-reserved string
<Попередження: Alpha рівень> Набір пар <resource name>=<percentage> (наприклад, "memory=50%"), які описують, як запити ресурсів Pod резервуються на рівні QoS. На даний момент підтримується тільки memory. Потрібно активувати функціональну можливість QOSReserved. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--read-only-port int32 Типово: 10255
Порт тільки для читання, на якому буде працювати kubelet без автентифікації/авторизації (для вимкнення встановіть 0). (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--register-node Типово: true
Зареєструйте вузол на сервері API. Якщо --kubeconfig не вказано, цей параметр не має значення, оскільки kubelet не матиме API-сервера для реєстрації. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--register-schedulable Типово: true
Зареєструвати вузол як придатний для планування. Не матиме впливу, якщо --register-node має значення false. (ЗАСТАРІЛО: буде вилучено в майбутніх версіях)
--register-with-taints string
Реєструє вузол з наданим списком taints (розділених комами <key>=<value>:<effect>). Нічого не робить, якщо --register-node має значення false. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--registry-burst int32 Типово: 10
Максимальний розмір для сплеску завантажень, тимчасово дозволяє завантаженням досягати цієї кількості, не перевищуючи при цьому --registry-qps. Використовується тільки якщо --registry-qps більше 0. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--registry-qps int32 Типово: 5
Якщо > 0, обмежити QPS для завантажень з реєстру до цього значення. Якщо 0, без обмежень. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--reserved-cpus string
Список CPU або діапазонів CPU, розділених комами, зарезервованих для системи та використання Kubernetes. Цей конкретний список переважатиме над кількістю CPU в --system-reserved та --kube-reserved. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--reserved-memory string
Список резервувань памʼяті для NUMA вузлів, розділених комами. (наприклад, "--reserved-memory 0:memory=1Gi,hugepages-1M=2Gi --reserved-memory 1:memory=2Gi"). Загальна сума для кожного типу памʼяті повинна дорівнювати сумі --kube-reserved, --system-reserved та --eviction-threshold. Дивіться тут для отримання додаткових відомостей. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--resolv-conf string Типово: /etc/resolv.conf
Файл конфігурації резольвера, який використовується як основа для конфігурації DNS-резолюції контейнера. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--root-dir string Типово: /var/lib/kubelet
Шлях до теки для управління файлами kubelet (монтування томів тощо).
--rotate-certificates
Виконувати автоматичну ротацію клієнтськіх сертифікатів kubelet, запитуючи нові сертифікати у kube-apiserver, коли термін дії сертифіката наближається до закінчення. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--rotate-server-certificates
Автоматично запитувати та виконувати ротацію сертифікатів kubelet, запитуючи нові сертифікати у kube-apiserver, коли термін дії сертифіката наближається до закінчення. Потрібно активувати функціональну можливість RotateKubeletServerCertificate та схвалення поданих обʼєктів CertificateSigningRequest. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--runonce
Якщо true, виходити після створення Podʼів з локальних маніфестів або віддалених URL. Взаємовиключно з --enable-server. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--runtime-cgroups string
Необовʼязкова абсолютна назва cgroups для створення та запуску середовища виконання.
--runtime-request-timeout duration Типово: 2m0s
Тайм-аут для всіх запитів до середовища виконання, окрім довготривалих запитів — pull, logs, exec та attach. Коли тайм-аут перевищено, kubelet скасує запит, видасть помилку і спробує знову пізніше. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--seccomp-default
Вмикає використання RuntimeDefault як стандартного профілю seccomp для всіх навантажень.
--serialize-image-pulls Типово: true
Витягує образи по одному. Рекомендується *не* змінювати стандартні значення на вузлах, які використовують демон Docker версії < 1.9 або сховище aufs. Деталі дивіться в тікеті #10959. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
Максимальний час, протягом якого зʼєднання для потокового режиму може бути неактивним перед автоматичним закриттям зʼєднання. 0 вказує на відсутність тайм-ауту. Приклад: 5m. Примітка: всі зʼєднання до сервера kubelet мають максимальну тривалість 4 години. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--sync-frequency duration Типово: 1m0s
Максимальний проміжок часу між синхронізацією запущених контейнерів та конфігурацією. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--system-cgroups string
Необовʼязкова абсолютна назва cgroups, в якій слід розмістити всі процеси, що не є процесами ядра, що не знаходяться вже в cgroup під '/'. Пусто для відсутності контейнера. Для скасування прапорця потрібне перезавантаження. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--system-reserved string Типово: <none>
Набір пар <resource name>=<resource quantity> (наприклад, "cpu=200m,memory=500Mi,ephemeral-storage=1Gi,pid='100'"), які описують ресурси, зарезервовані для не-Kubernetes компонентів. Наразі підтримуються тільки cpu, memory та локальне тимчасове сховище для кореневої файлової системи. Дивіться тут для отримання додаткових відомостей. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--system-reserved-cgroup string Типово: ''
Абсолютна назва cgroup найвищого рівня, яка використовується для управління не-Kubernetes компонентами, для яких ресурси були зарезервовані за допомогою прапорця --system-reserved. Наприклад, /system-reserved. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--tls-cert-file string
Файл, що містить x509 сертифікат, використовується для обслуговування HTTPS (з проміжними сертифікатами, якщо такі є, конкатенованими після серверного сертифіката). Якщо --tls-cert-file та --tls-private-key-file не вказані, для публічної адреси генеруються самопідписані сертифікат і ключ, які зберігаються в теці, вказаній в --cert-dir. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--tls-cipher-suites string
Список наборів шифрів для сервера, розділений комами. Якщо не вказано, будуть використані стандартні набори шифрів Go. Рекомендовані значення:
TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384
(ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--tls-min-version string
Minimum TLS version supported. Possible values: "VersionTLS10", "VersionTLS11", "VersionTLS12", "VersionTLS13". (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--tls-private-key-file string
Файл, що містить приватний ключ x509, що відповідає --tls-cert-file. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--topology-manager-policy string Типово: 'none'
Політика Topology Manager для використання. Можливі значення: "none", "best-effort", "restricted", "single-numa-node". (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--topology-manager-policy-options string
Набір параметрів політики Topology Manager у форматі <key>=<value>, які можна використовувати для тонкого налаштування їх поведінки. Якщо не вказані, зберігається стандартна поведінка. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--topology-manager-scope string Типово: container
Область, до якої застосовуються топологічні підказки. Topology Manager збирає підказки від постачальників підказок і застосовує їх до визначеної області для забезпечення допуску Pod. Можливі значення: "container", "pod". (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
-v, --v Level
Число для рівня детальності логу
--version version[=true]
Виводить інформацію про версію та виходить; --version=vX.Y.Z... задає відображену версію.
--vmodule <A list of 'pattern=N' strings>
Список налаштувань pattern=N, розділених комами, для фільтрованого логування файлів (працює тільки для текстового формату логу).
Повний шлях до теки, в якій слід шукати додаткові втулки томів від сторонніх постачальників. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
--volume-stats-agg-period duration Типово: 1m0s
Вказує інтервал, через який kubelet обчислює та кешує використання диска томів для всіх Podʼів і томів. Щоб вимкнути обчислення томів, встановіть від’ємне число. (ЗАСТАРІЛО: Цей параметр слід налаштовувати через файл конфігурації, вказаний прапорцем kubelet --config. Дивіться kubelet-config-file для отримання додаткової інформації.)
12.4 - kube-apiserver
Огляд
Сервер API Kubernetes перевіряє та налаштовує дані для обʼєктів api, які включають Podʼи, сервіси, replicationcontrollers та інші. API Server обслуговує REST-операції та забезпечує інтерфейс до спільного стану кластера, через який взаємодіють всі інші компоненти.
kube-apiserver [flags]
Параметри
--admission-control-config-file string
Файл з конфігурацією контролю допуску.
--advertise-address string
IP-адреса, на якій буде публікуватися інформація про apiserver для членів кластеру. Ця адреса має бути доступною для решти учасників кластера. Якщо не вказано, буде використано --bind-address. Якщо --bind-address не вказано, буде використано стандартний інтерфейс хоста.
Агрегатор відхиляє перенаправлення відповіді редиректу назад клієнту.
--allow-metric-labels stringToString Типово: []
Зіставляє метрику-мітку зі списком дозволених значень цієї мітки. Формат ключа — <MetricName>,<LabelName>. Формат значення — < allowed_value>, <allowed_value>...наприклад, metric1,label1='v1,v2,v3', metric1,label2='v1,v2,v3' metric2,label1='v1,v2,v3'.
--allow-metric-labels-manifest string
Шлях до файлу маніфесту, який містить зіставлення allow-list. Формат файлу такий самий, як і у прапорця --allow-metric-labels. Зауважте, що прапорець --allow-metric-labels замінить файл маніфесту.
--allow-privileged
Якщо true, дозволити привілейовані контейнери. [default=false]
--anonymous-auth Типово: true
Дозволяє анонімні запити до захищеного порту сервера API. Запити, які не були відхилені іншими методами автентифікації, вважаються анонімними. Анонімні запити мають імʼя користувача system:anonymous і назву групи system:unauthenticated.
--api-audiences strings
Ідентифікатори API. Автентифікатор токенів службового облікового запису перевіряє, що токени, які використовуються з API, привʼязані принаймні до однієї з цих аудиторій. Якщо прапорець --service-account-issuer налаштовано, а цей прапорець не встановлено, стандартно у цьому полі буде вказано список з одного елемента, що містить URL-адресу емітента.
--audit-log-batch-buffer-size int Типово: 10000
Розмір буфера для зберігання подій перед пакетною передачею та записом. Використовується тільки у пакетному режимі.
--audit-log-batch-max-size int Типово: 1
Максимальний розмір пакету. Використовується тільки в пакетному режимі.
--audit-log-batch-max-wait duration
Час очікування перед примусовим записом пакету, який не досягнув максимального розміру. Використовується тільки в пакетному режимі.
--audit-log-batch-throttle-burst int
Максимальна кількість запитів, надісланих одночасно, якщо ThrottleQPS не використовувався раніше. Використовується тільки в пакетному режимі.
--audit-log-batch-throttle-enable
Чи ввімкнено пакетний тротлінг. Використовується тільки в пакетному режимі.
--audit-log-batch-throttle-qps float
Максимальна середня кількість партій в секунду. Використовується тільки в пакетному режимі.
--audit-log-compress
Якщо встановлено, файли логів, що ротуються, буде стиснуто за допомогою gzip.
--audit-log-format string Типово: "json"
Формат збережених аудитів. "legacy" вказує на 1-рядковий текстовий формат для кожної події. "json" вказує на структурований формат json. Відомі формати: legacy, json.
--audit-log-maxage int
Максимальна кількість днів для зберігання старих файлів логів аудиту на основі мітки часу, закодованої в їхньому імені.
--audit-log-maxbackup int
Максимальна кількість старих файлів логів аудиту, які слід зберігати. Встановлення значення 0 означатиме відсутність обмежень на кількість файлів.
--audit-log-maxsize int
Максимальний розмір у мегабайтах файлу логу аудиту до того, як буде виконано його ротацію.
--audit-log-mode string Типово: "blocking"
Стратегія надсилання подій аудиту. Блокування вказує на те, що надсилання подій має блокувати відповіді сервера. Пакетне виконання змушує бекенд буферизувати і записувати події асинхронно. Відомі такі режими: batch, blocking, blocking-strict.
--audit-log-path string
Якщо встановлено, всі запити, що надходять до apiserver, будуть записуватися до цього файлу. '-' означає стандартний вивід.
--audit-log-truncate-enabled
Чи увімкнено усікання подій та пакетів.
--audit-log-truncate-max-batch-size int Типово: 10485760
Максимальний розмір пакету, що надсилається до відповідного бекенду. Фактичний розмір серіалізованого файлу може бути на кілька сотень байт більшим. Якщо пакет перевищує цей ліміт, він розбивається на кілька пакетів меншого розміру.
--audit-log-truncate-max-event-size int Типово: 102400
Максимальний розмір події аудиту, що надсилається до відповідного бекенду. Якщо розмір події перевищує це число, перший запит і відповідь видаляються, а якщо це не зменшує розмір достатньо, подія відкидається.
Час очікування перед повторною спробою після першого невдалого запиту.
--audit-webhook-mode string Типово: "batch"
Стратегія надсилання подій аудиту. Блокування вказує на те, що надсилання подій має блокувати відповіді сервера. Режим batch змушує бекенд буферизувати і записувати події асинхронно. Відомі такі режими: batch, blocking, blocking-strict.
--audit-webhook-truncate-enabled
Чи увімкнено усікання подій та пакетів.
--audit-webhook-truncate-max-batch-size int Типово: 10485760
Максимальний розмір пакету, що надсилається до відповідного бекенду. Фактичний розмір серіалізованого файлу може бути на кілька сотень байт більшим. Якщо пакет перевищує цей ліміт, він розбивається на кілька пакетів меншого розміру.
--audit-webhook-truncate-max-event-size int Типово: 102400
Максимальний розмір події аудиту, що надсилається до відповідного бекенду. Якщо розмір події перевищує це число, перший запит і відповідь видаляються, а якщо це не зменшує розмір достатньо, подія відкидається.
Група та версія API, що використовується для серіалізації подій аудиту, записаних у webhook.
--authentication-config string
Файл з конфігурацією автентифікації для налаштування автентифікатора JWT Token або анонімного автентифікатора. Потрібна функціональна можливість StructuredAuthenticationConfiguration. Також потрібна функціональна можливість AnonymousAuthConfigurableEndpoints для налаштування анонімного автентифікатора у файлі конфігурації. Цей прапорець є взаємовиключним з прапорцями --oidc-*, якщо у файлі налаштовано автентифікатор JWT Token. Цей прапорець є взаємовиключним з прапорцем --anonymous-auth, якщо у файлі налаштовано анонімний автентифікатор.
Тривалість кешування відповідей від автентифікатора токенів вебхуків.
--authentication-token-webhook-config-file string
Файл з конфігурацією вебхука для автентифікації токенів у форматі kubeconfig. Сервер API буде запитувати віддалений сервіс для визначення автентичності токенів на предʼявника.
Версія API authentication.k8s.io TokenReview для надсилання та очікування від вебхука.
--authorization-config string
Файл з конфігурацією авторизації для налаштування ланцюжка авторизації. Вимагає наявності функціональної можливості StructuredAuthorizationConfiguration. Цей прапорець є взаємовиключним з іншими прапорцями --authorization-mode та --authorization-webhook-*.
--authorization-mode strings
Впорядкований список втулків для авторизації на захищеному порту. Стандартно має значення AlwaysAllow, якщо не вказано --authorization-config. Список втулків, розділених комами: AlwaysAllow,AlwaysDeny,ABAC,Webhook,RBAC,Node.
--authorization-policy-file string
Файл з політикою авторизації у форматі json, що використовується з --authorization-mode=ABAC, на захищеному порту.
Тривалість кешування 'unauthorized' відповідей від авторизатора вебхука.
--authorization-webhook-config-file string
Файл з конфігурацією webhook у форматі kubeconfig, що використовується з --authorization-mode=Webhook. Сервер API запитує віддалений сервіс для визначення доступу на захищеному порту сервера API.
Версія API authorization.k8s.io SubjectAccessReview, яку потрібно надсилати до вебхука та очікувати від нього.
--bind-address string Типово: 0.0.0.0
IP-адреса, на якій буде прослуховуватися порт --secure-port. Відповідний інтерфейс(и) має бути доступним для решти кластера, а також для CLI/веб-клієнтів. Якщо цей параметр не вказано або вказано невизначену адресу (0.0.0.0 або ::), будуть використані всі інтерфейси та сімейства IP-адрес.
--cert-dir string Типово: "/var/run/kubernetes"
Тека, в якій знаходяться TLS-сертифікати. Якщо вказано --tls-cert-file та --tls-private-key-file, цей прапорець буде проігноровано.
--client-ca-file string
Якщо встановлено, будь-який запит, що надає клієнтський сертифікат, підписаний одним із центрів сертифікації у клієнтському файлі, буде автентифіковано за допомогою ідентифікатора, що відповідає CommonName клієнтського сертифіката.
--contention-profiling
Дозволяє профілювання блоків, якщо профілювання увімкнено
--cors-allowed-origins strings
Список дозволених джерел для CORS, через кому. Допустимим джерелом може бути регулярний вираз для підтримки співставлення субдоменів. Якщо цей список порожній, CORS не буде ввімкнено. Будь ласка, переконайтеся, що кожен вираз співпадає з повним імʼям хоста шляхом привʼязки до початку за допомогою '^' або включення префікса '//', а також шляхом привʼязки до кінця за допомогою '$' або включення суфікса-розділювача портів ':'. Прикладами допустимих виразів є '//example.com(:|$)' і '^https://example.com(:|$)'
--debug-socket-path string
Використовуйте незахищений (без authn/authz) unix-доменний сокет для профілювання за вказаним шляхом
--default-not-ready-toleration-seconds int Типово: 300
Вказує толерантність у секундах для notReady:NoExecute, яка стандартно додається до кожного Podʼа, який ще не має такої толерантності.
--default-unreachable-toleration-seconds int Типово: 300
Показує tolerationSeconds толерантності для unreachable:NoExecute, яка стандартно додається до кожного Podʼа, який ще не має такої толерантності.
--delete-collection-workers int Типово: 1
Кількість обробників, створених для виклику DeleteCollection. Вони використовуються для прискорення очищення простору імен.
--disable-admission-plugins strings
Втулки допуску, які слід вимкнути, хоча вони є у списку стандартно ввімкнутих втулків (NamespaceLifecycle, LimitRanger, ServiceAccount, TaintNodesByCondition, PodSecurity, Priority, DefaultTolerationSeconds, DefaultStorageClass, StorageObjectInUseProtection, PersistentVolumeClaimResize, RuntimeClass, CertificateApproval, CertificateSigning, ClusterTrustBundleAttest, CertificateSubjectRestriction, DefaultIngressClass, MutatingAdmissionPolicy, MutatingAdmissionWebhook, ValidatingAdmissionPolicy, ValidatingAdmissionWebhook, ResourceQuota). Список втулків допуску розділених комою: AlwaysAdmit, AlwaysDeny, AlwaysPullImages, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, ClusterTrustBundleAttest, DefaultIngressClass, DefaultStorageClass, DefaultTolerationSeconds, DenyServiceExternalIPs, EventRateLimit, ExtendedResourceToleration, ImagePolicyWebhook, LimitPodHardAntiAffinityTopology, LimitRanger, MutatingAdmissionPolicy, MutatingAdmissionWebhook, NamespaceAutoProvision, NamespaceExists, NamespaceLifecycle, NodeRestriction, OwnerReferencesPermissionEnforcement, PersistentVolumeClaimResize, PodNodeSelector, PodSecurity, PodTolerationRestriction, Priority, ResourceQuota, RuntimeClass, ServiceAccount, StorageObjectInUseProtection, TaintNodesByCondition, ValidatingAdmissionPolicy, ValidatingAdmissionWebhook. Порядок розташування втулків у цьому прапорці не має значення.
--disable-http2-serving
Якщо значення true, HTTP2-сервіс буде вимкнено [default=false].
--disabled-metrics strings
Цей прапорець забезпечує аварійний вихід для метрик, що поводяться не належним чином. Щоб вимкнути метрику, ви маєте вказати її повну назву. Застереження: вимкнення метрик має вищий пріоритет, ніж показ прихованих метрик.
--egress-selector-config-file string
Файл з конфігурацією селектора egress apiserver.
--emulated-version strings
У версіях різні компоненти емулюють свої можливості (API, функції, ...) інших компонентів. Якщо встановлено, компонент буде емулювати поведінку цієї версії замість базової двійкової версії. Формат версії може бути лише major.minor, наприклад: '--emulated-version=wardle=1.2,kube=1.31'. Можливі варіанти: kube=1.32..1.32 (default=1.32) Якщо компонент не вказано, стандартно використовується "kube"
--enable-admission-plugins strings
Втулки допуску, які слід увімкнути на додачу до стандартно увімкнутих (NamespaceLifecycle, LimitRanger, ServiceAccount, TaintNodesByCondition, PodSecurity, Priority, DefaultTolerationSeconds, DefaultStorageClass, StorageObjectInUseProtection, PersistentVolumeClaimResize, RuntimeClass, CertificateApproval, CertificateSigning, ClusterTrustBundleAttest, CertificateSubjectRestriction, DefaultIngressClass, MutatingAdmissionPolicy, MutatingAdmissionWebhook, ValidatingAdmissionPolicy, ValidatingAdmissionWebhook, ResourceQuota). Розділений комами список втулків допуску: AlwaysAdmit, AlwaysDeny, AlwaysPullImages, CertificateApproval, CertificateSigning, CertificateSubjectRestriction, ClusterTrustBundleAttest, DefaultIngressClass, DefaultStorageClass, DefaultTolerationSeconds, DenyServiceExternalIPs, EventRateLimit, ExtendedResourceToleration, ImagePolicyWebhook, LimitPodHardAntiAffinityTopology, LimitRanger, MutatingAdmissionPolicy, MutatingAdmissionWebhook, NamespaceAutoProvision, NamespaceExists, NamespaceLifecycle, NodeRestriction, OwnerReferencesPermissionEnforcement, PersistentVolumeClaimResize, PodNodeSelector, PodSecurity, PodTolerationRestriction, Priority, ResourceQuota, RuntimeClass, ServiceAccount, StorageObjectInUseProtection, TaintNodesByCondition, ValidatingAdmissionPolicy, ValidatingAdmissionWebhook. Порядок розташування втулків у цьому прапорці не має значення.
--enable-aggregator-routing
Вмикає маршрутизацію запитів агрегатора на IP точок доступу, а не на IP кластера.
--enable-bootstrap-token-auth
Увімкніть, щоб дозволити використовувати секрети типу 'bootstrap.kubernetes.io/token' у просторі імен 'kube-system' для автентифікації за допомогою TLS-завантаження.
--enable-garbage-collector Типово: true
Вмикає загальний збирач сміття. МАЄ бути синхронізовано з відповідним прапорцем kube-controller-manager.
--enable-priority-and-fairness Типово: true
Якщо true, замініть обробник max-in-flight на покращений обробник, який ставить в чергу та розподіляє відправлення з пріоритетом та справедливістю
--encryption-provider-config string
Файл, що містить конфігурацію для провайдерів шифрування, які будуть використовуватися для зберігання секретів у etcd
--encryption-provider-config-automatic-reload
Визначає, чи слід автоматично перезавантажувати файл, заданий за допомогою --encryption-provider-config, у разі зміни вмісту диска. Встановлення цього параметра у значення true вимикає можливість унікальної ідентифікації окремих втулків KMS за допомогою точок доступу API сервера healthz.
--endpoint-reconciler-type string Типово: "lease"
Використовувати узгоджувач точок доступу (master-count, lease, none) master-count є застарілим і буде вилучений у наступній версії.
--etcd-cafile string
Файл центру сертифікації SSL, який використовується для захисту звʼязку etcd.
--etcd-certfile string
Файл SSL-сертифікату, який використовується для захисту звʼязку etcd.
--etcd-compaction-interval duration Типово: 5m0s
Інтервал запитів на ущільнення. Якщо 0, то запит на ущільнення від apiserver вимкнено.
Інтервал запитів на опитування etcd та оновлення метрики. 0 вимикає збір метрики
--etcd-healthcheck-timeout duration Типово: 2s
Тайм-аут для перевірки стану etcd.
--etcd-keyfile string
Файл ключа SSL, який використовується для захисту комунікації etcd.
--etcd-prefix string Типово: "/registry"
Префікс для додавання до всіх шляхів до ресурсів у etcd.
--etcd-readycheck-timeout duration Типово: 2s
Тайм-аут для перевірки готовності etcd
--etcd-servers strings
Список etcd серверів для зʼєднання (scheme://ip: port), через кому.
--etcd-servers-overrides strings
Окремі перевизначення серверів etcd для кожного ресурсу, через кому. Формат перевизначення: група/ресурс#сервери, де сервери — це URL-адреси, розділені крапкою з комою. Зауважте, що це стосується лише ресурсів, скомпільованих у цей двійковий файл сервера.
--event-ttl duration Типово: 1h0m0s
Кількість часу для збереження подій.
--external-hostname string
Імʼя хоста, яке використовуватиметься під час генерації зовнішніх URL-адрес для цього master (наприклад, Swagger API Docs або OpenID Discovery).
Щоб запобігти застряганню HTTP/2-клієнтів на одному apiserver, випадково закрийте зʼєднання (GOAWAY). Інші запити клієнта не будуть зачеплені, і клієнт відновить зʼєднання, ймовірно, потрапивши на інший apiserver після того, як знову пройде через балансувальник навантаження. Цей аргумент задає частку запитів, які будуть відправлені GOAWAY. Кластери з одним apiserver або ті, що не використовують балансувальник навантаження, НЕ повинні вмикати цей параметр. Мінімальне значення — 0 (вимкнено), максимальне — 0.02 (1/50 запитів); 0.001 (1/1000) є рекомендованим початковим значенням.
-h, --help
Довідка kube-apiserver
--http2-max-streams-per-connection int
Обмеження, яке сервер надає клієнтам на максимальну кількість потоків у зʼєднанні HTTP/2. Нуль означає використання стандартного значення golang.
Список бажаних типів NodeAddressTypes для зʼєднань kubelet.
--kubelet-timeout duration Типово: 5s
Таймаут для операцій kubelet.
--kubernetes-service-node-port int
Якщо значення відмінне від нуля, майстер-сервіс Kubernetes (який створює/підтримує apiserver) матиме тип NodePort, використовуючи його як значення порту. Якщо нульове значення, майстер-сервіс Kubernetes матиме тип ClusterIP.
--lease-reuse-duration-seconds int Типово: 60
Час у секундах, протягом якого кожна оренда використовується повторно. Менше значення допоможе уникнути повторного використання однієї і тієї ж оренди великою кількістю обʼєктів. Зауважте, що занадто мале значення може спричинити проблеми з продуктивністю на рівні сховища.
--livez-grace-period duration
Цей параметр вказує максимальний час, за який apiserver має завершити свою послідовність запуску і стати активним. З моменту запуску apiserver і до закінчення цього часу /livez вважатиме, що незавершені після запуску хуки будуть успішно завершені, а отже, повертатиме значення true.
--log-flush-frequency duration Типово: 5s
Максимальна кількість секунд між очищеннями логів
--log-text-info-buffer-size quantity
[Alpha] У текстовому форматі з розділеними потоками виводу інформаційні повідомлення можуть буферизуватися на деякий час для підвищення продуктивності. Стандартне значення, рівне нулю байт, вимикає буферизацію. Розмір можна вказати як кількість байт (512), кратну 1000 (1K), кратну 1024 (2Ki) або степінь (3M, 4G, 5Mi, 6Gi). Увімкніть функцію LoggingAlphaOptions, щоб скористатися цією можливістю.
--log-text-split-stream
[Alpha] У текстовому форматі записувати повідомлення про помилки до stderr та інформаційні повідомлення до stdout. Стандартно до stdout записується один потік. Увімкніть функцію LoggingAlphaOptions, щоб скористатися цією можливістю.
--logging-format string Типово: "text"
Задає формат логу. Дозволені формати: "text".
--max-connection-bytes-per-sec int
Якщо ненульове, обмежити кожне зʼєднання користувача до цієї кількості байт/сек. Наразі застосовується лише до довготривалих запитів.
--max-mutating-requests-inflight int Типово: 200
Цей та --max-requests-inflight підсумовуються для визначення загального ліміту паралелізму сервера (який має бути додатнім), якщо --enable-priority-and-fairness має значення true. В іншому випадку цей прапорець обмежує максимальну кількість запитів, що змінюються у процесі виконання, або нульове значення повністю вимикає обмеження.
--max-requests-inflight int Типово: 400
Це значення та --max-mutating-requests-inflight підсумовуються для визначення загального ліміту паралелізму сервера (який має бути додатнім), якщо --enable-priority-and-fairness має значення true. В іншому випадку цей прапорець обмежує максимальну кількість запитів, що не змінюються у процесі виконання, або нульове значення повністю вимикає ліміт.
--min-request-timeout int Типово: 1800
Необовʼязкове поле, що вказує мінімальну кількість секунд, протягом яких обробник повинен тримати запит відкритим, перш ніж завершити його виконання. Наразі виконується лише обробником запитів watch, який обирає випадкове значення вище цього числа як таймаут зʼєднання, щоб розподілити навантаження.
--oidc-ca-file string
Якщо встановлено, сертифікат сервера OpenID буде перевірено одним з центрів сертифікації в oidc-ca-файлі, інакше буде використано кореневий центр сертифікації хоста.
--oidc-client-id string
Ідентифікатор клієнта для клієнта OpenID Connect повинен бути встановлений, якщо встановлено oidc-issuer-url.
--oidc-groups-claim string
Якщо вказано, імʼя власного запиту OpenID Connect для вказівки груп користувачів. Очікується, що значенням параметра буде рядок або масив рядків. Цей прапорець є експериментальним, будь ласка, зверніться до документації з автентифікації для отримання більш детальної інформації.
--oidc-groups-prefix string
Якщо вказано, до всіх груп буде додано цей префікс, щоб запобігти конфліктам з іншими стратегіями автентифікації.
--oidc-issuer-url string
URL-адреса емітента OpenID, приймається тільки схема HTTPS. Якщо встановлено, він буде використаний для перевірки OIDC JSON Web Token (JWT).
Пара key=value, яка описує необхідний реквізит в ідентифікаторі. Якщо встановлено, перевіряється, що реквізит присутній в ідентифікаторі з відповідним значенням. Повторіть цей прапорець, щоб вказати декілька реквізитів.
--oidc-signing-algs strings Типово: "RS256"
Список дозволених алгоритмів асиметричного підпису JOSE через кому. JWT з підтримуваними значеннями заголовка 'alg': RS256, RS384, RS512, ES256, ES384, ES512, PS256, PS384, PS512. Значення визначені в RFC 7518 https://tools.ietf.org/html/rfc7518#section-3.1.
--oidc-username-claim string Типово: "sub"
Запит OpenID для використання в якості імені користувача. Зауважте, що не гарантується унікальність та незмінність запитів, відмінних від стандартного ('sub'). Цей прапорець є експериментальним, будь ласка, зверніться до документації з автентифікації для отримання більш детальної інформації.
--oidc-username-prefix string
Якщо вказано, всі імена користувачів будуть доповнені цим значенням. Якщо не вказано, до імен користувачів, відмінних від "email", буде додано префікс URL-адреси емітента, щоб уникнути зіткнень. Щоб пропустити будь-яку префіксацію, вкажіть значення '-'.
--peer-advertise-ip string
Якщо встановлено і ввімкнено функцію UnknownVersionInteroperabilityProxy, цей IP буде використовуватися одноранговими kube-apiserverʼами для проксі-запитів до цього kube-apiserverʼа, коли запит не може бути оброблений одноранговим через невідповідність версій між kube-apiserʼами. Цей прапорець використовується лише у кластерах, сконфігурованих з декількома kube-apiserverʼами для забезпечення високої доступності.
--peer-advertise-port string
Якщо цей прапорець встановлено і ввімкнено функцію UnknownVersionInteroperabilityProxy, цей порт використовуватиметься одноранговими kube-apiserver'ами для проксі-запитів до цього kube-apiserver'а, коли запит не може бути оброблений одноранговим через невідповідність версій між kube-apiserver'ами. Цей прапорець використовується лише у кластерах, сконфігурованих з декількома kube-apiserver'ами для забезпечення високої доступності.
--peer-ca-file string
Якщо встановлено і ввімкнено функцію UnknownVersionInteroperabilityProxy, цей файл буде використано для перевірки сертифікатів обслуговування однорангових kube-apiserver серверів. Цей прапорець використовується лише у кластерах, сконфігурованих з декількома kube-apiserver'ами для забезпечення високої доступності.
--permit-address-sharing
Якщо це значення дорівнює true, SO_REUSEADDR буде використано при привʼязці порту. Це дозволяє паралельно привʼязуватись до підстановочних IP-адрес, таких як 0.0.0.0, і до конкретних IP-адрес, а також дозволяє уникнути очікування ядром звільнення сокетів у стані TIME_WAIT. [default=false]
--permit-port-sharing
Якщо значення true, SO_REUSEPORT буде використано при привʼязці порту, що дозволяє більш ніж одному екземпляру привʼязуватися до однієї адреси та порту. [default=false]
--profiling Типово: true
Увімкніть профілювання через веб-інтерфейс host:port/debug/pprof/
--proxy-client-cert-file string
Клієнтський сертифікат, що використовується для підтвердження особи агрегатора або kube-apiserver, коли необхідно здійснити виклик під час запиту. Це включає проксирування запитів до користувацького API-сервера та виклики до втулків допуску webhook. Очікується, що цей сертифікат містить підпис від CA, вказаного у прапорі --requestheader-client-ca-file. Цей CA публікується в configmap 'extension-apiserver-authentication' у просторі імен kube-system. Компоненти, що отримують виклики від kube-aggregator, повинні використовувати цей CA для виконання своєї частини взаємної TLS перевірки.
--proxy-client-key-file string
Приватний ключ для клієнтського сертифіката, що використовується для підтвердження особи агрегатора або kube-apiserver, коли необхідно здійснити виклик під час запиту. Це включає проксирування запитів до користувацького API-сервера та виклики до втулків допуску webhook.
--request-timeout duration Типово: 1m0s
Необовʼязкове поле, що вказує на тривалість, протягом якої обробник повинен тримати запит відкритим, перш ніж завершити його виконання. Це стандартний таймаут для запитів, але його можна перевизначити за допомогою прапорців, таких як --min-request-timeout для певних типів запитів.
--requestheader-allowed-names strings
Список загальних імен клієнтських сертифікатів, щоб дозволити вказувати імена користувачів у заголовках, визначених параметром --requestheader-username-headers. Якщо він порожній, можна використовувати будь-який сертифікат клієнта, підтверджений центрами сертифікації у файлі --requestheader-client-ca-file.
--requestheader-client-ca-file string
Пакет кореневих сертифікатів для перевірки клієнтських сертифікатів на вхідних запитах перед тим, як довіряти імена користувачів у заголовках, визначених параметром --requestheader-username-headers. ПОПЕРЕДЖЕННЯ: зазвичай не залежить від авторизації, яку вже виконано для вхідних запитів.
--requestheader-extra-headers-prefix strings
Список префіксів заголовків запитів для перевірки. Запропоновано X-Remote-Extra-.
--requestheader-group-headers strings
Список заголовків запитів для перевірки на наявність груп. Пропонується X-Remote-Group.
--requestheader-uid-headers strings
Список заголовків запитів для перевірки на наявність UID. Пропонується X-Remote-Uid. Потребує увімкнення функції RemoteRequestHeaderUID.
--requestheader-username-headers strings
Список заголовків запитів для перевірки на наявність імен користувачів. X-Remote-User є поширеним.
Набір пар key=value, які вмикають або вимикають вбудовані API. Підтримувані параметри: v1=true|false для основної групи API <group>/<version>=true|false для певної групи API та версії (наприклад, apps/v1=true) api/all=true|false контролює всі версії API api/ga=true|false контролює всі версії API у формі v[0-9]+ api/beta=true| false контролює всі версії API форми v[0-9]+beta[0-9]+ api/alpha=true|false контролює всі версії API форми v[0-9]+alpha[0 -9]+ api/legacy застаріло та буде видалено в наступній версії
--secure-port int Типово: 6443
Порт, на якому буде обслуговуватися HTTPS з автентифікацією та авторизацією. Його не можна вимкнути за допомогою 0.
Вмикає прогнозоване продовження терміну дії облікового запису під час генерації токенів, що допомагає безпечному переходу від застарілих токенів до привʼязаних токенів облікових записів. Якщо цей прапорець увімкнено, термін дії токенів, що вводяться, буде подовжено до 1 року, щоб запобігти несподіваним збоям під час переходу, ігноруючи значення параметра service-account-max-token-expiration.
--service-account-issuer strings
Ідентифікатор емітента токенів службового облікового запису. Емітент вказуватиме цей ідентифікатор у запиті "iss" на видачу випущених токенів. Це значення є рядком або URI. Якщо цей параметр не є дійсним URI згідно зі специфікацією OpenID Discovery 1.0, функція ServiceAccountIssuerDiscovery залишиться вимкненою, навіть якщо для функції gate буде встановлено значення true. Наполегливо рекомендується, щоб це значення відповідало специфікації OpenID: https://openid.net/specs/openid-connect-discovery-1_0.html. На практиці це означає, що service-account-issuer має бути URL-адресою https. Також наполегливо рекомендується, щоб ця URL-адреса могла обслуговувати документи виявлення OpenID за адресою {service-account-issuer}/.well-known/openid-configuration. Якщо цей прапорець вказано декілька разів, перший раз використовується для генерації токенів, а всі інші - для визначення прийнятних емітентів.
--service-account-jwks-uri string
Перевизначає URI для набору веб-ключів JSON у документі виявлення, що надсилається за адресою /.well-known/openid-configuration. Цей прапорець корисний, якщо документ виявлення та набір ключів надаються сторонам, що довіряють, за URL-адресою, відмінною від зовнішньої URL-адреси сервера API (автоматично визначеною або перевизначеною за допомогою external-hostname).
--service-account-key-file strings
File containing PEM-encoded x509 RSA or ECDSA private or public keys, used to verify ServiceAccount tokens. The specified file can contain multiple keys, and the flag can be specified multiple times with different files. If unspecified, --tls-private-key-file is used. Must be specified when --service-account-signing-key-file is provided
--service-account-lookup Типово: true
Якщо true, підтвердити наявність токенів ServiceAccount в etcd як частину автентифікації.
--service-account-max-token-expiration duration
Максимальний термін дії токена, створеного емітентом токенів службового облікового запису. Якщо запитується дійсний TokenRequest з тривалістю дії, що перевищує це значення, буде випущено токен з тривалістю дії, що дорівнює цьому значенню.
--service-account-signing-endpoint string
Шлях до сокета, який прослуховує зовнішній підписувач JWT. Цей прапорець є взаємовиключним з --service-account-signing-key-file та --service-account-key-file. Потребує увімкнення функціональної можливості gate (ExternalServiceAccountTokenSigner)
--service-account-signing-key-file string
Шлях до файлу, який містить поточний приватний ключ емітента токенів службового облікового запису. Цим приватним ключем емітент підписуватиме видані токени ідентифікаторів.
--service-cluster-ip-range string
Діапазон IP-адрес у нотації CIDR, з якого призначаються сервісні кластерні IP-адреси. Він не повинен перетинатися з будь-якими діапазонами IP, призначеними вузлам або Podʼами. Максимальний допустимий діапазон — два двостекових CIDR.
--service-node-port-range <a string in the form 'N1-N2'> Типово: 30000-32767
Діапазон портів для резервування для сервісів з видимістю NodePort. Він не повинен перетинатися з ефемерним діапазоном портів на вузлах. Приклад: '30000-32767'. Включно з обох кінців діапазону.
--show-hidden-metrics-for-version string
Попередня версія, для якої ви хочете показати приховані метрики. Значення має лише попередня мінорна версія, інші значення не будуть дозволені. Формат: <major>.<minor>, наприклад: '1.16'. Мета цього формату - переконатися, що ви маєте можливість помітити, що наступний реліз приховує додаткові метрики, замість того, щоб дивуватися, коли вони будуть назавжди вилучені в наступному релізі.
--shutdown-delay-duration duration
Час затримки завершення роботи. Протягом цього часу сервер продовжує обслуговувати запити у звичайному режимі. Точки доступу /healthz і /livez повертатимуть успішне завершення, але /readyz одразу ж поверне помилку. Належне завершення роботи почнється після закінчення цієї затримки. Це може бути використано для того, щоб дозволити балансувальнику навантаження припинити надсилання трафіку на цей сервер.
--shutdown-send-retry-after
Якщо значення true, HTTP-сервер продовжуватиме прослуховування доти, доки всі недовготривалі запити у процесі виконання не будуть вичерпані, під час цього вікна всі вхідні запити будуть відхилені з кодом статусу 429 та заголовком відповіді "Retry-After", крім того, встановлюється заголовок відповіді "Connection: close" для того, щоб розірвати TCP-зʼєднання, коли воно не виконується.
Цей параметр, якщо його встановлено, вказує на максимальну тривалість пільгового періоду, протягом якого apiserver буде чекати, поки активні запити watch не вичерпаються під час вікна належного вимкнення сервера.
--storage-backend string
Бекенд сховища для збереження даних. Параметри: 'etcd3' (стандартно).
Тип носія для зберігання обʼєктів у сховищі. Деякі ресурси або бекенди сховища можуть підтримувати лише певний тип носія і ігноруватимуть цей параметр. Підтримувані медіа-типи: [application/json, application/yaml, application/vnd.kubernetes.protobuf].
--strict-transport-security-directives strings
Список директив для HSTS через кому. Якщо цей список порожній, то директиви HSTS не будуть додані. Приклад: 'max-age=31536000,includeSubDomains,preload'
--tls-cert-file string
Файл, що містить стандартний сертифікат x509 для HTTPS. (Сертифікат центру сертифікації, якщо такий є, додається після сертифіката сервера). Якщо HTTPS-сервіс увімкнено, а --tls-cert-file і --tls-private-key-file не вказано, для публічної адреси буде згенеровано самопідписаний сертифікат і ключ, які буде збережено в теці, вказаній в --cert-dir.
--tls-cipher-suites strings
Розділений комами список наборів шифрів для сервера. Якщо не вказано, буде використано стандартний набір шифрів Go. Значення, яким надається перевага: TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256. Небезпечні значення: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_RC4_128_SHA.
--tls-min-version string
Мінімальна підтримувана версія TLS. Можливі значення: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13
--tls-private-key-file string
Файл, що містить стандартний приватний ключ x509, який відповідає --tls-cert-file.
--tls-sni-cert-key string
Пара шляхів до файлів сертифіката x509 і приватного ключа, до яких за бажанням додається список доменних шаблонів, які є повними доменними іменами, можливо, з префіксальними підстановчими сегментами. Доменні шаблони також дозволяють використовувати IP-адреси, але IP-адреси слід використовувати лише в тому випадку, якщо apiserver має доступ до IP-адреси, запитуваної клієнтом. Якщо шаблони домену не надано, витягуються імена сертифікатів. Збіги без підстановочних знаків мають перевагу над збігами з підстановочними знаками, а явні шаблони доменів мають перевагу над отриманими іменами. Для кількох пар ключ/сертифікат використовуйте --tls-sni-cert-key кілька разів. Приклади: "example.crt,example.key" або "foo.crt,foo.key:*.foo.com,foo.com".
--token-auth-file string
Якщо встановлено, файл, який буде використано для захисту захищеного порту сервера API за допомогою автентифікації за допомогою токенів.
--tracing-config-file string
Файл з конфігурацією трасування apiserver.
-v, --v int
число рівня деталізації логу
--version version[=true]
--version, --version=raw виводить інформацію про версію та виходить; --version=vX.Y.Z... встановлює вказану версію
--vmodule pattern=N,...
список параметрів pattern=N, розділених комами, для файлового фільтрування логу (працює лише для текстового формату логу).
--watch-cache Типово: true
Увімкніть кешування watch в apiserver
--watch-cache-sizes strings
Налаштування розміру кешу для деяких ресурсів (pods, nodes і т.д.), через кому. Формат індивідуальних налаштувань: resource[.group]#size, де resource — малі літери множини (без версії), group пропущено для ресурсів apiVersion v1 (застаріле ядро API) і включено для інших, а size — число. Цей параметр має значення лише для ресурсів, вбудованих у apiserver, а не для ресурсів, визначених CRD або зібраних із зовнішніх серверів, і використовується лише у випадку, якщо увімкнено watch-cache. Єдиним допустимим значенням розміру є нуль, що означає вимкнення кешування watch для відповідного ресурсу; усі ненульові значення є еквівалентними і означають, що кешування для цього ресурсу не вимкнено.
12.5 - kube-controller-manager
Огляд
Менеджер контролерів Kubernetes — це демон, який вбудовує основні цикли керування, що постачаються з Kubernetes. У робототехніці та автоматизації автоматизації, цикл керування — це нескінченний цикл, який регулює стан системи. У Kubernetes контролер — це цикл керування, який відстежує спільний стан кластера через apiserver і вносить зміни, намагаючись перевести поточний стан у бажаний. Приклади контролерів, які постачаються з Kubernetes сьогодні це контролер реплікації, контролер точок доступу, контролер просторів імен та контролер службових облікових записів.
kube-controller-manager [flags]
Параметри
--allocate-node-cidrs
Чи повинні CIDR для Podʼів бути виділені та налаштовані хмарним провайдером. Вимагає --cluster-cidr.
--allow-metric-labels stringToString Типово: []
Зіставляє metric-label зі списком дозволених значень цієї мітки. Формат ключа — <MetricName>,<LabelName>. Формат значення — <дозволене_значення>,<дозволене_значення>...наприклад, metric1,label1='v1,v2,v3', metric1,label2='v1,v2,v3' metric2,label1='v1,v2,v3'.
--allow-metric-labels-manifest string
Шлях до файлу маніфесту, який містить зіставлення allow-list. Формат файлу такий самий, як і у прапорця --allow-metric-labels. Зауважте, що прапорець --allow-metric-labels замінить файл маніфесту.
Час очікування синхронізації узгоджувача між приєднанням та відʼєднанням томів. Ця тривалість має бути більшою за одну секунду, і збільшення цього значення порівняно зі стандартним може призвести до того, що томи не будуть збігатися з Podʼами.
--authentication-kubeconfig string
файл kubeconfig, що вказує на 'core' сервер kubernetes з достатніми правами для створення tokenreviews.authentication.k8s.io. Цей параметр не є обовʼязковим. Якщо він порожній, всі запити токенів вважаються анонімними, і жоден клієнтський центр сертифікації не шукається в кластері.
--authentication-skip-lookup
Якщо значення false, authentication-kubeconfig буде використано для пошуку відсутньої конфігурації автентифікації в кластері.
Тривалість кешування відповідей від автентифікатора токенів webhook.
--authentication-tolerate-lookup-failure
Якщо це значення встановлено, невдачі у пошуку відсутньої конфігурації автентифікації в кластері не вважатимуться фатальними. Зауважте, що це може призвести до автентифікації, яка розглядає всі запити як анонімні.
Список HTTP-шляхів, які пропускаються під час авторизації, тобто авторизуються без звʼязку з 'core' сервером kubernetes.
--authorization-kubeconfig string
файл kubeconfig, що вказує на 'core' сервер kubernetes з достатніми правами для створення subjectaccessreviews.authorization.k8s.io. Цей параметр не є обовʼязковим. Якщо він порожній, всі запити, не пропущені авторизацією, будуть заборонені.
Тривалість кешування 'unauthorized' відповідей від авторизатора вебхука.
--bind-address string Типово: 0.0.0.0
IP-адреса, на якій буде прослуховуватися порт --secure-port. Відповідний інтерфейс(и) має бути доступним для решти кластера, а також для CLI/веб-клієнтів. Якщо цей параметр не вказано або вказано невизначену адресу (0.0.0.0 або ::), будуть використані всі інтерфейси та сімейства IP-адрес.
--cert-dir string
Тека, в якій знаходяться TLS-сертифікати. Якщо вказано --tls-cert-file та --tls-private-key-file, цей прапорець буде проігноровано.
Якщо встановлено, будь-який запит, що надає клієнтський сертифікат, підписаний одним із центрів сертифікації у клієнтському файлі, буде автентифіковано за допомогою ідентифікатора, що відповідає загальному імені клієнтського сертифіката.
--cloud-config string
Шлях до файлу конфігурації хмарного провайдера. Порожній рядок, якщо файл конфігурації відсутній.
--cloud-provider string
Провайдер хмарних сервісів. Порожній рядок для відсутності провайдера.
--cluster-cidr string
Діапазон CIDR для вузлів у кластері. Використовується лише коли --allocate-node-cidrs=true; якщо false, цей параметр буде проігноровано.
--cluster-name string Типово: "kubernetes"
Префікс екземпляру для кластера.
--cluster-signing-cert-file string
Файл, що містить PEM-кодований сертифікат X509 CA, який використовується для випуску кластерних сертифікатів. Якщо вказано, можна не вказувати більш специфічний прапорець --cluster-signing-*.
Буде вказано максимальний термін дії підписаних сертифікатів. Окремі CSR можуть запитувати коротші сертифікати, встановивши spec.expirationSeconds.
--cluster-signing-key-file string
Імʼя файлу, що містить PEM-кодований закритий ключ RSA або ECDSA, який використовується для підпису кластерних сертифікатів. Якщо вказано, не можна вказувати більш специфічний прапорець --cluster-signing-*.
Файл, що містить PEM-кодований сертифікат X509 CA, який використовується для випуску сертифікатів для підписувача kubernetes.io/kube-apiserver-client. Якщо вказано, --cluster-signing-{cert,key}-file не має бути задано.
Файл, що містить PEM-кодований приватний ключ RSA або ECDSA, який використовується для підпису сертифікатів для підписувача kubernetes.io/kube-apiserver-client. Якщо вказано, --cluster-signing-{cert,key}-file не має бути задано.
--cluster-signing-kubelet-client-cert-file string
Файл, що містить PEM-кодований сертифікат X509 CA, який використовується для випуску сертифікатів для підписувача kubernetes.io/kube-apiserver-client-kubelet. Якщо вказано, --cluster-signing-{cert,key}-file не має бути задано.
--cluster-signing-kubelet-client-key-file string
Файл, що містить PEM-кодований приватний ключ RSA або ECDSA, який використовується для підпису сертифікатів для підписувача kubernetes.io/kube-apiserver-client-kubelet. Якщо вказано, --cluster-signing-{cert,key}-file не має бути задано.
Файл, що містить PEM-кодований сертифікат X509 CA, який використовується для випуску сертифікатів для підписувача kubernetes.io/kubelet-serving. Якщо вказано, --cluster-signing-{cert,key}-file не має бути задано.
--cluster-signing-kubelet-serving-key-file string
Файл, що містить PEM-кодований приватний ключ RSA або ECDSA, який використовується для підпису сертифікатів для підписувача kubernetes.io/kubelet-serving. Якщо вказано, --cluster-signing-{cert,key}-file не має бути задано.
--cluster-signing-legacy-unknown-cert-file string
Файл, що містить PEM-кодований сертифікат X509 CA, який використовується для видачі сертифікатів для підписувача kubernetes.io/legacy-unknown. Якщо вказано, --cluster-signing-{cert,key}-file не має бути задано.
--cluster-signing-legacy-unknown-key-file string
Файл, що містить PEM-кодований приватний ключ RSA або ECDSA, який використовується для підпису сертифікатів для kubernetes.io/legacy-unknown signer. Якщо вказано, --cluster-signing-{cert,key}-file не має бути задано.
--concurrent-cron-job-syncs int32 Типово: 5
Кількість обʼєктів завдання cron, яким дозволено синхронізуватися одночасно. Більша кількість = швидше реагують завдання, але більше навантаження на процесор (і мережу)
--concurrent-daemonset-syncs int32 Default: 2
Кількість обʼєктів daemonset, яким дозволено синхронізуватися одночасно. Більша кількість = більш чутливі daemonset, але більше навантаження на процесор (і мережу)
--concurrent-deployment-syncs int32 Типово: 5
Кількість обʼєктів deployment, яким дозволено синхронізуватися одночасно. Більша кількість = швидше розгортання, але більше навантаження на процесор (і мережу)
--concurrent-endpoint-syncs int32 Типово: 5
Кількість операцій синхронізації точок доступу, які будуть виконуватися одночасно. Більша кількість = швидше оновлення точок доступу, але більше навантаження на процесор (і мережу)
Кількість операцій синхронізації ефемерних томів, які будуть виконуватися одночасно. Більша кількість = швидше оновлення ефемерних томів, але більше навантаження на процесор (і мережу)
Кількість обʼєктів Job, яким дозволено синхронізуватися одночасно. Більша кількість = швидше реагують завдання, але більше навантаження на процесор (і мережу)
--concurrent-namespace-syncs int32 Типово: 10
Кількість обʼєктів namespace, яким дозволено синхронізуватися одночасно. Більша кількість = більш оперативне завершення роботи простору імен, але більше навантаження на процесор (і мережу)
--concurrent-rc-syncs int32 Типово: 5
Кількість контролерів реплікації, яким дозволено синхронізуватися одночасно. Більша кількість = більш оперативне керування реплікацією, але більше навантаження на процесор (і мережу)
--concurrent-replicaset-syncs int32 Типово: 5
Кількість replica set, які дозволено синхронізувати одночасно. Більша кількість = більш оперативне керування реплікацією, але більше навантаження на процесор (і мережу)
--concurrent-resource-quota-syncs int32 Типово: 5
Кількість квот ресурсів, які дозволено синхронізувати одночасно. Більша кількість = більш оперативне керування квотами, але більше навантаження на процесор (і мережу)
Кількість операцій синхронізації точок доступу сервісів, які будуть виконуватися одночасно. Чим більше число, тим швидше оновлюватиметься зріз кінцевих точок, але більше завантажуватиметься процесор (і мережа). Стандартно дорівнює 5.
--concurrent-service-syncs int32 Типово: 1
Кількість сервісів, яким дозволено синхронізуватися одночасно. Більша кількість = більш оперативне управління послугами, але більше навантаження на процесор (і мережу)
Кількість обʼєктів токенів службових облікових записів, яким дозволено синхронізуватися одночасно. Більша кількість = швидша генерація токенів, але більше навантаження на процесор (і мережу)
--concurrent-statefulset-syncs int32 Типово: 5
Кількість обʼєктів statefulset, яким дозволено синхронізуватися одночасно. Більша кількість = більш швидкодіючі statefulsets, але більше навантаження на процесор (і мережу)
Вимкнути синхронізацію узгоджувача приєднання томів. Вимкнення цієї опції може призвести до невідповідності томів і Podʼів. Використовуйте з обережністю.
Якщо значення true, HTTP2-сервіс буде вимкнено [default=false].
--disabled-metrics strings
Цей прапорець забезпечує аварійний вихід для метрик, що поводяться не належним чином. Щоб вимкнути метрику, ви маєте вказати її повну назву. Застереження: вимкнення метрик має вищий пріоритет, ніж показ прихованих метрик.
--emulated-version strings
У версіях різні компоненти емулюють свої можливості (API, функції, ...) інших компонентів. Якщо встановлено, компонент буде емулювати поведінку цієї версії замість базової двійкової версії. Формат версії може бути лише major.minor, наприклад: '--emulated-version=wardle=1.2,kube=1.31'. Можливі варіанти: kube=1.32..1.32 (default=1.32) Якщо компонент не вказано, стандартно використовується "kube"
--enable-dynamic-provisioning Типово: true
Увімкніть динамічне створення ресурсів для середовищ, які його підтримують.
--enable-garbage-collector Типово: true
Вмикає загальний збирач сміття. ПОВИНЕН бути синхронізований з відповідним прапорцем kube-apiserver.
--enable-hostpath-provisioner
Вмикає забезпечення HostPath PV під час роботи без хмарного провайдера. Це дозволяє тестувати та розробляти функції резервування. HostPath provisioning не підтримується жодним чином, не працюватиме в багатовузловому кластері і не повинен використовуватися ні для чого іншого, окрім тестування або розробки.
--enable-leader-migration
Чи вмикати міграцію лідера контролера.
--endpoint-updates-batch-period duration
Тривалість періоду пакетного оновлення точок доступу. Обробка змін у пакунках буде затримана на цей час, щоб обʼєднати їх з потенційними майбутніми оновленнями і зменшити загальну кількість оновлень точок доступу. Більша кількість = більша затримка програмування точок доступу, але менша кількість згенерованих ревізій точок доступу
--endpointslice-updates-batch-period duration
Тривалість періоду пакетного оновлення зрізу точок доступу. Обробка змін у пакунках буде затримана на цей час, щоб обʼєднати їх з потенційними майбутніми оновленнями і зменшити загальну кількість оновлень точок доступу. Більша кількість = більша затримка програмування точок доступу, але менша кількість згенерованих ревізій точок доступу
--external-cloud-volume-plugin string
Втулок для використання, коли хмарний провайдер встановлений як зовнішній. Може бути порожнім, слід встановлювати лише тоді, коли хмарний провайдер є зовнішнім. Наразі використовується для дозволу роботи node-ipam-controller, persistentvolume-binder-controller, persistentvolume-expander-controller та attach-detach-controller у вбудованих хмарних провайдерів.
QPS для використання під час спілкування з kubernetes apiserver.
--kubeconfig string
Шлях до файлу kubeconfig з інформацією про авторизацію та розташування майстра (розташування майстра може бути перевизначено прапорцем master).
--large-cluster-size-threshold int32 Типово: 50
Кількість вузлів, з яких node-lifecycle-controller вважає кластер великим для цілей логіки виселення. --secondary-node-eviction-rate неявно перевизначено у 0 для кластерів такого розміру або менших. Зауваження: Якщо вузли знаходяться у декількох зонах, цей поріг буде розглядатися як поріг розміру вузла зони для кожної зони, щоб визначити швидкість виселення вузла незалежно.
--leader-elect Типово: true
Запускає клієнта виборів лідера і отримує лідерство перед виконанням основного циклу. Увімкніть цю опцію під час запуску реплікованих компонентів для забезпечення високої доступності.
Тривалість, протягом якої кандидати, що не є лідерами, чекатимуть після поновлення лідерства, перш ніж спробувати зайняти лідерство в лідируючому, але не поновленому лідерському слоті. Це фактично максимальний час, протягом якого лідер може бути зупинений, перш ніж його замінить інший кандидат. Це застосовується лише у тому випадку, якщо вибори лідера увімкнені.
Інтервал між спробами виконуючого обовʼязки майстра поновити слот лідера до того, як він перестане бути лідером. Він має бути меншим за тривалість оренди. Це застосовується лише у тому випадку, якщо вибори лідера увімкнені.
Простір імен обʼєкта ресурсу, який використовується для блокування під час виборів лідера.
--leader-elect-retry-period duration Типово: 2s
Час, протягом якого клієнти повинні чекати між спробою отримання та поновленням лідерства. Це стосується лише тих випадків, коли увімкнено обрання лідера.
--leader-migration-config string
Шлях до конфігураційного файлу для міграції лідера контролерів або порожній, щоб використовувати значення, яке є стандартною конфігурацією диспетчера контролерів. Конфігураційний файл має бути типу LeaderMigrationConfiguration, група controllermanager.config.k8s.io, версія v1alpha1.
Період часу з моменту останнього використання токену застарілого облікового запису до його видалення.
--log-flush-frequency duration Типово: 5s
Максимальна кількість секунд між очищеннями логів
--log-text-info-buffer-size quantity
[Alpha] У текстовому форматі з розділеними потоками виводу інформаційні повідомлення можуть буферизуватися на деякий час для підвищення продуктивності. Стандартне значення, рівне нулю байт, вимикає буферизацію. Розмір можна вказати як кількість байт (512), кратну 1000 (1K), кратну 1024 (2Ki) або степінь (3M, 4G, 5Mi, 6Gi). Увімкніть функцію LoggingAlphaOptions, щоб скористатися цією можливістю.
--log-text-split-stream
[Alpha] У текстовому форматі записувати повідомлення про помилки до stderr та інформаційні повідомлення до stdout. Стандартно до stdout записується один потік. Увімкніть функцію LoggingAlphaOptions, щоб скористатися цією можливістю.
--logging-format string Типово: "text"
Задає формат логу. Дозволені формати: "text".
--master string
Адреса сервера API Kubernetes (перевизначає будь-яке значення в kubeconfig).
--max-endpoints-per-slice int32 Типово: 100
Максимальна кількість точок доступу, яку буде додано до зрізу EndpointSlice. Чим більше точок на зріз, тим менше зрізів точок, але більші ресурси. Стандартне значення — 100.
--min-resync-period duration Типово: 12h0m0s
Період ресинхронізації у рефлекторах буде випадковим між MinResyncPeriod та 2*MinResyncPeriod.
Кількість операцій синхронізації точок доступу сервісів, які будуть виконуватися одночасно контролером endpointslice-mirroring-controller. Більша кількість = швидше оновлення зрізу точок доступу, але більше навантаження на процесор (і мережу). Стандартне значення — 5.
Тривалість періоду пакетного оновлення EndpointSlice для контролера endpointslice-mirroring-controller. Обробка змін EndpointSlice буде затримана на цей період, щоб обʼєднати їх з потенційними майбутніми оновленнями і зменшити загальну кількість оновлень EndpointSlice. Більша кількість = більша затримка програмування точок доступу, але менша кількість згенерованих ревізій точок доступу
Максимальна кількість точок доступу, яку буде додано до зрізу EndpointSlice контролером endpointslice-mirroring-controller. Чим більше точок на зріз, тим менше зрізів точок, але більші ресурси. Стандартно дорівнює 100.
--namespace-sync-period duration Типово: 5m0s
Період синхронізації оновлень життєвого циклу простору імен
--node-cidr-mask-size int32
Розмір маски для вузла cidr у кластері. Стандартне значення 24 для IPv4 та 64 для IPv6.
--node-cidr-mask-size-ipv4 int32
Розмір маски для IPv4 вузла cidr у двостековому кластері. Стандартне значення — 24.
--node-cidr-mask-size-ipv6 int32
Розмір маски для IPv6 вузла cidr у двостековому кластері. Стандартне значення — 64.
--node-eviction-rate float Типово: 0.1
Кількість вузлів на секунду, на яких видаляються підтипи у випадку відмови вузла, коли зона є справною (див. --unhealthy-zone-threshold для визначення справності/несправності зони). Під зоною мається на увазі весь кластер у небагатозонних кластерах.
--node-monitor-grace-period duration Типово: 50s
Кількість часу, протягом якого ми дозволяємо вузлу не відповідати на запити, перш ніж позначити його як несправний. Має бути у N разів більшою за nodeStatusUpdateFrequency kubelet, де N означає кількість спроб, дозволених kubelet для публікації статусу вузла. Це значення також має бути більшим за суму HTTP2_PING_TIMEOUT_SECONDS і HTTP2_READ_IDLE_TIMEOUT_SECONDS
--node-monitor-period duration Типово: 5s
Період синхронізації NodeStatus у контролері cloud-node-lifecycle-controller.
--node-startup-grace-period duration Типово: 1m0s
Час, протягом якого ми дозволяємо стартовому вузлу не відповідати, перш ніж позначити його як несправний.
--permit-address-sharing
Якщо це значення дорівнює true, SO_REUSEADDR буде використано при привʼязці порту. Це дозволяє паралельно привʼязуватись до підстановочних IP-адрес, таких як 0.0.0.0, і до конкретних IP-адрес, а також дозволяє уникнути очікування ядром звільнення сокетів у стані TIME_WAIT. [default=false]
--permit-port-sharing
Якщо значення true, SO_REUSEPORT буде використано при привʼязці порту, що дозволяє більш ніж одному екземпляру привʼязуватися до тієї самої адреси та порту. [default=false]
--profiling Типово: true
Вмикання профілювання через веб-інтерфейс host:port/debug/pprof/
Мінімальне значення ActiveDeadlineSeconds, яке потрібно використовувати для HostPath Recycler pod. Це лише для розробки та тестування і не працюватиме у багатовузловому кластері.
Шлях до файлу з визначенням тома, який використовується як шаблон для переробки постійного тома HostPath. Він призначений лише для розробки та тестування і не працюватиме у багатовузловому кластері.
--pv-recycler-pod-template-filepath-nfs string
Шлях до файлу з визначенням pod, який використовується як шаблон для рециркуляції постійних томів NFS
інкремент часу, що додається до ActiveDeadlineSeconds на кожен Gi, для HostPath Pod scrubber. Це призначено лише для розробки та тестування і не працюватиме у багатовузловому кластері.
--pvclaimbinder-sync-period duration Типово: 15s
Період синхронізації постійних томів і заявок на постійні томи
--requestheader-allowed-names strings
Список загальних імен клієнтських сертифікатів, щоб дозволити вказувати імена користувачів у заголовках, визначених параметром --requestheader-username-headers. Якщо він порожній, можна використовувати будь-який сертифікат клієнта, підтверджений центрами сертифікації у файлі --requestheader-client-ca-file.
--requestheader-client-ca-file string
Пакет кореневих сертифікатів для перевірки клієнтських сертифікатів на вхідних запитах перед тим, як довіряти іменам користувачів у заголовках, визначених параметром --requestheader-username-headers. ПОПЕРЕДЖЕННЯ: зазвичай не залежить від авторизації, яку вже виконано для вхідних запитів.
Період синхронізації статусу використання квоти в системі
--root-ca-file string
Якщо встановлено, цей кореневий центр сертифікації буде включено до токену секрету службового облікового запису. Це має бути дійсний пакет центрів сертифікації з PEM-кодуванням.
Період узгодження маршрутів, створених для Node хмарним провайдером.
--secondary-node-eviction-rate float Типово: 0.01
Кількість вузлів на секунду, на яких видаляються pods у разі відмови вузла, коли зона є несправною (див. --unhealthy-zone-threshold для визначення healthy/unhealthy зони). Під зоною мається на увазі весь кластер у небагатозонних кластерах. Це значення неявно перевизначається на 0, якщо розмір кластера менший за --large-cluster-size-threshold.
--secure-port int Типово: 10257
Порт, на якому обслуговувати HTTPS з автентифікацією та авторизацією. Якщо 0, не обслуговувати HTTPS взагалі.
--service-account-private-key-file string
Вмикає застарілі токени на основі секретності, якщо встановлено. Файл, що містить приватний ключ RSA або ECDSA, закодований PEM, який використовується для підпису токенів службових облікових записів.
--service-cluster-ip-range string
Діапазон CIDR для Services у кластері. Використовується лише коли --allocate-node-cidrs=true; якщо false, цей параметр буде проігноровано.
--show-hidden-metrics-for-version string
Попередня версія, для якої ви хочете показати приховані метрики. Значення має лише попередня мінорна версія, інші значення не будуть дозволені. Формат: <major>.<minor>, наприклад: '1.16'. Мета цього формату — переконатися, що ви маєте можливість помітити, що наступний реліз приховує додаткові метрики, замість того, щоб дивуватися, коли вони будуть назавжди вилучені в наступному релізі.
--terminated-pod-gc-threshold int32 Типово: 12500
Кількість podʼів, що завершили роботу, які можуть існувати до того, як збирач завершених podʼів почне їх видалення. Якщо <= 0, то збирач завершених podʼів вимкнено.
--tls-cert-file string
Файл, що містить стандартний сертифікат x509 для HTTPS. (Сертифікат центру сертифікації, якщо такий є, додається після сертифіката сервера). Якщо HTTPS-сервіс увімкнено, а --tls-cert-file і --tls-private-key-file не вказано, для публічної адреси буде згенеровано самопідписаний сертифікат і ключ, які буде збережено в теці, вказаній в --cert-dir.
--tls-cipher-suites strings
Розділений комами список наборів шифрів для сервера. Якщо не вказано, буде використано стандартний набір шифрів Go. Значення, яким надається перевага: TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256. Небезпечні значення: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_RC4_128_SHA.
--tls-min-version string
Мінімальна підтримувана версія TLS. Можливі значення: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13
--tls-private-key-file string
Файл, що містить стандартний приватний ключ x509, який відповідає --tls-cert-file.
--tls-sni-cert-key string
Пара шляхів до файлів сертифіката x509 і приватного ключа, до яких за бажанням додається список шаблонів доменів, які є повними доменними іменами, можливо, з префіксальними підстановчими сегментами. Доменні шаблони також дозволяють використовувати IP-адреси, але IP-адреси слід використовувати лише в тому випадку, якщо apiserver має доступ до IP-адреси, запитуваної клієнтом. Якщо шаблони домену не надано, витягуються імена сертифікатів. Збіги без підстановочних знаків мають перевагу над збігами з підстановочними знаками, а явні шаблони доменів мають перевагу над отриманими іменами. Для кількох пар ключ/сертифікат використовуйте --tls-sni-cert-key кілька разів. Приклади: "example.crt,example.key" або "foo.crt,foo.key:*.foo.com,foo.com".
--unhealthy-zone-threshold float Типово: 0.55
Частка вузлів у зоні, яка не повинна бути Ready (мінімум 3) для того, щоб зона вважалася несправною.
--use-service-account-credentials
Якщо true, використовуйте окремі облікові дані для кожного контролера.
-v, --v int
число для визначення ступеня деталізації логу
--version version[=true]
--version, --version=raw виводить інформацію про версію та виходить; --version=vX.Y.Z... встановлює вказану версію
--vmodule pattern=N,...
список параметрів pattern=N, розділених комами, для файлового фільтрування логу (працює лише для текстового формату логу).
12.6 - kube-proxy
Огляд
Мережевий проксі-сервер Kubernetes працює на кожному вузлі. Це відображає сервіси, визначені у Kubernetes API, на кожному вузлі і може виконувати просте перенаправлення потоків TCP, UDP і SCTP або циклічне перенаправлення TCP, UDP і SCTP через набір бекендів. Наразі IP-адреси та порти кластерів обслуговування можна знайти за допомогою сумісних з Docker-посиланнями змінні оточення, що визначають порти, відкриті проксі-сервісом. Існує надбудова яка надає кластерний DNS для цих кластерних IP-адрес. Користувач повинен створити сервіс за допомогою API apiserver, щоб налаштувати проксі.
kube-proxy [flags]
Параметри
--add_dir_header
Якщо true, додає теку файлу до заголовка повідомлень логу
--alsologtostderr
виводити лог до stderr, а також у файли (не має ефекту, якщо -logtostderr=true)
--bind-address string Типово: 0.0.0.0
Перевизначає уявлення kube-proxy про первинну IP-адресу вузла. Зауважте, що назва є історичним артефактом, і kube-proxy насправді не привʼязує жодних сокетів до цього IP. Цей параметр ігнорується, якщо конфігураційний файл вказано за допомогою --config.
--bind-address-hard-fail
Якщо true, kube-proxy розцінить невдалу спробу звʼязатися з портом як фатальну і завершить роботу
--cleanup
Якщо true, очистіть iptables та правила ipvs і вийдіть.
--cluster-cidr string
Діапазон CIDR для Podʼів у кластері. (Для двостекових кластерів це може бути пара діапазонів CIDR, розділених комами). Коли --detect-local-mode має значення ClusterCIDR, kube-proxy вважатиме трафік локальним, якщо IP-адреса його джерела знаходиться в цьому діапазоні. (В іншому випадку він не використовується.) Цей параметр ігнорується, якщо конфігураційний файл вказано за допомогою --config.
--config string
Шлях до файлу конфігурації.
--config-sync-period duration Типово: 15m0s
Як часто оновлюється конфігурація з apiserver. Повинно бути більше 0.
--conntrack-max-per-core int32 Типово: 32768
Максимальна кількість NAT-зʼєднань для відстеження на одне ядро процесора (0 — залишити ліміт як є і ігнорувати conntrack-min).
--conntrack-min int32 Типово: 131072
Мінімальна кількість записів conntrack для розподілу, незалежно від conntrack-max-per-core (встановіть conntrack-max-per-core=0, щоб залишити обмеження без змін).
--conntrack-tcp-be-liberal
Увімкніть ліберальний режим відстеження TCP-пакетів, встановивши nf_conntrack_tcp_be_liberal у 1
IP-адреса та порт для сервера перевірки справності, стандартно "0.0.0.0:10256". Цей параметр ігнорується, якщо конфігураційний файл вказано за допомогою --config.
-h, --help
Довідка kube-proxy
--hostname-override string
Якщо не порожнє, буде використано як імʼя вузла, на якому запущено kube-proxy. Якщо не задано, імʼя вузла вважається таким самим, як і імʼя хоста вузла.
--init-only
Якщо true, виконайте всі кроки ініціалізації, які необхідно виконати з повними привілеями root, а потім вийдіть. Після цього ви можете запустити kube-proxy знову, але тільки з параметром CAP_NET_ADMIN.
--iptables-localhost-nodeports Типово: true
Якщо значення false, kube-proxy вимкне застарілу поведінку, яка дозволяла доступ до сервісів NodePort через localhost. (Стосується лише режиму iptables та IPv4; NodePort через localhost ніколи не буде дозволено в інших режимах проксі або з IPv6).
--iptables-masquerade-bit int32 Типово: 14
Якщо використовується режим проксі iptables або ipvs, біт простору fwmark, яким слід позначати пакети, що вимагають SNAT. Повинен знаходитися в діапазоні [0, 31].
--iptables-min-sync-period duration Типово: 1s
Мінімальний період між пересинхронізаціями правил iptables (наприклад, '5s', '1m', '2h22m'). Значення 0 означає, що кожна зміна Service або EndpointSlice призведе до негайного пересинхронізації iptables.
--iptables-sync-period duration Типово: 30s
Інтервал (наприклад, '5s', '1m', '2h22m'), який вказує, як часто виконуються різні операції ресинхронізації та очищення. Має бути більше 0.
--ipvs-exclude-cidrs strings
Список CIDR, розділених комами, які ipvs-проксі-сервер не повинен торкатися під час очищення правил IPVS.
--ipvs-min-sync-period duration Типово: 1s
Мінімальний період між ресинхронізаціями правил IPVS (наприклад, '5s', '1m', '2h22m'). Значення 0 означає, що кожна зміна Service або EndpointSlice призведе до негайної пересинхронізації IPVS.
--ipvs-scheduler string
Тип планувальника ipvs, якщо режим проксі — ipvs
--ipvs-strict-arp
Увімкніть строгий ARP, встановивши arp_ignore на 1 і arp_announce на 2
--ipvs-sync-period duration Типово: 30s
Інтервал (наприклад, '5s', '1m', '2h22m'), який вказує, як часто виконуються різні операції ресинхронізації та очищення. Має бути більше 0.
--ipvs-tcp-timeout duration
Тайм-аут для неактивних TCP-зʼєднань IPVS, 0 — залишити як є. (наприклад, '5s', '1m', '2h22m').
--ipvs-tcpfin-timeout duration
Тайм-аут для IPVS TCP-зʼєднань після отримання FIN-пакету, 0 —
залишити як є. (наприклад, '5s', '1m', '2h22m').
--ipvs-udp-timeout duration
Таймаут для IPVS UDP-пакетів, 0 — залишити як є. (наприклад, '5s', '1m', '2h22m').
--kube-api-burst int32 Типово: 10
Сплеск для використання під час спілкування з apiserver на kubernetes.
Використання QPS під час спілкування з apiserver на kubernetes
--kubeconfig string
Шлях до файлу kubeconfig з інформацією про авторизацію (розташування master може бути перевизначено прапорцем master).
--log-flush-frequency duration Типово: 5s
Максимальна кількість секунд між очищеннями логів
--log-text-info-buffer-size quantity
[Alpha] У текстовому форматі з розділеними потоками виводу інформаційні повідомлення можуть буферизуватися на деякий час для підвищення продуктивності. Стандартне значення, рівне нулю байт, вимикає буферизацію. Розмір можна вказати як кількість байт (512), кратну 1000 (1K), кратну 1024 (2Ki) або степінь (3M, 4G, 5Mi, 6Gi). Увімкніть функцію LoggingAlphaOptions, щоб скористатися цією можливістю.
--log-text-split-stream
[Alpha] У текстовому форматі записувати повідомлення про помилки до stderr та інформаційні повідомлення до stdout. Стандартно до stdout записується один потік. Увімкніть функцію LoggingAlphaOptions, щоб скористатися цією можливістю.
--log_backtrace_at <рядок у вигляді 'file:N'> Типово: :0
при попаданні в лог-файл рядка file:N, вивести трасування стеку
--log_dir string
Якщо тека не порожня, записати лог-файли у цю теку (не діє, якщо -logtostderr=true).
--log_file string
Якщо файл не порожній, використовуйте цей файл логу (не діє, якщо -logtostderr=true)
--log_file_max_size uint Типово: 1800
Визначає максимальний розмір, до якого може зрости файл логу (не впливає, якщо -logtostderr=true). Одиниця виміру — мегабайти. Якщо значення дорівнює 0, максимальний розмір файлу необмежений.
--logging-format string Типово: "text"
Задає формат логу. Дозволені формати: "text".
--logtostderr Типово: true
писати лог в standard error, а не у файл
--masquerade-all
SNAT для всього трафіку, що надсилається через IP-кластера сервісу. Це може бути необхідним для деяких втулків CNI. Підтримується лише в Linux.
--master string
Адреса сервера API Kubernetes (перевизначає будь-яке значення в kubeconfig).
IP-адреса та порт для сервера метрик, типове значення: "127.0.0.1:10249". (Встановіть значення "0.0.0.0:10249" / "[::]:10249" для привʼязки на всіх інтерфейсах). Встановіть пусте значення, щоб вимкнути. Цей параметр ігнорується, якщо конфігураційний файл вказано за допомогою --config.
--nodeport-addresses strings
Список діапазонів CIDR, які містять допустимі IP-адреси вузлів, або, як варіант, єдиний рядок 'primary'. Якщо встановлено перелік CIDRs, зʼєднання з сервісами NodePort будуть прийматися лише з IP-адрес вузла в одному із зазначених діапазонів. Якщо встановлено значення 'primary', сервіси NodePort будуть прийматися лише на основну IP-адресу вузла згідно з обʼєктом Node. Якщо не встановлено, зʼєднання до NodePort будуть прийматися на всіх локальних IP-адресах. Цей параметр ігнорується, якщо конфігураційний файл вказано за допомогою --config.
--one_output
Якщо значення true, записувати логи лише до їхнього власного рівня важливості (замість запису до кожного нижчого рівня важливості; немає ефекту, якщо -logtostderr=true).
--oom-score-adj int32 Типово: -999
Значення oom-score-adj для процесу kube-proxy. Значення має бути в діапазоні [-1000, 1000]. Цей параметр ігнорується, якщо конфігураційний файл вказано за допомогою --config.
--pod-bridge-interface string
Імʼя інтерфейсу bridge. Коли --detect-local-mode має значення BridgeInterface, kube-proxy вважатиме трафік локальним, якщо він походить з цього мосту.
--pod-interface-name-prefix string
Префікс імені інтерфейсу. Коли --detect-local-mode має значення InterfaceNamePrefix, kube-proxy вважатиме трафік локальним, якщо він походить з будь-якого інтерфейсу, назва якого починається з цього префікса.
--profiling
Якщо значення true, вмикає профілювання через веб-інтерфейс у обробнику /debug/pprof. Цей параметр ігнорується, якщо конфігураційний файл вказано за допомогою --config.
--proxy-mode ProxyMode
Режим проксі-сервера: у Linux це може бути 'iptables' (стандартно) або 'ipvs'. У Windows єдиним підтримуваним значенням є 'kernelspace'. Цей параметр ігнорується, якщо у конфігураційному файлі вказано --config.
--show-hidden-metrics-for-version string
Попередня версія, для якої ви хочете показати приховані метрики. Значення має лише попередня мінорна версія, інші значення не будуть дозволені. Формат: <major>.<minor>, наприклад: '1.16'. Мета цього формату — переконатися, що ви маєте можливість помітити, що наступний реліз приховує додаткові метрики, а не дивуватися, коли вони назавжди вилучаються в наступному релізі. Цей параметр ігнорується, якщо конфігураційний файл вказано за допомогою --config.
--skip_headers
Якщо true, уникати префіксів заголовків у повідомленнях логу
--skip_log_headers
Якщо значення true, уникати заголовків при відкритті файлів логу (не впливає, якщо -logtostderr=true)
--stderrthreshold int Типово: 2
логи на рівні або вище цього порогу потрапляють до stderr під час запису до файлів та stderr (не впливає, якщо -logtostderr=true або -alsologtostderr=true)
-v, --v int
число рівня деталізації логу
--version version[=true]
--version, --version=raw виводить інформацію про версію та виходить; --version=vX.Y.Z... встановлює вказану версію
--vmodule pattern=N,...
список параметрів pattern=N, розділених комами, для файлового фільтрування логу (працює лише для текстового формату логу).
--write-config-to string
Якщо встановлено, записати значення стандартної конфігурації до цього файлу і вийти.
12.7 - kube-scheduler
Огляд
Планувальник Kubernetes — це процес панелі управління, який призначає Podʼи до вузлів. Планувальник визначає, які вузли є допустимими для розміщення для кожного Pod у черзі планування відповідно до обмежень та доступних ресурсів. Потім планувальник ранжує кожен допустимий вузол і привʼязує Pod до відповідного вузла. У кластері може використовуватися декілька різних планувальників; kube-scheduler є еталонною реалізацією. Див. статтю планування для отримання додаткової інформації про планування та компонент kube-scheduler.
kube-scheduler [flags]
Параметри
--allow-metric-labels stringToString Типово: []
Зіставляє метрику-мітку зі списком дозволених значень цієї мітки. Формат ключа — <MetricName>,<LabelName>. Формат значення — < allowed_value>, <allowed_value>...наприклад, metric1,label1='v1,v2,v3', metric1,label2='v1,v2,v3' metric2,label1='v1,v2,v3'.
--allow-metric-labels-manifest string
Шлях до файлу маніфесту, який містить зіставлення allow-list. Формат файлу такий самий, як і у прапорця --allow-metric-labels. Зауважте, що прапорець --allow-metric-labels замінить файл маніфесту.
--authentication-kubeconfig string
файл kubeconfig, що вказує на 'core' сервер kubernetes з достатніми правами для створення tokenreviews.authentication.k8s.io. Цей параметр не є обовʼязковим. Якщо він порожній, всі запити токенів вважаються анонімними, і жоден клієнтський центр сертифікації не шукається в кластері.
--authentication-skip-lookup
Якщо значення false, authentication-kubeconfig буде використано для пошуку відсутньої конфігурації автентифікації в кластері.
Якщо це значення встановлено, невдачі у пошуку відсутньої конфігурації автентифікації в кластері не вважатимуться фатальними. Зауважте, що це може призвести до автентифікації, яка розглядає всі запити як анонімні.
Список HTTP-шляхів, які пропускаються під час авторизації, тобто авторизуються без звʼязку з 'core' сервером kubernetes.
--authorization-kubeconfig string
файл kubeconfig, що вказує на 'core' сервер kubernetes з достатніми правами для створення subjectaccessreviews.authorization.k8s.io. Цей параметр не є обовʼязковим. Якщо він порожній, всі запити, не пропущені авторизацією, будуть заборонені.
Тривалість кешування 'unauthorized' відповідей від авторизатора вебхука.
--bind-address string Типово: 0.0.0.0
IP-адреса, на якій буде прослуховуватися порт --secure-port. Відповідний інтерфейс(и) має бути доступним для решти кластера, а також для CLI/веб-клієнтів. Якщо цей параметр не вказано або вказано невизначену адресу (0.0.0.0 або ::), будуть використані всі інтерфейси та сімейства IP-адрес.
--cert-dir string
Тека, в якій знаходяться TLS-сертифікати. Якщо вказано --tls-cert-file та --tls-private-key-file, цей прапорець буде проігноровано.
--client-ca-file string
Якщо встановлено, будь-який запит, що надає клієнтський сертифікат, підписаний одним із центрів сертифікації у клієнтському файлі, буде автентифіковано за допомогою ідентифікатора, що відповідає CommonName клієнтського сертифіката.
--config string
Шлях до файлу конфігурації.
--contention-profiling Типово: true
DEPRECATED: увімкнути профілювання блоків, якщо профілювання увімкнено. Цей параметр ігнорується, якщо у --config вказано конфігураційний файл.
--disable-http2-serving
Якщо значення true, HTTP2-сервіс буде вимкнено [default=false].
--disabled-metrics strings
Цей прапорець забезпечує аварійний вихід для метрик, що поводяться не належним чином. Щоб вимкнути метрику, ви маєте вказати її повну назву. Застереження: вимкнення метрик має вищий пріоритет, ніж показ прихованих метрик.
--emulated-version strings
У версіях різні компоненти емулюють свої можливості (API, функції, ...) інших компонентів. Якщо встановлено, компонент буде емулювати поведінку цієї версії замість базової двійкової версії. Формат версії може бути лише major.minor, наприклад: '--emulated-version=wardle=1.2,kube=1.31'. Можливі варіанти: kube=1.32..1.32 (default=1.32) Якщо компонент не вказано, стандартно використовується "kube"
Обмеження, яке сервер надає клієнтам на максимальну кількість потоків у зʼєднанні HTTP/2. Нуль означає використання стандартних значень golang.
--kube-api-burst int32 Типово: 100
DEPRECATED: сплеск для використання під час спілкування з apiserver'ом kubernetes. Цей параметр ігнорується, якщо у --config вказано конфігураційний файл.
DEPRECATED: тип вмісту запитів, що надсилаються до apiserver. Цей параметр ігнорується, якщо у --config вказано конфігураційний файл.
--kube-api-qps float Типово: 50
DEPRECATED: Використовувати QPS під час спілкування з apiserver'ом kubernetes. Цей параметр ігнорується, якщо у --config вказано конфігураційний файл.
--kubeconfig string
DEPRECATED: шлях до файлу kubeconfig з інформацією про авторизацію та місцезнаходження майстра. Цей параметр ігнорується, якщо у --config вказано конфігураційний файл.
--leader-elect Типово: true
Запускає клієнта виборів лідера і отримує лідерство перед виконанням основного циклу. Увімкніть цю опцію під час запуску реплікованих компонентів для забезпечення високої доступності.
Тривалість, протягом якої кандидати, що не є лідерами, чекатимуть після поновлення лідерства, перш ніж спробувати зайняти лідерство в лідируючому, але не поновленому лідерському слоті. Це фактично максимальний час, протягом якого лідер може бути зупинений, перш ніж його замінить інший кандидат. Це застосовується лише у тому випадку, якщо вибори лідера увімкнені.
Інтервал між спробами виконуючого обовʼязки майстра поновити слот лідера до того, як він перестане бути лідером. Він має бути меншим за тривалість оренди. Це застосовується лише у тому випадку, якщо вибори лідера увімкнені.
Простір імен обʼєкта ресурсу, який використовується для блокування під час виборів лідера.
--leader-elect-retry-period duration Типово: 2s
Час, протягом якого клієнти повинні чекати між спробою отримання та поновленням лідерства. Це стосується лише тих випадків, коли увімкнено обрання лідера.
--log-flush-frequency duration Типово: 5s
Максимальна кількість секунд між очищеннями логів
--log-text-info-buffer-size quantity
[Alpha] У текстовому форматі з розділеними потоками виводу інформаційні повідомлення можуть буферизуватися на деякий час для підвищення продуктивності. Стандартне значення, рівне нулю байт, вимикає буферизацію. Розмір можна вказати як кількість байт (512), кратну 1000 (1K), кратну 1024 (2Ki) або степінь (3M, 4G, 5Mi, 6Gi). Увімкніть функцію LoggingAlphaOptions, щоб скористатися цією можливістю.
--log-text-split-stream
[Alpha] У текстовому форматі записувати повідомлення про помилки до stderr та інформаційні повідомлення до stdout. Стандартно до stdout записується один потік. Увімкніть функцію LoggingAlphaOptions, щоб скористатися цією можливістю.
--logging-format string Типово: "text"
Задає формат логу. Дозволені формати: "text".
--master string
Адреса сервера API Kubernetes (перевизначає будь-яке значення в kubeconfig).
--permit-address-sharing
Якщо це значення дорівнює true, SO_REUSEADDR буде використано при привʼязці порту. Це дозволяє паралельно привʼязуватись до підстановочних IP-адрес, таких як 0.0.0.0, і до конкретних IP-адрес, а також дозволяє уникнути очікування ядром звільнення сокетів у стані TIME_WAIT. [default=false]
--permit-port-sharing
Якщо значення true, SO_REUSEPORT буде використано при привʼязці порту, що дозволяє більш ніж одному екземпляру привʼязуватися до однієї адреси та порту. [default=false]
DEPRECATED: максимальний час, протягом якого Pod може перебувати в unschedulablePods. Якщо Pod залишається в unschedulablePods довше, ніж це значення, то його буде переміщено з unschedulablePods до backoffQ або activeQ. Цей прапорець є застарілим і буде вилучений у наступній версії.
--profiling Типово: true
DEPRECATED: увімкнути профілювання через веб-інтерфейс host:port/debug/prof/. Цей параметр ігнорується, якщо у --config вказано конфігураційний файл.
--requestheader-allowed-names strings
Список загальних імен клієнтських сертифікатів, щоб дозволити вказувати імена користувачів у заголовках, визначених параметром --requestheader-username-headers. Якщо він порожній, можна використовувати будь-який сертифікат клієнта, підтверджений центрами сертифікації у файлі --requestheader-client-ca-file.
--requestheader-client-ca-file string
Пакет кореневих сертифікатів для перевірки клієнтських сертифікатів на вхідних запитах перед тим, як довіряти іменам користувачів у заголовках, визначених параметром --requestheader-username-headers. ПОПЕРЕДЖЕННЯ: зазвичай не залежить від авторизації, яку вже виконано для вхідних запитів.
Список заголовків запитів для перевірки на наявність імен користувачів. X-Remote-User є поширеним.
--secure-port int Типово: 10259
Порт, на якому обслуговувати HTTPS з автентифікацією та авторизацією. Якщо 0, не обслуговувати HTTPS взагалі.
--show-hidden-metrics-for-version string
Попередня версія, для якої ви хочете показати приховані метрики. Значення має лише попередня мінорна версія, інші значення не будуть дозволені. Формат: <major>.<minor>, наприклад: '1.16'. Мета цього формату - переконатися, що ви маєте можливість помітити, що наступний реліз приховує додаткові метрики, замість того, щоб дивуватися, коли вони будуть назавжди вилучені в наступному релізі.
--tls-cert-file string
Файл, що містить стандартний сертифікат x509 для HTTPS. (Сертифікат центру сертифікації, якщо такий є, додається після сертифіката сервера). Якщо HTTPS-сервіс увімкнено, а --tls-cert-file і --tls-private-key-file не вказано, для публічної адреси буде згенеровано самопідписаний сертифікат і ключ, які буде збережено в теці, вказаній в --cert-dir.
--tls-cipher-suites strings
Розділений комами список наборів шифрів для сервера. Якщо не вказано, буде використано стандартний набір шифрів Go. Значення, яким надається перевага: TLS_AES_128_GCM_SHA256, TLS_AES_256_GCM_SHA384, TLS_CHACHA20_POLY1305_SHA256, TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305, TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256, TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305, TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256. Небезпечні значення: TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_ECDSA_WITH_RC4_128_SHA, TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_3DES_EDE_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, TLS_RSA_WITH_AES_128_GCM_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA, TLS_RSA_WITH_AES_256_GCM_SHA384, TLS_RSA_WITH_RC4_128_SHA.
--tls-min-version string
Мінімальна підтримувана версія TLS. Можливі значення: VersionTLS10, VersionTLS11, VersionTLS12, VersionTLS13
--tls-private-key-file string
>Файл, що містить стандартний приватний ключ x509, який відповідає --tls-cert-file.
--tls-sni-cert-key string
Пара шляхів до файлів сертифіката x509 і приватного ключа, до яких за бажанням додається список доменних шаблонів, які є повними доменними іменами, можливо, з префіксальними підстановчими сегментами. Доменні шаблони також дозволяють використовувати IP-адреси, але IP-адреси слід використовувати лише в тому випадку, якщо apiserver має доступ до IP-адреси, запитуваної клієнтом. Якщо шаблони домену не надано, витягуються імена сертифікатів. Збіги без підстановочних знаків мають перевагу над збігами з підстановочними знаками, а явні шаблони доменів мають перевагу над отриманими іменами. Для кількох пар ключ/сертифікат використовуйте --tls-sni-cert-key кілька разів. Приклади: "example.crt,example.key" або "foo.crt,foo.key:*.foo.com,foo.com".
-v, --v int
число рівня деталізації логу
--version version[=true]
--version, --version=raw виводить інформацію про версію та виходить; --version=vX.Y.Z... встановлює вказану версію
--vmodule pattern=N,...
список параметрів pattern=N, розділених комами, для файлового фільтрування логу (працює лише для текстового формату логу).
--write-config-to string
Якщо встановлено, записати значення стандартної конфігурації до цього файлу і вийти.
13 - Відлагодження кластера
13.1 - Керування потоком
API Priority and Fairness контролює поведінку сервера API Kubernetes у ситуації перевантаження. Ви можете знайти більше інформації про нього у розділі API Priority & Fairness документації.
Діагностика
Кожна відповідь HTTP від API-сервера з увімкненою функцією пріоритету та справедливості має два додаткові заголовки: X-Kubernetes-PF-FlowSchema-UID та X-Kubernetes-PF-PriorityLevel-UID, які вказують на схему потоку, що відповідала запиту, та рівень пріоритету, до якого він був призначений, відповідно. Імена обʼєктів API не включені в ці заголовки (щоб уникнути розкриття деталей у випадку, якщо користувач, який робить запит, не має дозволу на їх перегляд). Під час налагодження ви можете використовувати команду:
kubectl get flowschemas -o custom-columns="uid:{metadata.uid},name:{metadata.name}"kubectl get prioritylevelconfigurations -o custom-columns="uid:{metadata.uid},name:{metadata.name}"
щоб отримати відповідність UID до імен для FlowSchemas та PriorityLevelConfigurations.
Точки налагодження
З увімкненою функцією APIPriorityAndFairness, kube-apiserver обслуговує наступні додаткові шляхи на своїх HTTP(S) портах.
Вам потрібно переконатися, що у вас є дозволи для доступу до цих точок. Вам не потрібно нічого робити, якщо ви адміністратор. Дозволи можуть бути надані за необхідністю відповідно до RBAC документа для доступу до /debug/api_priority_and_fairness/ шляхом зазначення nonResourceURLs.
/debug/api_priority_and_fairness/dump_priority_levels — перелік
усіх рівнів пріоритету та поточний стан кожного. Ви можете отримати його так:
kubectl get --raw /debug/api_priority_and_fairness/dump_priority_levels
Вихідні дані будуть у форматі CSV та подібні до цього:
NextDispatchR: показник прогресу R, в одиницях секунд-місць, на якому буде відправлено наступний запит.
InitialSeatsSum: сума InitialSeats, повʼязана з усіма запитами в даній черзі.
MaxSeatsSum: сума MaxSeats, повʼязана з усіма запитами в даній черзі.
TotalWorkSum: сума загальної роботи, в одиницях секунд-місць, усіх запитів, що очікують в черзі.
Примітка: seat-second (скорочено як ss) є одиницею вимірювання роботи в світі APF.
/debug/api_priority_and_fairness/dump_requests — перелік усіх запитів, включаючи запити, що очікують у черзі та запити, що виконуються. Ви можете отримати його так:
kubectl get --raw /debug/api_priority_and_fairness/dump_requests
Вихідні дані будуть у форматі CSV та подібні до цього:
QueueIndex: індекс черги. Він буде -1 для рівнів пріоритету без черг.
RequestIndexInQueue: індекс у черзі для даного запиту. Він буде -1 для запитів, що виконуються.
InitialSeats: кількість місць, які будуть зайняті під час початкового (нормального) етапу виконання запиту.
FinalSeats: кількість місць, які будуть зайняті під час завершального етапу виконання запиту, враховуючи повʼязані повідомлення WATCH.
AdditionalLatency: додатковий час, витрачений під час завершального етапу виконання запиту. FinalSeats будуть зайняті протягом цього періоду. Це не означає будь-яку затримку, яку спостерігатиме користувач.
StartTime: час початку виконання запиту. Він буде 0001-01-01T00:00:00Z для запитів, що очікують у черзі.
Ведення логів налагодження
На рівні -v=3 або вище, API-сервер виводить рядок httplog для кожного запиту в лозі API-сервера, і він містить наступні атрибути.
apf_fs: імʼя схеми потоку, до якої був класифікований запит.
apf_pl: імʼя рівня пріоритету для цієї схеми потоку.
apf_iseats: кількість місць, визначених для початкового (нормального) етапу виконання запиту.
apf_fseats: кількість місць, визначених для завершального етапу виконання (з урахуванням повʼязаних повідомлень watch) запиту.
apf_additionalLatency: тривалість завершального етапу виконання запиту.
На вищих рівнях деталізації логу будуть рядки, що розкривають деталі того, як APF обробив запит, в основному для цілей налагодження.
Заголовки відповіді
APF додає наступні два заголовки до кожного HTTP повідомлення. Вони не зʼявляться в лозі аудиту. Їх можна переглянути з боку клієнта. Для клієнтів, що використовують klog, використовуйте рівень деталізації -v=8 або вище, щоб переглянути ці заголовки.
X-Kubernetes-PF-FlowSchema-UID містить UID обʼєкта FlowSchema, до якого був класифікований відповідний запит.
X-Kubernetes-PF-PriorityLevel-UID містить UID обʼєкта PriorityLevelConfiguration, повʼязаного з цією FlowSchema.
Що далі
Для отримання фонової інформації про деталі дизайну пріоритету та справедливості API дивіться пропозицію щодо покращення.
Cluster містить інформацію, що дозволяє exec втулку спілкуватися з кластером Kubernetes, до якого здійснюється автентифікація.
Щоб забезпечити наявність у цій структурі всього необхідного для звʼязку з кластером Kubernetes (як це робиться через kubeconfig), поля повинні відображати структуру "k8s.io/client-go/tools/clientcmd/api/v1". Cluster, за винятком CertificateAuthority, оскільки дані CA завжди будуть передаватися втулку у вигляді байтів.
Поле
Опис
server[Обовʼязкове] string
Server — це адреса кластера Kubernetes (https://hostname:port).
tls-server-name string
TLSServerName передається серверу для SNI і використовується у клієнті для перевірки сертифікатів сервера. Якщо ServerName порожній, використовується імʼя хоста, за яким здійснюється контакт з сервером.
CAData містить сертифікати органів сертифікації, закодовані у форматі PEM. Якщо порожнє, слід використовувати системні корені.
proxy-url string
ProxyURL — це URL-адреса проксі-сервера, який буде використовуватися для всіх запитів до цього кластера.
disable-compression bool
DisableCompression дозволяє клієнту відмовитися від стиснення відповідей для всіх запитів до сервера. Це корисно для прискорення запитів (особливо списків), коли пропускна здатність мережі клієнт-сервер достатня, за рахунок економії часу на стиснення (на стороні сервера) і розпакування (на стороні клієнта): https://github.com/kubernetes/kubernetes/issues/112296.
Config містить додаткові дані конфігурації, специфічні для exec втулка щодо кластера, до якого здійснюється автентифікація.
Ці дані походять з поля extensions[client.authentication.k8s.io/exec] обʼєкта Cluster клієнтської конфігурації:
clusters:
name: my-cluster cluster: ... extensions:
name: client.authentication.k8s.io/exec # зарезервована назва розширення для конфігурації exec для кожного кластера extension: audience: 06e3fbd18de8 # довільна конфігурація
В деяких середовищах конфігурація користувача може бути точно такою ж для багатьох кластерів (тобто викликати цей exec втулок), за винятком деяких деталей, специфічних для кожного кластера, таких як аудиторія. Це поле дозволяє безпосередньо вказати конфігурацію для кожного кластера разом з інформацією про кластер. Використання цього поля для зберігання секретних даних не рекомендується, оскільки однією з основних переваг exec втулків є те, що жодні секрети не потрібно зберігати безпосередньо в kubeconfig.
Cluster містить інформацію, що дозволяє exec втулку спілкуватися з кластером Kubernetes, до якого здійснюється автентифікація. Зверніть увагу, що Cluster є ненульовим тільки тоді, коли provideClusterInfo встановлено в true у конфігурації exec провайдера (тобто, ExecConfig.ProvideClusterInfo).
interactive[Обовʼязкове] bool
Interactive вказує, чи було передано stdin цьому exec втулку.
ExecCredentialStatus містить облікові дані для використання транспортом.
Token і ClientKeyData є конфіденційними полями. Ці дані повинні передаватися тільки в памʼяті між клієнтом і процесом exec втулка. Сам exec втулок повинен бути захищений принаймні через права доступу до файлів.
Cluster містить інформацію, що дозволяє exec втулку спілкуватися з кластером Kubernetes, до якого здійснюється аутентифікація.
Щоб забезпечити наявність у цій структурі всього необхідного для звʼязку з кластером Kubernetes (як це робиться через kubeconfig), поля повинні відображати структуру "k8s.io/client-go/tools/clientcmd/api/v1". Cluster, за винятком CertificateAuthority, оскільки дані CA завжди будуть передаватися втулку у вигляді байтів.
Поле
Опис
server[Обовʼязкове] string
Server — це адреса кластера Kubernetes (https://hostname:port).
tls-server-name string
TLSServerName передається серверу для SNI і використовується у клієнті для перевірки сертифікатів сервера. Якщо ServerName порожній, використовується імʼя хоста, за яким здійснюється контакт з сервером.
CAData містить сертифікати органів сертифікації, закодовані у форматі PEM. Якщо порожнє, слід використовувати системні корені.
proxy-url string
ProxyURL — це URL-адреса проксі-сервера, який буде використовуватися для всіх запитів до цього кластера.
disable-compression bool
DisableCompression дозволяє клієнту відмовитися від стиснення відповідей для всіх запитів до сервера. Це корисно для прискорення запитів (особливо списків), коли пропускна здатність мережі клієнт-сервер достатня, за рахунок економії часу на стиснення (на стороні сервера) і розпакування (на стороні клієнта): https://github.com/kubernetes/kubernetes/issues/112296.
Config містить додаткові дані конфігурації, специфічні для exec втулка щодо кластера, до якого здійснюється аутентифікація.
Ці дані походять з поля extensions[client.authentication.k8s.io/exec] обʼєктаCluster клієнтської конфігурації:
clusters:
name: my-cluster cluster: ... extensions:
name: client.authentication.k8s.io/exec # зарезервована назва розширення для конфігурації exec для кожного кластера extension: audience: 06e3fbd18de8 # довільна конфігурація
В деяких середовищах конфігурація користувача може бути точно такою ж для багатьох кластерів (тобто викликати цей exec втулок), за винятком деяких деталей, специфічних для кожного кластера, таких як аудиторія. Це поле дозволяє безпосередньо вказати конфігурацію для кожного кластера разом з інформацією про кластер. Використання цього поля для зберігання секретних даних не рекомендується, оскільки однією з основних переваг exec плагінів є те, що жодні секрети не потрібно зберігати безпосередньо в kubeconfig.
Cluster містить інформацію, що дозволяє exec втулку спілкуватися з кластером Kubernetes, до якого здійснюється автентифікація. Зверніть увагу, що Cluster є ненульовим тільки тоді, коли provideClusterInfo встановлено в true у конфігурації exec провайдера (тобто, ExecConfig.ProvideClusterInfo).
interactive[Обовʼязкове] bool
Interactive вказує, чи було передано stdin цьому exec втулку.
ExecCredentialStatus містить облікові дані для використання транспортом.
Token і ClientKeyData є конфіденційними полями. Ці дані повинні передаватися тільки в памʼяті між клієнтом і процесом exec втулка. Сам exec втулок повинен бути захищений принаймні через права доступу до файлів.
limits — це обмеження на запити подій, що надходять. Обмеження можуть бути встановлені на події, отримані на рівні сервера, на рівні простору імен, на рівні користувача та на рівні джерела+обʼєкта. Потрібно принаймні одне обмеження.
type — це тип обмеження, до якого застосовується ця конфігурація.
qps[Обовʼязкове] int32
qps — це кількість запитів подій на секунду, дозволених для цього типу обмеження. Поля qps та burst використовуються разом, щоб визначити, чи приймається певний запит події. qps визначає, скільки запитів приймаються після вичерпання кількості запитів burst.
burst[Обовʼязкове] int32
burst — це кількість запитів подій burst, дозволених для цього типу обмеження. Поля qps та burst використовуються разом, щоб визначити, чи приймається певний запит події. burst визначає максимальний розмір дозволу, наданого для певного відра. Наприклад, якщо burst дорівнює 10, а qps дорівнює 3, то контроль доступу прийме 10 запитів перед блокуванням будь-яких запитів. Кожну секунду буде дозволено ще 3 запити. Якщо деяка частина цього дозволу не використовується, то вона переноситься на наступну секунду, поки не буде досягнуто максимального дозволу у 10 запитів.
cacheSize int32
cacheSize — це розмір LRU кешу для цього типу обмеження. Якщо кощик видаляється з кешу, то дозвол для цього кошика скидається. Якщо пізніше отримуються більше запитів для видаленого кошика, то цей кошик знову потрапляє в кеш з чистого аркуша, надаючи цьому кошику повний дозвіл на запити burst.
Стандартний розмір кешу становить 4096.
Якщо limitType — 'server', то cacheSize ігнорується.
Стандартні метадані обʼєкта. Докладніше: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata. Зверніться до документації Kubernetes API для полів метаданих metadata.
Containers — це список підмножини інформації в кожному контейнері пода, що створюється.
annotations map[string]string
Annotations — це список ключ-значення, витягнутий з анотацій Podʼа. Він включає лише ключі, які відповідають шаблону *.image-policy.k8s.io/*. Відповідно до кожного веб-хука, щоб визначити, як інтерпретувати ці анотації, якщо взагалі.
namespace string
Namespace — це простір імен, в якому створюється под.
ImageReviewStatus — це результат перевірки запиту на створення Podʼа.
Поле
Опис
allowed[Обовʼязкове] bool
Allowed вказує, що всі образи були дозволені до виконання.
reason string
Reason має бути порожнім, якщо Allowed є true, у протилежному випадку може містити короткий опис проблеми. Kubernetes може обрізати надто довгі помилки під час відображення користувачу.
auditAnnotations map[string]string
AuditAnnotations буде додано до обʼєкта атрибутів запиту контролера доступу за допомогою 'AddAnnotation'. Ключі повинні бути без префіксів (тобто контролер доступу додасть відповідний префікс).
UID — це ідентифікатор для індивідуального запиту/відповіді. Це дозволяє нам розрізняти випадки запитів, які є в іншому випадку ідентичними (паралельні запити, запити, коли попередні запити не змінили і т. д.). UID призначений для відстеження зворотного звʼязку (запит/відповідь) між KAS і WebHook, а не користувацьким запитом. Він підходить для співставлення записів журналу між вебхуком і apiserver для аудиту або налагодження.
RequestKind — це повністю кваліфікований тип початкового API-запиту (наприклад, v1.Pod або autoscaling.v1.Scale). Якщо це вказано і відрізняється від значення в "kind", було виконано еквівалентне співставлення та перетворення.
Наприклад, якщо deployments можна змінювати за допомогою apps/v1 та apps/v1beta1, і вебхук зареєстрував правило apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"] і matchPolicy: Equivalent, API-запит до деплойментів apps/v1beta1 буде перетворено та надіслано до вебхука з kind: {group:"apps", version:"v1", kind:"Deployment"} (відповідно до правила, зареєстрованого вебхуком), і requestKind: {group:"apps", version:"v1beta1", kind:"Deployment"} (вказуючи на тип початкового API-запиту).
Дивіться документацію для поля "matchPolicy" у типі конфігурації вебхука для отримання додаткової інформації.
RequestResource — це повністю кваліфікований ресурс початкового API-запиту (наприклад, v1.pods). Якщо це вказано і відрізняється від значення в "resource", було виконано еквівалентне співставлення та перетворення.
Наприклад, якщо deployments можна змінювати за допомогою apps/v1 та apps/v1beta1, і вебхук зареєстрував правило apiGroups:["apps"], apiVersions:["v1"], resources: ["deployments"] і matchPolicy: Equivalent, API-запит до деплойментів apps/v1beta1 буде перетворено та надіслано до вебхука з resource: {group:"apps", version:"v1", resource:"deployments"} (відповідно до ресурсу, зареєстрованого вебхуком), і requestResource: {group:"apps", version:"v1beta1", resource:"deployments"} (вказуючи на ресурс початкового API-запиту).
Дивіться документацію для поля "matchPolicy" у типі конфігурації вебхука.
requestSubResource string
RequestSubResource — це назва субресурсу початкового API-запиту, якщо такий є (наприклад, "status" або "scale"). Якщо це вказано і відрізняється від значення в "subResource", було виконано еквівалентне співставлення та перетворення. Дивіться документацію для поля "matchPolicy" у типі конфігурації вебхука.
name string
Імʼя — це назва обʼєкта, як подано в запиті. У разі операції CREATE клієнт може не вказати імʼя та покластися на сервер для генерації імені. Якщо це так, це поле буде містити порожній рядок.
namespace string
Namespace — це простір імен, повʼязаний із запитом (якщо є).
Operation — це операція, що виконується. Це може відрізнятися від операції, що запитується. Наприклад, патч може призвести до виконання операції CREATE або UPDATE.
Options — це структура опцій операції, що виконується. наприклад, meta.k8s.io/v1.DeleteOptions або meta.k8s.io/v1.CreateOptions. Це може бути інше, ніж опції, надані викликачем. наприклад, для запиту патчу виконана операція може бути CREATE, у цьому випадку Options буде meta.k8s.io/v1.CreateOptions, навіть якщо викликач надав meta.k8s.io/v1.PatchOptions.
Тип патчу. Наразі ми підтримуємо лише "JSONPatch".
auditAnnotations map[string]string
AuditAnnotations — це неструктурована карта ключ-значення, встановлена віддаленим контролером перегляду доступу (наприклад, error=image-blacklisted). Контролери MutatingAdmissionWebhook і ValidatingAdmissionWebhook додадуть до ключів префікс з іменем вебхука (наприклад, imagepolicy.example.com/error=image-blacklisted). AuditAnnotations буде надано вебхуком для додавання додаткового контексту до логу аудиту для цього запиту.
warnings []string
Warnings — це список попереджувальних повідомлень, що повертаються клієнту API, який робить запит. Попереджувальні повідомлення описують проблему, яку клієнт, що робить API-запит, має виправити або врахувати. По можливості обмежте попереджувальні повідомлення до 120 символів. Попереджувальні повідомлення, що перевищують 256 символів, та велика кількість попереджувальних повідомлень можуть бути скорочені.
Інформація про користувача, який діє від імені іншого користувача.
sourceIPs []string
IP-адреси джерела, звідки надійшов запит і проміжні проксі-сервери. IP-адреси джерела вказані у наступному порядку:
IP-адреси заголовку запиту X-Forwarded-For
Заголовок X-Real-Ip, якщо він не присутній у списку X-Forwarded-For
Віддалена адреса для зʼєднання, якщо вона не відповідає останній IP-адресі у списку до цього (X-Forwarded-For або X-Real-Ip). Примітка: Усі, крім останнього IP, можуть бути довільно встановлені клієнтом.
userAgent string
UserAgent записує рядок агента користувача, наданий клієнтом. Зазначте, що UserAgent надається клієнтом і не може бути довіреним.
Статус відповіді, заповнений навіть коли ObjectReference не є типом Status. Для успішних відповідей це міститиме лише Code і StatusSuccess. Для не-статусних типів помилок відповідей це буде автоматично заповнено повідомленням про помилку.
Обʼєкт API із запиту у форматі JSON. RequestObject записується в тому вигляді, в якому він був у запиті (можливо, повторно закодований як JSON), до конвертації версій, стандартно, допуску або злиття. Це зовнішній обʼєкт типу версії, і він може бути недійсним обʼєктом самостійно. Опускається для запитів без ресурсів. Записується тільки на рівні Request та вище.
Обʼєкт API, що повертається у відповіді, у форматі JSON. ResponseObject записується після перетворення на зовнішній тип і серіалізується як JSON. Опускається для запитів без ресурсів. Записується тільки на рівні Response.
Анотації — це неструктуровані ключові значення, які зберігаються разом з подією аудиту і можуть бути встановлені втулками, викликаними в ланцюжку обслуговування запитів, включаючи втулки автентифікації, авторизації та допуску. Зазначте, що ці анотації призначені для події аудиту і не відповідають метаданим анотацій надісланого обʼєкта. Ключі повинні унікально ідентифікувати інформуючий компонент.
OmitStages — це список етапів, для яких не створюються події. Зверніть увагу, що це також може бути вказано для кожного правила окремо, у такому випадку обʼєднання обох буде пропущено.
omitManagedFields bool
OmitManagedFields вказує, чи слід пропускати керовані поля запитів та відповідей у журналі аудиту API.
Це використовується як глобальний стандарт — значення 'true' призведе до пропуску керованих полів, в іншому випадку керовані поля будуть включені до логу аудиту API.
Зверніть увагу, що це також може бути вказано для кожного правила окремо, у такому випадку значення, зазначене в правилі, переважить глобальний стандарт.
GroupResources представляють типи ресурсів в API групі.
Поле
Опис
group string
Група — це назва API групи, яка містить ресурси. Порожній рядок представляє основну API групу.
resources []string
Ресурси — це список ресурсів, до яких застосовується це правило.
Наприклад:
pods відповідає Podʼам.
pods/log відповідає субресурсу log Podʼів.
* відповідає всім ресурсам та їх субресурсам.
pods/* відповідає всім субресурсам Podʼів.
*/scale відповідає всім субресурсам масштабу.
Якщо присутній підстановочний знак, правило перевірки забезпечить, що ресурси не перекриваються між собою.
Порожній список означає, що застосовуються всі ресурси та субресурси в цій API групі.
resourceNames []string
resourceNames — це список імен екземплярів ресурсів, які відповідають політиці. Використання цього поля вимагає, щоб Ресурси були вказані. Порожній список означає, що кожен екземпляр ресурсу відповідає.
Рівень, на якому записуються запити, що відповідають цьому правилу.
users []string
Користувачі (за автентифікованим імʼям користувача), до яких застосовується це правило. Порожній список означає всіх користувачів.
userGroups []string
Групи користувачів, до яких застосовується це правило. Користувач вважається відповідним, якщо він є членом будь-якої з UserGroups. Порожній список означає всі групи користувачів.
verbs []string
Дії, що відповідають цьому правилу. Порожній список означає всі дії.
OmitStages — це список стадій, для яких не створюються події. Зверніть увагу, що це також може бути зазначено для всієї політики, в такому випадку обʼєднання обох буде виключено. Порожній список означає, що обмеження не застосовуються.
omitManagedFields bool
OmitManagedFields вказує, чи слід виключати керовані поля з тіла запиту та відповіді з логу аудиту API.
значення 'true' виключає керовані поля з логу аудиту API
значення 'false' вказує, що керовані поля повинні бути включені в логу аудиту API. Зверніть увагу, що значення, якщо зазначене, у цьому правилі буде переважати над глобальним стандартним значенням. Якщо значення не зазначено, то діє глобальне стандартне значення, вказане в Policy.OmitManagedFields.
Авторизатори — це впорядкований список авторизаторів для авторизації запитів. Це схоже на прапорець --authorization-modes kube-apiserver Має бути принаймні один.
EncryptionConfiguration
EncryptionConfiguration зберігає повну конфігурацію для провайдерів шифрування. Він також дозволяє використовувати шаблони для вказання ресурсів, які повинні бути зашифровані. Використовуйте '*.<group>' для шифрування всіх ресурсів у групі або '*.*' для шифрування всіх ресурсів. '*.' можна використовувати для шифрування всіх ресурсів у основній групі. '*.*' зашифрує всі ресурси, навіть користувацькі, які додаються після запуску сервера API. Використання шаблонів, що перекриваються в межах одного списку ресурсів або між кількома записами, не дозволяється, оскільки частина конфігурації буде неефективною. Списки ресурсів обробляються в порядку, причому перші списки мають пріоритет.
Приклад:
kind:EncryptionConfigurationapiVersion:apiserver.config.k8s.io/v1resources:- resources:- eventsproviders:- identity:{}# не шифрувати події, навіть якщо *.* зазначено нижче- resources:- secrets- configmaps- pandas.awesome.bears.exampleproviders:- aescbc:keys:- name:key1secret:c2VjcmV0IGlzIHNlY3VyZQ==- resources:- '*.apps'providers:- aescbc:keys:- name:key2secret:c2VjcmV0IGlzIHNlY3VyZSwgb3IgaXMgaXQ/Cg==- resources:- '*.*'providers:- aescbc:keys:- name:key3secret:c2VjcmV0IGlzIHNlY3VyZSwgSSB0aGluaw==
keys — це список ключів, які використовуються для створення AES-трансформера. Кожен ключ повинен бути 32 байти для AES-CBC та 16, 24 або 32 байти для AES-GCM.
Configuration — це вбудований конфігураційний обʼєкт, який використовується як конфігурація втулка. Якщо він присутній, то буде використовуватися замість шляху до конфігураційного файлу.
Тип відноситься до типу авторизатора "Webhook" підтримується в загальному API сервері. Інші API сервери можуть підтримувати додаткові типи авторизаторів, такі як Node, RBAC, ABAC тощо.
name[Обовʼязково] string
Name використовується для опису веб-хука. Це явно використовується в механізмах моніторингу для метрик. Примітка: Імена мають бути у вигляді міток DNS1123, наприклад myauthorizername або піддомени, як myauthorizer.example.domain. Обовʼязкове, без стандартного значення.
KMSConfiguration містить назву, розмір кешу та шлях до конфігураційного файлу для трансформера конвертів на основі KMS.
Поле
Опис
apiVersion string
apiVersion KeyManagementService
name[Обовʼязково] string
name — це назва втулка KMS,який буде використовуватися.
cachesize int32
cachesize — це максимальна кількість секретів, які кешуються в памʼяті. Стандартне значення — 1000. Встановіть негативне значення, щоб вимкнути кешування. Це поле дозволено лише для провайдерів KMS v1.
endpoint[Обовʼязково] string
endpoint — це адреса прослуховувння gRPC сервера, наприклад, "unix:///var/run/kms-provider.sock".
ResourceConfiguration зберігає конфігурацію для кожного ресурсу.
Поле
Опис
resources[Обовʼязково] []string
resources — це список ресурсів Kubernetes, які мають бути зашифровані. Імена ресурсів походять від resource або resource.group з group/version/resource. Наприклад: pandas.awesome.bears.example — це ресурс користувача з 'group': awesome.bears.example, 'resource': pandas. Використовуйте '\*.\*' для шифрування всіх ресурсів і '\*.\' для шифрування всіх ресурсів у певній групі. Наприклад: '\*.awesome.bears.example' зашифрує всі ресурси у групі 'awesome.bears.example'. Наприклад: '\*.' зашифрує всі ресурси в основній групі (такі як pods, configmaps тощо).
Тривалість кешування 'authorized' відповідей від авторизатора вебхуку. Теж, що й встановлення прапорця --authorization-webhook-cache-authorized-ttl. Стандартно: 5m0s
Тривалість кешування 'unauthorized' відповідей від авторизатора вебхуку. Теж, що й встановлення прапорця --authorization-webhook-cache-unauthorized-ttl. Стандартно: 30s
Таймаут для запиту веб-хука. Максимально допустиме значення — 30 секунд. Обовʼязкове, без стандартного значення.
subjectAccessReviewVersion[Обовʼязково] string
Версія API authorization.k8s.io SubjectAccessReview, яку потрібно надсилати до веб-хука та очікувати від нього. Теж, що й встановлення прапорця --authorization-webhook-version. Допустимі значення: v1beta1, v1. Обовʼязкове, без стандартного значення.
MatchConditionSubjectAccessReviewVersion specifies the SubjectAccessReview version the CEL expressions are evaluated against. Допустимі значення: v1. Обовʼязкове, без стандартного значення.
failurePolicy[Обовʼязково] string
Керує рішенням про авторизацію, коли вебхук не може завершити запит або повертає неправильну відповідь чи помилки в оцінці matchConditions. Допустимі значення:
NoOpinion: продовжити до наступних авторизаторів, щоб побачити, чи дозволив хтось із них запит
Deny: відхилити запит без узгодження з наступними авторизаторами. Обовʼязкове, без стандартного значення.
matchConditions — це список умов, яким повинен відповідати запит, щоб бути відправленим на цей вебхук. Порожній список matchConditions відповідає всім запитам. Допускається максимум 64 умови збігу.
Логіка точного збігу така (по порядку):
Якщо хоча б одне значення matchCondition дорівнює FALSE, то вебхук пропускається.
Якщо ALL matchConditions мають значення TRUE, то викликається веб-хук.
Якщо хоча б одне matchCondition повертає помилку (але жодне з них не є FALSE):
If failurePolicy=Deny, тоді веб-хук відхиляє запит
If failurePolicy=NoOpinion, то помилка ігнорується і веб-хук пропускається
Керує тим, як веб-хук повинен взаємодіяти з сервером. Допустимі значення:
KubeConfigFile: використовуйте файл, вказаний у kubeConfigFile, щоб визначити місцезнаходження сервера.
InClusterConfig: використовувати внутрішньокластерну конфігурацію для виклику API SubjectAccessReview, розміщеного на kube-apiserver. Цей режим не дозволено для kube-apiserver.
kubeConfigFile[Обовʼязково] string
Шлях до KubeConfigFile для інформації про зʼєднання. Обов'язковий, якщо connectionInfo. Має тип KubeConfig
expression представляє вираз, який буде обчислено CEL. Повинен мати тип bool. Вирази CEL мають доступ до вмісту SubjectAccessReview у версії v1. Якщо версія, вказана в subjectAccessReviewVersion у змінній запиту, має значення v1beta1, вміст буде перетворено у версію v1 перед обчисленням виразу CEL.
'resourceAttributes' описує інформацію для запиту доступу до ресурсу і не встановлюється для нересурсних запитів, наприклад, has(request.resourceAttributes) && request.resourceAttributes.namespace == 'default'
'nonResourceAttributes' описує інформацію для запиту доступу до нересурсів і не встановлюється для запитів до ресурсів. наприклад, has(request.nonResourceAttributes) && request.nonResourceAttributes.path == '/healthz'.
'user' — користувач, для якого потрібно перевірити, наприклад, request.user == 'alice'
'groups' — це групи, для яких потрібно протестувати, наприклад, ('group1' в request.groups)
'extra' відповідає методу user.Info.GetExtra() з автентифікатора.
'uid' — інформація про користувача, який надіслав запит, наприклад, request.uid == '1'.
TracingConfiguration надає версійну конфігурацію для клієнтів OpenTelemetry tracing.
Поле
Опис
endpoint string
Endpoint колектора, куди цей компонент буде надсилати трасування. Зʼєднання є незахищеним і наразі не підтримує TLS. Рекомендується не вказувати, і використовувати стандартно otlp grpc localhost:4317.
samplingRatePerMillion int32
SamplingRatePerMillion — це кількість зразків, які потрібно збирати на мільйон проміжків. Рекомендується не вказувати. Якщо не вказано, зразок буде відповідати ставці зразка батьківського проміжку, але інакше ніколи не буде зібраний.
AdmissionConfiguration
AdmissionConfiguration надає версійну конфігурацію для контролерів допуску.
jwt — це список автентифікаторів для автентифікації користувачів Kubernetes за допомогою JWT-сумісних токенів. Автентифікатор спробує розпарсити ID токен, перевірити, чи він підписаний налаштованим постачальником. Публічний ключ для перевірки підпису знаходиться на публічній точці доступу постачальника, використовуючи OIDC discovery. Для вхідного токена кожен JWT-автентифікатор буде спробований у порядку, в якому він зазначений у цьому списку. Зверніть увагу, що інші автентифікатори можуть запускатися до або після JWT-автентифікаторів. Специфічне розташування JWT-автентифікаторів відносно інших автентифікаторів не визначено і не є стабільним у різних версіях. Оскільки кожен JWT-автентифікатор повинен мати унікальний URL постачальника, в більшості випадків лише один JWT-автентифікатор спробує криптографічно перевірити токен.
Мінімальне дійсне наповнення JWT повинно містити наступні вимоги:
Authorizers — це впорядкований список авторизаторів для авторизації запитів. Це схоже на прапорец --authorization-modes в kube-apiserver. Повинен бути принаймні один.
EgressSelectorConfiguration
EgressSelectorConfiguration надає версійну конфігурацію для клієнтів вибору виходу
Configuration — це вбудований обʼєкт конфігурації, який буде використовуватися як конфігурація втулка. Якщо він присутній, він буде використовуватися замість шляху до конфігураційного файлу.
Type визначає тип авторизатора. "Webhook" підтримується в загальному API-сервері. Інші API-сервери можуть підтримувати додаткові типи авторизаторів, такі як Node, RBAC, ABAC тощо.
name[Обовʼязково] string
Name використовується для опису вебхука. Це явно використовується в механізмах моніторингу для метрик. Примітка: Імена повинні бути у форматі DNS1123, такі як myauthorizername або піддомени, такі як myauthorizer.example.domain. Обовʼязково, без стандартного значення.
username представляє опцію для атрибута імені користувача. Значення заявки повинно бути єдиним рядком. Також використовується для прапорців --oidc-username-claim і --oidc-username-prefix. Якщо встановлено username.expression, вираз повинен повертати значення рядка. Якщо username.expression використовує 'claims.email', тоді 'claims.email_verified' повинно бути використане в username.expression або extra[].valueExpression or claimValidationRules[].expression. Приклад виразу правил перевірки заявок, який відповідає перевірці, автоматично застосованій, коли username.claim встановлено в 'email', є 'claims.?email_verified.orValue(true)'.
У підході на основі прапорців, --oidc-username-claim і --oidc-username-prefix є необовʼязковими. Якщо --oidc-username-claim не встановлено, стандартне значення — "sub". Для конфігурації автентифікації немає стандартного значення для заявки або префікса. Заявка та префікс повинні бути явно встановлені. Для заявки, якщо --oidc-username-claim не був встановлений з допомогою підходу старого прапорця, налаштуйте username.claim="sub" у конфігурації автентифікації. Для префікса: (1) --oidc-username-prefix="-" не додає префікс до імені користувача. Для такої ж поведінки, використовуючи конфігурацію автентифікації, налаштуйте username.prefix="" (2) --oidc-username-prefix="" і --oidc-username-claim != "email", префікс був ""<value of --oidc-issuer-url>#". Для такої ж поведінки, використовуючи конфігурацію автентифікації, налаштуйте username.prefix="#" (3) --oidc-username-prefix="". Для такої ж поведінки, використовуючи конфігурацію автентифікації, налаштуйте username.prefix=""
groups представляє опцію для атрибута груп. Значення заявки повинно бути рядком або масивом рядків. Якщо встановлено groups.claim, префікс повинен бути зазначений (і може бути пустим рядком). Якщо встановлено groups.expression, вираз повинен повертати рядок або масив рядків. "" (пустий рядок), [] (пустий масив) і null значення трактуються як відсутність зіставлення груп.
extra представляє опцію для атрибута extra. вираз повинен повертати рядок або масив рядків. Якщо значення порожнє, відображення extra не буде присутнім.
жорстко закодоване додаткові ключ/значення
key: "foo"
valueExpression: "'bar'"
Це призведе до додаткового атрибута — foo: ["bar"]
жорстко закодований ключ копіює значення заявки
key: "foo"
valueExpression: "claims.some_claim"
Це призведе до додаткового атрибута — foo: [value of some_claim]
жорстко закодований ключ, значення, що походить від значення заявки
ClaimOrExpression надає конфігурацію для однієї заявки або виразу.
Поле
Опис
claim string
claim — це заявка JWT, яку потрібно використовувати. Або claim, або expression повинно бути встановлено. Взаємно виключаються в expression.
expression string
expression представляє вираз, який буде оцінений CEL.
Вирази CEL мають доступ до вмісту заявок токена, організованих у змінні CEL:
'claims' це map назв заявок до значень заявок.
Наприклад, змінну з іменем 'sub' можна отримати як 'claims.sub'.
Вкладені заявки можна отримати за допомогою позначки крапки, наприклад, 'claims.foo.bar'.
ClaimValidationRule надає конфігурацію для однієї правила перевірки заявки.
Поле
Опис
claim string
claim — це імʼя обовʼязкової заявки. Також використовується для прапорця --oidc-required-claim. Підтримуються тільки рядкові ключі заявок. Взаємно виключається в expression і message.
requiredValue string
requiredValue — це значення обовʼязкової заявки. Також використовується для прапорця --oidc-required-claim. Підтримуються тільки рядкові значення заявок. Якщо claim встановлено, а requiredValue не встановлено, заявка повинна бути присутньою зі значенням, встановленим у порожній рядок. Взаємно виключається з expression і message.
expression string
expression представляє вираз, який буде оцінений CEL. Повинно повернути boolean.
Вирази CEL мають доступ до вмісту заявок токена, організованих у змінні CEL:
'claims' це map назв заявок до значень заявок. Наприклад, змінну з іменем 'sub' можна отримати як 'claims.sub'. Вкладені заявки можна отримати за допомогою позначки крапки, наприклад, 'claims.foo.bar'. Повинно повернути true для проходження перевірки.
message налаштовує повернуте повідомлення про помилку, коли вираз повертає false. message є літеральним рядком. Взаємно виключається з claim і requiredValue.
transport визначає конфігурації транспорту, які ми використовуємо для зʼєднання з сервером konnectivity. Це потрібно, якщо ProxyProtocol — HTTPConnect або GRPC.
EgressSelection надає конфігурацію для одного клієнта egress selection.
Поле
Опис
name[Обовʼязково] string
name — це назва egress selection. Підтримувані значення: "controlplane", "master", "etcd" та "cluster". "master" egress selector застарілий і замінений на "controlplane".
ExtraMapping надає конфігурацію для одного додаткового зіставлення.
Поле
Опис
key[Обовʼязково] string
key — це рядок, що використовується як ключ додаткового атрибуту. key повинен бути шляхом з префіксом домену (наприклад, example.org/foo). Усі символи перед першим "/" повинні бути дійсним піддоменом, як визначено у RFC 1123. Усі символи після першого "/" повинні бути дійсними символами шляху HTTP, як визначено у RFC 3986. key повинен бути у нижньому регістрі. Має бути унікальним.
valueExpression[Обовʼязково] string
valueExpression — це вираз CEL для вилучення значення додаткового атрибуту. valueExpression повинен виробляти рядкове або масив рядкових значень. "", [], і null значення трактуються як відсутність додаткового зіставлення. Порожні рядкові значення, що містяться в масиві рядків, відфільтровуються.
Вирази CEL мають доступ до вмісту заявок токена, організованих у змінній CEL:
'claims' це map назв заявок до значень заявок. Наприклад, змінну з іменем 'sub' можна отримати як 'claims.sub'. Вкладені заявки можна отримати за допомогою позначки крапки, наприклад, 'claims.foo.bar'.
Issuer надає конфігурацію для конкретних налаштувань зовнішнього постачальника.
Поле
Опис
url[Обовʼязково] string
url вказує на URL-адресу видавця у форматі https://url або https://url/path. Це повинно відповідати заявці "iss" у поданому JWT і видавцю, повернутому з виявлення. Те ж саме значення, що і прапорець --oidc-issuer-url. Інформація про виявлення отримується з "{url}/.well-known/openid-configuration", якщо не перевизначено за допомогою discoveryURL. Має бути унікальним для всіх JWT автентифікаторів. Зверніть увагу, що конфігурація вибору egress не використовується для цього мережевого зʼєднання.
discoveryURL string
discoveryURL, якщо вказано, перевизначає URL, який використовується для отримання інформації про виявлення, замість використання "{url}/.well-known/openid-configuration". Використовується точне вказане значення, тому "/.well-known/openid-configuration" повинно бути включено в discoveryURL, якщо це потрібно.
Поле "issuer" у отриманій інформації про виявлення повинно відповідати полю "issuer.url" у AuthenticationConfiguration і буде використовуватися для перевірки заявки "iss" у поданому JWT. Це для сценаріїв, коли точки доступу well-known і jwks розміщені в іншому місці, ніж видавець (наприклад, локально в кластері).
Приклад: URL виявлення, який опублікований за допомогою сервіса kubernetes 'oidc' у просторі імен 'oidc-namespace', а інформація про виявлення доступна за адресою '/.well-known/openid-configuration'. discoveryURL: "https://oidc.oidc-namespace/.well-known/openid-configuration" certificateAuthority використовується для перевірки зʼєднання TLS, а імʼя хоста на сертифікаті повинно бути встановлено як 'oidc.oidc-namespace'.
discoveryURL повинен відрізнятися від url. Має бути унікальним для всіх JWT автентифікаторів. Зверніть увагу, що конфігурація вибору egress не використовується для цього мережевого зʼєднання.
certificateAuthority string
certificateAuthority містить PEM-кодовані сертифікати органу сертифікації, які використовуються для перевірки зʼєднання під час отримання інформації про виявлення. Якщо не встановлено, використовується системний перевіряючий. Те ж саме значення, що і вміст файлу, на який посилається прапорець --oidc-ca-file.
audiences[Обовʼязково] []string
audiences — це набір прийнятних аудиторій, до яких повинен бути виданий JWT. Принаймні один з записів повинен відповідати заявці "aud" у поданих JWT. Те ж саме значення, що і прапорець --oidc-client-id (хоча це поле підтримує масив). Має бути непорожнім.
audienceMatchPolicy визначає, як поле "audiences" використовується для відповідності заявці "aud" у поданому JWT. Допустимі значення:
"MatchAny" при вказанні кількох аудиторій та
порожній (або не встановлений) або "MatchAny" при вказанні однієї аудиторії.
MatchAny: заявка "aud" у поданому JWT повинна відповідати принаймні одному з записів у полі "audiences". Наприклад, якщо "audiences" — ["foo", "bar"], заявка "aud" у поданому JWT повинна містити або "foo", або "bar" (і може містити обидва).
"": Політика відповідності може бути порожньою (або не встановленою) при вказанні однієї аудиторії у полі "audiences". Заявка "aud" у поданому JWT повинна містити одну аудиторію (і може містити інші).
Для більш детальної перевірки аудиторій використовуйте claimValidationRules. приклад: claimValidationRule[].expression: 'sets.equivalent(claims.aud, ["bar", "foo", "baz"])' для вимоги точної відповідності.
userValidationRules - це правила, які застосовуються до кінцевого користувача перед завершенням автентифікації. Ці правила дозволяють застосовувати інваріанти до вхідних ідентичностей, такі як запобігання використанню префіксу system:, який зазвичай використовується компонентами Kubernetes. Правила перевірки поєднуються логічним AND і повинні всі повертати true для успішної перевірки.
PrefixedClaimOrExpression надає конфігурацію для однієї префіксованої заявки або виразу.
Поле
Опис
claim string
claim — це заявка JWT для використання. Є взаємовиключою з expression.
prefix string
prefix додається до значення заявки, щоб уникнути конфліктів з існуючими іменами. prefix повинен бути встановлений, якщо встановлена заявка, і може бути порожнім рядком. Взаємовиключається з expression.
expression string
expression представляє вираз, який буде оцінюватися CEL.
CEL вирази мають доступ до вмісту заявок токена, організованого в CEL змінну:
'claims' — це мапа імен заявок до їх значень. Наприклад, змінну з іменем 'sub' можна отримати як 'claims.sub'. Вкладені заявки можна отримати за допомогою нотації крапок, наприклад, 'claims.foo.bar'.
TLSConfig надає інформацію для автентифікації для підключення до konnectivity server. Використовується тільки з TCPTransport.
Поле
Опис
caBundle string
caBundle — це розташування файлу з CA, який буде використовуватися для встановлення довіри з konnectivity server. Повинно бути відсутнім/порожнім, якщо URL TCPTransport має префікс http://. Якщо відсутній, коли URL TCPTransport має префікс https://, стандартно використовуються системні корені довіри.
clientKey string
clientKey — це розташування файлу з ключем клієнта, який буде використовуватися в mtls-рукостисканнях з konnectivity server. Повинно бути відсутнім/порожнім, якщо URL TCPTransport має префікс http://. Повинно бути налаштованим, якщо URL TCPTransport має префікс https://
clientCert string
clientCert — це розташування файлу з сертифікатом клієнта, який буде використовуватися в mtls-рукостисканнях з konnectivity server. Повинно бути відсутнім/порожнім, якщо URL TCPTransport має префікс http://. Повинно бути налаштованим, якщо URL TCPTransport має префікс https://
TCP — це конфігурація TCP для звʼязку з konnectivity server через TCP. ProxyProtocol з GRPC наразі не підтримується з TCP транспортом. Потрібно налаштувати принаймні один з TCP або UDS.
UDSTransport надає інформацію для підключення до konnectivity server через UDS.
Поле
Опис
udsName[Обовʼязкове] string
UDSName — це назва unix domain socket для підключення до konnectivity server. Це не використовує префікс unix://. (Наприклад: /etc/srv/kubernetes/konnectivity-server/konnectivity-server.socket)
Тривалість кешування відповідей "authorized" від вебхука авторизатора. Те ж саме, що й встановлення прапорця --authorization-webhook-cache-authorized-ttl Стандартно: 5m0s
Тривалість кешування відповідей "unauthorized" від вебхука авторизатора. Те ж саме, що й встановлення прапорця --authorization-webhook-cache-unauthorized-ttl Стандартно: 30s
Час очікування відповіді від вебхука Максимально дозволене значення — 30s. Обовʼязкове, стандартне значення відсутнє.
subjectAccessReviewVersion[Обовʼязкове] string
Версія API authorization.k8s.io SubjectAccessReview, яку потрібно відправити та очікувати від вебхука. Те ж саме, що й встановлення прапорця --authorization-webhook-version Дійсні значення: v1beta1, v1. Обовʼязкове, стандартне значення відсутнє
MatchConditionSubjectAccessReviewVersion визначає версію SubjectAccessReview, яку використовують для оцінки виразів CEL. Дійсні значення: v1. Обовʼязкове, стандартне значення відсутнє
failurePolicy[Обовʼязкове] string
Контролює рішення про авторизацію, коли запит вебхука не вдається завершити або повертає некоректну відповідь або помилки при оцінці matchConditions. Дійсні значення:
NoOpinion: продовжити до наступних авторизаторів, щоб побачити, чи один з них дозволить запит
Deny: відхилити запит без консультації з наступними авторизаторами. Обовʼязкове, стандартне значення відсутнє.
matchConditions — це список умов, які мають бути виконані, щоб запит було надіслано на цей вебхук. Порожній список matchConditions відповідає всім запитам. Максимально допустимо 64 умови відповідності.
Точна логіка відповідності (в порядку):
Якщо принаймні одна умова відповідності оцінюється як FALSE, то вебхук пропускається.
Якщо ВСІ умови відповідності оцінюються як TRUE, то вебхук викликається.
Якщо принаймні одна умова відповідності оцінюється як помилка (але жодна з них не є FALSE):
Якщо failurePolicy=Deny, то вебхук відхиляє запит
Якщо failurePolicy=NoOpinion, то помилка ігнорується, і вебхук пропускається
Контролює, як вебхук повинен спілкуватися з сервером. Дійсні значення:
KubeConfigFile: використовувати файл, зазначений у kubeConfigFile, щоб знайти сервер.
InClusterConfig: використовувати внутрішньокластерну конфігурацію для виклику SubjectAccessReview API, який розміщений kube-apiserver. Цей режим не дозволено для kube-apiserver.
kubeConfigFile[Обовʼязкове] string
Шлях до KubeConfigFile для інформації про підключення. Обовʼязково, якщо connectionInfo.Type є KubeConfig
expression представляє вираз, який буде оцінюватися за допомогою CEL. Повинен оцінюватися як bool. CEL вирази мають доступ до вмісту SubjectAccessReview у версії v1. Якщо версія, вказана в subjectAccessReviewVersion у змінній запиту, є v1beta1, вміст буде перетворено на версію v1 перед оцінкою виразу CEL.
'resourceAttributes' описує інформацію для запиту доступу до ресурсу і не встановлюється для нересурсних запитів, наприклад, has(request.resourceAttributes) && request.resourceAttributes.namespace == 'default'
'nonResourceAttributes' описує інформацію для запиту доступу до нересурсів і не встановлюється для запитів до ресурсів. наприклад, has(request.nonResourceAttributes) && request.nonResourceAttributes.path == '/healthz'.
'user' — користувач, для якого потрібно перевірити, наприклад, request.user == 'alice'
'groups' — це групи, для яких потрібно протестувати, наприклад, ('group1' in request.groups)
'extra' відповідає методу user.Info.GetExtra() з автентифікатора.
'uid' — інформація про користувача, який надіслав запит, наприклад, request.uid == '1'.
TracingConfiguration надає версійні налаштування для клієнтів трасування OpenTelemetry.
Поле
Опис
endpoint string
Точка доступу колектора, до якого цей компонент буде надсилати трасування. Зʼєднання є незахищеним і наразі не підтримує TLS. Рекомендовано не встановлювати, стандартна точка доступу для otlp grpc — localhost:4317.
samplingRatePerMillion int32
SamplingRatePerMillion — це кількість зразків для збору на мільйон відрізків. Рекомендовано не встановлювати. Якщо не задано, семплер дотримується частоти дискретизації батьківського діапазону а якщо ні, то ніколи не робить вибірки.
AuthenticationConfiguration
AuthenticationConfiguration надає версійні налаштування для автентифікації.
jwt — це список автентифікаторів для автентифікації користувачів Kubernetes за допомогою токенів, що відповідають стандартам JWT. Автентифікатор спробує розібрати необроблений ID токен, перевірити, чи підписаний він налаштованим видавцем. Публічний ключ для перевірки підпису виявляється з публічної кінцевої точки видавця за допомогою OIDC discovery. Для вхідного токена кожен JWT автентифікатор буде спробуваний у порядку, в якому він зазначений у цьому списку. Однак зверніть увагу, що інші автентифікатори можуть працювати до або після JWT автентифікаторів. Конкретне положення JWT автентифікаторів щодо інших автентифікаторів не визначено і не стабільне між випусками. Оскільки кожен JWT автентифікатор повинен мати унікальний URL видавця, максимум один JWT автентифікатор спробує криптографічно перевірити токен.
Мінімально допустимий JWT payload повинен містити наступні заявки:
Authorizers — це впорядкований список авторизаторів для авторизації запитів. Це схоже на прапорець — --authorization-modes kube-apiserver. Має бути принаймні один.
EgressSelectorConfiguration
EgressSelectorConfiguration надає версійні налаштування для клієнтів вибору egress.
Тип відноситься до типу авторизатора "Webhook" підтримується у загальному API сервері Інші API сервери можуть підтримувати додаткові типи авторизаторів такі як Node, RBAC, ABAC і т.д.
name[Обовʼязково] string
Імʼя, яке використовується для опису webhook Це явно використовується в моніторинговій машинерії для метрик Примітка: Імена повинні бути мітками DNS1123, такими як myauthorizername або піддоменами, такими як myauthorizer.example.domain Обовʼязково, стандартного значення немає
username представляє опцію для атрибуту username. Значення claim має бути одним рядком. Те ж саме, що й прапори --oidc-username-claim та --oidc-username-prefix. Якщо встановлено username.expression, вираз повинен видавати значення рядка. Якщо username.expression використовує 'claims.email', тоді 'claims.email_verified' повинен використовуватися в username.expression або extra[].valueExpression or claimValidationRules[].expression. Приклад виразу правила валідації claims, який відповідає валідації, що автоматично застосовується, коли username.claim встановлено на 'email', — це 'claims.?email_verified.orValue(true)'.
У підході на основі прапорів, прапорці --oidc-username-claim та --oidc-username-prefix є необовʼязковими. Якщо --oidc-username-claim не встановлено, стандартне значення — "sub". Для конфігурації автентифікації стандартне значення для claim або prefix відсутні. Claim та prefix повинні бути встановлені явно. Для claim, якщо прапорець --oidc-username-claim не було встановлено за допомогою старого підходу, налаштуйте username.claim="sub" у конфігурації автентифікації. Для prefix: (1) --oidc-username-prefix="-", префікс не додавався до імені користувача. Для такої ж поведінки за допомогою конфігурації автентифікації, встановіть username.prefix="" (2) --oidc-username-prefix="" та --oidc-username-claim != "email", префікс був "<значення --oidc-issuer-url>#". Для такої ж поведінки за допомогою конфігурації автентифікації, встановіть username.prefix="#" (3) --oidc-username-prefix="". Для такої ж поведінки за допомогою конфігурації автентифікації, встановіть username.prefix=""
groups представляє опцію для атрибуту groups. Значення claim має бути рядком або масивом рядків. Якщо groups.claim встановлено, префікс повинен бути вказаний (і може бути порожнім рядком). Якщо groups.expression встановлено, вираз повинен видавати значення рядка або масиву рядків. "", [], і null значення розглядаються як відсутність мапінгу групи.
uid представляє опцію для атрибуту uid. Claim повинен бути одним рядковим claim. Якщо uid.expression встановлено, вираз повинен видавати значення рядка.
extra представляє опцію для атрибуту extra. вираз повинен видавати значення рядка або масиву рядків. Якщо значення порожнє, мапінг extra не буде присутнім.
жорстко закодований extra ключ/значення
key: "foo"
valueExpression: "'bar'"
Це призведе до появи extra атрибуту — foo: ["bar"]
жорстко закодований ключ, значення копіюється з значення claim
key: "foo"
valueExpression: "claims.some_claim"
Це призведе до появи extra атрибуту - foo: [значення some_claim]
жорстко закодований ключ, значення виводиться з значення claim
ClaimOrExpression надає налаштування для одного claim або виразу.
Поле
Опис
claim string
claim — це JWT claim для використання. Має бути встановлено або claim, або expression. Взаємовиключне з expression.
expression string
expression представляє вираз, який буде оцінюватися за допомогою CEL.
CEL вирази мають доступ до вмісту claims токену, організованих у CEL змінну:
'claims' — це map з назвами claims до значень claims. Наприклад, змінну з назвою 'sub' можна отримати доступом як 'claims.sub'. Вкладені claims можна отримати доступом за допомогою нотації через крапку, наприклад 'claims.foo.bar'.
ClaimValidationRule забезпечує конфігурацію для одного правила валідації заяви.
Поле
Опис
claim string
claim — це імʼя необхідної заяви. Такий же, як прапорець --oidc-required-claim. Підтримуються тільки ключі заяв у форматі рядка. Взаємно виключає з expression та message.
requiredValue string
requiredValue — це значення необхідної заяви. Такий же, як прапорець --oidc-required-claim. Підтримуються тільки значення заяв у форматі рядка. Якщо claim встановлено, а requiredValue не встановлено, заява повинна бути присутня з значенням, яке дорівнює порожньому рядку. Взаємновиключнє з expression та message.
expression string
expression представляє вираз, який буде оцінений CEL. Повинен повернути булеве значення.
Вирази CEL мають доступ до вмісту заявок токена, організованого у змінну CEL:
'claims' — це відображення імен заявок на значення заявок. Наприклад, змінна з імʼям 'sub' може бути доступна як 'claims.sub'. Вкладені заяви можна отримати, використовуючи крапкову нотацію, наприклад 'cl ims.foo.bar'. Повинен повернути true для успішної валідації.
message налаштовує повідомлення про помилку, яке повертається, коли expression повертає false. message є літералним рядком. Взаємовиключне з claim та requiredValue.
Transport визначає транспортні конфігурації, які ми використовуємо для зʼєднання з konnectivity сервером. Це обовʼязково, якщо ProxyProtocol — це HTTPConnect або GRPC.
EgressSelection надає конфігурацію для одного клієнта вибору egress зʼєднання.
Поле
Опис
name[Обовʼязково] string
name — це назва вибору egress зʼєднання. На даний момент підтримуються значення "controlplane", "master", "etcd" та "cluster". Селекторо egress зʼєднання "master" застарілий і його рекомендується замінити на "controlplane".
ExtraMapping надає конфігурацію для одного додаткового зіставлення.
Поле
Опис
key[Обовʼязково] string
key — це рядок, який використовується як ключ додаткового атрибуту. key повинен бути шляхом з префіксом домену (наприклад, example.org/foo). Усі символи перед першим "/" повинні бути дійсним субдоменом, як це визначено RFC 1123. Усі символи, що йдуть після першого "/", повинні бути дійсними символами шляху HTTP, як це визначено RFC 3986. key повинен бути написаний малими літерами. Має бути унікальним.
valueExpression[Обовʼязково] string
valueExpression — це вираз CEL для отримання значення додаткового атрибуту. valueExpression повинен повертати значення рядка або масиву рядків. "", [], та null значення розглядаються як відсутність додаткового зіставлення. Порожні рядкові значення, що містяться у масиві рядків, відфільтровуються.
Вирази CEL мають доступ до вмісту токенів, організованих у змінну CEL:
'claims' — це зіставлення імен вимог до значень вимог. Наприклад, змінна з імʼям 'sub' може бути доступна як 'claims.sub'. Вкладені вимоги можуть бути доступні за допомогою крапкової нотації, наприклад, 'claims.foo.bar'.
Issuer надає конфігурацію для специфічних налаштувань зовнішнього постачальника.
Поле
Опис
url[Обовʼязково] string
url вказує на URL видавця у форматі https://url або https://url/path. Це повинно відповідати вимозі "iss" у наданому JWT і видавцю, який повертається discovery. Таке саме значення, як і прапорець --oidc-issuer-url. Інформація про discovery отримується з "{url}/.well-known/openid-configuration", якщо discoveryURL не перевизначений. Вимагається бути унікальним серед усіх JWT автентифікаторів. Зверніть увагу, що конфігурація вибору вихідного зʼєднання не використовується для цього мережевого зʼєднання.
discoveryURL string
discoveryURL, якщо вказано, перевизначає URL, використовуваний для отримання інформації про discovery, замість використання "{url}/.well-known/openid-configuration". Використовується точне вказане значення, тому "/.well-known/openid-configuration" повинен бути включений у discoveryURL, якщо це необхідно.
Поле "issuer" у отриманій інформації про discovery повинно відповідати полю "issuer.url" в AuthenticationConfiguration і буде використовуватися для перевірки вимоги "iss" у наданому JWT. Це призначено для сценаріїв, коли загальновідомі та точки доступу jwks розміщуються в іншому місці, ніж видавець (наприклад, локально у кластері).
Приклад: URL discovery, який експонується за допомогою сервіса kubernetes 'oidc' у просторі імен 'oidc-namespace' і інформація про discovery доступна за адресою '/.well-known/openid-configuration'. discoveryURL: "https://oidc.oidc-namespace/.well-known/openid-configuration" certificateAuthority використовується для перевірки TLS-зʼєднання, і імʼя хоста на сертифікаті повинно бути налаштовано на 'oidc.oidc-namespace'.
discoveryURL повинен відрізнятися від url. Має бути унікальним серед усіх JWT автентифікаторів. Зверніть увагу, що конфігурація вибору вихідного зʼєднання не використовується для цього мережевого зʼєднання.
certificateAuthority string
certificateAuthority містить сертифікати уповноважених органів, закодовані в PEM, які використовуються для перевірки зʼєднання під час отримання інформації про discovery. Якщо не встановлено, використовується системний перевіряльник. Таке саме значення, як і вміст файлу, на який посилається прапорець --oidc-ca-file.
audiences[Обовʼязково] []string
audiences — це набір прийнятних аудиторій, для яких повинен бути виданий JWT. Щонайменше один з записів повинен відповідати вимозі "aud" у наданих JWT. Таке саме значення, як і прапорець --oidc-client-id (хоча це поле підтримує масив). Має бути непорожнім.
audienceMatchPolicy визначає, як поле "audiences" використовується для співставлення з вимогою "aud" у наданому JWT. Допустимі значення:
"MatchAny", коли вказано кілька аудиторій
порожнє (або не встановлене) або "MatchAny", коли вказано одну аудиторію.
MatchAny: вимога "aud" у наданому JWT повинна відповідати щонайменше одному з записів у полі "audiences". Наприклад, якщо "audiences" містить ["foo", "bar"], вимога "aud" у наданому JWT повинна містити або "foo", або "bar" (і може містити обидва).
"": Політика співставлення може бути порожньою (або не встановленою), коли у полі "audiences" вказано одну аудиторію. Вимога "aud" у наданому JWT повинна містити одну аудиторію (і може містити інші).
Для більш точного перевірки аудиторій використовуйте claimValidationRules. Приклад: claimValidationRule[].expression: 'sets.equivalent(claims.aud, ["bar", "foo", "baz"])', щоб вимагати точного співпадіння.
userValidationRules — це правила, які застосовуються до кінцевого користувача перед завершенням автентифікації. Ці правила дозволяють застосовувати інваріанти до вхідних ідентичностей, наприклад, забороняти використання префіксу system:, який зазвичай використовується компонентами Kubernetes. Правила перевірки логічно повʼязані оператором AND і всі повинні повернути true, щоб перевірка пройшла.
PrefixedClaimOrExpression надає конфігурацію для одного префіксованого вимоги або виразу.
Поле
Опис
claim string
claim — це JWT вимога для використання. Взаємовиключне з expression.
prefix string
prefix додається до значення вимоги, щоб уникнути конфліктів з існуючими іменами. prefix необхідно встановити, якщо встановлено claim, і він може бути порожнім рядком. Взаємовиключне з expression.
expression string
expression представляє вираз, який буде оцінюватися за допомогою CEL.
CEL вирази мають доступ до вмісту вимог токену, організованого у змінну CEL:
'claims' є зіставленням імен вимог до значень вимог. Наприклад, змінну з іменем 'sub' можна отримати як 'claims.sub'. Вкладені вимоги можна отримати за допомогою нотації з крапкою, наприклад 'claims.foo.bar'.
TLSConfig надає інформацію для автентифікації для підключення до konnectivity серверу. Використовується тільки з TCPTransport
Поле
Опис
caBundle string
caBundle — це місцезнаходження файлу CA, який буде використовуватися для визначення довіри до konnectivity серверу. Має бути відсутнім/порожнім, якщо TCPTransport.URL починається з http:// Якщо відсутній, а TCPTransport.URL починається з https://, стандартно використовуються системні корені довіри.
clientKey string
clientKey — це місцезнаходження файлу клієнтського ключа, який буде використовуватися в mtls рукостисканнях з konnectivity сервером. Має бути відсутнім/порожнім, якщо TCPTransport.URL починається з http:// Має бути налаштований, якщо TCPTransport.URL починається з https://
clientCert string
clientCert — це місцезнаходження файлу клієнтського сертифіката, який буде використовуватися в mtls рукостисканнях з konnectivity сервером. Має бути відсутнім/порожнім, якщо TCPTransport.URL починається з http:// Має бути налаштований, якщо TCPTransport.URL починається з https://
TCP — це конфігурація TCP для звʼязку з konnectivity сервером через TCP. ProxyProtocol GRPC наразі не підтримується з TCP транспортом. Вимагає налаштування хоча б одного з TCP або UDS
UDSTransport надає інформацію для підключення до konnectivity серверу через UDS
Поле
Опис
udsName[Обовʼязкове] string
UDSName — це назва unix domain socket для підключення до konnectivity серверу. Не використовує префікс unix://. (Наприклад: /etc/srv/kubernetes/konnectivity-server/konnectivity-server.socket)
Тривалість кешування відповідей 'authorized' від webhook авторизатора. Те ж саме, що і встановлення --authorization-webhook-cache-authorized-ttl прапорця. Стандартно: 5m0s
Тривалість кешування відповідей 'unauthorized' від webhook авторизатора. Те ж саме, що і встановлення --authorization-webhook-cache-unauthorized-ttl прапорця. Стандартно: 30s
Тайм-аут для запиту webhook. Максимальне допустиме значення - 30s. Обовʼязкове, стандартного значення немає.
subjectAccessReviewVersion[Обовʼязкове] string
Версія API authorization.k8s.io SubjectAccessReview, яка буде відправлена та очікувана від webhook. Те ж саме, що і встановлення --authorization-webhook-version прапорця. Допустимі значення: v1beta1, v1. Обовʼязкове, стандартного значення немає
MatchConditionSubjectAccessReviewVersion визначає версію SubjectAccessReview, для якої оцінюються CEL вирази. Допустимі значення: v1. Обовʼязкове, стандартного значення немає
failurePolicy[Обовʼязкове] string
Контролює рішення про авторизацію, коли запит webhook не вдається завершити або повертає некоректну відповідь або помилки при оцінці matchConditions. Допустимі значення:
NoOpinion: продовжувати до наступних авторизаторів, щоб перевірити, чи дозволяє запит хоча б один з них
Deny: відхилити запит без консультацій з наступними авторизаторами. Обовʼязкове, стандартного значення немає.
matchConditions — це список умов, які повинні бути виконані, щоб запит був відправлений на цей webhook. Порожній список matchConditions відповідає всім запитам. Максимум 64 умови відповідності дозволені.
Точна логіка відповідності (у порядку):
Якщо хоча б одна matchCondition оцінюється як FALSE, то webhook пропускається.
Якщо ВСІ matchConditions оцінюються як TRUE, то викликається webhook.
Якщо хоча б одна matchCondition оцінюється як помилка (але жодна не є FALSE):
Якщо failurePolicy=Deny, то webhook відхиляє запит
Якщо failurePolicy=NoOpinion, то помилка ігнорується, і webhook пропускається
Контролює, як webhook має спілкуватися з сервером. Допустимі значення:
KubeConfigFile: використовувати файл, вказаний у kubeConfigFile, для знаходження сервера.
InClusterConfig: використовувати конфігурацію у кластері для виклику SubjectAccessReview API, розміщеного kube-apiserver. Цей режим не дозволений для kube-apiserver.
kubeConfigFile[Обовʼязкове] string
Шлях до KubeConfigFile для інформації про зʼєднання. Обовʼязкове, якщо connectionInfo.Type — KubeConfig
expression представляє вираз, який буде оцінюватися CEL. Повинен оцінюватися як bool. CEL вирази мають доступ до вмісту SubjectAccessReview у версії v1. Якщо версія, вказана у змінній запиту subjectAccessReviewVersion, є v1beta1, вміст буде конвертовано у версію v1 перед оцінкою виразу CEL.
'resourceAttributes' описує інформацію для запиту доступу до ресурсу і не встановлюється для нересурсних запитів, наприклад, has(request.resourceAttributes) && request.resourceAttributes.namespace == 'default'
'nonResourceAttributes' описує інформацію для запиту доступу до нересурсів і не встановлюється для запитів до ресурсів. наприклад, has(request.nonResourceAttributes) && request.nonResourceAttributes.path == '/healthz'.
'user' — користувач, для якого потрібно перевірити, наприклад, request.user == 'alice'
'groups' — це групи, для яких потрібно протестувати, наприклад, ('group1' in request.groups)
'extra' відповідає методу user.Info.GetExtra() з автентифікатора.
'uid' — інформація про користувача, який надіслав запит, наприклад, request.uid == '1'.
ClientConnectionConfiguration містить деталі для конструювання клієнта.
Поле
Опис
kubeconfig[Обовʼязково] string
kubeconfig — шлях до файлу KubeConfig.
acceptContentTypes[Обовʼязково] string
acceptContentTypes визначає заголовок Accept, що надсилається клієнтами при підключенні до сервера, замінюючи стандартне значення 'application/json'. Це поле буде контролювати всі зʼєднання з сервером, що використовуються конкретним клієнтом.
contentType[Обовʼязково] string
contentType — тип контенту, який використовується при надсиланні даних на сервер з цього клієнта.
qps[Обовʼязково] float32
qps контролює кількість запитів на секунду, дозволених для цього зʼєднання.
burst[Обовʼязково] int32
burst дозволяє накопичувати додаткові запити, коли клієнт перевищує свій ліміт.
LeaderElectionConfiguration визначає конфігурацію клієнтів виборів лідера для компонентів, які можуть працювати з увімкненими виборами лідера.
Поле
Опис
leaderElect[Обовʼязково] bool
leaderElect дозволяє клієнту, який обирає лідера, отримати лідерство перед виконанням основного циклу. Увімкніть цей параметр під час запуску реплікованих компонентів для забезпечення високої доступності.
leaseDuration — це тривалість, протягом якої кандидати, що не є лідерами, чекатимуть після поновлення лідерства, перш ніж спробувати зайняти лідерство в лідируючому, але не поновленому лідерському слоті. Це фактично максимальна тривалість, на яку лідер може бути зупинений, перш ніж його замінить інший кандидат. Це застосовується лише у тому випадку, якщо вибори лідера увімкнені.
renewDeadline — інтервал між спробами виконуючого обов'язки майстра поновити слот лідерства до того, як він перестане бути лідером. Він має бути меншим або рівним тривалості оренди. Це застосовується лише у тому випадку, якщо вибори лідера увімкнені.
retryPeriod — це час, протягом якого клієнти повинні чекати між спробою отримання та поновленням лідерства. Це застосовується лише у тому випадку, якщо вибори лідера увімкнені.
resourceLock[Обовʼязково] string
resourceLock вказує тип обʼєкта ресурсу, який буде використовуватися для блокування під час циклів обрання лідера.
resourceName[Обовʼязково] string
resourceName вказує імʼя обʼєкта ресурсу, який буде використовуватися для блокування під час циклів обрання лідера.
resourceNamespace[Обовʼязково] string
resourceName вказує на простір імен обʼєкта ресурсу, який буде використовуватися для блокування під час циклів обрання лідера.
ServiceControllerConfiguration містить елементи, що описують ServiceController.
Поле
Опис
ConcurrentServiceSyncs[Обовʼязкове] int32
concurrentServiceSyncs — це кількість служб, які можуть синхронізуватися одночасно. Більше число = більш чутливе управління службами, але більше навантаження на процесор (і мережу).
CloudControllerManagerConfiguration
CloudControllerManagerConfiguration містить елементи, що описують cloud-controller manager.
CloudProviderConfiguration містить конфігурацію для функцій, повʼязаних з CloudProvider.
ExternalCloudVolumePlugin[Обовʼязкове] string
externalCloudVolumePlugin вказує втулок, який використовувати, коли cloudProvider є "external". Наразі він використовується хмарними провайдерами з репо для керування вузлами та томами в KCM.
UseServiceAccountCredentials[Обовʼязкове] bool
useServiceAccountCredentials вказує, чи повинні контролери працювати з окремими службовими обліковими даними.
AllowUntaggedCloud[Обовʼязкове] bool
дозволяє запуск з непозначеними теґами хмарними екземплярами
nodeSyncPeriod — це період для синхронізації вузлів з постачальником хмар. Довші періоди зменшать кількість викликів до постачальника хмар, але можуть затримати додавання нових вузлів в кластер.
WebhookConfiguration містить конфігурацію, повʼязану з вебхуками, розгорнутими в cloud-controller-manager.
Поле
Опис
Webhooks[Обовʼязкове] []string
Webhooks — це список вебхуків для активації або деактивації:
'*' означає "всі стандартно активовані вебхуки"
'foo' означає "активувати 'foo'"
'-foo' означає "деактивувати 'foo'"
перший елемент для конкретного імені виграє
ControllerLeaderConfiguration надає конфігурацію для блокування мігруючого лідера.
Поле
Опис
name[Обовʼязкове] string
Name — це назва контролера, що мігрує, наприклад, service-controller, route-controller, cloud-node-controller тощо
component[Обовʼязкове] string
Component — це назва компонента, в якому контролер має працювати, наприклад, kube-controller-manager, cloud-controller-manager тощо. Або '*' означає, що контролер може працювати під будь-яким компонентом, який бере участь у міграції.
leaderElection визначає конфігурацію клієнта вибору лідера.
Controllers[Обовʼязкове] []string
Controllers — це список контролерів для активації або деактивації:
'*' означає "всі контролери, що стандартно активовані"
'foo' означає "активувати 'foo'"
'-foo' означає "деактивувати 'foo'"
перший елемент для конкретного імені виграє
Reconciler виконує періодичний цикл для узгодження бажаного стану з фактичним станом, ініціюючи операції прикріплення/відкріплення. Цей прапорець включає або вимикає узгодження. Станадртне значення — false, отже, включено.
ReconcilerSyncLoopPeriod — це період часу, протягом якого цикл узгодження станів чекає між наступними виконаннями. Стандартне знаячення — 60 секунд.
disableForceDetachOnTimeout[Обовʼязкове] bool
DisableForceDetachOnTimeout вимикає примусове відкріплення, коли максимальний час розмонтування перевищено. Стандартне значення — false, отже, примусове відкріплення при відключенні увімкнено.
CSRSigningControllerConfiguration містить елементи, що описують CSRSigningController.
Поле
Опис
ClusterSigningCertFile[Обовʼязкове] string
clusterSigningCertFile — це імʼя файлу, що містить PEM-кодований сертифікат X509 CA, використовується для видачі сертифікатів з обмеженням на кластер
ClusterSigningKeyFile[Обовʼязкове] string
clusterSigningKeyFile — це імʼя файлу, що містить PEM-кодований приватний ключ RSA або ECDSA, який використовується для видачі сертифікатів з обмеженням на кластер
kubeletClientSignerConfiguration містить сертифікат і ключ, які використовуються для видачі сертифікатів для kubernetes.io/kube-apiserver-client-kubelet
clusterSigningDuration — це максимальний період дії сертифікатів, які видаються. Окремі CSR можуть запитувати коротші сертифікати, встановлюючи spec.expirationSeconds.
CronJobControllerConfiguration містить елементи, що описують CronJobController.
Поле
Опис
ConcurrentCronJobSyncs[Обовʼязкове] int32
concurrentCronJobSyncs — це кількість обʼєктів job, які дозволено синхронізувати одночасно. Більше число = більш швидка реакція job, але більше навантаження на CPU (і мережу).
DaemonSetControllerConfiguration містить елементи, що описують DaemonSetController.
Поле
Опис
ConcurrentDaemonSetSyncs[Обовʼязкове] int32
concurrentDaemonSetSyncs — це кількість обʼєктів daemonset, які дозволено синхронізувати одночасно. Більше число = більш швидка реакція daemonset, але більше навантаження на CPU (і мережу).
DeploymentControllerConfiguration містить елементи, що описують DeploymentController.
Поле
Опис
ConcurrentDeploymentSyncs[Обовʼязкове] int32
concurrentDeploymentSyncs — це кількість обʼєктів deployment, які дозволено синхронізувати одночасно. Більше число = більш швидка реакція deployments, але більше навантаження на CPU (і мережу).
EndpointControllerConfiguration містить елементи, що описують EndpointController
Поле
Опис
ConcurrentEndpointSyncs[Обовʼязкове] int32
concurrentEndpointSyncs — це кількість операцій синхронізації точок доступу, які будуть виконуватись одночасно. Більше число = швидше оновлення, але більше навантаження на CPU (і мережу).
EndpointUpdatesBatchPeriod описує тривалість періоду пакетного оновлення точок доступу. Обробка змін у pod буде затримана на цей час, щоб обʼєднати їх з потенційними майбутніми оновленнями та зменшити загальну кількість оновлень точок доступу.
EndpointSliceControllerConfiguration містить елементи, що описують EndpointSliceController.
Поле
Опис
ConcurrentServiceEndpointSyncs[Обовʼязкове] int32
concurrentServiceEndpointSyncs — це кількість операцій синхронізації точок доступу сервісу, які будуть виконуватись одночасно. Більше число = швидше оновлення EndpointSlice, але більше навантаження на CPU (і мережу).
MaxEndpointsPerSlice[Обовʼязкове] int32
maxEndpointsPerSlice — максимальна кількість точок доступу, які будуть додані до одного EndpointSlice. Більше точок доступу на один slice призведе до меншої кількості та більших за розміром endpoint slices, але більших ресурсів.
EndpointUpdatesBatchPeriod описує тривалість періоду пакетного оновлення точок доступу. Обробка змін у pod буде затримана на цей час, щоб обʼєднати їх з потенційними майбутніми оновленнями та зменшити загальну кількість оновлень точок доступу.
mirroringConcurrentServiceEndpointSyncs — це кількість операцій синхронізації точок доступу сервісу, які будуть виконуватись одночасно. Більше число = швидше оновлення EndpointSlice, але більше навантаження на CPU (і мережу).
MirroringMaxEndpointsPerSubset[Обовʼязкове] int32
mirroringMaxEndpointsPerSubset — максимальна кількість точок доступу, які будуть відображені в EndpointSlice для одного EndpointSubset.
mirroringEndpointUpdatesBatchPeriod можна використовувати для пакетного оновлення EndpointSlice. Усі оновлення, викликані змінами в EndpointSlice, будуть затримані до 'mirroringEndpointUpdatesBatchPeriod'. Якщо інші адреси в тому ж ресурсі Endpoints зміняться в цей період, вони будуть обʼєднані в одне оновлення EndpointSlice. Стандартне значення 0 означає, що кожне оновлення Endpoints викликає оновлення EndpointSlice.
EphemeralVolumeControllerConfiguration містить елементи, що описують EphemeralVolumeController.
Поле
Опис
ConcurrentEphemeralVolumeSyncs[Обовʼязкове] int32
ConcurrentEphemeralVolumeSyncs — це кількість операцій синхронізації ефемерних томів, які будуть виконуватись одночасно. Більше число = швидше оновлення ефемерних томів, але більше навантаження на CPU (і мережу).
GarbageCollectorControllerConfiguration містить елементи, що описують GarbageCollectorController.
Поле
Опис
EnableGarbageCollector[Обовʼязкове] bool
Увімкнення загального збирача сміття. ПОВИННО бути синхронізовано з відповідним прапорцем kube-apiserver. УВАГА: загальний збирач сміття є альфа-функцією.
ConcurrentGCSyncs[Обовʼязкове] int32
ConcurrentGCSyncs — це кількість процесів збирача сміття, які дозволяється синхронізувати одночасно.
ConcurrentHorizontalPodAutoscalerSyncs — кількість обʼєктів HPA, які дозволено синхронізувати одночасно. Більше число = більш чутка обробка HPA, але більше навантаження на CPU (та мережу).
HorizontalPodAutoscalerDownscaleStabilizationWindow — період, протягом якого автомасштабувальник буде переглядати і не зменшувати кількість Podʼів нижче будь-яких рекомендацій, зроблених протягом цього періоду.
HorizontalPodAutoscalerInitialReadinessDelay — період після запуску Podʼа, протягом якого зміни готовності вважаються як готовність, що встановлюється вперше. Єдиний ефект цього — HPA буде ігнорувати проби CPU від неготових Podʼів, у яких остання зміна готовності відбулася під час цього періоду.
JobControllerConfiguration містить елементи, що описують JobController.
Поле
Опис
ConcurrentJobSyncs[Обовʼязкове] int32
concurrentJobSyncs — кількість обʼєктів job, які дозволено синхронізувати одночасно. Більше число = більш чутка обробка job, але більше навантаження на CPU (та мережу).
CleanUpPeriod — період часу з моменту останнього використання автоматично згенерованого токена службового облікового запису перед тим, як його можна буде видалити.
NodeIPAMControllerConfiguration містить елементи, що описують NodeIpamController.
Поле
Опис
ServiceCIDR[Обовʼязкове] string
serviceCIDR — CIDR-діапазон для сервісів в кластері.
SecondaryServiceCIDR[Обовʼязкове] string
secondaryServiceCIDR — CIDR-діапазон для сервісів в кластері, що використовується в двостекових кластерах. SecondaryServiceCIDR має бути іншої IP-сімʼї, ніж ServiceCIDR.
NodeCIDRMaskSize[Обовʼязкове] int32
NodeCIDRMaskSize — маска розміру для CIDR вузлів в кластері.
NodeCIDRMaskSizeIPv4[Обовʼязкове] int32
NodeCIDRMaskSizeIPv4 — маска розміру для CIDR вузлів в двостековому кластері.
NodeCIDRMaskSizeIPv6[Обовʼязкове] int32
NodeCIDRMaskSizeIPv6 — маска розміру для CIDR вузлів в двостековому кластері.
nodeMonitorGracePeriod — період часу, протягом якого дозволяється вузлу не відгукуватись, перш ніж позначити його як несправний. Має бути N разів більше, ніж nodeStatusUpdateFrequency kubeletʼа, де N означає кількість спроб, дозволених для kubelet для надсилання статусу вузла. Це значення також має бути більшим за суму HTTP2_PING_TIMEOUT_SECONDS і HTTP2_READ_IDLE_TIMEOUT_SECONDS.
podEvictionTimeout — період для належного видалення Podʼів на неактивних вузлах.
LargeClusterSizeThreshold[Обовʼязкове] int32
secondaryNodeEvictionRate явно перезаписується на 0 для кластерів, менших або рівних largeClusterSizeThreshold.
UnhealthyZoneThreshold[Обовʼязкове] float32
Зона вважається несправною в nodeEvictionRate та secondaryNodeEvictionRate, коли щонайменше unhealthyZoneThreshold (не менше 3) вузлів у зоні є NotReady.
PersistentVolumeRecyclerConfiguration містить елементи, що описують втулки для постійних томів.
Поле
Опис
MaximumRetry[Обовʼязкове] int32
maximumRetry — кількість спроб, які recycler PV виконає у разі невдачі при переробці PV.
MinimumTimeoutNFS[Обовʼязкове] int32
minimumTimeoutNFS — мінімальний ActiveDeadlineSeconds для використання для Podʼа NFS Recycler.
PodTemplateFilePathNFS[Обовʼязкове] string
podTemplateFilePathNFS — шлях до файлу з визначенням Podʼа, що використовується як шаблон для переробки постійного тому NFS.
IncrementTimeoutNFS[Обовʼязкове] int32
incrementTimeoutNFS — приріст часу, який додається за кожен Gi до ActiveDeadlineSeconds для Podʼа NFS scrubber.
PodTemplateFilePathHostPath[Обовʼязкове] string
podTemplateFilePathHostPath — шлях до файлу з визначенням Podʼа, що використовується як шаблон для переробки постійного тому HostPath. Це лише для розробки та тестування і не працює в кластері з кількома вузлами.
MinimumTimeoutHostPath[Обовʼязкове] int32
minimumTimeoutHostPath — мінімальний ActiveDeadlineSeconds для використання для Podʼа HostPath Recycler. Це лише для розробки та тестування і не працює в кластері з кількома вузлами.
IncrementTimeoutHostPath[Обовʼязкове] int32
incrementTimeoutHostPath — приріст часу, який додається за кожен Gi до ActiveDeadlineSeconds для Podʼа HostPath scrubber. Це лише для розробки та тестування і не працює в кластері з кількома вузлами.
PodGCControllerConfiguration містить елементи, що описують PodGCController.
Поле
Опис
TerminatedPodGCThreshold[Обовʼязкове] int32
terminatedPodGCThreshold — кількість завершених Podʼів, які можуть існувати перед тим, як збирач сміття завершених почне видаляти завершені поди. Якщо <= 0, збирач сміття завершених Podʼів вимкнено.
ReplicaSetControllerConfiguration містить елементи, що описують ReplicaSetController.
Поле
Опис
ConcurrentRSSyncs[Обовʼязкове] int32
concurrentRSSyncs — кількість replica set, які можуть синхронізуватися одночасно. Більше число = більш чутливе управління репліками, але більше завантаження на процесор (і мережу).
ReplicationControllerConfiguration містить елементи, що описують ReplicationController.
Поле
Опис
ConcurrentRCSyncs[Обовʼязкове] int32
concurrentRCSyncs — кількість контролерів реплікацій, які можуть синхронізуватися одночасно. Більше число = більш чутливе управління репліками, але більше завантаження на процесор (і мережу).
resourceQuotaSyncPeriod — період для синхронізації статусу використання квоти в системі.
ConcurrentResourceQuotaSyncs[Обовʼязкове] int32
concurrentResourceQuotaSyncs — кількість ресурсних квот, які можуть синхронізуватися одночасно. Більше число = більш чутливе управління квотами, але більше завантаження на процесор (і мережу).
SAControllerConfiguration містить елементи, що описують ServiceAccountController.
Поле
Опис
ServiceAccountKeyFile[Обовʼязкове] string
serviceAccountKeyFile — імʼя файлу, що містить PEM-кодований приватний RSA-ключ, який використовується для підписання токенів службовиї облікових записів.
ConcurrentSATokenSyncs[Обовʼязкове] int32
concurrentSATokenSyncs — кількість операцій синхронізації токенів службових облікових записів які будуть виконуватись одночасно.
RootCAFile[Обовʼязкове] string
rootCAFile — кореневий сертифікат центру сертифікації, який буде включено у секрет токена службових облікових записів. Це має бути дійсний PEM-кодований CA пакет.
StatefulSetControllerConfiguration містить елементи, що описують StatefulSetController.
Поле
Опис
ConcurrentStatefulSetSyncs[Обовʼязкове] int32
concurrentStatefulSetSyncs — кількість обʼєктів StatefulSet, які дозволено синхронізувати одночасно. Більше число = більше чутливість statefulsets, але більше навантаження на ЦП (і мережу).
ValidatingAdmissionPolicyStatusControllerConfiguration містить елементи, що описують ValidatingAdmissionPolicyStatusController.
Поле
Опис
ConcurrentPolicySyncs[Обовʼязкове] int32
ConcurrentPolicySyncs — кількість обʼєктів політики, які дозволено синхронізувати одночасно. Більша кількість = швидше перевірка типів, але більше навантаження на ЦП (і мережу). Стандартне значення — 5.
VolumeConfiguration містить усі перераховані прапорці, призначені для конфігурації всіх втулків томів. З цієї конфігурації бінарний файл controller-manager створить багато екземплярів volume.VolumeConfig, кожен з яких містить лише конфігурацію, необхідну для конкретного втулка, які потім передаються відповідному втулку. Бінарний файл ControllerManager є єдиною частиною коду, яка знає, які втулки підтримуються і які прапорці відповідають кожному втулку.
Поле
Опис
EnableHostPathProvisioning[Обовʼязкове] bool
enableHostPathProvisioning дозволяє створення PV HostPath при запуску без хмарного постачальника. Це дозволяє тестування та розробку функцій provisioning. HostPath provisioning не підтримується в жодному вигляді, не працює в кластері з кількома вузлами і не слід використовувати для нічого іншого, крім тестування або розробки.
EnableDynamicProvisioning[Обовʼязкове] bool
enableDynamicProvisioning дозволяє створення томів при запуску в середовищі, яке підтримує динамічне створення. Стандартне значення — true.
Максимальний проміжок часу між скиданнями журналу. Якщо рядок, розбирається як тривалість (тобто "1s") Якщо int, максимальна кількість наносекунд (тобто 1s = 1000000000). Ігнорується, якщо вибраний бекенд записує повідомлення журналу без буферизації.
Докладність — це поріг, який визначає, які повідомлення буде записано до журналу. Стандартно встановлено нульове значення, за якого до журналу записуються лише найважливіші повідомлення. Вищі значення вмикають додаткові повідомлення. Повідомлення про помилки завжди записуються до журналу.
[Alpha] Опції містять додаткові параметри, специфічні для різних форматів журналювання. Використовуються лише параметри для вибраного формату, але всі вони перевіряються. Доступно лише тоді, коли увімкнено функцію LoggingAlphaOptions.
LoggingOptions
LoggingOptions можна використовувати з ValidateAndApplyWithOptions для перевизначення певних стандартних налаштувань.
OutputRoutingOptions містить опції, які підтримуються як "text", так і "json".
Поле
Опис
splitStream[Обовʼязково] bool
[Alpha] SplitStream перенаправляє повідомлення про помилки до stderr, а інформаційні повідомлення — до stdout, з буферизацією. Стандартно, обидва потоки записуються у stdout без буферизації. Доступно лише за умови увімкнення функції LoggingAlphaOptions.
[Alpha] InfoBufferSize задає розмір інформаційного потоку при використанні розділених потоків. Стандартно дорівнює нулю, що вимикає буферизацію. Доступно лише за умови увімкнення функції LoggingAlphaOptions.
ClientConnectionConfiguration містить деталі для створення клієнта.
Поле
Опис
kubeconfig[Обовʼязкове] string
kubeconfig — шлях до файлу KubeConfig.
acceptContentTypes[Обовʼязкове] string
acceptContentTypes визначає заголовок Accept, що надсилається клієнтами при підключенні до сервера, переважаючи стандартне значення 'application/json'. Це поле контролює всі підключення до сервера, що використовуються конкретним клієнтом.
contentType[Обовʼязкове] string
contentType — це тип вмісту, що використовується при надсиланні даних на сервер з цього клієнта.
qps[Обовʼязкове] float32
qps контролює кількість запитів на секунду, дозволених для цього зʼєднання.
burst[Обовʼязкове] int32
burst дозволяє накопичувати додаткові запити, коли клієнт перевищує свій поріг.
LeaderElectionConfiguration визначає конфігурацію клієнтів вибору лідера для компонентів, які можуть працювати з увімкненим вибором лідера.
Поле
Опис
leaderElect[Обовʼязкове] bool
leaderElect дозволяє клієнту вибору лідера отримати лідерство перед виконанням основного циклу. Увімкніть це при запуску повторюваних компонентів для високої доступності.
leaseDuration — це тривалість, яку не-лідери кандидати будуть чекати після спостереження за поновленням лідерства, перш ніж спробувати отримати лідерство замісць лідера, який не був поновлений. Це фактично максимальна тривалість, протягом якої лідер може бути зупинений перед заміною іншим кандидатом. Це застосовується тільки в разі увімкнення вибору лідера.
renewDeadline — це інтервал між спробами діючого майстра поновити слот лідерства перед тим, як він перестане бути лідером. Це має бути менше або дорівнювати тривалості оренди. Це застосовується тільки в разі увімкнення вибору лідера.
retryPeriod — це тривалість, протягом якої клієнти повинні чекати між спробами отримання і поновлення лідерства. Це застосовується тільки в разі увімкнення вибору лідера.
resourceLock[Обовʼязкове] string
resourceLock вказує тип обʼєкта ресурсу, який буде використовуватися для блокування під час циклів вибору лідера.
resourceName[Обовʼязкове] string
resourceName вказує імʼя обʼєкта ресурсу, який буде використовуватися для блокування під час циклів вибору лідера.
resourceNamespace[Обовʼязкове] string
resourceNamespace вказує простір імен обʼєкта ресурсу, який буде використовуватися для блокування під час циклів вибору лідера.
KubeProxyConfiguration
KubeProxyConfiguration містить все необхідне для налаштування проксі-сервера Kubernetes.
Поле
Опис
apiVersion string
kubeproxy.config.k8s.io/v1alpha1
kind string
KubeProxyConfiguration
featureGates[Обовʼязкове] map[string]bool
featureGates є зіставленням імен функцій до булевих значень, які дозволяють або забороняють альфа/експериментальні функції.
logging вказує параметри ведення логу. Дивіться Logs Options для додаткової інформації.
hostnameOverride[Обовʼязкове] string
hostnameOverride, якщо не порожній, буде використовуватися як імʼя вузла, на якому працює kube-proxy. Якщо не задано, імʼя вузла вважається таким же, як і hostname вузла.
bindAddress[Обовʼязкове] string
bindAddress може бути використано для переозначення IP-адреси вузла, яка є основною для kube-proxy. Зверніть увагу, що імʼя є історичним артефактом, і kube-proxy насправді не привʼязує жодні сокети до цього IP.
healthzBindAddress[Обовʼязкове] string
healthzBindAddress — це IP-адреса та порт для сервера перевірки стану, на якому він буде служити, стандартно "0.0.0.0:10256" (якщо bindAddress не встановлено або IPv4), або "[::]:10256" (якщо bindAddress є IPv6).
metricsBindAddress[Обовʼязкове] string
metricsBindAddress — це IP-адреса та порт для сервера метрик, на якому він буде служити, стандартно "127.0.0.1:10249" (якщо bindAddress не встановлено або IPv4), або "[::1]:10249" (якщо bindAddress є IPv6). (Встановіть на "0.0.0.0:10249" / "[::]:10249", щоб привʼязатися до всіх інтерфейсів.)
bindAddressHardFail[Обовʼязкове] bool
bindAddressHardFail, якщо true, вказує kube-proxy вважати помилку привʼязки до порту фатальною і вийти
enableProfiling[Обовʼязкове] bool
enableProfiling дозволяє профілювання через веб-інтерфейс на обробнику /debug/pprof. Обробники профілювання будуть оброблені сервером метрик.
showHiddenMetricsForVersion[Обовʼязкове] string
showHiddenMetricsForVersion — це версія, для якої ви хочете показати приховані метрики.
detectLocal містить додаткові параметри конфігурації, що стосуються DetectLocalMode.
clusterCIDR[Обовʼязкове] string
clusterCIDR — це діапазон CIDR для Podʼів у кластері. (Для кластерів з подвійними стеками це може бути пара діапазонів CIDR, розділених комою). Коли DetectLocalMode встановлено в ClusterCIDR, kube-proxy буде вважати трафік локальним, якщо його вихідний IP знаходиться в цьому діапазоні. (Інакше не використовується.)
nodePortAddresses[Обовʼязкове] []string
nodePortAddresses — це список діапазонів CIDR, які містять допустимі IP-адреси вузлів, або, як варіант, єдиний рядок 'primary'. Якщо задано список CIDR, зʼєднання з сервісами NodePort будуть прийматися лише на IP-адресах вузлів в одному з вказаних діапазонів. Якщо встановлено значення 'primary', сервіси NodePort будуть прийматися лише на основну IPv4 та/або IPv6 адресу вузла згідно з обʼєктом Node. Якщо не встановлено, зʼєднання NodePort будуть прийматися на всіх локальних IP.
oomScoreAdj[Обовʼязкове] int32
oomScoreAdj — це значення oom-score-adj для процесу kube-proxy. Значення повинні бути в межах [-1000, 1000]
DetectLocalConfiguration містить необовʼязкові налаштування, що стосуються параметра DetectLocalMode
Поле
Опис
bridgeInterface[Обовʼязкове] string
bridgeInterface — це імʼя інтерфейсу моста (bridge). Коли DetectLocalMode встановлено в LocalModeBridgeInterface, kube-proxy буде вважати трафік локальним, якщо він походить з цього моста.
interfaceNamePrefix[Обовʼязкове] string
interfaceNamePrefix — це префікс імені інтерфейсу. Коли DetectLocalMode встановлено в LocalModeInterfaceNamePrefix, kube-proxy буде вважати трафік локальним, якщо він походить з будь-якого інтерфейсу, чиє імʼя починається з цього префіксу.
KubeProxyConntrackConfiguration містить налаштування conntrack для
Kubernetes proxy server.
Поле
Опис
maxPerCore[Обовʼязкове] int32
maxPerCore — максимальна кількість NAT зʼєднань, які слід відстежувати на однt процесорнt ядро (0 для того, щоб залишити обмеження без змін і проігнорувати min).
min[Обовʼязкове] int32
min — мінімальне значення записів connect-tracking, які слід виділити, незалежно від maxPerCore (встановіть maxPerCore=0, щоб залишити обмеження без змін).
tcpCloseWaitTimeout — як довго неактивний запис conntrack у стані CLOSE_WAIT залишиться в таблиці conntrack (наприклад, '60s'). Має бути більше 0 для встановлення.
tcpBeLiberal[Обовʼязкове] bool
tcpBeLiberal, якщо true, kube-proxy налаштує conntrack
для роботи в ліберальному режимі для TCP зʼєднань, і пакети з
послідовними номерами за межами вікна не будуть позначені як INVALID.
udpTimeout — як довго неактивний запис conntrack для UDP у стані UNREPLIED залишиться в таблиці conntrack (наприклад, '30s'). Має бути більше 0 для встановлення.
udpStreamTimeout — як довго неактивний запис conntrack для UDP у стані ASSURED залишиться в таблиці conntrack (наприклад, '300s'). Має бути більше 0 для встановлення.
KubeProxyIPTablesConfiguration містить налаштування, повʼязані з iptables,
для Kubernetes proxy server.
Поле
Опис
masqueradeBit[Обовʼязкове] int32
masqueradeBit — біт iptables fwmark простору, який слід використовувати для SNAT, якщо використовується режим iptables або ipvs. Значення повинні бути в межах [0, 31].
masqueradeAll[Обовʼязкове] bool
masqueradeAll вказує kube-proxy виконувати SNAT для всього трафіку, надісланого на IP-адреси сервісів кластера, при використанні режиму iptables або ipvs. Це може бути необхідно для деяких плагінів CNI.
localhostNodePorts[Обовʼязкове] bool
localhostNodePorts, якщо false, вказує kube-proxy вимкнути застарілу поведінку дозволу доступу до сервісів NodePort через localhost. (Застосовується лише для режиму iptables та IPv4; localhost NodePorts ніколи не дозволяються з іншими режимами проксі або з IPv6.)
syncPeriod — інтервал (наприклад, '5s', '1m', '2h22m'), що вказує, як часто виконуються різні операції повторної синхронізації та очищення. Має бути більше 0.
minSyncPeriod — мінімальний період між повторними синхронізаціями правил iptables (наприклад, '5s', '1m', '2h22m'). Значення 0 означає, що кожна зміна Service або EndpointSlice призведе до негайної повторної синхронізації iptables.
syncPeriod — інтервал (наприклад, '5s', '1m', '2h22m'), що вказує, як часто виконуються різні операції повторної синхронізації та очищення. Має бути більше 0.
minSyncPeriod — мінімальний період між повторними синхронізаціями правил IPVS (наприклад, '5s', '1m', '2h22m'). Значення 0 означає, що кожна зміна Service або EndpointSlice призведе до негайної повторної синхронізації IPVS.
scheduler[Обовʼязкове] string
scheduler — IPVS планувальник, який слід використовувати
excludeCIDRs[Обовʼязкове] []string
excludeCIDRs — список CIDR, які IPVS proxier не повинен торкатися при очищенні IPVS сервісів.
strictARP[Обовʼязкове] bool
strictARP налаштовує arp_ignore та arp_announce, щоб уникнути відповіді на ARP запити з інтерфейсу kube-ipvs0
KubeProxyNFTablesConfiguration містить деталі конфігурації, що стосуються nftables для Kubernetes proxy server.
Поле
Опис
masqueradeBit[Обовʼязкове] int32
masqueradeBit — це біт простору iptables fwmark, який слід використовувати для SNAT при використанні режиму nftables. Значення повинні бути в межах [0, 31].
masqueradeAll[Обовʼязкове] bool
masqueradeAll вказує kube-proxy, щоб SNAT весь трафік, що надходить на IP-адреси кластерів Service, при використанні режиму nftables. Це може бути необхідним для деяких CNI втулків.
syncPeriod — інтервал (наприклад, '5s', '1m', '2h22m'), що вказує, як часто виконуються різні операції повторної синхронізації та очищення. Має бути більше 0.
minSyncPeriod — мінімальний період між повторними синхронізаціями правил iptables (наприклад, '5s', '1m', '2h22m'). Значення 0 означає, що кожна зміна Service або EndpointSlice призведе до негайної повторної синхронізації iptables.
ProxyMode представляє режими, що використовуються сервером проксі Kubernetes.
На даний момент доступні два режими проксі на платформах Linux: 'iptables' та 'ipvs'. Один режим проксі доступний на платформах Windows: 'kernelspace'.
Якщо режим проксі не вказано, буде використано найкращий доступний режим проксі (на даний момент це iptables в Linux і kernelspace у Windows). Якщо вибраний режим проксі не може бути використаний (через відсутність підтримки в ядрі, відсутність компонентів користувацького простору тощо), kube-proxy вийде з помилкою.
ClientConnectionConfiguration містить деталі для створення клієнта.
Поле
Опис
kubeconfig[Обовʼязкове] string
kubeconfig — шлях до файлу KubeConfig.
acceptContentTypes[Обовʼязкове] string
acceptContentTypes визначає заголовок Accept, який надсилається клієнтами при підключенні до сервера, перевизначаючи стандатне значення 'application/json'. Це поле буде контролювати всі зʼєднання з сервером, що використовуються певним клієнтом.
contentType[Обовʼязкове] string
contentType — тип вмісту, який використовується при надсиланні даних на сервер від цього клієнта.
qps[Обовʼязкове] float32
qps контролює кількість запитів на секунду, дозволених для цього зʼєднання.
burst[Обовʼязкове] int32
burst дозволяє накопичувати додаткові запити, коли клієнт перевищує свою норму.
LeaderElectionConfiguration визначає конфігурацію клієнтів вибору лідера для компонентів, які можуть працювати з увімкненим вибором лідера.
Поле
Опис
leaderElect[Обовʼязкове] bool
leaderElect увімкне клієнта вибору лідера для отримання лідерства перед виконанням основного циклу. Увімкніть це при запуску реплікованих компонентів для високої доступності.
leaseDuration — це період часу, протягом якого кандидати, які не є лідерами, чекатимуть після поновлення лідерства, перш ніж спробувати зайняти лідерство в лідерському слоті, який вже зайнятий, але не поновлений. Це фактично максимальний термін, на який лідер може бути зупинений, перш ніж його замінить інший кандидат. Це може бути застосовано лише у випадку, якщо вибори лідера увімкнено.
renewDeadline — це інтервал між спробами діючого лідера оновити слот лідерства перед тим, як він припинить лідирування. Це має бути менше або дорівнювати тривалості оренди. Це застосовно тільки тоді, коли вибір лідера увімкнено.
retryPeriod — це тривалість, яку клієнти повинні чекати між спробами отримання та оновлення лідерства. Це застосовно тільки тоді, коли вибір лідера увімкнено.
resourceLock[Обовʼязкове] string
resourceLock вказує тип обʼєкта ресурсу, який буде використовуватися для блокування під час циклів вибору лідера.
resourceName[Обовʼязкове] string
resourceName вказує на імʼя обʼєкта ресурсу, який буде використовуватися для блокування під час циклів вибору лідера.
resourceNamespace[Обовʼязкове] string
resourceNamespace вказує на простір імен обʼєкта ресурсу, який буде використовуватися для блокування під час циклів вибору лідера.
DefaultPreemptionArgs
DefaultPreemptionArgs містить аргументи, які використовуються для налаштування втулка DefaultPreemption.
Поле
Опис
apiVersion string
kubescheduler.config.k8s.io/v1
kind string
DefaultPreemptionArgs
minCandidateNodesPercentage[Обовʼязкове] int32
MinCandidateNodesPercentage — це мінімальна кількість кандидатів для відбору при тестуванні виселення як відсоток від кількості вузлів. Має бути в межах [0, 100]. Стандартно дорівнює 10% від розміру кластера, якщо не вказано.
minCandidateNodesAbsolute[Обовʼязкове] int32
MinCandidateNodesAbsolute — це абсолютна мінімальна кількість кандидатів для відбору. Ймовірна кількість кандидатів, які будуть перераховані для тестування виселення, розраховується за формулою:
Ми говоримо "ймовірна", оскільки є й інші фактори, такі як порушення PDB, які впливають на кількість кандидатів для відбору. Має бути не менше 0 вузлів. Стандартно дорівнює 100 вузлам, якщо не вказано.
InterPodAffinityArgs
InterPodAffinityArgs містить аргументи, які використовуються для налаштування втулка InterPodAffinity.
Поле
Опис
apiVersion string
kubescheduler.config.k8s.io/v1
kind string
InterPodAffinityArgs
hardPodAffinityWeight[Обовʼязкове] int32
HardPodAffinityWeight — це вага оцінки для наявних Podʼів з відповідною жорсткою спорідненністю до вхідного Podʼа.
IgnorePreferredTermsOfExistingPods налаштовує планувальник ігнорувати бажані правила спорідненості наявних Podʼів при оцінці кандидатів вузлів, якщо вхідний Pod не має спорідненості між Podʼами.
(Члени DebuggingConfiguration вбудовані в цей тип.)
DebuggingConfiguration містить налаштування для функцій, повʼязаних із налагодженням. TODO: Ми можемо зробити це підструктурою як налагодження componentbaseconfigv1alpha1.DebuggingConfiguration
percentageOfNodesToScore[Обовʼязкове] int32
PercentageOfNodesToScore — це відсоток усіх вузлів, які, як тільки будуть визнані придатними для запуску Podʼа, планувальник припиняє пошук інших придатних вузлів у кластері. Це допомагає покращити продуктивність планувальника. Планувальник завжди намагається знайти принаймні "minFeasibleNodesToFind" придатних вузлів незалежно від значення цього прапорця. Приклад: якщо розмір кластера 500 вузлів і значення цього прапорця 30, то планувальник припиняє пошук далі придатних вузлів, як тільки знайде 150 придатних. Коли значення дорівнює 0, стандартно буде оцінено відсоток вузлів (5%—50% залежно від розміру кластера). Він перекривається рівнем профілю PercentageOfNodesToScore.
podInitialBackoffSeconds[Обовʼязкове] int64
PodInitialBackoffSeconds — це початкова фора для непридатних для планування Podʼів. Якщо вказано, він повинен бути більше 0. Якщо це значення нульове, буде використано стандартне значення (1s).
podMaxBackoffSeconds[Обовʼязкове] int64
PodMaxBackoffSeconds — це максимальна фора для непридатних для планування Podʼів. Якщо вказано, він повинен бути більше podInitialBackoffSeconds. Якщо це значення нульове, буде використано стандартне значення (10s).
Profiles — це профілі планування, які підтримує kube-scheduler. Podʼи можуть вибрати, щоб їх планували за певним профілем, встановивши відповідну назву планувальника. Podʼи, які не вказують жодної назви планувальника, плануються за допомогою профілю "default-scheduler", якщо він присутній тут.
Extenders — це список розширень планувальника, кожне з яких містить значення, як спілкуватися з розширенням. Ці розширення використовуються всіма профілями планувальника.
delayCacheUntilActive[Обовʼязкове] bool
DelayCacheUntilActive визначає, коли починати кешування. Якщо це true і вибори лідера увімкнені, планувальник чекатиме, щоб заповнити кеші інформаторів, поки не стане лідером. Це призведе до повільнішого перемикання з резервного на основний вузол із перевагою нижчого використання пам’яті під час очікування стати лідером. Стандартно — false.
NodeAffinityArgs
NodeAffinityArgs містить аргументи для налаштування втулка NodeAffinity.
AddedAffinity застосовується до всіх Podʼів додатково до NodeAffinity, вказаного в PodSpec. Тобто вузли повинні відповідати AddedAffinity І .spec.NodeAffinity. AddedAffinity є станадртно порожнім (є збіг зі всіма вузлами). Коли використовується AddedAffinity, деякі Podʼи з вимогами щодо спорідненості, які збігаються з конкретним вузлом (наприклад, Podʼи Daemonset), можуть залишатися непридатними для планування.
NodeResourcesBalancedAllocationArgs
NodeResourcesBalancedAllocationArgs містить аргументи для налаштування втулка NodeResourcesBalancedAllocation.
Ресурси, якими потрібно керувати, стандартно: "cpu" та "memory", якщо не вказано інше.
NodeResourcesFitArgs
NodeResourcesFitArgs містить аргументи для налаштування втулка NodeResourcesFit.
Поле
Опис
apiVersion string
kubescheduler.config.k8s.io/v1
kind string
NodeResourcesFitArgs
ignoredResources[Обовʼязково] []string
IgnoredResources — список ресурсів, які фільтр NodeResources повинен ігнорувати. Це не застосовується до оцінювання.
ignoredResourceGroups[Обовʼязково] []string
IgnoredResourceGroups визначає список груп ресурсів, які фільтр NodeResources повинен ігнорувати. наприклад, якщо група - ["example.com"], вона ігноруватиме всі імена ресурсів, які починаються з "example.com", такі як "example.com/aaa" і "example.com/bbb". Імʼя групи ресурсів не може містити '/'. Це не застосовується до оцінювання.
DefaultConstraints визначає обмеження на розподіл топології, які будуть застосовані до Podʼів, що не мають визначених обмежень у pod.spec.topologySpreadConstraints. .defaultConstraints[*].labelSelectors повинні бути порожніми, оскільки вони виводяться з приналежності Podʼа до Services, ReplicationControllers, ReplicaSets або StatefulSets. Якщо не порожньо, .defaultingType має бути "List".
DefaultingType визначає, як виводяться .defaultConstraints. Може бути одним з "System" або "List".
"System": Використовувати визначені kubernetes обмеження, які розподіляють Podʼи серед вузлів і зон.
"List": Використовувати обмеження, визначені в .defaultConstraints.
Стандартно "System".
VolumeBindingArgs
VolumeBindingArgs містить аргументи для налаштування втулка VolumeBinding.
Поле
Опис
apiVersion string
kubescheduler.config.k8s.io/v1
kind string
VolumeBindingArgs
bindTimeoutSeconds[Обовʼязкове] int64
BindTimeoutSeconds — це тайм-аут в секундах у операції привʼязки томів. Значення повинно бути невідʼємним цілим числом. Значення нуль означає, що немає очікування. Якщо це значення не вказано, буде використано стандартне значення (600).
Shape вказує точки, що визначають форму функції оцінки, яка використовується для оцінки вузлів на основі використання статично наданих PV. Використання розраховується шляхом поділу загального запитаного обсягу сховища Podʼа на загальну ємність доступних PV на кожному вузлі. Кожна точка містить використання (у діапазоні від 0 до 100) та відповідну оцінку (у діапазоні від 0 до 10). Ви можете налаштувати пріоритет, вказуючи різні оцінки для різних рівнів використання. Стандартні точки Shape:
0 для 0 використання
10 для 100 використання. Всі точки повинні бути відсортовані у зростаючому порядку за використанням.
Extender містить параметри, що використовуються для звʼязку з розширювачем. Якщо дієслово не вказано/пусте, вважається, що розширювач вирішів не надавати це розширення.
Поле
Опис
urlPrefix[Обовʼязкове] string
URLPrefix за яким доступний розширювач
filterVerb[Обовʼязкове] string
Дієслово для виклику фільтрації, порожнє, якщо не підтримується. Це дієслово додається до URLPrefix при виконанні виклику фільтрації розширювача.
preemptVerb[Обовʼязкове] string
Дієслово для виклику витіснення, порожнє, якщо не підтримується. Це дієслово додається до URLPrefix при виконанні виклику витіснення розширювача.
prioritizeVerb[Обовʼязкове] string
Дієслово для виклику пріоритезації, порожнє, якщо не підтримується. Це дієслово додається до URLPrefix при виконанні виклику пріоритезації розширювача.
weight[Обовʼязкове] int64
Числовий множник для оцінок вузлів, які генерує виклик пріоритезації. Вага повинна бути додатним цілим числом
bindVerb[Обовʼязкове] string
Дієслово для виклику привʼязки, порожнє, якщо не підтримується. Це дієслово додається до URLPrefix при виконанні виклику привʼязки розширювача. Якщо цей метод реалізовано розширювачем, це відповідальність розширювача привʼязати Pod до apiserver. Тільки один розширювач може реалізовувати цю функцію.
enableHTTPS[Обовʼязкове] bool
EnableHTTPS вказує, чи слід використовувати https для звʼязку з розширювачем
HTTPTimeout вказує тривалість тайм-ауту для виклику розширювача. Тайм-аут фільтрації призводить до невдалої спроби планування Podʼа. Тайм-аут пріоритезації ігнорується, пріоритети k8s/інших розширювачів використовуються для вибору вузла.
nodeCacheCapable[Обовʼязкове] bool
NodeCacheCapable вказує, що розширювач здатний кешувати інформацію про вузли, отже, планувальник повинен надсилати лише мінімальну інформацію про придатні вузли, припускаючи, що розширювач вже кешував повні дані про всі вузли в кластері
ManagedResources — це список розширених ресурсів, що керуються
цим розширювачем.
Pod буде надіслано до розширювача на етапах фільтрації, пріоритезації та привʼязки (якщо розширювач є звʼязувальним) тільки якщо Pod запитує принаймні
один з розширених ресурсів у цьому списку. Якщо список порожній або не вказаний,
всі Podʼи будуть надіслані до цього розширювача.
Якщо IgnoredByScheduler встановлено в true для ресурсу, kube-scheduler
буде пропускати перевірку ресурсу в предикатах.
ignorable[Обовʼязкове] bool
Ignorable вказує, чи можна ігнорувати розширювач, тобто планування не повинно не вдасться, якщо розширювач повертає помилку або недоступний.
ExtenderTLSConfig містить налаштування для увімкнення TLS з розширювачем
Поле
Опис
insecure[Обовʼязкове] bool
Сервер повинен бути доступний без перевірки сертифікату TLS. Тільки для тестування.
serverName[Обовʼязкове] string
ServerName передається серверу для SNI та використовується в клієнті для перевірки сертифікатів сервера. Якщо ServerName порожній, використовується імʼя хоста, яке використовується для звʼязку з сервером.
certFile[Обовʼязкове] string
Сервер вимагає автентифікацію клієнтського сертифікату TLS
keyFile[Обовʼязкове] string
Сервер вимагає автентифікацію клієнтського сертифікату TLS
caFile[Обовʼязкове] string
Довірені кореневі сертифікати для сервера
certData[Обовʼязкове] []byte
CertData містить PEM-кодовані байти (зазвичай зчитуються з файлу клієнтського сертифіката). CertData має пріоритет над CertFile
keyData[Обовʼязкове] []byte
KeyData містить PEM-кодовані байти (зазвичай зчитуються з файлу ключа клієнтського сертифіката). KeyData має пріоритет над KeyFile
caData[Обовʼязкове] []byte
CAData містить PEM-кодовані байти (зазвичай зчитуються з файлу з кореневими сертифікатами). CAData має пріоритет над CAFile
SchedulerName є імʼям планувальника, асоційованого з цим профілем. Якщо SchedulerName відповідає значенню "spec.schedulerName" Podʼа, то Pod буде плануватися з цим профілем.
percentageOfNodesToScore[Обовʼязкове] int32
PercentageOfNodesToScore є відсотком усіх вузлів, після знаходження яких, планувальник припиняє пошук більш придатних вузлів у кластері для запуску Podʼа. Це допомагає покращити продуктивність планувальника. Планувальник завжди намагається знайти принаймні "minFeasibleNodesToFind" придатних вузлів незалежно від значення цього прапорця. Наприклад, якщо розмір кластера становить 500 вузлів і значення цього прапорця становить 30, то планувальник припиняє пошук далі, як тільки знаходить 150 придатних вузлів. Коли значення 0, стандартно буде оцінено відсоток (5%–50% в залежності від розміру кластера) вузлів. Це матиме перевагу перед глобальним PercentageOfNodesToScore. Якщо це пусто, буде використано глобальний PercentageOfNodesToScore.
Plugins визначають набір втулків, які мають бути увімкнені або вимкнені. Увімкнені втулки — це ті, які мають бути увімкнені додатково до стандартних втулків. Вимкнені втулки — це будь-які зі стандартних втулків, які мають бути вимкнені. Коли жоден увімкнений або вимкнений втулок не зазначений для точки розширення, будуть використані стандартні втулки для цієї точки розширення, якщо такі є. Якщо зазначено втулок QueueSort, то той самий втулок QueueSort та PluginConfig повинні бути зазначені для всіх профілів.
PluginConfig є необовʼязковим набором параметрів для кожного втулка. Виключення конфігураційних аргументів для втулка є еквівалентним використанню стандартної конфігурації для цього втулка.
PluginConfig визначає аргументи, які повинні бути передані втулку під час ініціалізації. Втулок, який викликається на кількох точках розширення, ініціалізується один раз. Args можуть мати довільну структуру. Обробка цих аргументів залежить від самого втулка.
PluginSet визначає включені та виключені втулки для точки розширення. Якщо масив порожній, відсутній або nil, використовуватимуться стандартні втулки для цієї точки розширення.
Enabled визначає втулки, які повинні бути активовані додатково до стандартних втулків. Якщо стандартний втулок також конфігуровано у файлі конфігурації планувальника, вага втулка буде перезаписана відповідно. Ці втулки викликаються після стандартних втулків і в тому ж порядку, як зазначено тут.
Disabled визначає стандартні втулки, які повинні бути вимкнені. Коли всі стандартні втулки потрібно вимкнути, слід надати масив, що містить лише один символ "*".
Plugins включає кілька точок розширення. Коли вони вказані, список втулків для конкретної точки розширення є єдиними активованими втулками. Якщо точка розширення пропущена з конфігурації, тоді використовуються стандартні втулки для цієї точки розширення. Активовані втулки викликаються в порядку, зазначеному тут, після стандартних втулків. Якщо їх потрібно викликати перед стандартними втулками, стандартні втулки повинні бути вимкнені і знову увімкнені тут у бажаному порядку.
Bind — це список втулків, які повинні бути викликані на точці розширення "Bind" фреймворку планування. Планувальник викликає ці втулки по порядку. Планувальник пропускає решту цих втулків, як тільки один з них повертає успіх.
MultiPoint — це спрощений розділ конфігурації для активації втулків для всіх дійсних точок розширення. Втулки, активовані через MultiPoint, автоматично реєструються для кожної індивідуальної точки розширення, яку втулок реалізував. Вимкнення втулка через MultiPoint вимикає таку поведінку. Те ж саме стосується вимкнення "*" через MultiPoint (жоден стандартний втулок не буде автоматично зареєстрований). Втулки все ще можна вимкнути через їх окремі точки розширення.
Що стосується пріоритету, конфігурація втулків дотримується цієї основної ієрархії
Специфічні точки розширення
Явно сконфігуровані втулки MultiPoint
Набір стандартних втулків, як втулки MultiPoint. Це означає, що втулок з вищим пріоритетом буде виконуватися першим і перезаписувати будь-які налаштування всередині MultiPoint. Явно сконфігуровані втулки користувача також мають вищий пріоритет над стандартними втулками. В межах цієї ієрархії, параметр Enabled має вищий пріоритет над Disabled. Наприклад, якщо втулок зазначено як в multiPoint.Enabled та multiPoint.Disabled, втулок буде активовано. Подібним чином, включення multiPoint.Disabled = '*' і multiPoint.Enabled = pluginA все ще зареєструє цей конкретний втулок через MultiPoint. Це слідує тій же поведінці, що й у всіх інших конфігураціях точок розширення.
Ресурси, які слід враховувати при оцінюванні. Стандартний набір ресурсів включає "cpu" та "memory" з однаковою вагою. Дозволені ваги від 1 до 100. Стандартна вага дорівнює 1, якщо не вказана або явно встановлена в 0.
UtilizationShapePoint представляє окрему точку функції пріоритету.
Поле
Опис
utilization[Обовʼязково] int32
Utilization (вісь x). Дійсні значення від 0 до 100. Повністю використаний вузол відповідає 100.
score[Обовʼязково] int32
Оцінка, присвоєна даній утилізації (вісь y). Дійсні значення від 0 до 10.
14.13 - kubeadm Configuration (v1beta3)
Огляд
Пакунок v1beta3 визначає версію v1beta3 формату конфігураційного файлу kubeadm. Ця версія покращує формат v1beta2, виправляючи деякі незначні проблеми і додаючи кілька нових полів.
Список змін з версії v1beta2:
Видалено застаріле поле "ClusterConfiguration.useHyperKubeImage". Kubeadm більше не підтримує образ hyperkube.
Поле "ClusterConfiguration.dns.type" було видалено, оскільки CoreDNS є єдиним типом DNS-сервера, який підтримується kubeadm.
Додано теги "datapolicy" до полів, які містять секрети. Це призведе до того, що значення полів буде пропущено, коли структури API буде надруковано за допомогою klog.
Додано "InitConfiguration.skipPhases", "JoinConfiguration.SkipPhases", щоб дозволити пропустити список фаз під час виконання команд kubeadm init/join.
Додано "InitConfiguration.nodeRegistration.imagePullPolicy" та "JoinConfiguration.nodeRegistration.imagePullPolicy", щоб дозволити вказати політику отримання образів під час kubeadm "init" та "join". Значення має бути одним з "Always", "Never" або "IfNotPresent". "IfNotPresent" — це стандартне значення, яке використовувалося до цього оновлення.
Додано "InitConfiguration.patches.directory", "JoinConfiguration.patches.directory", щоб дозволити користувачеві конфігурувати теку, з якої буде братися патч для компонентів, розгорнутих за допомогою kubeadm.
Перенесено API BootstrapToken* та повʼязані з ним утиліти з групи API "kubeadm" до нової групи "bootstraptoken". API kubeadm версії v1beta3 більше не містить структур BootstrapToken*.
Міграція зі старих версій конфігурації kubeadm
kubeadm v1.15.x і новіше можна використовувати для міграції з v1beta1 на v1beta2.
kubeadm v1.22.x і новіші більше не підтримують v1beta1 і старіші API, але можуть бути використані для міграції з v1beta2 на v1beta3.
kubeadm v1.27.x і новіші більше не підтримують v1beta2 і старіші API.
Основи
Найкращим способом налаштування kubeadm є передача конфігураційного файлу у форматі YAML з опцією --config. Деякі з параметрів конфігурації, визначених у конфігураційному файлі kubeadm, також доступні як прапорці командного рядка, але у цьому випадку підтримуються лише найпоширеніші/простіші випадки використання.
Конфігураційний файл kubeadm може містити декілька типів конфігурацій, розділених трьома тире (---).
Перелік типів конфігурацій, які необхідно включити до конфігураційного файлу, залежить від дії, яку ви виконуєте (init або join), а також від параметрів конфігурації, які ви збираєтесь використовувати (стандартні або розширені налаштування).
Якщо деякі типи конфігурацій не передбачено або передбачено лише частково, kubeadm використовуватиме стандартні значення; стандартно kubeadm також забезпечує узгодженість значень між компонентами, коли це необхідно (наприклад, прапорець --cluster-cidr на менеджері контролерів та clusterCIDR у kube-proxy).
Користувачам завжди дозволено перевизначати стандартні значення, за винятком невеликої підгрупи налаштувань, що мають стосунок до безпеки (наприклад, примусово вмикати режим авторизації Node і RBAC на api-сервері).
Якщо користувач надасть типи конфігурації, які не очікуються для дії, яку ви виконуєте, kubeadm проігнорує ці типи і видасть попередження.
Типи конфігурації Kubeadm init
При виконанні kubeadm init з опцією --config можуть бути використані наступні типи конфігурацій: InitConfiguration, ClusterConfiguration, KubeProxyConfiguration, KubeletConfiguration, але тільки один з них поміж InitConfiguration та ClusterConfiguration є обовʼязковим.
Тип InitConfiguration слід використовувати для налаштування параметрів часу виконання, якими у випадку kubeadm init є конфігурація токена завантажувача та всі параметри, специфічні для вузла, на якому виконується kubeadm, включно з ними:
NodeRegistration, що містить поля, які стосуються реєстрації нового вузла у кластері; використовуйте його, щоб налаштувати імʼя вузла, сокет CRI для використання або будь-які інші параметри, які мають застосовуватися лише до цього вузла (наприклад, ip вузла).
LocalAPIEndpoint, що представляє точку доступу до екземпляра сервера API, який буде розгорнуто на цьому вузлі; використовуйте його, наприклад, для налаштування адреси оголошення сервера API.
Тип InitConfiguration слід використовувати для налаштування параметрів часу виконання, якими у випадку kubeadm init є конфігурація токена завантажувача та всі параметри, специфічні для вузла, на якому виконується kubeadm, включно з ними:
NodeRegistration, що містить поля, які стосуються реєстрації нового вузла у кластері; використовуйте його, щоб налаштувати імʼя вузла, сокет CRI для використання або будь-які інші параметри, які мають застосовуватися лише до цього вузла (наприклад, ip вузла).
LocalAPIEndpoint, що представляє точку доступу до екземпляра сервера API, який буде розгорнуто на цьому вузлі; використовуйте його, наприклад, для налаштування адреси оголошення сервера API.
Тип ClusterConfiguration слід використовувати для налаштування параметрів всього кластера, включаючи налаштування для:
networking, що містить конфігурацію мережевої топології кластера; використовуйте їх, наприклад, для налаштування підмережі Pod або підмережі сервісів.
etcd: використовуйте для налаштування локального etcd або для налаштування сервера API для використання зовнішнього кластера etcd.
конфігурації kube-apiserver, kube-scheduler, kube-controller-manager; використовуйте для налаштування компонентів панелі управління шляхом додавання індивідуальних налаштувань або перевизначення стандартних налаштувань kubeadm.
Тип KubeProxyConfiguration слід використовувати для зміни конфігурації, що передається екземплярам kube-proxy, розгорнутим у кластері. Якщо цей обʼєкт не надано або надано лише частково, kubeadm застосовує стандартні значення.
Тип KubeletConfiguration слід використовувати для зміни конфігурацій, які буде передано всім екземплярам kubelet, розгорнутим у кластері. Якщо цей обʼєкт не надано або надано лише частково, kubeadm застосовує стандартні налаштування.
Тип JoinConfiguration слід використовувати для налаштування параметрів часу виконання, якими у випадку kubeadm join є метод виявлення, що використовується для доступу до інформації про кластер, а також всі налаштування, специфічні для вузла, на якому виконується kubeadm, включно з:
nodeRegistration, що містить поля, які стосуються реєстрації нового вузла у кластері; використовуйте його, щоб налаштувати імʼя вузла, сокет CRI для використання або будь-які інші параметри, які мають застосовуватися лише до цього вузла (наприклад, ip вузла).
apiEndpoint, що представляє точку доступу до екземпляра сервера API, який буде розгорнуто на цьому вузлі.
token використовується для встановлення двосторонньої довіри між вузлами та панелями управління. Використовується для приєднання вузлів до кластера.
description string
description встановлює зрозуміле людини повідомлення про те, чому існує цей токен і для чого він використовується, щоб інші адміністратори знали його призначення.
expires вказує на мітку часу, коли цей токен закінчується. Стандартно встановлюється динамічно під час виконання на основі ttl. expires та ttl взаємовиключні.
usages []string
usages описує способи, якими цей токен може бути використаний. Стандартно може бути використаний для встановлення двосторонньої довіри, але це можна змінити тут.
groups []string
groups визначає додаткові групи, з якими цей токен буде автентифікуватися, якщо/коли використовуватиметься для автентифікації
BootstrapTokenString — це токен у форматі abcdef.abcdef0123456789, який використовується як для валідації практичності API-сервера з погляду вузла, що приєднується, так і як метод автентифікації вузла на етапі завантаження
у фазі "kubeadm join". Цей токен є і повинен бути короткотривалим.
Поле
Опис
-[Обовʼязково] string
Опис відсутній.
-[Обовʼязково] string
Опис відсутній.
ClusterConfiguration
ClusterConfiguration містить конфігурацію для всього кластера kubeadm.
networking містить конфігурацію для мережевої топології кластера.
kubernetesVersion string
kubernetesVersion — це цільова версія панелі управління.
controlPlaneEndpoint string
controlPlaneEndpoint встановлює стабільну IP-адресу або DNS-імʼя для панелі управління. Це може бути дійсна IP-адреса або субдомен RFC-1123 DNS з додатковим TCP портом. Якщо controlPlaneEndpoint не вказано, використовуються advertiseAddress + bindPort; якщо controlPlaneEndpoint вказано без TCP порту, використовується bindPort. Можливі варіанти використання:
У кластері з більше ніж одним екземпляром панелі управління це поле повинно бути присвоєно адресу зовнішнього балансувальника навантаження перед екземплярами панелі управління.
У середовищах з обовʼязковим перерозподілом вузлів controlPlaneEndpoint може бути використаний для призначення стабільного DNS панелі управління.
dns визначає опції для DNS надбудови, встановленої в кластері.
certificatesDir string
certificatesDir вказує, де зберігати або шукати всі необхідні сертифікати.
imageRepository string
imageRepository встановлює реєстр контейнерів для завантаження образів. Якщо порожнє, стандартно буде використано registry.k8s.io. Якщо версія Kubernetes є CI-збіркою (версія Kubernetes починається з ci/), gcr.io/k8s-staging-ci-images буде використовуватись для компонентів панелі управління та для kube-proxy, тоді як registry.k8s.io буде використано для всіх інших образів.
featureGates map[string]bool
featureGates містить функціональні можливості, увімкнені користувачем.
clusterName string
Назва кластера.
InitConfiguration
InitConfiguration містить список елементів, специфічних для "kubeadm init"-тільки під час виконання. Тільки інформація kubeadm init. Ці поля використовуються виключно під час першого запуску kubeadm init. Після цього інформація в цих полях НЕ завантажується в kubeadm-config ConfigMap, який використовується, наприклад, під час kubeadm upgrade. Ці поля мають бути порожніми.
bootstrapTokens використовується під час kubeadm init і описує набір Bootstrap Tokens для створення. Ця інформація НЕ завантажується в kubeadm cluster configmap, частково через її конфіденційний характер
localAPIEndpoint представляє точку доступу екземпляра API сервера, яка розгорнута на цьому вузлі панелі управління. У HA-налаштуваннях це відрізняється від ClusterConfiguration.controlPlaneEndpoint в тому сенсі, що controlPlaneEndpoint є глобальною точкою доступу для кластера, яка потім розподіляє запити на кожен окремий API сервер. Цей конфігураційний обʼєкт дозволяє налаштувати, яку IP-адресу/DNS-імʼя та порт локальний API сервер оголошує як доступні. Стандартно kubeadm намагається автоматично визначити типову IP-адресу інтерфейсу та використовувати її, але в разі невдачі ви можете встановити бажане значення тут.
certificateKey string
certificateKey встановлює ключ, яким сертифікати та ключі шифруються перед завантаженням у Secret в кластері під час фази uploadcerts init. Ключ сертифіката є кодуванням шістнадцяткового рядка, який є AES ключем розміром 32 байти.
skipPhases []string
skipPhases — це список фаз, які потрібно пропустити під час виконання команди. Список фаз можна отримати за допомогою команди kubeadm init --help. Прапорець "--skip-phases" має пріоритет перед цим полем.
nodeRegistration містить поля, що стосуються реєстрації нового
вузла панелі управління в кластері.
caCertPath string
caCertPath — це шлях до SSL центра сертифікації, що використовується для захисту звʼязку між вузлом та панеллю управління. Стандартно — /etc/kubernetes/pki/ca.crt.
controlPlane визначає додатковий екземпляр панелі управління, який буде розгорнутий на приєднаному вузлі. Якщо nil, додатковий екземпляр панелі управління не буде розгорнуто.
skipPhases []string
skipPhases — це список фаз, які потрібно пропустити під час виконання команди. Список фаз можна отримати за допомогою команди kubeadm join --help. Прапорець --skip-phases має пріоритет перед цим полем.
BootstrapTokenDiscovery використовується для налаштування параметрів виявлення на основі маркера початкового завантаження.
Поле
Опис
token[Обовʼязкове] string
token — це маркер, що використовується для перевірки інформації про кластер, отриманої з панелі управління.
apiServerEndpoint string
apiServerEndpoint — це IP-адреса або доменне імʼя до API сервера, з якого буде отримана інформація.
caCertHashes []string
caCertHashes вказує набір публічних ключів для перевірки при використанні виявлення на основі маркера. Кореневий сертифікат CA, знайдений під час виявлення, повинен відповідати одному з цих значень. Зазначення порожнього набору відключає закріплення кореневого сертифіката CA, що може бути небезпечним. Кожен хеш зазначається у форматі <type>:<value>, де єдиним підтримуваним типом на даний момент є "sha256". Це хеш SHA-256 у шістнадцятковому форматі, який обчислюється за допомогою обʼєкта Subject Public Key Info (SPKI) у DER-кодованому форматі ASN.1. Ці хеші можна обчислити за допомогою, наприклад, OpenSSL.
unsafeSkipCAVerification bool
unsafeSkipCAVerification дозволяє виявлення на основі маркера без перевірки CA за допомогою caCertHashes. Це може послабити безпеку kubeadm, оскільки інші вузли можуть видавати себе за панель управління.
ControlPlaneComponent містить налаштування, спільні для компонентів панелі управління кластера.
Поле
Опис
extraArgs map[string]string
extraArgs — це додатковий набір параметрів, що передаються компоненту панелі кправління. Ключ у цьому map — це імʼя параметра, як воно зʼявляється в командному рядку, без попереднього дефіса(ів).
file використовується для вказівки файлу або URL-адреси до файлу kubeconfig, з якого завантажується інформація про кластер.
bootstrapToken і file є взаємовиключними.
tlsBootstrapToken string
tlsBootstrapToken є токеном, який використовується для TLS bootstrapping. Якщо bootstrapToken встановлено, це поле стандартно встановлюється на .bootstrapToken.token, але може бути перевизначено. Якщо встановлено file, це поле має бути встановлено у випадку, якщо KubeConfigFile не містить іншої інформації для автентифікації.
ExternalEtcd описує зовнішній кластер etcd. Kubeadm не має знань про знаходження файлів сертифікатів, і вони повинні бути надані.
Поле
Опис
endpoints[Обовʼязково] []string
endpoints містить список учасників etcd.
caFile[Обовʼязково] string
caFile є файлом сертифіката SSL Certificate Authority (CA), який використовується для захисту звʼязку etcd. Обовʼязковий, якщо використовується TLS-зʼєднання.
certFile[Обовʼязково] string
certFile є файлом сертифіката SSL, який використовується для захисту звʼязку etcd. Обовʼязковий, якщо використовується TLS-зʼєднання.
keyFile[Обовʼязково] string
keyFile є файлом ключа SSL, який використовується для захисту звʼязку etcd. Обовʼязковий, якщо використовується TLS-зʼєднання.
ImageMeta дозволяє налаштувати образи, що використовуються для компонентів, які не походять з процесу випуску Kubernetes/Kubernetes
Поле
Опис
imageRepository string
imageRepository встановлює реєстр контейнерів, з якого будуть завантажені образи. Якщо не встановлено, буде використовуватися imageRepository, визначений у ClusterConfiguration.
imageTag string
imageTag дозволяє вказати теґ для образу. Якщо це значення встановлено, kubeadm не буде автоматично змінювати версію вище зазначених компонентів під час оновлень.
localAPIEndpoint представляє точку доступу для екземпляра API-сервера, який буде розгорнуто на цьому вузлі.
certificateKey string
certificateKey є ключем, який використовується для дешифрування сертифікатів після їх завантаження з секрету під час приєднання нового вузла панелі упралвіння. Відповідний ключ шифрування знаходиться в InitConfiguration. Ключ сертифіката є рядком у шістнадцятковому кодуванні, що є AES-ключем розміром 32 байти.
ImageMeta дозволяє налаштувати контейнер, що використовується для etcd.
dataDir[Обовʼязкове] string
dataDir — це тека, в якій etcd розміщуватиме свої дані. Стандартно використовується "/var/lib/etcd".
extraArgs map[string]string
extraArgs — додаткові аргументи, що передаються бінарному файлу etcd при його запуску всередині статичного Pod. Ключ у цьому map є імʼям прапорця, як він зʼявляється на командному рядку, але без дефісів на початку.
serverCertSANs []string
serverCertSANs задає додаткові Subject Alternative Names (SANs) для сертифіката підпису сервера etcd.
peerCertSANs []string
peerCertSANs задає додаткові Subject Alternative Names (SANs) для сертифіката підпису peer etcd.
NodeRegistrationOptions містить поля, що стосуються реєстрації нової панелі управління або вузла в кластері, як через kubeadm init, так і через kubeadm join.
Поле
Опис
name string
name — це поле .metadata.name обʼєкта Node API, який буде створений в процесі kubeadm init або kubeadm join. Це поле також використовується в полі CommonName клієнтського сертифікату kubelet до API сервера. Стандартно буде використано імʼя хоста вузла, якщо не надано.
criSocket string
criSocket використовується для отримання інформації про середовище виконання контейнерів. Ця інформація буде анотована до обʼєкта Node API для подальшого використання.
taints вказує на taints, з якими обʼєкт Node API повинен бути зареєстрований. Якщо це поле не встановлено, тобто nil, воно буде стандартно з control-plane taint для вузлів control-plane. Якщо ви не хочете taint для вашого вузла control-plane, встановіть в це поле порожній список, тобто taints: [] у YAML файлі. Це поле використовується виключно для реєстрації вузлів.
kubeletExtraArgs map[string]string
kubeletExtraArgs передає додаткові аргументи до kubelet. Аргументи тут передаються в командний рядок kubelet через файл середовища kubeadm, що створюється під час виконання, щоб kubelet міг його використовувати. Це переважає загальну базову конфігурацію в ConfigMap kubelet-config. Прапорці мають вищий пріоритет під час парсингу. Ці значення локальні та специфічні для вузла, на якому виконується kubeadm. Ключ у цьому словнику — це назва прапорці, як вона зʼявляється в командному рядку, але без початкових дефісів.
ignorePreflightErrors []string
ignorePreflightErrors надає список помилок перед запуском, які слід ігнорувати під час реєстрації поточного вузла, наприклад, IsPrevilegedUser,Swap. Значення all ігнорує помилки від усіх перевірок.
imagePullPolicy вказує політику для витягування образів під час операцій kubeadm "init" та "join". Значення цього поля повинно бути одне з "Always", "IfNotPresent" або "Never". Якщо це поле не встановлено, kubeadm стандартно встановить його в "IfNotPresent", або витягне необхідні образи, якщо вони не присутні на хості.
Patches містить параметри, повʼязані з застосуванням патчів до компонентів, розгорнутих за допомогою kubeadm.
Поле
Опис
directory string
directory — це шлях до теки, що містить файли, названі
"target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd". "patchtype" може бути одним з "strategic", "merge" або "json" та відповідати форматам патчів, підтримуваних kubectl. Стандартно "patchtype" — "strategic". "extension" повинна бути або "json", або "yaml". "suffix" — це необовʼязковий рядок, який може бути використаний для визначення, які патчі застосовуються першими за алфавітним порядком.
14.14 - kubeadm Configuration (v1beta4)
Огляд
Пакунок v1beta4 визначає версію v1beta4 формату конфігураційного файлу kubeadm. Ця версія покращує формат v1beta3, виправляючи деякі незначні проблеми і додаючи кілька нових полів.
Список змін з версії v1beta3:
Підтримуйте власні змінні оточення у компонентах панелі управління у розділі ClusterConfiguration. Використовуйте apiServer.extraEnvs, controllerManager.extraEnvs, scheduler.extraEnvs, etcd.local.extraEnvs.
Тип API ResetConfiguration тепер підтримується у v1beta4. Користувачі можуть скинути конфігурацію вузла, передавши kubeadm reset файл --config.
режим dry-run тепер налаштовується у InitConfiguration та JoinConfiguration.
Замінено існуючі map додаткових аргументів типу рядок/рядок на структуровані додаткові аргументи, які підтримують дублікати. Зміни застосовано до ClusterConfiguration — apiServer.extraArgs, controllerManager.extraArgs, scheduler.extraArgs, etcd.local.extraArgs. Також до nodeRegistration.kubeletExtraArgs.
Додано ClusterConfiguration.encryptionAlgorithm, за допомогою якого можна задати алгоритм асиметричного шифрування, що використовується для ключів і сертифікатів цього кластера. Може бути один з "RSA-2048" (стандартно), "RSA-3072", "RSA-4096" або "ECDSA-P256".
Додано ClusterConfiguration.dns.disabled та ClusterConfiguration.proxy.disabled, за допомогою яких можна вимкнути надбудови CoreDNS та kube-proxy під час ініціалізації кластера. Якщо пропустити повʼязані з ними етапи під час створення кластера, ці ж поля буде встановлено у значення true.
Додано поле nodeRegistration.imagePullSerial у InitConfiguration та JoinConfiguration, за допомогою якого можна контролювати, чи kubeadm витягує образи послідовно або паралельно.
API kubeadm UpgradeConfiguration тепер підтримується у v1beta4 при передачі --config до команд kubeadm upgrade. Використання конфігурації компонентів для kubelet та kube-proxy, InitConfiguration та ClusterConfiguration є застарілим і буде проігноровано при передачі --config до команд upgrade.
Додано структуру Timeouts до InitConfiguration, JoinConfiguration, ResetConfiguration та UpgradeConfiguration, яку можна використовувати для налаштування різних тайм-аутів. Поле ClusterConfiguration.timeoutForControlPlane замінено на Timeouts.controlPlaneComponentHealthCheck. Поле JoinConfiguration.discovery.timeout замінено на timeouts.Discovery.
Додано поля certificateValidityPeriod та caCertificateValidityPeriod до ClusterConfiguration. Ці поля можна використовувати для контролю терміну дії сертифікатів, згенерованих kubeadm під час виконання таких підкоманд, як init, join, upgrade і certs. Стандартні значення залишаються 1 рік для сертифікатів без CA і 10 років для сертифікатів з CA. Лише сертифікати без CA можна поновлювати командою kubeadm certs renew.
Міграція зі старих версій конфігурації kubeadm
kubeadm v1.15.x і новіше можна використовувати для міграції з v1beta1 на v1beta2.
kubeadm v1.22.x і новіші більше не підтримують v1beta1 і старіші API, але можуть бути використані для міграції з v1beta2 на v1beta3.
kubeadm v1.27.x і новіші більше не підтримують v1beta2 і старіші API.
kubeadm v1.31.x і новіше можна використовувати для міграції з v1beta3 на v1beta4.
Основи
Найкращим способом налаштування kubeadm є передача конфігураційного файлу у форматі YAML з опцією --config. Деякі з параметрів конфігурації, визначених у конфігураційному файлі kubeadm, також доступні як прапорці командного рядка, але цей спосіб підтримує лише найпоширеніші/найпростіші випадки використання.
Конфігураційний файл kubeadm може містити декілька типів конфігурацій, розділених трьома тире (---).
Перелік типів конфігурацій, які необхідно включити до конфігураційного файлу, залежить від дії, яку ви виконуєте (init або join), а також від параметрів конфігурації, які ви збираєтеся використовувати (стандартні або розширені налаштування).
Якщо деякі типи конфігурацій не передбачено або передбачено лише частково, kubeadm використовуватиме стандартні значення; стандартне налаштування kubeadm включає також забезпечення узгодженості значень між компонентами, коли це необхідно (наприклад, прапорець --cluster-cidr на менеджері контролерів та clusterCIDR на kube-proxy).
Користувачам завжди дозволено перевизначати стандартні значення, за винятком невеликої підгрупи налаштувань, що мають відношення до безпеки (наприклад, включення режиму авторизації Node і RBAC на api-сервері).
Якщо користувач надасть типи конфігурації, які не очікуються для дії, яку ви виконуєте, kubeadm проігнорує ці типи та виведе попередження.
Типи конфігурацій Kubeadm init
При виконанні kubeadm init з опцією --config можуть бути використані наступні типи конфігурацій: InitConfiguration, ClusterConfiguration, KubeProxyConfiguration, KubeletConfiguration, але тільки один з них між InitConfiguration і ClusterConfiguration є обовʼязковим.
Тип InitConfiguration слід використовувати для налаштування параметрів часу виконання, якими у випадку kubeadm init є конфігурація токена завантажувача та всі параметри, специфічні для вузла, на якому виконується kubeadm, включно з:
NodeRegistration, що містить поля, які стосуються реєстрації нового вузла у кластері; використовуйте його, щоб налаштувати імʼя вузла, сокет CRI для використання або будь-які інші параметри, які мають застосовуватися лише до цього вузла (наприклад, ip вузла).
LocalAPIEndpoint, що представляє точку доступу до екземпляра сервера API, який буде розгорнуто на цьому вузлі; використовуйте його, наприклад, для налаштування адреси оголошень сервера API.
Тип ClusterConfiguration слід використовувати для налаштування параметрів всього кластера, включаючи налаштування для:
networking, що зберігає конфігурацію мережевої топології кластера; використовуйте його, наприклад, для налаштування підмережі Pod або підмережі сервісів.
etcd: використовуйте його, наприклад, для налаштування локального etcd або для налаштування сервера API для використання зовнішнього кластера etcd.
конфігурації kube-apiserver, kube-scheduler, kube-controller-manager; використовуйте його для налаштування компонентів панелі управління, додаючи індивідуальні налаштування або перевизначаючи стандартні налаштування kubeadm.
Тип KubeProxyConfiguration слід використовувати для зміни конфігурації, що передається екземплярам kube-proxy, розгорнутим у кластері. Якщо цей обʼєкт не надано або надано лише частково, kubeadm застосовує стандартні значення.
Тип KubeletConfiguration слід використовувати для зміни конфігурацій, які буде передано всім екземплярам kubelet, розгорнутим у кластері. Якщо цей обʼєкт не надано або надано лише частково, kubeadm застосовує стандартні налаштування.
Тип JoinConfiguration слід використовувати для налаштування параметрів часу виконання, якими у випадку kubeadm join є метод виявлення, що використовується для доступу до інформації про кластер, а також всі налаштування, специфічні для вузла, на якому виконується kubeadm, включно з:
nodeRegistration, що містить поля, які стосуються реєстрації нового вузла у кластері; використовуйте його, щоб налаштувати імʼя вузла, сокет CRI для використання або будь-які інші параметри, які мають застосовуватися лише до цього вузла (наприклад, ip вузла).
apiEndpoint, що представляє точку доступу до екземпляра сервера API, який буде розгорнуто на цьому вузлі.
Типи конфігурацій Kubeadm reset
При виконанні kubeadm reset з опцією --config слід вказати тип ResetConfiguration.
Структура UpgradeConfiguration містить кілька підструктур, які застосовуються тільки різних команд kubeadm upgrade. Наприклад, apply використовується з командою kubeadm upgrade apply тож всі інші підструктури будуть проігноровані.
token використовується для встановлення двосторонньої довіри між вузлами та панеллю управління. Використовується для приєднання вузлів до кластера.
description string
description встановлює зрозуміле людині повідомлення про те, чому існує цей токен і для чого він використовується, щоб інші адміністратори могли зрозуміти його призначення.
expires вказує на момент, коли цей токен закінчує свою дію. Стандартно встановлюється динамічно під час виконання на основі ttl.
expires та ttl є взаємовиключними.
usages []string
usages описує способи, якими цей токен може бути використаний. Може стандартно використовуватися для встановлення двосторонньої довіри, але це можна змінити тут.
groups []string
groups вказує на додаткові групи, до яких цей токен буде автентифікуватися при використанні для автентифікації
BootstrapTokenString є токеном формату abcdef.abcdef0123456789, який використовується як для перевірки практичності API сервера з погляду вузла, що приєднується, так і як метод автентифікації вузла в фазі bootstrap команди "kubeadm join". Цей токен є і має бути короткочасним.
Поле
Опис
-[Обовʼязкове] string
Опис не надано.
-[Обовʼязкове] string
Опис не надано.
ClusterConfiguration
ClusterConfiguration містить конфігурацію на рівні кластера для кластера kubeadm.
networking містить конфігурацію для мережевої топології кластера.
kubernetesVersion string
kubernetesVersion — це цільова версія панелі управління.
controlPlaneEndpoint string
controlPlaneEndpoint встановлює стабільну IP-адресу або DNS-імʼя для панелі управління; Може бути дійсною IP-адресою або піддоменом RFC-1123 DNS, обидва з необовʼязковим TCP портом. Якщо controlPlaneEndpoint не зазначено, використовуються advertiseAddress + bindPort; якщо controlPlaneEndpoint зазначено, але без TCP порту, використовується bindPort. Можливі використання:
У кластері з більше ніж однією панеллю управління, це поле має бути присвоєно адресі зовнішнього балансувальника навантаження перед екземплярами панелі управління.
У середовищах з примусовою утилізацією вузлів, controlPlaneEndpoint може використовуватися для присвоєння стабільного DNS панелі управління.
proxy визначає параметри для надбудови проксі, встановленої в кластері.
certificatesDir string
certificatesDir вказує, де зберігати або шукати всі необхідні сертифікати.
imageRepository string
imageRepository встановлює реєстр контейнерів для витягування зображень. Якщо порожньо, стандартно використовується registry.k8s.io. У випадку, якщо версія Kubernetes є CI-збіркою (версія Kubernetes починається з ci/) gcr.io/k8s-staging-ci-images буде використовуватись для компонентів панелі управління та для kube-proxy, тоді як registry.k8s.io буде використовуватися для всіх інших образів.
featureGates map[string]bool
featureGates містить функціональні можливості, увімкнені користувачем.
encryptionAlgorithm містить тип асиметричного алгоритму шифрування, що використовується для ключів та сертифікатів. Може бути один з "RSA-2048" (стандартний алгоритм), "RSA-3072", "RSA-4096" або "ECDSA-P256".
caCertificateValidityPeriod вказує термін дії для СА сертифікату, згенерованого kubeadm. Стандартне значення: 87600h (365 днів * 24 годин * 10 = 10 років)
InitConfiguration
InitConfiguration містить список елементів, що специфічні для тільки для запуску kubeadm init. Ці поля використовуються лише під час першого запуску kubeadm init. Після цього інформація в цих полях НЕ завантажується до ConfigMap kubeadm-config, який використовується, наприклад, при kubeadm upgrade. Ці поля повинні бути опущені.
bootstrapTokens враховується під час kubeadm init і описує набір Bootstrap Token для створення. Ця інформація НЕ завантажується до ConfigMap кластера kubeadm, частково через її чутливий характер.
dryRun[Обовʼязкове] bool
dryRun вказує, чи увімкнено режим перевірки, не застосовувати жодні зміни в режимі перевірки, просто вивести те, що буде зроблено.
localAPIEndpoint представляє точку доступу до екземпляра API сервера, що розгорнутий на цьому вузлі панелі управління. У налаштуваннях HA це відрізняється від ClusterConfiguration.controlPlaneEndpoint тим, що controlPlaneEndpoint є глобальною точкою доступу для кластера, яка потім розподіляє запити між кожним окремим API сервером. Цей обʼєкт конфігурації дозволяє налаштувати, на якій IP/DNS-імʼя та порт локальний API сервер оголошує свою доступність. Стандартно kubeadm намагається автоматично визначити IP адресу інтерфейсу та використовувати її, але якщо цей процес не вдалося, ви можете встановити бажане значення тут.
certificateKey string
certificateKey встановлює ключ, яким шифруються сертифікати та ключі перед завантаженням в Secret в кластері під час фази uploadcerts init. Ключ сертифіката є рядком у форматі hex, що є AES ключем розміром 32 байти.
skipPhases []string
skipPhases є списком фаз, які потрібно пропустити під час виконання команди. Список фаз можна отримати за допомогою команди kubeadm init --help. Прапорець --skip-phases має пріоритет над цим полем.
nodeRegistration містить поля, що стосуються реєстрації нового вузла панелі управління в кластері.
caCertPath string
caCertPath є шляхом до SSL центру сертифікації, що використовується для забезпечення комунікацій між вузлом та панеллю управління. Стандартно — /etc/kubernetes/pki/ca.crt.
controlPlane визначає додатковий екземпляр панелі управління, який буде розгорнуто на вузлі, що приєднується. Якщо nil, жоден додатковий екземпляр панелі управління не буде розгорнуто.
skipPhases []string
skipPhases є списком фаз, які потрібно пропустити під час виконання команди. Список фаз можна отримати за допомогою команди kubeadm join --help. Прапорець --skip-phases має пріоритет над цим полем.
timeouts містить різні тайм-аути, які застосовуються до команд kubeadm.
ResetConfiguration
ResetConfiguration містить список полів, що є специфічними для режиму kubeadm reset.
Поле
Опис
apiVersion string
kubeadm.k8s.io/v1beta4
kind string
ResetConfiguration
cleanupTmpDir bool
cleanupTmpDir вказує, чи слід очищати теку /etc/kubernetes/tmp під час процесу скидання.
certificatesDir string
certificatesDir вказує теку, де зберігаються сертифікати. Якщо вказано, вона буде очищена під час процесу скидання.
criSocket string
criSocket використовується для отримання інформації про середовище виконання контейнерів для видалення контейнерів. Якщо criSocket не вказано через прапорець або файл конфігурації, kubeadm спробує виявити дійсний CRI сокет.
dryRun bool
dryRun вказує, чи увімкнено режим перевірки. Якщо так, жодні зміни не застосовуються, а просто виводиться те, що буде зроблено.
force bool
Флаг force інструктує kubeadm скинути вузол без запиту підтвердження.
ignorePreflightErrors []string
ignorePreflightErrors надає список помилок перед стартом, які слід ігнорувати під час процесу скидання, наприклад, IsPrivilegedUser,Swap. Значення all ігнорує помилки з усіх перевірок.
skipPhases []string
skipPhases є списком фаз, які потрібно пропустити під час виконання команди. Список фаз можна отримати за допомогою команди kubeadm reset phase --help.
unmountFlags []string
unmountFlags — список прапорців syscall unmount2(), які kubeadm може використовувати при розмонтуванні тек під час " reset". Цей прапорець може бути одним з: "MNT_FORCE", "MNT_DETACH", "MNT_EXPIRE", "UMOUNT_NOFOLLOW". Стандартно цей список порожній.
BootstrapTokenDiscovery використовується для налаштування параметрів для виявлення з використанням токенів.
Поле
Опис
token[Обовʼязкове] string
token є токеном, що використовується для перевірки інформації про кластер, отриманої від панелі управління.
apiServerEndpoint string
apiServerEndpoint є IP-адресою або доменним імʼям API-сервера, з якого буде отримана інформація.
caCertHashes []string
caCertHashes вказує набір публічних ключів, які потрібно перевірити при використанні виявлення на основі токенів. Кореневий CA, знайдений під час виявлення, повинен відповідати одному з цих значень. Вказівка порожнього набору вимикає привʼязку кореневого CA, що може бути небезпечним. Кожен хеш вказується як <type>:<value>, де єдиний підтримуваний тип наразі — "sha256". Це хеш SHA-256 коду обʼєкта Subject Public Key Info (SPKI) у DER-кодованому ASN.1. Ці хеші можна розрахувати за допомогою, наприклад, OpenSSL.
unsafeSkipCAVerification bool
unsafeSkipCAVerification дозволяє виявлення на основі токенів без перевірки CA через caCertHashes. Це може ослабити безпеку kubeadm, оскільки інші вузли можуть видавати себе за панель управління.
extraArgs — це додатковий набір прапорців, які передаються компоненту панелі управління. Назва аргументу в цьому списку є назвою прапорця, як вона зʼявляється в командному рядку, але без початковиї дефісів. Додаткові аргументи переважатимуть існуючі стандартні аргументи. Дублікати додаткових аргументів дозволені.
extraEnvs — це додатковий набір змінних середовища, які передаються компоненту панелі управління. Змінні середовища, передані за допомогою extraEnvs, переважатимуть будь-які існуючі змінні середовища або змінні середовища *_proxy, які kubeadm додає стандартно.
file використовується для вказівки файлу або URL на kubeconfig файл, з якого завантажується інформація про кластер. bootstrapToken і file є взаємовиключними.
tlsBootstrapToken string
tlsBootstrapToken є токеном, що використовується для TLS bootstrapping. Якщо bootstrapToken встановлено, це поле стандартно буде дорівнювати bootstrapToken.token, але його можна перевизначити. Якщо file встановлено, це поле повинно бути встановлено, якщо файл KubeConfigFile не містить іншої інформації для автентифікації.
ImageMeta дозволяє налаштувати образ, що використовується для компонентів, які не походять з процесу релізу Kubernetes/Kubernetes.
Поле
Опис
imageRepository string
imageRepository визначає реєстр контейнерів, з якого потрібно завантажити образи. Якщо не вказано, буде використано imageRepository, визначений в ClusterConfiguration.
imageTag string
imageTag дозволяє вказати тег для образу. У випадку, якщо це значення вказане, kubeadm не змінює автоматично версію вищезазначених компонентів під час оновлень.
localAPIEndpoint представляє точку доступу екземпляра API сервера, яка має бути розгорнута на цьому вузлі.
certificateKey string
certificateKey є ключем, що використовується для розшифрування сертифікатів після їх завантаження з Secret при приєднанні нового вузла панелі управління. Відповідний ключ шифрування знаходиться в InitConfiguration. Ключ сертифіката є рядком у шістнадцятковому кодуванні, який є AES ключем розміром 32 байти.
extraArgs є додатковими аргументами, що передаються бінарному файлу etcd при його запуску всередині статичного Pod. Назва аргументу в цьому списку є іменем прапорця, як вона зʼявляється в командному рядку, за винятком тире на початку. Додаткові аргументи переважатимуть існуючі стандартні аргументи. Дублювання додаткових аргументів дозволяється.
extraEnvs є додатковим набором змінних середовища для передачі компоненту панелі управління. Змінні середовища, передані за допомогою extraEnvs, перезаписуватимуть будь-які існуючі змінні середовища або змінні середовища *_proxy, які kubeadm додає стандартно.
serverCertSANs []string
serverCertSANs встановлює додаткові Subject Alternative Names (SANs) для сертифіката підпису сервера etcd.
peerCertSANs []string
peerCertSANs встановлює додаткові Subject Alternative Names (SANs) для сертифіката підпису peer etcd.
NodeRegistrationOptions містить поля, що стосуються реєстрації новоїпанелі управління або вузла в кластері, або через kubeadm init, або kubeadm join.
Поле
Опис
name string
name є полем .Metadata.Name обʼєкта Node API, який буде створений в операціях kubeadm init або kubeadm join. Це поле також використовується в полі CommonName клієнтського сертифіката kubelet для API сервера. Стандартно використовується імʼя хосту вузла, якщо не задано.
criSocket string
criSocket використовується для отримання інформації про середовище виконання контейнерів. Ця інформація буде анотована до обʼєкта Node API для подальшого використання.
taints вказує на taints, з якими обʼєкт Node API повинен бути зареєстрований. Якщо це поле не встановлено, тобто nil, воно буде стандартно з control-plane taint для вузлів control-plane. Якщо ви не хочете taint для вашого вузла control-plane, встановіть в це поле порожній список, тобто taints: [] у YAML файлі. Це поле використовується виключно для реєстрації вузлів.
kubeletExtraArgs передає додаткові аргументи до kubelet. Аргументи тут передаються командному рядку kubelet через файл середовища, який kubeadm записує під час виконання для джерела kubelet. Це переважає загальну базову конфігурацію у ConfigMap kubelet-config. Прапорці мають вищий пріоритет при розборі. Ці значення є локальними і специфічними для вузла, на якому виконується kubeadm. Назва аргументу в цьому списку є назвою прапорця, як вона зʼявляється в командному рядку, крім дефісів на початку. Додаткові аргументи переважають існуючі стандартні значення. Дублікати додаткових аргументів дозволені.
ignorePreflightErrors []string
ignorePreflightErrors надає масив помилок перед польотом, які слід ігнорувати при реєстрації поточного вузла, наприклад, 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки з усіх перевірок.
imagePullPolicy вказує політику витягування образів під час kubeadm init та join операцій. Значення цього поля має бути одне з "Always", "IfNotPresent" або "Never". Якщо це поле не задане, kubeadm стандартно встановить його в "IfNotPresent", або витягне необхідні образи, якщо вони не присутні на хості.
imagePullSerial bool
imagePullSerial вказує, чи витягування образів, яке виконує kubeadm, має відбуватися послідовно або паралельно. Стандартно: true
Patches містить опції, повʼязані із застосуванням патчів до компонентів, розгорнутих kubeadm.
Поле
Опис
directory string
directory є шляхом до теки, що містить файли, названі
"target[suffix][+patchtype].extension". Наприклад, "kube-apiserver0+merge.yaml" або просто "etcd.json". "target" може бути одним з "kube-apiserver", "kube-controller-manager", "kube-scheduler", "etcd", "kubeletconfiguration", "corednsdeployment". "patchtype" може бути одним з "strategic", "merge" або "json" і відповідає форматам патчів, підтримуваним kubectl. Стандартно "patchtype" є "strategic". "extension" має бути або "json", або "yaml". "suffix" є необовʼязковим рядком, який можна використовувати для визначення порядку застосування патчів за алфавітним порядком.
controlPlaneComponentHealthCheck є часом очікування для перевірки справності компонентів панелі управління, таких як API сервер, під час kubeadm init та kubeadm join. Стандартно — 4м
kubernetesAPICall є часом очікування для завершення запиту клієнта kubeadm до API сервера. Це застосовується до всіх типів методів (GET, POST тощо). Стандартно — 1м
UpgradeApplyConfiguration містить список параметрів конфігурації, які специфічні для команди kubeadm upgrade apply.
Поле
Опис
kubernetesVersion string
kubernetesVersion є цільовою версією панелі управління.
allowExperimentalUpgrades bool
allowExperimentalUpgrades інструктує kubeadm показувати нестабільні версії Kubernetes як альтернативу оновленню та дозволяє оновлення до альфа/бета/версії-кандидата Kubernetes. Стандартно — false
allowRCUpgrades bool
Увімкнення allowRCUpgrades покаже версії-кандидати релізів Kubernetes як альтернативу оновленню та дозволяє оновлення до версії-кандидата Kubernetes.
certificateRenewal bool
certificateRenewal інструктує kubeadm виконати поновлення сертифікатів під час оновлень. Стандартно — true
dryRun bool
dryRun вказує, чи увімкнено режим перевірки без змін, не застосовувати жодних змін, а лише виводити те, що буде зроблено.
etcdUpgrade bool
etcdUpgrade інструктує kubeadm виконати оновлення etcd під час оновлень. Стандартно — true
forceUpgrade bool
forceUpgrade вказує kubeadm оновити кластер без запиту підтвердження.
ignorePreflightErrors []string
ignorePreflightErrors надає список помилок перевірки перед виконанням, які слід ігнорувати під час процесу оновлення, наприклад, IsPrivilegedUser,Swap. Значення all ігнорує помилки з усіх перевірок.
patches містить параметри, повʼязані із застосуванням патчів до компонентів, розгорнутих kubeadm під час kubeadm upgrade.
printConfig bool
printConfig вказує, чи слід вивести конфігураційний файл, який буде використаний в оновленні.
skipPhases[Обовʼязкове] []string
SkipPhases є списком фаз, які слід пропустити під час виконання команди. ПРИМІТКА: Це поле наразі ігнорується для kubeadm upgrade apply, але в майбутньому буде підтримуватися.
imagePullPolicy визначає політику витягування образів під час операцій kubeadm upgrade apply. Значення цього поля має бути одним з "Always", "IfNotPresent" або "Never". Якщо це поле не встановлено, kubeadm автоматично встановить значення "IfNotPresent", або витягне потрібні образи, якщо їх немає на хості.
imagePullSerial bool
imagePullSerial вказує, чи витягування образів, яке виконує kubeadm, має відбуватися послідовно або паралельно. Стандартно: true
UpgradeNodeConfiguration містить список параметрів конфігурації, які специфічні для команди "kubeadm upgrade node".
Поле
Опис
certificateRenewal bool
certificateRenewal інструктує kubeadm виконати поновлення сертифікатів під час оновлень. Стандартно — true.
dryRun bool
dryRun вказує, чи увімкнено режим попереднього перегляду. Якщо так, зміни не будуть застосовані, а буде виведено тільки те, що було б зроблено.
etcdUpgrade bool
etcdUpgrade інструктує kubeadm виконати оновлення etcd під час оновлень. Стандартно — true.
ignorePreflightErrors []string
ignorePreflightErrors надає список помилок попередньої перевірки, які слід ігнорувати під час процесу оновлення, наприклад, 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки з усіх перевірок.
skipPhases []string
skipPhases є списком фаз, які слід пропустити під час виконання команди. Список фаз можна отримати за допомогою команди kubeadm upgrade node phase --help.
imagePullPolicy визначає політику витягування образів під час операцій kubeadm upgrade node. Значенням цього поля має бути одне з "Always", "IfNotPresent" або "Never". Якщо це поле не встановлено, kubeadm автоматично встановить значення "IfNotPresent", або витягне потрібні образи, якщо їх немає на хості.
imagePullSerial bool
imagePullSerial вказує, чи витягування образів, яке виконує kubeadm, має відбуватися послідовно або паралельно. Стандартно: true
UpgradePlanConfiguration містить список параметрів конфігурації, які специфічні для команди "kubeadm upgrade plan".
Поле
Опис
kubernetesVersion[Обовʼязкове] string
kubernetesVersion є цільовою версією панелі управління.
allowExperimentalUpgrades bool
allowExperimentalUpgrades інструктує kubeadm показувати нестабільні версії Kubernetes як альтернативу для оновлення і дозволяє оновлювати до альфа/бета/реліз кандидата версій Kubernetes. Стандартно — false
allowRCUpgrades bool
Увімкнення allowRCUpgrades показуватиме версії-кандидати релізу Kubernetes як альтернативу для оновлення та дозволить оновлення до версії кандидата релізу Kubernetes.
dryRun bool
dryRun вказує, чи увімкнено режим попереднього перегляду. Якщо так, зміни не будуть застосовані, а буде виведено тільки те, що було б зроблено.
ignorePreflightErrors []string
ignorePreflightErrors надає список помилок попередньої перевірки, які слід ігнорувати під час процесу оновлення, наприклад, 'IsPrivilegedUser,Swap'. Значення 'all' ігнорує помилки з усіх перевірок.
printConfig bool
printConfig вказує, чи слід виводити конфігураційний файл, який буде використовуватися в процесі оновлення.
CertificateAuthority - це шлях до файлу сертифіката для сертифікаційного центру.
certificate-authority-data []byte
CertificateAuthorityData містить PEM-кодовані сертифікати сертифікаційного центру. Перекриває CertificateAuthority.
proxy-url string
ProxyURL — це URL-адреса проксі, яка буде використовуватися для всіх запитів, здійснюваних цим клієнтом. Підтримуються URL-адреси зі схемами "http", "https" та "socks5". Якщо ця конфігурація не надана або порожній рядок, клієнт спробує створити конфігурацію проксі з змінних середовища http_proxy та https_proxy. Якщо ці змінні середовища не встановлені, клієнт не спробує проксіювати запити.
Проксіювання socks5 наразі не підтримує точки доступу потокової передачі spdy (exec, attach, port forward).
disable-compression bool
DisableCompression дозволяє клієнту відмовитися від стиснення відповіді для всіх запитів до сервера. Це корисно для прискорення запитів (зокрема списків), коли пропускна здатність мережі між клієнтом і сервером достатня, заощаджуючи час на стисненні (на стороні сервера) та розпакуванні (на стороні клієнта): https://github.com/kubernetes/kubernetes/issues/112296.
Context — це набір посилань на кластер (як спілкуватись з кластером Kubernetes), користувача (як користувач ідентифікує себе) і простір імен (з якою підмножиною ресурсів стандартно працювати)
Поле
Опис
cluster[Обовʼязково] string
Cluster —це імʼя кластера для цього контексту
user[Обовʼязково] string
AuthInfo — це імʼя authInfo для цього контексту
namespace string
Namespace — це стандартний простір імен, який використовується для запитів, де простір імен не вказаний
Env визначає додаткові змінні середовища для експонування процесу. Вони обʼєднуються з середовищем хосту, а також зі змінними, які client-go використовує для передачі аргументів втулку.
apiVersion[Обовʼязково] string
Бажана версія введення ExecInfo. Повернені ExecCredentials МАЮТЬ використовувати те ж саме кодування версії, що й ввод.
installHint[Обовʼязково] string
Цей текст показується користувачеві, коли виконуваний файл здається відсутнім. Наприклад, brew install foo-cli може бути гарною підказкою для встановлення foo-cli на системах Mac OS.
provideClusterInfo[Обовʼязково] bool
ProvideClusterInfo визначає, чи слід надавати інформацію про кластер, яка може потенційно містити дуже великі дані CA, цьому exec втулку як частину змінної середовища KUBERNETES_EXEC_INFO. Стандартно встановлено на false. Пакет k8s.io/client-go/tools/auth/exec надає допоміжні методи для отримання цієї змінної середовища.
InteractiveMode визначає звʼязки цього втулку зі стандартним вводом. Дійсні значення: "Never" (цей exec втулок ніколи не використовує стандартний ввод), "IfAvailable" (цей exec втулок хоче використовувати стандартний ввод, якщо він доступний) або "Always" (цей exec втулок вимагає стандартний ввод для функціонування). Див. значення ExecInteractiveMode для більш детальної інформації.
Якщо APIVersion — client.authentication.k8s.io/v1alpha1 або client.authentication.k8s.io/v1beta1, то це поле є необовʼязковим і стандартно встановлено у "IfAvailable" при відсутності значення. В іншому випадку це поле є обовʼязковим.
CredentialProviderConfig є конфігурацією, що містить інформацію про кожного exec credential provider. Kubelet читає цю конфігурацію з диска та активує кожного провайдера відповідно до типу CredentialProvider.
providers є списком втулків провайдерів облікових даних, які будуть активовані kubelet. Кілька провайдерів можуть відповідати одному образу, в такому випадку облікові дані з усіх провайдерів будуть повернуті kubelet. Якщо кілька провайдерів викликаються для одного образу, результати обʼєднуються. Якщо провайдери повертають перекриваючі ключі автентифікації, використовується значення з провайдера, що знаходиться раніше в цьому списку.
CredentialProvider представляє exec втулок, який буде викликаний kubelet. Втулок викликається лише тоді, коли образ, що завантажується, відповідає образам, які обробляє втулок (див. matchImages).
Поле
Опис
name[Обовʼязково] string
name є обовʼязковим імʼям провайдера облікових даних. Назва повинна відповідати імені виконуваного файлу провайдера, яке бачить kubelet. Виконуваний файл повинен бути в директорії bin kubelet (встановленій за допомогою прапорця --image-credential-provider-bin-dir).
matchImages[Обовʼязково] []string
matchImages є обовʼязковим списком рядків, які використовуються для зіставлення з образами, щоб визначити, чи потрібно викликати цього провайдера. Якщо один з рядків відповідає запитаному образу від kubelet, втулок буде викликаний і отримає можливість надати облікові дані. Образи повинні містити домен реєстрації та URL шлях.
Кожен запис у matchImages є шаблоном, який може містити порт і шлях. Глоби можна використовувати в домені, але не в порті чи шляху. Глоби підтримуються як піддомени, наприклад '*.k8s.io' або 'k8s.*.io', та топ-рівневі домени, такі як 'k8s.*'. Підмножки часткових піддоменів, такі як 'app*.k8s.io', також підтримуються. Кожен глоб може відповідати тільки одному сегменту піддомену, тому '*.io' не відповідає '*.k8s.io'.
Зіставлення існує між образом і matchImage, коли всі з нижченаведених умов є істинними:
Обидва містять однакову кількість частин домену, і кожна частина має збіг.
URL шлях образу має бути префіксом цільового URL шляху образу.
Якщо imageMatch містить порт, порт також повинен мати збіг в образі.
defaultCacheDuration є стандартною тривалістю, впродовж якої втулок кешуватиме облікові дані в памʼяті, якщо тривалість кешу не надана у відповіді втулка. Це поле є обовʼязковим.
apiVersion[Обовʼязково] string
Обовʼязкова версія вхідного exec CredentialProviderRequest. Повернута CredentialProviderResponse МУСИТЬ використовувати таку ж версію кодування, як і вхідна. Поточні підтримувані значення:
Env визначає додаткові змінні середовища для передачі процесу. Вони обʼєднуються з середовищем хоста, а також змінними, які client-go використовує для передачі аргументів втулку.
CredentialProviderConfig є конфігурацією, що містить інформацію про кожен втулок облікових даних exec. Kubelet читає цю конфігурацію з диска та активує кожен втулок відповідно до типу CredentialProvider.
providers є списком втулків провайдерів облікових даних, які будуть активовані kubelet. Кілька провайдерів можуть відповідати одному образу, в такому випадку облікові дані з усіх провайдерів будуть повернуті kubelet. Якщо кілька провайдерів викликаються для одного образу, результати обʼєднуються. Якщо провайдери повертають перекриваючі ключі автентифікації, використовується значення з провайдера, що знаходиться раніше в цьому списку.
CredentialProvider представляє втулок exec, який буде викликаний kubelet. Втулок буде викликаний тільки тоді, коли образ, який завантажується, відповідає образам, які підтримуються втулком (див. matchImages).
Поле
Опис
name[Обовʼязково] string
name є обовʼязковою назвою постачальника облікових даних. Назва повинна відповідати назві виконуваного файлу постачальника, як його бачить kubelet. Виконуваний файл повинен знаходитися в теці bin kubelet (встановленій за допомогою прапорця --image-credential-provider-bin-dir).
matchImages[Обовʼязково] []string
matchImages є обовʼязковим списком рядків, які використовуються для зіставлення з образами, щоб визначити, чи потрібно викликати цього провайдера. Якщо один з рядків відповідає запитаному образу від kubelet, втулок буде викликаний і отримає можливість надати облікові дані. Образи повинні містити домен реєстрації та URL шлях.
Кожен запис у matchImages є шаблоном, який може містити порт і шлях. Глоби можуть використовуватися в домені, але не в порту чи шляху. Глоби підтримуються як піддомени, такі як *.k8s.io або k8s.*.io, і домени верхнього рівня, такі як k8s.*. Піддомени з частковими збігами, такі як app*.k8s.io, також підтримуються. Кожен шаблон може відповідати лише одному сегменту піддомена, тому *.io не відповідає *.k8s.io.
Відповідність існує між образами і matchImage, коли все з наведеного нижче є істинними:
Обидва містять однакову кількість частин домену, і кожна частина має збіг.
Шлях URL образу matchImage повинен бути префіксом шляху URL цільового образу.
Якщо imageMatch містить порт, порт також повинен мати збіг в образі.
defaultCacheDuration є стандартною тривалістю, впродовж якої втулок кешуватиме облікові дані в памʼяті, якщо тривалість кешу не надана у відповіді втулка. Це поле є обовʼязковим.
apiVersion[Обовʼязково] string
Обовʼязкова версія вхідного exec CredentialProviderRequest. Повернута CredentialProviderResponse МУСИТЬ використовувати таку ж версію кодування, як і вхідна. Поточні підтримувані значення:
credentialprovider.kubelet.k8s.io/v1alpha1
args []string
Аргументи, які слід передати команді при її виконанні.
Env визначає додаткові змінні середовища, які слід надати процесу. Вони обʼєднуються з середовищем хоста, а також з змінними, які використовує client-go для передачі аргументів втулку.
Максимальний час між очищенням логів. Якщо рядок, розбирається як тривалість (наприклад, "1s"). Якщо ціле число, максимальна кількість наносекунд (наприклад, 1с = 1000000000). Ігнорується, якщо обраний механізм логування записує повідомлення без буферизації.
Verbosity є порогом, який визначає, які повідомлення логу записуються. Стандартне значення — нуль, що записує лише найбільш важливі повідомлення. Більші значення дозволяють додаткові повідомлення. Повідомлення про помилки завжди записуються.
[Alpha] Options містить додаткові параметри, специфічні для різних форматів логування. Використовуються лише параметри для обраного формату, але всі вони перевіряються. Доступно тільки при увімкненій функціональній можливості LoggingAlphaOptions.
LoggingOptions
LoggingOptions можна використовувати з ValidateAndApplyWithOptions для перевизначення деяких глобальних стандартних значень.
OutputRoutingOptions містить параметри, що підтримуються як для формату "text", так і для "json".
Поле
Опис
splitStream[Обовʼязково] bool
[Alpha] SplitStream перенаправляє повідомлення про помилки на stderr, тоді як інформаційні повідомлення відправляються на stdout з буферизацією. Стандартне значення — записувати обидва потоки у stdout без буферизації. Доступно тільки коли увімкнено функціональну можливість LoggingAlphaOptions.
[Alpha] InfoBufferSize встановлює розмір інформаційного потоку при використанні розділених потоків. Стандартне значення — нуль, що вимикає буферизацію. Доступно тільки коли увімкнено функціональну можливість LoggingAlphaOptions.
TracingConfiguration надає версіоновану конфігурацію для клієнтів OpenTelemetry tracing.
Поле
Опис
endpoint string
Endpoint колектора, до якого цей компонент буде відправляти трасування. Зʼєднання не є захищеним і наразі не підтримує TLS. Рекомендується не задавати, і endpoint буде за замовчуванням otlp grpc, localhost:4317.
samplingRatePerMillion int32
SamplingRatePerMillion — кількість зразків для збору на мільйон спанів. Рекомендується не задавати. Якщо не задано, пробник поважає темп рідного спану, але в іншому випадку ніколи не здійснює пробу.
VModuleConfiguration
(Аліас для []k8s.io/component-base/logs/api/v1.VModuleItem)
VerbosityLevel представляє поріг докладності для klog або logr.
CredentialProviderConfig
CredentialProviderConfig — це конфігурація, яка містить інформацію про кожного постачальника облікових даних exec. Kubelet зчитує цю конфігурацію з диска та активує кожного постачальника, як зазначено в типі CredentialProvider.
providers — це список втулків постачальників облікових даних, які будуть активовані kubelet. Кілька постачальників можуть відповідати одному образу, у такому випадку облікові дані від усіх постачальників будуть повернуті kubelet. Якщо кілька постачальників викликаються для одного образуу, результати обʼєднуються. Якщо постачальники повертають перекриваючі ключі автентифікації, використовується значення від постачальника, який знаходиться раніше в цьому списку.
KubeletConfiguration
KubeletConfiguration містить конфігурацію для Kubelet.
staticPodPath — це шлях до теки з локальними (статичними) Podʼами для запуску, або шлях до окремого статичного файлу Podʼа. Стандартно: ""
podLogsDir string
podLogsDir - власний шлях до кореневої теки, який kubelet використовуватиме для розміщення лог-файлів под'ів. Стандартно: "/var/log/pods/" Примітка: не рекомендується використовувати теку temp як теку логу, оскільки це може спричинити неочікувану поведінку у багатьох місцях.
httpCheckFrequency — інтервал між перевірками http на наявність нових даних. Стандартно: "20s"];
staticPodURL string
staticPodURL — це URL-адреса для доступу до статичних Podʼів для запуску. Стандартно: ""
staticPodURLHeader map[string][]string
staticPodURLHeader — map slice із заголовками HTTP, які потрібно використовувати при доступі до podURL. Стандартно: nil
address string
address — IP-адреса, на якій буде працювати Kubelet (встановлено на 0.0.0.0 для всіх інтерфейсів). Стандартно: "0.0.0.0";
port int32
port — це порт, на якому буде обслуговуватися Kubelet. Номер порту має бути в діапазоні від 1 до 65535 включно. Стандартно: 10250
readOnlyPort int32
readOnlyPort - це порт тільки для читання, на якому Kubelet буде працювати без автентифікації/авторизації. Номер порту повинен бути в діапазоні від 1 до 65535 включно. Встановлення цього поля у 0 вимикає сервіс тільки для читання. Стандартно: 0 (вимкнено)
tlsCertFile string
tlsCertFile — файл, що містить сертифікат x509 для HTTPS. (Сертифікат центру сертифікації, якщо такий є, додається після сертифіката сервера). Якщо tlsCertFile і tlsPrivateKeyFile не вказано, самопідписаний сертифікат і ключ генеруються для публічної адреси і зберігаються у теці, яку передано у прапорці Kubelet --cert-dir. Стандартно: ""
tlsPrivateKeyFile string
tlsPrivateKeyFile — файл, що містить приватний ключ x509, який відповідає tlsCertFile. Стандартно: ""
tlsCipherSuites []string
tlsCipherSuites — список дозволених наборів шифрів для сервера. Зверніть увагу, що набори шифрів TLS 1.3 не налаштовуються. Значення беруться з констант пакета tls (https://golang.org/pkg/crypto/tls/#pkg-constants). Стандартно: nil
tlsMinVersion string
tlsMinVersion — мінімальна підтримувана версія TLS. Значення беруться з констант пакета tls (https://golang.org/pkg/crypto/tls/#pkg-constants). Стандартно: ""
rotateCertificates bool
rotateCertificates дозволяє ротацію клієнтських сертифікатів. Kubelet запросить новий сертифікат з API certificates.k8s.io. Для цього потрібен затверджувач, який схвалює запити на підписання сертифікатів. Стандартно: false
serverTLSBootstrap bool
serverTLSBootstrap вмикає bootstrap серверного сертифікату. Замість того, щоб самостійно підписувати серверний сертифікат, Kubelet буде запитувати сертифікат з API 'certificates.k8s.io'. Для цього потрібен затверджувач для схвалення запитів на підписання сертифікатів (CSR). Функція RotateKubeletServerCertificate має бути ввімкнена при встановленні цього поля. Стандартно: false
registryPullQPS — ліміт отримання образів з реєстру за секунду. Значення не повинно бути відʼємним числом. Встановлення значення 0 означає відсутність обмеження. Стандартно: 5
registryBurst int32
registryBurst — максимальний розмір стрімких витягань, тимчасово дозволяє стрімким витяганням досягати цього числа, але при цьому не перевищувати registryPullQPS. Значення не повинно бути відʼємним числом. Використовується тільки якщо registryPullQPS більше 0. Стандартно: 10
eventRecordQPS int32
eventRecordQPS — максимальна кількість створених подій за секунду. Якщо 0, то обмеження не застосовується. Значення не може бути відʼємним. Стандартно: 50
eventBurst int32
eventBurst - максимальний розмір сплеску створення подій, тимчасово дозволяє створювати події до цього числа, але не більше ніж eventRecordQPS. Це поле не може бути відʼємним числом і використовується лише тоді, коли eventRecordQPS > 0. Стандартно: 100
enableDebuggingHandlers bool
enableDebuggingHandlers вмикає точки доступу до логів на сервері та локальний запуск контейнерів і команд, включно з функціями exec, attach, logs та portforward. Стандартно: true
enableContentionProfiling bool
enableContentionProfiling вмикає профілювання блоків, якщо enableDebuggingHandlers має значення true. Стандартно: false
healthzPort int32
healthzPort — порт точки доступу localhost healthz (для вимкнення встановлюється на 0). Допустиме значення від 1 до 65535. Стандартне значення: 10248
healthzBindAddress string
healthzBindAddress - IP-адреса для сервера healthz. Стандартно: "127.0.0.1";
oomScoreAdj int32
oomScoreAdj — значення oom-score-adj для процесу kubelet. Значення має бути в діапазоні [-1000, 1000]. Стандартно: -999
clusterDomain string
clusterDomain — DNS-домен для цього кластера. Якщо задано, kubelet налаштує всі контейнери на пошук у цьому домені на додаток до пошукових доменів хоста. Стандартно: ""
clusterDNS []string
clusterDNS — список IP-адрес для DNS-сервера кластера. Якщо встановлено, kubelet налаштує всі контейнери на використання цього списку для DNS-розпізнавання замість DNS-серверів хоста. Стандартно: nil
streamingConnectionIdleTimeout — максимальний час, протягом якого потокове зʼєднання може простоювати, перш ніж зʼєднання буде автоматично закрито. Стандартно: "4h";
nodeStatusUpdateFrequency - частота, з якою kubelet обчислює статус вузла. Якщо функцію оренди вузлів не увімкнено, це також частота, з якою kubelet надсилає статус вузла майстру. Примітка: Якщо функцію оренди вузла не увімкнено, будьте обережні при зміні константи, вона має працювати з nodeMonitorGracePeriod у nodecontroller. Стандартно: "10s"
nodeStatusReportFrequency — частота, з якою kubelet надсилає статус вузла майстру, якщо статус вузла не змінюється. Kubelet ігноруватиме цю частоту і відправлятиме статус вузла негайно, якщо буде виявлено будь-яку зміну. Використовується лише тоді, коли увімкнено функцію оренди вузлів. nodeStatusReportFrequency має стандартне значення 5m. Але якщо nodeStatusUpdateFrequency задано явно, стандартне значення nodeStatusReportFrequency буде встановлено на nodeStatusUpdateFrequency для зворотної сумісності. Стандартно: "5m"];
nodeLeaseDurationSeconds int32
nodeLeaseDurationSeconds - це тривалість, яку Kubelet встановить для відповідного lease. NodeLease надає індикатор справності вузла, змушуючи Kubelet створювати та періодично поновлювати договір оренди, названий на честь вузла, у просторі імен kube-node-lease. Якщо термін дії договору закінчується, вузол можна вважати несправним. Наразі оренда поновлюється кожні 10 секунд, згідно з KEP-0009. У майбутньому інтервал поновлення оренди може бути встановлений на основі тривалості оренди. Значення поля має бути більше 0. Стандартно: 40
imageMaximumGCAge — максимальний вік, протягом якого образ може бути невикористаним, перш ніж його буде вилучено у смітник. Стандартне значення цього поля - "0s", що вимикає це поле - тобто образи не буде вилучено у смітник через те, що їх не було використано надто довго. Стандартно: "0s" (вимкнено)
imageGCHighThresholdPercent int32
imageGCHighThresholdPercent — це відсоток використання диска, після якого завжди запускається прибирання образів. Відсоток обчислюється діленням значення цього поля на 100, тому значення цього поля має бути від 0 до 100 включно. Якщо вказано, значення має бути більшим за imageGCLowThresholdPercent. Стандартно: 85
imageGCLowThresholdPercent int32
imageGCLowThresholdPercent — це відсоток використання диска, до якого прибирання образів ніколи не виконуватиметься. Найнижчий відсоток використання диска для збирання сміття. Відсоток обчислюється діленням значення цього поля на 100, тому значення поля має бути у діапазоні від 0 до 100 включно. Якщо вказано, значення має бути меншим за imageGCHighThresholdPercent. Стандартно: 80
volumeStatsAggPeriod — це частота для обчислення та кешування обсягу використання диска для всіх Podʼів. Стандартно: "1m"
kubeletCgroups string
kubeletCgroups — абсолютна назва cgroups для ізоляції kubelet. Стандартно: ""
systemCgroups string
systemCgroups — абсолютна назва cgroups, до якої слід помістити усі неядерні процеси, які ще не знаходяться у контейнері. Порожньо, якщо немає контейнера. Скидання прапорця вимагає перезавантаження. Якщо це поле не порожнє, слід вказати cgroupRoot. Стандартно: ""
cgroupRoot string
cgroupRoot - це коренева cgroup, яку слід використовувати для Podʼів. Ця група обробляється під час виконання контейнера на основі принципу найкращих зусиль.
cgroupsPerQOS bool
cgroupsPerQOS вмикає ієрархію CGroup на основі QoS: CGroups верхнього рівня для класів QoS і всі Burstable та BestEffort Pods підпорядковуються певній CGroup QoS верхнього рівня. Стандартно: true
cgroupDriver string
cgroupDriver — це драйвер, який kubelet використовує для керування CGroups на хості (cgroupfs або systemd). Стандартно: "cgroupfs";
cpuManagerPolicy string
cpuManagerPolicy - назва політики, яку буде використано. Потребує увімкнення функціональних можливостей CPUManager. Стандартно: "None"
singleProcessOOMKill bool
singleProcessOOMKill, якщо встановлено, запобігає встановленню прапорця memory.oom.group для контейнерних cgroups у cgroups v2. Це призводить до того, що процеси у контейнері буде знищено за допомогою OOM індивідуально, а не як групу. Це означає, що якщо прапорець має значення true, поведінка узгоджується з поведінкою cgroups v1. Стандартне значення визначається автоматично, якщо ви його не вкажете. У не-linux, таких як windows, дозволено лише null / absent. У cgroup v1 linux дозволено лише null / absent та true. У cgroup v2 linux дозволені значення null / absent, true і false. Стандартне значення — false.
cpuManagerPolicyOptions map[string]string
cpuManagerPolicyOptions — це набір key=value, який дозволяє встановити додаткові опції для точного налаштування поведінки політик диспетчера процесорів. Потребує увімкнення функціональних можливостей "CPUManager" та "CPUManagerPolicyOptions". Стандартно: nil
cpuManagerReconcilePeriod - період узгодження для CPU Manager. Потребує увімкнення функціональної можливості CPUManager. Стандартне значення: "10s"
memoryManagerPolicy string
memoryManagerPolicy - назва політики, яку використовуватиме менеджер памʼяті. Потребує увімкнення функціональної можливості MemoryManager. Стандартно: "none"
topologyManagerPolicy string
topologyManagerPolicy — назва політики менеджера топології, яку слід використовувати. Допустимі значення включають:
restricted: kubelet дозволяє лише ті Podʼи, які мають оптимальне вирівнювання вузлів NUMA для запитуваних ресурсів;
best-effort: kubelet надаватиме перевагу Podʼам з NUMA-вирівнюванням ресурсів процесора та пристроїв;
none: kubelet не знає про вирівнювання NUMA ресурсів процесора та пристроїв під час роботи.
single-numa-node: kubelet дозволяє використовувати лише Podʼи з єдиним NUMA-вирівнюванням ресурсів процесора та пристроїв.
Default: "none"
topologyManagerScope string
topologyManagerScope представляє обсяг генерації підказок топології, які запитує менеджер топології та генерують постачальники підказок. Допустимі значення включають:
container: політика топології застосовується для кожного контейнера окремо.
pod: політика топології застосовується на основі кожного окремого блоку.
Default: "container"
topologyManagerPolicyOptions map[string]string
TopologyManagerPolicyOptions - це набір key=value, який дозволяє встановити додаткові опції для точного налаштування поведінки політик менеджера топології. Потребує увімкнення обох функціональних можливостей — "TopologyManager" та "TopologyManagerPolicyOptions". Стандартно: nil
qosReserved map[string]string
qosReserved — це набір пар імені ресурсу та відсотка, які визначають мінімальний відсоток ресурсу, зарезервований для ексклюзивного використання на рівні гарантованого QoS. Наразі підтримувані ресурси: "памʼять" Потребує увімкнення функціональної можливості QOSReserved. Стандартно: nil
runtimeRequestTimeout — це таймаут для всіх запитів часу виконання, окрім довготривалих запитів — pull, logs, exec та attach. Стандартно: "2m"
hairpinMode string
hairpinMode вказує, як Kubelet має налаштувати міст контейнера для пакета hairpin. Встановлення цього прапорця дозволяє точкам доступу в Service перерозподіляти навантаження на себе, якщо вони намагаються отримати доступ до свого власного Service. Значення:
"promiscuous-bridge": зробити контейнерний міст невпорядкованим.
"hairpin-veth": встановити прапорець hairpin на інтерфейсах container veth.
"none": нічого не робити.
Зазвичай, для досягнення hairpin NAT потрібно встановити --hairpin-mode=hairpin-veth, оскільки promiscuous-bridge передбачає наявність контейнерного моста з назвою cbr0. Стандартно: "promiscuous-bridge"
maxPods int32
maxPods — максимальна кількість Podʼів, які можуть бути запущені на цьому Kubelet. Значення має бути цілим невідʼємним числом. Стандартно: 110
podCIDR string
podCIDR — це CIDR для IP-адрес pod, який використовується лише в режимі standalone. У кластерному режимі він отримується з панелі управління. Стандартно: ""
podPidsLimit int64
podPidsLimit — максимальна кількість PID у будь-якому pod.
Default: -1
resolvConf string
resolvConf — це файл конфігурації резолвера, який використовується як основа для налаштування DNS-резолюції контейнера. Якщо встановлено порожній рядок, він перевизначає стандартне значення і фактично вимикає DNS-запити. Стандартно: "/etc/resolv.conf"
runOnce bool
runOnce змушує Kubelet один раз перевірити сервер API на наявність Podʼів, запустити ті з них, які вказані у статичних файлах Podʼів, і вийти. Стандартно: false
cpuCFSQuota bool
cpuCFSQuota вмикає застосування квоти CPU CFS для контейнерів, які визначають ліміти процесора. Стандартно: true
cpuCFSQuotaPeriod — це значення періоду квоти CFS процесора, cpu.cfs_period_us. Значення має бути від 1 мс до 1 секунди включно. Потребує увімкнення функціональної можливості CustomCPUCFSQuotaPeriod. Стандартно: "100ms";
nodeStatusMaxImages int32
nodeStatusMaxImages обмежує кількість зображень, про які повідомляється у Node.status.images. Значення має бути більшим за -2. Зауваження: Якщо вказано -1, обмеження не буде застосовано. Якщо вказано 0, жодного образу не буде повернуто. Стандартно: 50
maxOpenFiles int64
maxOpenFiles - кількість файлів, які може відкрити процес Kubelet. Значення має бути невідʼємним числом. Стандартно: 1000000
contentType string
contentType — тип вмісту запитів, що надсилаються до apiserver. Стандартно: "application/vnd.kubernetes.protobuf";
kubeAPIQPS int32
kubeAPIQPS - це QPS, який слід використовувати під час спілкування з apiserver'ом kubernetes. Стандартно: 50
kubeAPIBurst int32
kubeAPIBurst — це кількість пакетів, які слід дозволити під час спілкування з сервером API kubernetes. Це поле не може бути відʼємним числом. Стандартно: 100
serializeImagePulls bool
serializeImagePulls, якщо увімкнено, вказує Kubelet завантажувати образи один за одним. Ми рекомендуємо не змінювати стандартні значення на вузлах, де працює демон docker версії < 1.9 або сховище Aufs. Деталі наведено у Issue #10959. Стандартно: true
maxParallelImagePulls int32
MaxParallelImagePulls задає максимальну кількість паралельних завантажень образів. Це поле не можна встановити, якщо SerializeImagePulls має значення true. Встановлення значення nil означає відсутність обмежень. Стандартно: nil
evictionHard map[string]string
evictionHard — це map назв сигналів до величин, що визначає жорсткі пороги виселення. Наприклад: {"memory.available": "300Mi"}. Щоб явно вимкнути, передайте порогове значення 0% або 100% для довільного ресурсу. Стандартно:
evictionSoft це map імен сигналів до величин, яка визначає мʼякі пороги виселення. Наприклад: {"memory.available": "300Mi"}. Стандартно: nil
evictionSoftGracePeriod map[string]string
evictionSoftGracePeriod це map назв сигналів до величин, яка визначає пільгові періоди для кожного сигналу мʼякого виселення. Наприклад: {"memory.available": "30s"}. Стандартно: nil
evictionPressureTransitionPeriod — це тривалість, протягом якої kubelet має зачекати, перш ніж вийти зі стану тиску витіснення. Стандартно: "5m"
evictionMaxPodGracePeriod int32
evictionMaxPodGracePeriod - це максимально дозволений пільговий період (у секундах), який можна використовувати при завершенні роботи pods у відповідь на досягнення порогу мʼякого виселення. Це значення фактично обмежує значення terminationGracePeriodSeconds під час мʼякого виселення. Стандартно: 0
evictionMinimumReclaim map[string]string
evictionMinimumReclaim це map імен сигналів до величин, що визначає мінімальні відновлення, які описують мінімальну кількість заданого ресурсу, яку kubelet буде відновлювати при виконанні виселення pod, поки цей ресурс знаходиться під тиском. Наприклад: {"imagefs.available": "2Gi"}. Стандартно: nil
podsPerCore int32
podsPerCore — максимальна кількість Podʼів на ядро. Не може перевищувати maxPods. Значення має бути цілим невідʼємним числом. Якщо 0, то немає обмеження на кількість Podʼів. Стандартно: 0
enableControllerAttachDetach bool
enableControllerAttachDetach дозволяє контролеру Attach/Detach керувати приєднанням/відʼєднанням томів, запланованих для цього вузла, і забороняє kubelet виконувати будь-які операції приєднання/відʼєднання. Зауваження: приєднання/відʼєднання томів CSI не підтримується kubelet, тому для цього варіанту використання ця опція має мати значення true. Стандартно: true
protectKernelDefaults bool
protectKernelDefaults, якщо значення true, призводить до помилки Kubelet, якщо прапорці ядра не відповідають його очікуванням. В іншому випадку Kubelet спробує змінити прапорці ядра так, щоб вони відповідали його очікуванням. Стандартно: false
makeIPTablesUtilChains bool
makeIPTablesUtilChains, якщо значення true, змушує Kubelet створювати ланцюжок KUBE-IPTABLES-HINT у iptables як підказку іншим компонентам про конфігурацію iptables у системі. Стандартно: true
iptablesMasqueradeBit int32
iptablesMasqueradeBit раніше контролював створення ланцюжка KUBE-MARK-MASQ. Застарілий: більше не має жодного впливу. Стандартно: 14
iptablesDropBit int32
iptablesDropBit раніше контролював створення ланцюжка KUBE-MARK-DROP. Застаріла: більше не має жодного впливу. Стандартно: 15
featureGates map[string]bool
featureGates - це map імен функціональних можливостей до bools, які вмикають або вимикають експериментальні можливості. Це поле змінює вбудовані стандартні значення з "k8s.io/kubernetes/pkg/features/kube_features.go". Стандартно: nil
failSwapOn bool
failSwapOn вказує Kubelet не запускатися, якщо на вузлі увімкнено підкачку. Стандартно: true
memorySwap налаштовує памʼять підкачки, доступну для контейнерних робочих навантажень.
containerLogMaxSize string
containerLogMaxSize — величина, що визначає максимальний розмір лог-файлу контейнера перед його ротацією. Наприклад: "5Mi" або "256Ki". Стандартно: "10Mi"";
containerLogMaxFiles int32
containerLogMaxFiles визначає максимальну кількість файлів логу контейнера, які можуть бути присутніми для контейнера. Стандартно: 5
containerLogMaxWorkers int32
ContainerLogMaxWorkers визначає максимальну кількість паралельних робочих процесів для виконання операцій ротації логів. Встановіть це значення рівним 1, щоб вимкнути паралельні робочі процеси ротації логу. Стандартно: 1
ContainerLogMonitorInterval визначає тривалість, протягом якої контейнерні логи відстежуються для виконання операції ротації логів. Стандартно це значення дорівнює 10 * time.Seconds. Але його можна налаштувати на менше значення залежно від частоти генерації логів і розміру, щодо якого потрібно виконати ротацію. Стандартно: 10s
configMapAndSecretChangeDetectionStrategy - режим, у якому працюють менеджери ConfigMap і Secret. Допустимі значення включають:
Get: kubelet отримує необхідні обʼєкти безпосередньо з сервера API;
Cache: kubelet використовує TTL кеш для обʼєктів, отриманих з сервера API;
Watch: kubelet використовує watch для спостереження за змінами в обʼєктах, які його цікавлять.
Default: "Watch"
systemReserved map[string]string
systemReserved - це набір пар ResourceName=ResourceQuantity (наприклад, cpu=200m,memory=150G), які описують ресурси, зарезервовані для компонентів, що не належать до kubernetes. Наразі підтримуються лише процесор і памʼять. Дивіться https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources для більш детальної інформації. Стандартно: nil
kubeReserved map[string]string
kubeReserved — це набір пар ResourceName=ResourceQuantity (наприклад, cpu=200m,memory=150G), які описують ресурси, зарезервовані для компонентів системи kubernetes. Наразі підтримуються процесор, памʼять та локальне сховище для кореневої файлової системи. Більш детальну інформацію можна знайти на сторінці https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources. Стандартно: nil
reservedSystemCPUs[Обовʼязково] string
Параметр reservedSystemCPUs визначає список процесорів, зарезервованих для системних потоків рівня хоста та потоків, повʼязаних з kubernetes. Це забезпечує "статичний" список процесорів, а не "динамічний" список за допомогою systemReserved та kubeReserved. Цей параметр не підтримує systemReservedCgroup або kubeReservedCgroup.
showHiddenMetricsForVersion string
showHiddenMetricsForVersion — це попередня версія, для якої ви хочете показати приховані метрики. Тільки попередня мінорна версія є значущою, інші значення не допускаються. Формат <major>.<minor>, наприклад: 1.16. Метою цього формату є забезпечення можливості помітити, якщо в наступному випуску будуть приховані додаткові метрики, а не бути здивованими, коли вони будуть остаточно видалені в наступному випуску. Стандартно: ""
systemReservedCgroup string
systemReservedCgroup допомагає kubelet ідентифікувати абсолютну назву верхнього рівня CGroup, який використовується для забезпечення systemReserved обчислювального резервування ресурсів для системних демонів ОС. Дивіться Node Allocatable документацію для отримання додаткової інформації. Стандартно: ""
kubeReservedCgroup string
kubeReservedCgroup допомагає kubelet ідентифікувати абсолютну назву верхнього рівня CGroup, який використовується для забезпечення KubeReserved обчислювального резервування ресурсів для системних демонів вузла Kubernetes. Дивіться Node Allocatable документацію для отримання додаткової інформації. Стандартно: ""
enforceNodeAllocatable []string
Цей прапорець визначає різні примусові дії Node Allocatable, які Kubelet повинен виконувати. Цей прапорець приймає список опцій. Прийнятні опції: none, pods, system-reserved і kube-reserved. Якщо вказано none, інші опції не можуть бути вказані. Коли system-reserved є в списку, має бути вказано systemReservedCgroup. Коли kube-reserved є в списку, має бути вказано kubeReservedCgroup. Це поле підтримується тільки тоді, коли cgroupsPerQOS встановлено на true. Дивіться Node Allocatable для отримання додаткової інформації. Стандартно: ["pods"]
allowedUnsafeSysctls []string
Список небезпечних sysctl або шаблонів sysctl, розділених комами (які закінчуються на *). Небезпечні групи sysctl включають kernel.shm*, kernel.msg*, kernel.sem, fs.mqueue.* та net.*. Наприклад: "kernel.msg*,net.ipv4.route.min_pmtu". Стандартно: []
volumePluginDir string
volumePluginDir — це повний шлях до теки, в якій слід шукати додаткові втулки томів сторонніх розробників. Стандартно: "/usr/libexec/kubernetes/kubelet-plugins/volume/exec/"
providerID string
providerID, якщо вказано, встановлює унікальний ID екземпляра, який зовнішній постачальник (наприклад, хмарний постачальник) може використовувати для ідентифікації конкретного вузла. Стандартно: ""
kernelMemcgNotification bool
kernelMemcgNotification, якщо вказано, інструктує kubelet інтегруватися з нотифікацією memcg ядра для визначення, чи перевищені порогові значення памʼяті для виселення, замість опитування. Стандартно: false
logging вказує параметри логування. Для отримання додаткової інформації зверніться до Options for Logs. стандартно: Format: text
enableSystemLogHandler bool
enableSystemLogHandler дозволяє отримати доступ до системних логів через веб-інтерфейс за адресою host:port/logs/. Стандартно: true
enableSystemLogQuery bool
enableSystemLogQuery активує функцію запиту логів вузла на точці доступу /logs. Для роботи цієї функції також потрібно включити EnableSystemLogHandler. Стандартно: false
shutdownGracePeriod вказує загальну тривалість, на яку вузол повинен затримати завершення роботи і загальний період належного завершення роботи для завершення роботи Podʼів під час завершення роботи вузла. Стандартно: "0s"
shutdownGracePeriodCriticalPods вказує тривалість, що використовується для завершення критичних Podʼів під час завершення роботи вузла. Це повинно бути менше ніж shutdownGracePeriod. Наприклад, якщо shutdownGracePeriod=30s, і shutdownGracePeriodCriticalPods=10s, під час завершення роботи вузла перші 20 секунд будуть зарезервовані для мʼякого завершення роботи звичайних Podʼів, а останні 10 секунд будуть зарезервовані для завершення роботи критичних Podʼів. Стандартно: "0s"
shutdownGracePeriodByPodPriority вказує період часу для належного завершення роботи Podʼів на основі їх значення класу пріоритету. Коли отримано запит на завершення роботи, Kubelet ініціює завершення роботи для всіх Podʼів, що працюють на вузлі, з періодом часу, що залежить від пріоритету Podʼа, і потім чекає на завершення роботи всіх Podʼів. Кожен запис у масиві представляє час належного завершення роботи для Podʼа з значенням класу пріоритету, що лежить у діапазоні цього значення та наступного вищого запису в списку під час завершення роботи вузла. Наприклад, щоб дозволити критичним Podʼам 10 секунд для завершення роботи, Podʼам з пріоритетом >=10000 — 20 секунд, а всім іншим Podʼам — 30 секунд.
Час, який Kubelet чекатиме перед завершенням роботи, буде максимумом з усіх shutdownGracePeriodSeconds для кожного діапазону класів пріоритету, представленого на вузлі. Коли всі Podʼи завершать роботу або досягнуть своїх періодівналежного завершення, Kubelet звільнить блокування інгібіції завершення роботи. Потрібно, щоб була ввімкнена функція GracefulNodeShutdown. Ця конфігурація має бути порожньою, якщо встановлено або ShutdownGracePeriod, або ShutdownGracePeriodCriticalPods. Стандартно: nil
reservedMemory визначає список резервувань памʼяті для NUMA-вузлів, розділений комами. Цей параметр має сенс лише в контексті функції керування памʼяттю. Менеджер памʼяті не виділятиме зарезервовану памʼять для робочих навантажень контейнерів. Наприклад, якщо у вас є NUMA0 з 10Gi памʼяті, і reservedMemory було вказано для резервування 1Gi памʼяті на NUMA0, менеджер памʼяті передбачатиме, що лише 9Gi доступні для виділення. Ви можете вказати різну кількість вузлів NUMA та типів памʼяті. Ви можете взагалі опустити цей параметр, але повинні знати, що кількість зарезервованої памʼяті з усіх вузлів NUMA повинна бути рівною кількості памʼяті, вказаній у node allocatable. Якщо хоча б один параметр node allocatable має ненульове значення, вам потрібно буде вказати принаймні один вузол NUMA. Також уникайте вказування:
Дублікати, той самий вузол NUMA і тип пам’яті, але з іншим значенням.
нульові обмеження для будь-якого типу памʼяті.
Ідентифікатори вузлів NUMAs, які не існують на машині.
типи пам’яті, крім пам’яті та hugepages-
Стандартно: nil
enableProfilingHandler bool
enableProfilingHandler дозволяє профілювання через веб-інтерфейс host:port/debug/pprof/. Стандартно: true
enableDebugFlagsHandler bool
enableDebugFlagsHandler дозволяє доступ до прапорців через веб-інтерфейс host:port/debug/flags/v. Стандартно: true
seccompDefault bool
SeccompDefault дозволяє використовувати RuntimeDefault як профіль seccomp стнадартно для всіх робочих навантажень. Стандартно: false
memoryThrottlingFactor float64
MemoryThrottlingFactor визначає множник, який множиться на обмеження памʼяті або доступну памʼять вузла при встановленні значення cgroupv2 memory.high для забезпечення MemoryQoS. Зменшення цього коефіцієнта встановить нижчу високу межу для cgroups контейнера і створить більший тиск на відновлення памʼяті, тоді як збільшення зменшить тиск на відновлення. Детальніше дивіться за посиланням: KEP-2570. Стандартно: 0.9
registerWithTaints — це масив "taints" (міток) для додавання до обʼєкта вузла під час реєстрації kubelet. Набирає чинності лише тоді, коли параметр registerNode встановлено в значення true і під час початкової реєстрації вузла. Стандартно: nil
registerNode bool
registerNode дозволяє автоматичну реєстрацію з apiserver. Стандартно: true
Tracing визначає версійовану конфігурацію для клієнтів трасування OpenTelemetry. Див. kep.k8s.io/2832 для отримання додаткової інформації. Стандартно: nil
localStorageCapacityIsolation bool
LocalStorageCapacityIsolation дозволяє використовувати функцію ізоляції локального тимчасового зберігання. Стандартно: true. Ця функція дозволяє користувачам встановлювати запити/межі для тимчасового зберігання контейнерів та керувати ним так само, як процесорами та памʼяттю. Вона також дозволяє встановлювати sizeLimit для томів emptyDir, що призведе до видалення Podʼа, якщо використання диска з тома перевищить межу. Ця функція залежить від можливості правильної детекції використання кореневої файлової системи диска. Для деяких систем, таких як kind rootless, якщо ця можливість не підтримується, функцію LocalStorageCapacityIsolation слід вимкнути. Після вимкнення користувач не повинен встановлювати запити/межі для тимчасового зберігання контейнерів або sizeLimit для emptyDir. Стандартно: true
containerRuntimeEndpoint[Обовʼязково] string
ContainerRuntimeEndpoint є точкою доступу середовища виконання контейнерів. В Linux підтримуються Unix Domain Sockets, а у Windows підтримуються точки npipe та tcp. Приклади: 'unix:///path/to/runtime.sock', 'npipe:////./pipe/runtime'
imageServiceEndpoint string
ImageServiceEndpoint є точкою доступу сервісу контейнерних образів. Unix Domain Socket підтримуються в Linux, а npipe та tcp точки підтримуються у Windows. Приклади: 'unix:///path/to/runtime.sock', 'npipe:////./pipe/runtime'. Якщо не вказано, використовується значення з containerRuntimeEndpoint.
failCgroupV1 bool
FailCgroupV1 забороняє запуск kubelet на хостах, які використовують cgroup v1. Стандартно цей параметр має значення false, що означає, що kubelet дозволяється запускати на хостах cgroup v1, якщо цей параметр явно не ввімкнено. Стандартно: false
SerializedNodeConfigSource
SerializedNodeConfigSource дозволяє серіалізувати v1.NodeConfigSource. Цей тип використовується всередині Kubelet для відстеження збережених динамічних конфігурацій. Він існує в API групі kubeletconfig, оскільки класифікується як версійний вхідний параметр для Kubelet.
maxContainerRestartPeriod - максимальна тривалість затримки при перезапуску контейнера, мінімум 1 секунда, максимум 300 секунд. Якщо не задано, стандартно використовується внутрішній максимум затримки при повторному запуску контейнера (300 секунд).
CredentialProvider представляє втулок exec, який викликається kubelet. Втулок викликається тільки тоді, коли образ, що завантажується, відповідає образам, що обробляються втулком (див. matchImages).
Поле
Опис
name[Обовʼязково] string
name є обовʼязковою назвою постачальника облікових даних. Має відповідати назві виконуваного файлу постачальника, яку бачить kubelet. Виконуваний файл повинен бути в теці bin kubelet (встановлений прапорцем --image-credential-provider-bin-dir).
matchImages[Обовʼязково] []string
matchImages є обовʼязковим списком рядків, які використовуються для порівняння з образами, щоб визначити, чи слід викликати цього постачальника. Якщо один із рядків відповідає запитаному образу від kubelet, втулок буде викликаний і отримає можливість надати облікові дані. Очікується, що образи міститимуть домен реєстрації та URL-адресу.
Кожен запис у matchImages є шаблоном, який може містити порт і шлях. Глоби можна використовувати в домені, але не в порту чи шляху. Глоби підтримуються як піддоменами, такими як '*.k8s.io' або 'k8s.*.io', а також топ-рівневими доменами, такими як 'k8s.*'. Часткові піддомени, такі як 'app*.k8s.io', також підтримуються. Кожен глоб може відповідати лише одному сегменту піддомену, тому '*.io' не відповідає '*.k8s.io'.
Відповідність існує між образом і matchImage, коли всі з нижченаведених умов виконані:
Обидва містять однакову кількість частин домену, і кожна частина має збіг.
URL шлях образу повинен бути префіксом цільового URL шляху образу.
Якщо matchImage містить порт, порт також повинен мати збіг в образі.
defaultCacheDuration є стандартним періодом, протягом якого втулок буде кешувати облікові дані в памʼяті, якщо в відповіді втулка не вказано період кешування. Це поле є обовʼязковим.
apiVersion[Обовʼязково] string
Обовʼязкова версія введення запиту CredentialProvider. Повернутий CredentialProviderResponse МУСИТЬ використовувати таку ж версію кодування, як і ввод. Поточні підтримувані значення:
credentialprovider.kubelet.k8s.io/v1beta1
args []string
Аргументи, які передаються команді при її виконанні.
Env визначає додаткові змінні середовища, які потрібно надати процесу. Вони обʼєднуються з середовищем хоста, а також змінними, які client-go використовує для передачі аргументів втулку.
enabled дозволяє анонімні запити до сервера kubelet. Запити, які не відхиляються іншим методом автентифікації, обробляються як анонімні запити. Анонімні запити мають імʼя користувача system:anonymous та групу system:unauthenticated.
mode визначає режим авторизації для запитів до сервера kubelet. Дійсні значення: AlwaysAllow і Webhook. Режим Webhook використовує API SubjectAccessReview для визначення авторизації.
clientCAFile — шлях до файлу сертифікатів у форматі PEM. Якщо встановлено, будь-який запит, що надає клієнтський сертифікат, підписаний одним з органів сертифікації з цього пакету, автентифікується з іменем користувача, що відповідає CommonName, та групами, що відповідають організації у клієнтському сертифікаті.
CredentialProviderRequest включає образ, для якого kubelet вимагає автентифікацію. Kubelet передасть цей обʼєкт запиту втулку через stdin. Загалом втулки повинні відповідати тією ж версією API, яку вони отримали.
Поле
Опис
apiVersion string
credentialprovider.kubelet.k8s.io/v1
kind string
CredentialProviderRequest
image[Обовʼязкове] string
image — це образ контейнеа, який завантажується в рамках запиту втулка для автентифікатора. Втулки можуть за бажанням розпарсити образ для отримання будь-якої інформації, необхідної для отримання облікових даних.
CredentialProviderResponse
CredentialProviderResponse містить облікові дані, які kubelet повинен використовувати для зазначеного образу, наданого в оригінальному запиті. Kubelet буде читати відповідь з втулка через stdout. Ця відповідь повинна бути встановлена на ту ж версію API, що й CredentialProviderRequest.
cacheKeyType вказує тип ключа кешування для використання на основі образу, наданого в запиті. Є три дійсні значення для типу ключа кешування: Image, Registry і Global. Якщо вказано недійсне значення, kubelet не буде використовувати відповідь.
cacheDuration вказує тривалість, впродовж якої облікові дані повинні бути кешовані. Kubelet використовуватиме це поле для налаштування тривалості кешування в пам’яті для облікових даних в AuthConfig. Якщо null, kubelet використовуватиме defaultCacheDuration, надану в CredentialProviderConfig. Якщо встановлено 0, kubelet не буде кешувати наданий AuthConfig.
auth — це map, що містить інформацію для автентифікації, передану в kubelet. Кожен ключ є рядком для образу (детальніше про це нижче). Відповідний authConfig має бути дійсним для всіх образів, що відповідають цьому ключу. Втулок повинен встановити це поле в null, якщо не можна повернути дійсні облікові дані для запитаного образу.
Кожен ключ у map є шаблоном, який може містити порт і шлях. Глоби можна використовувати в домені, але не в порті або шляху. Глоби підтримуються як піддомени, такі як '*.k8s.io' або 'k8s.*.io', і домени верхнього рівня, такі як 'k8s.*'. Часткові піддомени, такі як 'app*.k8s.io', також підтримуються. Кожен глоб може відповідати лише одному сегменту піддомена, тому '*.io' не відповідає '*.k8s.io'.
Kubelet буде порівнювати образ з ключем, коли всі з наступного є істинними:
Обидва містять однакову кількість частин домену, і кожна частина має збіг.
URL шлях imageMatch має бути префіксом цільового URL шляху образу.
Якщо imageMatch містить порт, то порт також повинен збігатись в образі.
Коли повертається кілька ключів, kubelet проходитиме через усі ключі у зворотному порядку, щоб:
довші ключі з’являються перед коротшими ключами з тим самим префіксом
ключі з глобами з’являються перед ключами без глобів з тим самим префіксом.
Для будь-якого відповідного образу kubelet спробує завантажити образ з наданими обліковими даними, зупиняючись після першого успішно автентифікованого завантаження.
AuthConfig містить інформацію для автентифікації для реєстру контейнерів.
Сьогодні підтримується тільки автентифікація на основі імені користувача та пароля, але в майбутньому можуть бути додані інші механізми автентифікації.
Поле
Опис
username[Обовʼязкове] string
username — це імʼя користувача, яке використовується для автентифікації в реєстрі контейнерів. Порожнє імʼя користувача є дійсним.
password[Обовʼязкове] string
password — це пароль, який використовується для автентифікації в реєстрі контейнерів. Порожній пароль є дійсним.
вказує на вікно ([Timestamp-Window, Timestamp]), з якого були розраховані ці метрики, при поверненні показника метрики, розраховані з кумулятивних метрик (або нуль для нерозрахованих миттєвих метрик).
selector представляє селектор міток, який можна використати для вибору цієї метрики, і зазвичай буде просто селектором, переданим у запиті для отримання цієї метрики. Якщо залишити порожнім, для збору метрик буде використано лише назву метрики.
15.2 - Kubernetes External Metrics (v1beta1)
Пакет v1beta1 є версією v1beta1 зовнішнього API метрик.
ExternalMetricValue — це значення метрики для зовнішньої метрики. Окрема метрика ідентифікується за назвою метрики та набором рядкових міток. Для однієї метрики може бути кілька значень з різними наборами міток.
Поле
Опис
apiVersion string
external.metrics.k8s.io/v1beta1
kind string
ExternalMetricValue
metricName[Обовʼязково] string
назва метрики
metricLabels[Обовʼязково] map[string]string
набір міток, які ідентифікують один часовий ряд для метрики
вказує на вікно ([Timestamp-Window, Timestamp]), з якого були розраховані ці метрики, при поверненні показника метрики, розраховані з кумулятивних метрик (або нуль для нерозрахованих миттєвих метрик).
Ви можете налаштувати поведінку kube-scheduler, написавши конфігураційний файл і передавши його шлях як аргумент командного рядка.
Профіль планування дозволяє налаштувати різні етапи планування в kube-scheduler. Кожен етап відображається в точці розширення. Втулки забезпечують поведінку планування, реалізуючи одну або кілька таких точок розширення.
Ви можете вказати профілі планування, запустивши kube-scheduler --config <filename>, використовуючи структуру KubeSchedulerConfiguration v1.
KubeSchedulerConfiguration v1beta3 є застарілим у v1.26 і видалений у v1.29. Будь ласка, перейдіть на KubeSchedulerConfiguration v1.
Профілі
Профіль планування дозволяє налаштувати різні етапи планування в kube-scheduler. Кожен етап відображається в точці розширення. втулки забезпечують поведінку планування, реалізуючи одну або кілька таких точок розширення.
Ви можете налаштувати один екземпляр kube-scheduler для роботи з декількома профілями.
Точки розширення
Планування відбувається в кілька етапів, які відображаються через такі точки розширення:
queueSort: Ці втулки надають функцію впорядкування, яка використовується для сортування очікуваних Podʼів у черзі планування. Тільки один втулок сортування черги може бути ввімкнений одночасно.
preFilter: Ці втулки використовуються для попередньої обробки або перевірки інформації про Pod або кластер перед фільтрацією. Вони можуть позначити Pod як непридатний для планування.
filter: Ці втулки еквівалентні Предикатам у політиці планування і використовуються для відсівання вузлів, які не можуть запустити Pod. Фільтри викликаються в налаштованому порядку. Pod позначається як непридатний для планування, якщо жоден вузол не пройшов усі фільтри.
postFilter: Ці втулки викликаються в налаштованому порядку, коли для Pod не знайдено відповідних вузлів. Якщо будь-який втулок postFilter позначає Pod як придатний для планування, решта втулків не викликаються.
preScore: Це інформаційна точка розширення, яка може використовуватися для попередньої оцінки.
score: Ці втулки надають оцінку кожному вузлу, який пройшов етап фільтрації. Планувальник обере вузол з найвищою сумою зважених оцінок.
reserve: Це інформаційна точка розширення, яка повідомляє втулки, коли ресурси були зарезервовані для певного Podʼа. Втулки також реалізують виклик Unreserve, який викликається у випадку невдачі під час або після Reserve.
permit: Ці втулки можуть запобігти або затримати привʼязку Podʼа.
preBind: Ці втулки виконують будь-які роботи, необхідні перед привʼязкою Podʼа.
bind: втулки привʼязують Pod до вузла. втулки bind викликаються в порядку, і як тільки один з них виконає привʼязку, решта втулків пропускаються. Принаймні один втулок привʼязки обовʼязковий.
postBind: Це інформаційна точка розширення, яка викликається після привʼязки Podʼа.
multiPoint: Це поле тільки для конфігурації, які дозволяють ввімкнути або вимкнути втулки для всіх їх застосовних точок розширення одночасно.
Для кожної точки розширення ви можете вимкнути конкретні стандартні втулки або ввімкнути власні. Наприклад:
Ви можете використовувати * як імʼя в масиві вимкнених втулків, щоб вимкнути всі стандартні втулки для цієї точки розширення. Це також може бути використано для зміни порядку втулків, якщо це необхідно.
Втулки планування
Наступні втулки, які стандартно увімкнені, реалізують одну або більше з цих точок розширення:
ImageLocality: Віддає перевагу вузлам, які вже мають образи контейнерів, що запускаються Podʼом. Точки розширення: score.
TaintToleration: Реалізує
taints and tolerations. Реалізує точки розширення: filter, preScore, score.
NodeName: Перевіряє, чи відповідає імʼя вузла у специфікації Podʼа поточному вузлу. Точки розширення: filter.
NodePorts: Перевіряє, чи має вузол вільні порти для запитуваних портів Podʼа. Точки розширення: preFilter, filter.
NodeUnschedulable: Відфільтровує вузли, які мають .spec.unschedulable встановлений на true. Точки розширення: filter.
NodeResourcesFit: Перевіряє, чи має вузол усі ресурси, які запитує Pod. Оцінка може використовувати одну з трьох стратегій: LeastAllocated (стандартно), MostAllocated та RequestedToCapacityRatio. Точки розширення: preFilter, filter, score.
NodeResourcesBalancedAllocation: Віддає перевагу вузлам, які отримають більш збалансоване використання ресурсів, якщо Pod буде заплановано на них. Точки розширення: score.
VolumeBinding: Перевіряє, чи має вузол або чи може звʼязати запитувані томи. Точки розширення: preFilter, filter, reserve, preBind, score.
Примітка:
Точка розширення score увімкнена, коли ввімкнена функція VolumeCapacityPriority. Вона надає пріоритет найменшим PV, які можуть відповідати запитуваному розміру тому.
VolumeRestrictions: Перевіряє, чи задовольняють томи, змонтовані на вузлі, обмеження, специфічні для постачальника томів. Точки розширення: filter.
VolumeZone: Перевіряє, чи задовольняють запитувані томи будь-які вимоги до зони, які вони можуть мати. Точки розширення: filter.
NodeVolumeLimits: Перевіряє, чи можуть бути задоволені ліміти томів CSI для вузла. Точки розширення: filter.
EBSLimits: Перевіряє, чи можуть бути задоволені ліміти томів AWS EBS для вузла. Точки розширення: filter.
GCEPDLimits: Перевіряє, чи можуть бути задоволені ліміти томів GCP-PD для вузла. Точки розширення: filter.
AzureDiskLimits: Перевіряє, чи можуть бути задоволені ліміти томів дисків Azure для вузла. Точки розширення: filter.
PrioritySort: Забезпечує стандартне сортування за пріоритетами. Точки розширення: queueSort.
DefaultBinder: Забезпечує стандартний механізм привʼязки. Точки розширення: bind.
DefaultPreemption: Забезпечує стандартний механізм попередження. Точки розширення: postFilter.
Ви також можете ввімкнути наступні втулки через API конфігурації компонентів, які не увімкнені стандартно:
CinderLimits: Перевіряє, чи можуть бути задоволені ліміти томів OpenStack Cinder для вузла. Точки розширення: filter.
Декілька профілів
Ви можете налаштувати kube-scheduler для роботи з декількома профілями. Кожен профіль має повʼязане імʼя планувальника і може мати різний набір втулків, налаштованих у його точках розширення.
З наступною зразковою конфігурацією, планувальник буде працювати з двома профілями: один зі стандартними втулками і один з усіма вимкненими втулками скорінгу.
Podʼи, які хочуть бути заплановані відповідно до певного профілю, можуть включати відповідне імʼя планувальника у своїй .spec.schedulerName.
Стандартно створюється один профіль з іменем планувальника default-scheduler. Цей профіль включає стандартні втулки, описані вище. При оголошенні більше одного профілю для кожного з них потрібно унікальне імʼя планувальника.
Якщо Pod не вказує імʼя планувальника, kube-apiserver встановить його на default-scheduler. Таким чином, для планування цих Podʼів повинен існувати профіль з цим імʼям планувальника.
Примітка:
Події планування Podʼа мають .spec.schedulerName як свій reportingController. Події для вибору лідера використовують імʼя планувальника з першого профілю в списку.
Для отримання додаткової інформації, будь ласка, зверніться до розділу reportingController в Довідці API Event.
Примітка:
Усі профілі повинні використовувати той самий втулок у точці розширення queueSort і мати однакові параметри конфігурації (якщо це застосовується). Це повʼязано з тим, що планувальник має лише одну чергу Podʼів в очікуванні.
Втулки, які застосовуються до декількох точок розширення
Починаючи з kubescheduler.config.k8s.io/v1beta3, у конфігурації профілю є додаткове поле multiPoint, яке дозволяє легко увімкнути або вимкнути втулок для кількох точок розширення. Метою конфігурації multiPoint є спрощення конфігурації для користувачів і адміністраторів при використанні користувацьких профілів.
Розглянемо втулок MyPlugin, який реалізує точки розширення preScore, score, preFilter і filter. Щоб увімкнути MyPlugin для всіх доступних точок розширення, конфігурація профілю виглядає так:
Однією з переваг використання multiPoint є те, що якщо MyPlugin реалізує іншу точку розширення в майбутньому, конфігурація multiPoint автоматично увімкне його для нової точки розширення.
Конкретні точки розширення можна виключити з розширення MultiPoint за допомогою поля disabled для цієї точки розширення. Це працює з відключенням стандартних втулків, нестандартних втулків або з підстановним знаком ('*') для відключення всіх втулків. Приклад цього, відключення Score і PreScore, виглядає так:
Починаючи з kubescheduler.config.k8s.io/v1beta3, усі стандартні втулки ввімкнені внутрішньо через MultiPoint. Однак окремі точки розширення все ще доступні, щоб забезпечити гнучке переналаштування стандартних значень (наприклад, порядок і ваги Score). Наприклад, розглянемо два втулки Score DefaultScore1 і DefaultScore2, кожен з вагою 1. Їх можна змінити місцями з різними вагами так:
У цьому прикладі не потрібно явно вказувати втулки в MultiPoint, оскільки вони є стандартними втулками. І єдиний втулок, вказаний у Score, це DefaultScore2. Це тому, що втулки, встановлені через конкретні точки розширення, завжди матимуть пріоритет перед втулками MultiPoint. Таким чином, цей фрагмент по суті змінює порядок втулків без необхідності вказувати їх усіх.
Загальна ієрархія для пріоритету при налаштуванні втулків MultiPoint є наступною:
Специфічні точки розширення працюють першими, і їх налаштування переважатимуть над налаштуваннями, встановленими деінде.
Втулки, налаштовані вручну через MultiPoint, і їх налаштування.
Стандартні втулки та їх стандартні налаштування.
Щоб продемонструвати наведені вище ієрархії, наступний приклад базується на цих втулках:
Втулок
Точки розширення
DefaultQueueSort
QueueSort
CustomQueueSort
QueueSort
DefaultPlugin1
Score, Filter
DefaultPlugin2
Score
CustomPlugin1
Score, Filter
CustomPlugin2
Score, Filter
Дійсна конфігурація (для зразка) для цих втулків виглядає так:
Зверніть увагу, що немає помилки при повторній декларації втулка MultiPoint у конкретній точці розширення. Повторна декларація ігнорується (і логується), оскільки конкретні точки розширення мають пріоритет.
Крім збереження більшості конфігурацій в одному місці, цей приклад виконує кілька речей:
Увімкнено спеціальний втулок queueSort і вимкнено стандартний
Увімкнено CustomPlugin1 і CustomPlugin2, які будуть виконуватися першими для всіх своїх точок розширення
Вимкнено DefaultPlugin1, але тільки для filter
Змінено порядок виконання DefaultPlugin2 для роботи першої в score (навіть перед власними втулками)
У версіях конфігурації до v1beta3, без multiPoint, наведений вище фрагмент рівнозначний цьому:
apiVersion:kubescheduler.config.k8s.io/v1beta2kind:KubeSchedulerConfigurationprofiles:- schedulerName:multipoint-schedulerplugins:# Вимкнути стандартний втулок QueueSortqueueSort:enabled:- name:'CustomQueueSort'disabled:- name:'DefaultQueueSort'# Увімкнути спеціальні втулки Filterfilter:enabled:- name:'CustomPlugin1'- name:'CustomPlugin2'- name:'DefaultPlugin2'disabled:- name:'DefaultPlugin1'# Увімкнути та змінити порядок спеціальних втулків scorescore:enabled:- name:'DefaultPlugin2'weight:1- name:'DefaultPlugin1'weight:3
Хоча це складний приклад, він демонструє гнучкість конфігурації MultiPoint, а також її безшовну інтеграцію з наявними методами налаштування точок розширення.
З версією конфігурації v1beta2 можна використовувати нове розширення для втулка NodeResourcesFit. Нове розширення поєднує функціонал втулків NodeResourcesLeastAllocated, NodeResourcesMostAllocated та RequestedToCapacityRatio. Наприклад, якщо ви раніше використовували втулок NodeResourcesMostAllocated, то тепер ви можете використовувати NodeResourcesFit (стандартно увімкнено) і додати pluginConfig зі scoreStrategy, яка виглядає наступним чином:
У версіях Kubernetes до v1.23 політика планування могла використовуватися для вказівки процесу predicates та priorities. Наприклад, ви могли встановити політику планування, запустивши kube-scheduler --policy-config-file <filename> або kube-scheduler --policy-configmap <ConfigMap>.
Ця політика планування не підтримується з Kubernetes v1.23. Споріднені прапорці policy-config-file, policy-configmap, policy-configmap-namespace та use-legacy-policy-config також не підтримуються. Натомість використовуйте Конфігурацію планувальника, щоб досягти схожої поведінки.
Kubernetes містить кілька інструментів, які допоможуть вам працювати з системою Kubernetes.
crictl
crictl — це інтерфейс командного рядка для перегляду та відлагодження оточення виконання контейнерів, сумісних з CRI.
Dashboard
Dashboard, вебінтерфейс Kubernetes, дозволяє розгортати контейнерні застосунки в кластері Kubernetes, розвʼязувати проблеми з ними та управляти кластером та його ресурсами.
Helm
🛇 Цей елемент посилається на сторонній проєкт або продукт, який не є частиною Kubernetes. Докладніше
Helm — це інструмент для управління пакунками наперед сконфігурованих ресурсів Kubernetes. Ці пакунки відомі як Helm charts.
Використовуйте Helm для:
Пошуку та використання популярного програмного забезпечення, упакованого як Helm charts для Kubernetes
Поширення ваших застосунків у вигляді Helm charts
Створення відтворюваних збірок вашого застосунку Kubernetes
Управління файлами маніфестів Kubernetes
Управління випусками пакунків Helm
Kompose
Kompose — це інструмент для допомоги користувачам Docker Compose в переході до Kubernetes.
Використовуйте Kompose для:
Перетворення файлу Docker Compose в обʼєкти Kubernetes
Переходу від локальної розробки Docker до управління вашим застосунком через Kubernetes
Kui — це графічний інструмент, який обробляє ваші звичайні запити командного рядка kubectl та показує вивід в графічному вигляді.
Kui обробляє звичайні запити командного рядка kubectl та показує вивід в графічному вигляді. Замість ASCII-таблиць, Kui надає графічний рендеринг з таблицями, які можна сортувати.
Kui дозволяє вам:
Натискати на довгі, автоматично генеровані назви ресурсів, замість копіювання та вставляння
Вводити команди kubectl і бачити їх виконання, іноді навіть швидше, ніж в kubectl
Запитувати Job та бачити його виконання у вигляді діаграми водоспаду
Переходити за ресурсами в вашому кластері за допомогою графічного інтерфейсу користувача
Minikube
minikube — це інструмент, який запускає локальний однокомпонентний кластер Kubernetes безпосередньо на вашому компʼютері для розробки та тестування.