Призначення розширених ресурсів контейнеру

СТАН ФУНКЦІОНАЛУ: Kubernetes v1.31 [stable]

Ця сторінка показує, як призначити розширені ресурси контейнеру.

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

Вам треба мати кластер Kubernetes, а також інструмент командного рядка kubectl має бути налаштований для роботи з вашим кластером. Рекомендується виконувати ці настанови у кластері, що має щонайменше два вузли, які не виконують роль вузлів управління. Якщо у вас немає кластера, ви можете створити його, за допомогою minikube або використовувати одну з цих пісочниць:

Для перевірки версії введіть kubectl version.

Перш ніж виконувати це завдання, виконайте завдання Оголошення розширених ресурсів для вузла. Це налаштує один з ваших вузлів для оголошення ресурсу "dongle".

Призначте розширений ресурс Podʼу

Щоб запитати розширений ресурс, включіть поле resources:requests у ваш маніфест контейнера. Розширені ресурси повністю кваліфікуються будь-яким доменом поза *.kubernetes.io/. Дійсні імена розширених ресурсів мають форму example.com/foo, де example.com замінено на домен вашої організації, а foo — це описове імʼя ресурсу.

Нижче подано конфігураційний файл для Podʼа з одним контейнером:

apiVersion: v1
kind: Pod
metadata:
  name: extended-resource-demo
spec:
  containers:
  - name: extended-resource-demo-ctr
    image: nginx
    resources:
      requests:
        example.com/dongle: 3
      limits:
        example.com/dongle: 3

У конфігураційному файлі можна побачити, що контейнер запитує 3 розширених ресурси "dongle".

Створіть Pod:

kubectl apply -f https://k8s.io/examples/pods/resource/extended-resource-pod.yaml

Перевірте, що Pod працює:

kubectl get pod extended-resource-demo

Опишіть Pod:

kubectl describe pod extended-resource-demo

Виведений текст показує запити донглів:

Limits:
  example.com/dongle: 3
Requests:
  example.com/dongle: 3

Спроба створення другого Podʼа

Нижче наведено конфігураційний файл для Podʼа з одним контейнером. Контейнер запитує два розширені ресурси "dongle".

apiVersion: v1
kind: Pod
metadata:
  name: extended-resource-demo-2
spec:
  containers:
  - name: extended-resource-demo-2-ctr
    image: nginx
    resources:
      requests:
        example.com/dongle: 2
      limits:
        example.com/dongle: 2

Kubernetes не зможе задовольнити запит на два донгли, оскільки перший Pod використав три з чотирьох доступних донглів.

Спроба створити Pod:

kubectl apply -f https://k8s.io/examples/pods/resource/extended-resource-pod-2.yaml

Опишіть Pod:

kubectl describe pod extended-resource-demo-2

Текст виводу показує, що Pod не може бути запланованим, оскільки немає вузла, на якому було б доступно 2 донгли:

Conditions:
  Type    Status
  PodScheduled  False
...
Events:
  ...
  ... Warning   FailedScheduling  pod (extended-resource-demo-2) failed to fit in any node
fit failure summary on nodes : Insufficient example.com/dongle (1)

Перегляньте статус Podʼа:

kubectl get pod extended-resource-demo-2

Текст виводу показує, що Pod було створено, але не заплановано для виконання на вузлі. Він має статус Pending:

NAME                       READY     STATUS    RESTARTS   AGE
extended-resource-demo-2   0/1       Pending   0          6m

Очищення

Видаліть Podʼи, які ви створили для цього завдання:

kubectl delete pod extended-resource-demo
kubectl delete pod extended-resource-demo-2

Для розробників застосунків

Для адміністраторів кластера

Змінено August 10, 2024 at 8:09 PM PST: Local links were prefixed with "uk" (7d9a96f799)