Нарушение лимита ресурсов с большим числом одновременных стручков в Kubernetes - PullRequest
0 голосов
/ 05 декабря 2018

Один из наших микросервисов (рабочий компонент - природа недолговечна) фактически развертывается на модулях K8s в автомасштабном режиме, иногда это число также достигает нескольких тысяч в зависимости от нагрузки, и этот работник обязан устанавливать соединения с различнымипостоянные сервисы, так как эти сервисы поставляются с некоторым ограничением ресурсов, поэтому мы находимся в узком месте на уровне доступа, поэтому я спрашиваю, есть ли у нас какой-то способ в Kubernetes (аналогичный шлюзу / прокси-серверу), который сужает мультиплексные запросы кограничение по ресурсным лимитам.Скажем, каждый модуль устанавливает соединение с сервером MySQL, у которого ограничение активного соединения составляет 50, поэтому, если мы продолжаем вращать новые модули (требуется 1 подключение MySQL), то мы не можем одновременно вращать более 50 модулей.

1 Ответ

0 голосов
/ 05 декабря 2018

Вы можете установить квоту стручков для пространства имен .

Если вы можете вращать эти стручки в отдельном пространстве имен, вы можете ограничить количество работающих стручков, создав ResourceQuotaобъект, позволяет звонить quota-pod.yaml:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: pod-demo
spec:
  hard:
    pods: "2"

kubectl create -f quota-pod.yaml --namespace=quota-pod-example

Если вы отметите kubectl get resourcequota pod-demo --namespace=quota-pod-example --output=yaml, вы получите что-то вроде:

spec:
  hard:
    pods: "2"
status:
  hard:
    pods: "2"
  used:
    pods: "0"

Вописание развертывания реплики nginx для примера 3, которое вы увидите:

Replicas:               1 desired | 1 updated | 1 total | 1 available | 0 unavailable

...  

Events:
  Type    Reason             Age   From                   Message
  ----    ------             ----  ----                   -------
  Normal  ScalingReplicaSet  2m    deployment-controller  Scaled up replica set nginx-1-7cb5b65464 to 3
  Normal  ScalingReplicaSet  16s   deployment-controller  Scaled down replica set nginx-1-7cb5b65464 to 1

И kubectl get deployment nginx -o yaml будет отображаться:

...
status:
  availableReplicas: 1
  conditions:
  - lastTransitionTime: 2018-12-05T10:42:45Z
    lastUpdateTime: 2018-12-05T10:42:45Z
    message: Deployment does not have minimum availability.
    reason: MinimumReplicasUnavailable
    status: "False"
    type: Available
  - lastTransitionTime: 2018-12-05T10:42:45Z
    lastUpdateTime: 2018-12-05T10:42:45Z
    message: 'pods "nginx-6bd764c757-4gkfq" is forbidden: exceeded quota: pod-demo,
      requested: pods=1, used: pods=2, limited: pods=2'

Я рекомендую проверить документы K8s Создать ResourceQuota для получения дополнительной информации.

...