MyTetra Share
Делитесь знаниями!
Ресуры пода в Kubernetes
21.09.2018
13:35
Автор: br0ke
Текстовые метки: kubernetes, k8s, kube, kubectl, resource, request, requests, limit, limits, cpu, memory, mem
Раздел: Информационные технологии - Linux - Kubernetes

При описании ресурса можно задать минимальные требования пода к ресурсам (requests) и ограничить максимальное возможное потребление ресурсов (limits, рекомендуется определять всегда).


requests нужны, чтобы планировщик Kubernetes мог равномерно распределять поды по нодам кластера и не перегружал ноды, т.е. если сумма requests всех подов превышает доступный ресурс ноды, то на эту ноду больше не будут добавляться новые поды.


limits нужны, чтобы Kubernetes мог убивать поды при превышении заданных лимитов, тем самым защищая другие поды от недостатка ресурсов.


Определяются следующие типы ресурсов:


  • memory -- измеряется в байтах: можно просто написать число байт, а можно использовать следующие суффиксы: E, P, T, G, M, K или Ei, Pi, Ti, Gi, Mi, Ki.
  • Например, все эти значения обозначают один и тот же размер памяти:

    128974848, 129e6, 129M, 123Mi


  • cpu -- измеряется в (виртуальных) ядрах либо в миллиядрах.

Например: 0.1 == 100m, 2 == 2000m.

CPU всегда представляется как абсолютное значение и не зависит от количества и частоты процессорных ядер на ноде: будь их 2 или 48, 100m всегда будет означать одну десятую вычислительной мощности одного ядра.


При превышении лимита памяти, контейнер может быть убит. При превышении запроса памяти, контейнер может быть "изгнан", если на ноде будет не хватать памяти.


Контейнер не может расходовать больше процессорного времени, чем ему выделено, но он не будет убит, если попытается вычислять активнее.


Пример:


apiVersion: v1

kind: Pod

metadata:

name: frontend

spec:

containers:

- name: db

image: mysql

env:

- name: MYSQL_ROOT_PASSWORD

value: "password"

resources:

requests:

memory: "64Mi"

cpu: "250m"

limits:

memory: "128Mi"

cpu: "500m"

- name: wp

image: wordpress

resources:

requests:

memory: "64Mi"

cpu: "250m"

limits:

memory: "128Mi"

cpu: "500m"


Значения по умолчанию


Можно задать значения для ресурсов по умолчанию для пространства имен (и они уже заданы).


Пример:


apiVersion: v1

kind: LimitRange

metadata:

name: mem-limit-range

spec:

limits:

- default:

memory: 512Mi

defaultRequest:

memory: 256Mi

type: Container



# kubectl create -f https://k8s.io/examples/admin/resource/memory-defaults.yaml --namespace=default-mem-example


Создать под:


apiVersion: v1

kind: Pod

metadata:

name: default-mem-demo

spec:

containers:

- name: default-mem-demo-ctr

image: nginx



# kubectl create -f https://k8s.io/examples/admin/resource/memory-defaults-pod.yaml --namespace=default-mem-example



Просмотреть информацию о поде:


# kubectl get pod default-mem-demo --output=yaml --namespace=default-mem-example


containers:

- image: nginx

imagePullPolicy: Always

name: default-mem-demo-ctr

resources:

limits:

memory: 512Mi

requests:

memory: 256Mi


Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования