按照 文件 :资源约束仅适用于容器级别。但是你可以定义不同的 requests 和 limits 允许容器突破超出请求中定义的数量。但这带来了其他影响 服务质量 。
requests
limits
这样做的原因是一些资源如内存无法竞争,因为它适用于CPU。记忆要么足够要么要少得多。在Kubernetes中没有共享RAM这样的东西。 (如果您未明确调用相关的系统调用)
请问,Pod内部CPU竞争的用例是什么?
如何使用资源配额控制K8S群集内的资源使用情况。这应该使您可以使用kube_resourcequota监控指标,在使用LimitRange设置的不同条件下或直接使用Container的资源限制和范围内,通过专用命名空间内的pod对cpu /内存使用情况进行基准测试。要求。
我的意思是设置 的 资源配额 强> 相近 这个 一:
apiVersion: v1 kind: ResourceQuota metadata: name: mem-cpu-demo spec: hard: requests.cpu: "1" requests.memory: 1Gi limits.cpu: "2" limits.memory: 2Gi pods: "1"
运行pod 的 资源限制和请求 强> :
... containers: - image: gcr.io/google-samples/hello-app:1.0 imagePullPolicy: IfNotPresent name: hello-app ports: - containerPort: 8080 protocol: TCP resources: limits: cpu: "1" memory: 800Mi requests: cpu: 900m memory: 600Mi ...
并在监控控制台中观察pod如何执行*,例如使用Prometheus:
* 绿色 - 表示Pod的整体内存使用情况, 红色 - 使用ResourceQuota设置的固定/硬资源限制
我猜你选择减少线路之间的差距以避免未完成的系统,同时避免像这样的Pod故障:
status: message: 'Pod Node didn''t have enough resource: cpu, requested: 400, used: 893, capacity: 940' phase: Failed reason: OutOfcpu
当然,理想情况下,如果此内存使用趋势是驾驶舱图表上的堆栈,其中包含您感兴趣的其他自定义/性能监控指标。