Призначення розширених ресурсів контейнеру
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
Для розробників застосунків
- Призначення ресурсів памʼяті для контейнерів та Podʼів
- Призначення ресурсів CPU для контейнерів та Podʼів