Memory 如果数量匹配,为什么我的POD不满足资源配额限制?
将以下Memory 如果数量匹配,为什么我的POD不满足资源配额限制?,memory,kubernetes,cpu,google-kubernetes-engine,quota,Memory,Kubernetes,Cpu,Google Kubernetes Engine,Quota,将以下资源配额计算资源应用到我的GKE集群后 apiVersion: v1 kind: ResourceQuota metadata: name: compute-resources spec: hard: limits.cpu: "1" limits.memory: 1Gi 并将部署更新为 apiVersion: apps/v1 kind: Deployment metadata: name: my-service spec: selector: ma
资源配额
计算资源
应用到我的GKE集群后
apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-resources
spec:
hard:
limits.cpu: "1"
limits.memory: 1Gi
并将部署更新为
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-service
spec:
selector:
matchLabels:
app: my-service
tier: backend
track: stable
replicas: 2
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 50%
template:
metadata:
labels:
app: my-service
tier: backend
track: stable
spec:
containers:
- name: my-service
image: registry/namespace/my-service:latest
ports:
- name: http
containerPort: 8080
resources:
requests:
memory: "128Mi"
cpu: "125m"
limits:
memory: "256Mi"
cpu: "125m"
由于pods“my-service-5bc4c68df6-4z8wp”被禁止,调度尝试100%失败:失败配额:计算资源:必须指定限制。cpu,限制。内存
。既然指定了限制
和请求
,并且它们满足了限制,我看不出为什么应该禁止POD
这是另一个问题
我将集群升级到1.13.6-gke.0。我打算建议在单独的名称空间中进行测试,但请注意,您已经尝试过了 作为另一种解决方法,尝试通过启用LimitRanger准入控制器并设置默认限制,例如
apiVersion: v1
kind: LimitRange
metadata:
name: cpu-limit-range
spec:
limits:
- default:
memory: 256Mi
cpu: 125m
defaultRequest:
cpu: 125m
memory: 128Mi
type: Container
现在,如果在默认名称空间中创建了一个容器,并且该容器没有为CPU请求和CPU限制指定自己的值,那么该容器的默认CPU限制为125m,默认内存限制为256Mi
另外,在设置LimitRange后,请确保已移除部署,并且没有任何吊舱处于失败状态 您好,您可以尝试使用1个副本吗?希望没有init容器的开销,因为您的2个副本正在将其添加到250mcore@SureshVishnoi谢谢你的意见。我将复制副本设置为1。我还设置了
cpu:“1”
,并在一个单独的名称空间中重现了这个问题。你还有别的想法吗?谢谢你的意见。我用LimitRange
替换了ResourceQuota
,并用kubectl replace file.yml--namespace=mynamespace
对命名空间进行了更改。我删除了部署(没有创建pod)。重新部署后,创建POD仍然失败,原因是创建错误:POD“my-service-85d5cf694d-vmhzb”被禁止:超出配额:计算资源,请求:限制。cpu=250m,限制。内存=64Mi,已使用:限制。cpu=2250m,限制。内存=2Gi,限制:限制。cpu=1,限制。内存=1Gi。GKE上的行为与Ubuntu上microk8s上的行为相同。至少LimitRange已解决必须指定限制。cpu,限制。内存问题。因此,现在您遇到了另一个问题-超出了配额
,这是预期的,因为您已经使用了配额)检查当前使用情况kubectl descripe ResourceQuota-n mynamespace
如何找出配额值的来源?我还没有配置它们。pod的规格和运行时要求都没有超过配额(只是闲置)。所以,我看不出有什么理由会出现这个错误。@KarlRichter有什么kubectl get all-n mynamespace