Kubernetes中使用更多并发Pod违反资源限制

时间:2018-12-05 05:20:44

标签: kubernetes containers kubectl

我们的一个微服务(工人组件-自然是短暂的)实际上是以自动缩放的方式部署在K8s吊舱上的,有时这个数字也会因负载而达到数千个,而这个工人必然会与各种持久性服务,因为这些服务带有一些资源限制,所以我们在访问级别上遇到瓶颈,所以我的问题是,我们是否在Kubernetes中有某种方法(类似于某种网关/代理),可以将多路复用请求缩小到资源限制下的限制。假设每个Pod都建立了到MySQL服务器的连接,该连接的活动连接数限制为50,因此如果我们不断旋转新的Pod(要求1个MySQL连接),那么我们不能同时旋​​转50个以上的Pod。

1 个答案:

答案 0 :(得分:0)

您可以设置Pod Quota for a Namespace

如果可以在单独的命名空间上旋转这些Pod,则可以通过创建ResourceQuota对象来限制正在运行的Pod的数量,让调用为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"

在例如3个副本nginx部署的描述中,您将看到:

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文档Create a ResourceQuota以获得更多信息。