默认情况下如果创建一个 Pod 没有设置 Limits
和 Requests
对其加以限制,那么这个 Pod 可能能够使用 Kubernetes 集群中全部资源, 但是每创建 Pod 资源时都加上这个动作是繁琐的,考虑到这点 Kubernetes 提供了 LimitRange
对象,它能够对一个 Namespace 下的全部 Pod 使用资源设置默认值、并且设置上限大小和下限大小等操作。这里演示将使用 LimitRange 来限制某个 namespace 下的资源的测试用例。
考虑到 LimitRange 是作用于 Namespace 的,所以这里提前创建一个用于测试的 Namespace。 $ kubectl create namespace limit-namespace
创建 LimitRange 对 Namespace 资源限制
创建一个 LimitRange 对象限制 Namespace 下的资源使用,其中 limit 的类型有两种:
1.对 Container 使用资源进行限制,在 Pod 中的每一个容器都受此限制。
2.对 Pod 进行限制,即 Pod 中全部 Container 使用资源总和来进行限制。
资源对象 limit-range.yaml 内容如下:
apiVersion: v1 kind: LimitRange metadata: name: limit-test spec: limits: - type: Pod #对Pod中所有容器资源总和进行限制 max: cpu: 4000m memory: 2048Mi min: cpu: 10m memory: 128Mi maxLimitRequestRatio: cpu: 5 memory: 5 - type: Container #对Pod中所有容器资源进行限制 max: cpu: 2000m memory: 1024Mi min: cpu: 10m memory: 128Mi maxLimitRequestRatio: cpu: 5 memory: 5 default: cpu: 1000m memory: 512Mi defaultRequest: cpu: 500m memory: 256Mi
执行 Kubectl 创建 LimitRange:
$ kubectl apply -f limit-range.yaml -n limit-namespace
Container 参数:
max: Pod 中所有容器的 Limits 值上限。
min: Pod 中所有容器的 Requests 值下限。
default: Pod 中容器未指定 Limits 时,将此值设置为默认值。
defaultRequest: Pod 中容器未指定 Requests 是,将此值设置为默认值。
maxLimitRequestRatio: Pod 中的容器设置 Limits 与 Requests 的比例的值不能超过 maxLimitRequestRatio 参数设置的值,即 Limits/Requests ≤ maxLimitRequestRatio。
Pod 参数:
max: Pod 中所有容器资源总和值上限。
min: Pod 中所有容器资源总和值下限。
maxLimitRequestRatio: Pod 中全部容器设置 Limits 总和与 Requests 总和的比例的值不能超过 maxLimitRequestRatio 参数设置的值,即 (All Container Limits)/(All Container Requests) ≤ maxLimitRequestRatio。