如果数字匹配,为什么我的 pods 不满足资源配额限制?
Why do my pods not fulfill the resource quota limits if the number match?
将以下 ResourceQuota
compute-resources
应用到我的 GKE 集群后
apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-resources
spec:
hard:
limits.cpu: "1"
limits.memory: 1Gi
并将 Deployment
更新为
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" is forbidden: failed quota: compute-resources: must specify limits.cpu,limits.memory
,调度失败了 100%。由于指定了 limits
和 requests
并且它们达到了限制,所以我看不出 pods 应该被禁止的原因。
是一个不同的问题。
我将集群升级到 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 后,请确保您删除了部署并且没有 pods 卡在失败状态。
将以下 ResourceQuota
compute-resources
应用到我的 GKE 集群后
apiVersion: v1
kind: ResourceQuota
metadata:
name: compute-resources
spec:
hard:
limits.cpu: "1"
limits.memory: 1Gi
并将 Deployment
更新为
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" is forbidden: failed quota: compute-resources: must specify limits.cpu,limits.memory
,调度失败了 100%。由于指定了 limits
和 requests
并且它们达到了限制,所以我看不出 pods 应该被禁止的原因。
我将集群升级到 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 后,请确保您删除了部署并且没有 pods 卡在失败状态。