Kubernetes Проблема с созданием pod с помощью resourcequota и limitrange - PullRequest
0 голосов
/ 28 марта 2020

У меня проблемы с созданием модуля с помощью ResourceQuota и LimitRange.

ResourceQuota имеет предел cpu = 2, память = 2Gi и запросы cpu = 1, память = 1Gi, определенная для процессора и памяти. LimitRange имеет запросы по умолчанию и ограничения по умолчанию, оба имеют cpu = 1, memory = 1Gi, что находится в пределах того, что определено в ResourceQuota.

При создании модуля с использованием только ограничений (cpu = 2, memory = 2Gi) без запросов (cpu, memory) происходит сбой при forbidden: exceeded quota: compute-resources, requested: requests.cpu=2,requests.memory=2Gi, used: requests.cpu=0,requests.memory=0, limited: requests.cpu=1,requests.memory=1Gi

но в соответствии с запросом по умолчанию, определенным в LimitRange, это cpu = 1, память = 1Gi, не уверен, откуда он принимает запросы. Cpu = 2 ,ques.memory = 2Gi

Как я понимаю при создании Если запросы ресурсов не упомянуты, они должны быть взяты из запросов по умолчанию LimitRange, которые находятся в пределах диапазона, но не уверены, почему он не работает.

, пожалуйста, помогите здесь

cloud_user@master-node:~$  k describe limitrange default-limitrange
Name:       default-limitrange
Namespace:  default
Type        Resource  Min  Max  Default Request  Default Limit  Max Limit/Request Ratio
----        --------  ---  ---  ---------------  -------------  -----------------------
Container   memory    -    -    1Gi              1Gi            -
Container   cpu       -    -    1                1              -
cloud_user@master-node:~$ k describe resourcequota compute-resources
Name:            compute-resources
Namespace:       default
Resource         Used  Hard
--------         ----  ----
limits.cpu       0     2
limits.memory    0     2Gi
pods             0     2
requests.cpu     0     1
requests.memory  0     1Gi
cloud_user@master-node:~$ k run nginx --image=nginx --restart=Never --limits=cpu=2,memory=2Gi
Error from server (Forbidden): pods "nginx" is forbidden: exceeded quota: compute-resources, requested: requests.cpu=2,requests.memory=2Gi, used: requests.cpu=0,requests.memory=0, limited: requests.cpu=1,requests.memory=1Gi

Здесь я добавляю файл yaml для LimitRange, ResourceQuota

apiVersion: v1
kind: LimitRange
metadata:
  annotations:
    kubectl.kubernetes.io/last-applied-configuration: |
      {"apiVersion":"v1","kind":"LimitRange","metadata":{"annotations":{},"name":"default-limitrange","namespace":"default"},"spec":{"limits":[{"defaultRequest":{"cpu":"1","memory":"1Gi"},"type":"Container"}]}}
  creationTimestamp: "2020-03-28T08:05:40Z"
  name: default-limitrange
  namespace: default
  resourceVersion: "4966600"
  selfLink: /api/v1/namespaces/default/limitranges/default-limitrange
  uid: 3261f4d9-6339-478d-939c-395010b20aad
spec:
  limits:
  - default:
      cpu: "1"
      memory: 1Gi
    defaultRequest:
      cpu: "1"
      memory: 1Gi
    type: Container
apiVersion: v1
kind: ResourceQuota
metadata:
  creationTimestamp: "2020-03-28T07:40:03Z"
  name: compute-resources
  namespace: default
  resourceVersion: "4967263"
  selfLink: /api/v1/namespaces/default/resourcequotas/compute-resources
  uid: 8a94a396-0774-4b62-8140-5a5f463935ed
spec:
  hard:
    limits.cpu: "2"
    limits.memory: 2Gi
    pods: "2"
    requests.cpu: "1"
    requests.memory: 1Gi
status:
  hard:
    limits.cpu: "2"
    limits.memory: 2Gi
    pods: "2"
    requests.cpu: "1"
    requests.memory: 1Gi
  used:
    limits.cpu: "0"
    limits.memory: "0"
    pods: "0"
    requests.cpu: "0"
    requests.memory: "0"

1 Ответ

3 голосов
/ 28 марта 2020

Это задокументировано здесь . Если вы задаете ограничение контейнера, но не его запрос, то контейнеру не назначается запрос памяти по умолчанию в соответствии с диапазоном ограничений, а запрос памяти контейнера устанавливается так, чтобы соответствовать предел памяти, указанный при создании модуля. По этой причине устанавливается requests.cpu=2,requests.memory=2Gi, что соответствует пределу, указанному при создании модуля.

...