将以下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
并且它们达到了限制,因此我不认为应禁止使用豆荚。
How pod limits resource on kubernetes enforced when the pod exceed limits after pods is created ?是另一个问题。
我将群集升级到1.13.6-gke.0。
答案 0 :(得分: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之后,请确保已删除部署,并且没有pod处于失败状态。