Щоб скористатися цією функцією, вам (або адміністратору кластера) потрібно увімкнути функціональну можливість PodLevelResourceManagers для всіх відповідних компонентів у вашому кластері.
Перегляньте Увімкнення або вимкнення функціональних можливостей для отримання додаткової інформації.
Цей документ надає довідкові деталі щодо реалізації менеджерів ресурсів на рівні Podʼів у kubelet, включаючи структури звітування API PodResources та міграції форматів контрольних точок стану під час оновлень та понижень версій.
У Kubernetes 1.37 локальний для вузла gRPC API PodResources kubelet нативно включає записи ресурсів на рівні Podʼів, коли увімкнено функціональну можливість PodLevelResourceManagers. Це дозволяє локальним для вузла агентам моніторингу та втулкам пристроїв запитувати ексклюзивні ресурси, призначені Podʼу:
PodResources включає поля верхнього рівня cpu_ids та memory, які представляють ексклюзивні CPU та вирівняні за NUMA блоки памʼяті, виділені всьому Podʼу.ContainerResources.cpu_ids та memory на рівні контейнера порожніми, при цьому розподіл ресурсів відображається на рівні Podʼа.PodSharedPool.CpuIds = Pod.CpuIds - Union(all Container.CpuIds)Ось підсумок поведінки звітування API PodResources, коли вказано ресурси на рівні Podʼів:
podМенеджер топології розподіляє бюджет ресурсів на рівні Podʼа. Поля на рівні Podʼа у PodResources заповнюються даними цього розподілу.
| Комбінація контейнерів | cpu_ids / memory на рівні Podʼа | cpu_ids / memory на рівні контейнера | Деталі / Примітки |
|---|---|---|---|
| Ексклюзивний контейнер (Guaranteed) | Заповнюється повним розподілом на рівні Podʼа. | Заповнюється виділеною підмножиною контейнера. | Контейнер отримує ексклюзивні CPU, вирізані з розподілу на рівні Podʼа. |
| Контейнер спільного пулу | Заповнюється повним розподілом на рівні Podʼа. | Порожньо | Уникає подвійного підрахунку, оскільки контейнер працює у спільному пулі Podʼа. |
containerkubelet оцінює розподіл ресурсів для кожного контейнера. Поля API PodResources на рівні Podʼа залишаються порожніми.
| Комбінація контейнерів | cpu_ids / memory на рівні Podʼа | cpu_ids / memory на рівні контейнера | Деталі / Примітки |
|---|---|---|---|
| Ексклюзивний контейнер (Guaranteed) | Порожньо | Заповнюється виділеними CPU/памʼяттю контейнера. | Контейнер отримує ексклюзивні виділення безпосередньо з пулу вузла, доступного для розподілу. |
| Контейнер спільного пулу | Порожньо | Порожньо | Працює у загальному спільному пулі вузла. |
kubeletkubelet підтримує локальні файли контрольних точок стану (cpu_manager_state та memory_manager_state у кореневій теці kubelet), щоб зберігати призначення ресурсів під час перезапусків при оновленнях та пониженнях версій kubelet.
У Kubernetes v1.36 увімкнення функціональної можливості PodLevelResourceManagers зберігало контрольні точки стану з використанням внутрішнього формату V3. Хоча оновлення до 1.36 є зворотно сумісним, формат V3 не має прямої сумісності. Якщо ви понизите версію kubelet 1.36 до 1.35 або старішої (або вимкнете функціональну можливість після активного використання у 1.36), старіший kubelet не зможе проаналізувати контрольні точки V3, не запуститься та видасть помилку checkpoint is corrupted.
Щоб відновитися, очистіть вузол, вручну видаліть файли контрольних точок (cpu_manager_state та memory_manager_state) і перезапустіть kubelet.
У Kubernetes v1.37 файли контрольних точок використовують узагальнений формат V4, який вбудовує стандартну структуру V2. Це впроваджує внутрішній формат, сумісний із майбутніми версіями, щоб несумісність контрольних точок була разовою проблемою, а не тим, чого слід очікувати в майбутніх оновленнях:
kubelet можуть читати контрольні точки V4 без помилок пошкодження. Якщо ви понизите версію kubelet v1.37 до v1.36 (навіть з увімкненим PodLevelResourceManagers у 1.36), kubelet 1.36 безпечно відновить стандартні виділення контейнерів з V2.kubelet запускається безпечно без пошкоджень, активні призначення ресурсів на рівні Podʼів (PodEntries) втрачаються при пониженні версії до v1.36.Якщо ви не запускаєте Kubernetes v1.37, зверніться до документації для цієї версії Kubernetes для отримання інформації про оновлення та пониження версій.
pod та container..spec.resources у маніфестах Podʼів для запиту обчислювальних ресурсів на рівні Podʼа.kubelet: пройдіть покроковий практичний навчальний посібник для налаштування kubelet та перевірки поведінки виділення.kubelet: дізнайтеся більше про те, де на файловій системі хосту зберігаються локальні файли контрольних точок стану (cpu_manager_state та memory_manager_state).