LimitRange
This commit is contained in:
@ -71,7 +71,8 @@ podtemplates tr
|
||||
更多内容请参考:
|
||||
|
||||
* [限定容器的计算资源](./lr_container.html)
|
||||
* [限定Pod的计算资源]
|
||||
* [限定存储资源]
|
||||
* [Limit/Request 比例]
|
||||
* [例子]
|
||||
* [限定Pod的计算资源](./lr_pod.html)
|
||||
* [限定存储资源](./lr_storage.html)
|
||||
* [限定 Limit/Request 比例](./lr_ratio.html)
|
||||
|
||||
<!-- Examples -->
|
||||
|
||||
77
learning/k8s-advanced/policy/lr_pod.md
Normal file
77
learning/k8s-advanced/policy/lr_pod.md
Normal file
@ -0,0 +1,77 @@
|
||||
---
|
||||
vssueId: 143
|
||||
layout: LearningLayout
|
||||
description: Kubernetes教程_本文讨论了如何使用LimitRange_在Pod级别限定资源的使用_下面是一个用于限定Pod资源使用的LimitRange对象。
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes
|
||||
---
|
||||
|
||||
# 限定Pod的计算资源
|
||||
|
||||
|
||||
<AdSenseTitle>
|
||||
|
||||
> 参考文档:[Limit Ranges](https://kubernetes.io/docs/concepts/policy/limit-range/)
|
||||
|
||||
本文讨论了如何使用 LimitRange 在 Pod 级别限定资源的使用。下面是一个用于限定 Pod 资源使用的 LimitRange 对象。
|
||||
|
||||
</AdSenseTitle>
|
||||
|
||||
<<< @/.vuepress/public/statics/learning/policy/lr-pod-limit-range.yaml
|
||||
|
||||
::: tip
|
||||
在您开始本教程之前,请您先完成 [限定容器的计算资源](./lr_container.html),并确保该教程中的 LimitRange `limit-mem-cpu-per-container` 和 Pod `busybox1` 都已经创建。
|
||||
:::
|
||||
|
||||
* 执行如下命令,创建 `limit-mem-cpu-pod` 上面 yaml 中的 LimitRange,该 LimitRange 限定了每一个 Pod 的CPU使用不超过 2 核,内存不超过 2Gi。
|
||||
|
||||
``` sh
|
||||
kubectl apply -f https://kuboard.cn/statics/learning/policy/lr-pod-limit-range.yaml -n limitrange-demo
|
||||
```
|
||||
|
||||
执行命令查看 `limit-mem-cpu-per-pod` 的创建结果:
|
||||
|
||||
``` sh
|
||||
kubectl describe limitrange/limit-mem-cpu-per-pod -n limitrange-demo
|
||||
```
|
||||
|
||||
输出结果如下所示
|
||||
|
||||
```
|
||||
Name: limit-mem-cpu-per-pod
|
||||
Namespace: limitrange-demo
|
||||
Type Resource Min Max Default Request Default Limit Max Limit/Request Ratio
|
||||
---- -------- --- --- --------------- ------------- -----------------------
|
||||
Pod cpu - 2 - - -
|
||||
Pod memory - 2Gi - - -
|
||||
```
|
||||
|
||||
* 创建第二个 Pod,yaml 文件如下:
|
||||
|
||||
<<< @/.vuepress/public/statics/learning/policy/lr-pod-pod.yaml
|
||||
|
||||
执行如下命令可创建该 Pod
|
||||
``` sh
|
||||
kubectl apply -f https://kuboard.cn/statics/learning/policy/lr-pod-pod.yaml -n limitrange-demo
|
||||
```
|
||||
|
||||
Pod `busybox2` 的定义与 `busybox1` 的定义玩去哪相同,但是执行该创建命令时将碰到如下错误,因为Pod可使用的资源现在受到了限制:
|
||||
|
||||
```
|
||||
Error from server (Forbidden): error when creating "limit-range-pod-2.yaml": pods "busybox2" is forbidden: [maximum cpu usage per Pod is 2, but limit is 2400m., maximum memory usage per Pod is 2Gi, but limit is 2306867200.]
|
||||
```
|
||||
执行命令查看 `busybox1` 的资源使用
|
||||
``` sh
|
||||
kubectl get po/busybox1 -n limitrange-demo -o json | jq ".spec.containers[].resources.limits.memory"
|
||||
```
|
||||
输出结果如下所示:
|
||||
```
|
||||
"200Mi"
|
||||
"900Mi"
|
||||
"200Mi"
|
||||
"900Mi"
|
||||
```
|
||||
Pod `busybox2` 将不能在集群中创建,因为其中所有容器的内存限制的总和超过了 LimitRange `limit-mem-cpu-per-pod` 中的限定。 `busybox1` 将不会被驱逐,因为该 Pod 在创建 LimitRange `limit-mem-cpu-per-pod` 就已经创建好了。
|
||||
|
||||
:tada: :tada: :tada:
|
||||
53
learning/k8s-advanced/policy/lr_ratio.md
Normal file
53
learning/k8s-advanced/policy/lr_ratio.md
Normal file
@ -0,0 +1,53 @@
|
||||
---
|
||||
vssueId: 143
|
||||
layout: LearningLayout
|
||||
description: Kubernetes教程_本文讨论了如何使用LimitRange在名称空间中限制Limits/Requests的比例_如果指定了LimitRange对象的spec.limits.maxLimitRequestRatio字段_名称空间中的Pod/容器的request和limit都不能为0_且limit除以request的结果必须小于或等于LimitRange的spec.limits.maxLimitRequestRatio
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes
|
||||
---
|
||||
|
||||
# 限定 Limit/Request 比例
|
||||
|
||||
|
||||
<AdSenseTitle>
|
||||
|
||||
> 参考文档:[Limit Ranges](https://kubernetes.io/docs/concepts/policy/limit-range/)
|
||||
|
||||
本文讨论了如何使用 LimitRange 在名称空间中限制 Limits/Requests 的比例。如果指定了 LimitRange 对象的 `spec.limits.maxLimitRequestRatio` 字段,名称空间中的 Pod/容器的 request 和 limit 都不能为 0,且 limit 除以 request 的结果必须小于或等于 LimitRange 的 `spec.limits.maxLimitRequestRatio`
|
||||
|
||||
</AdSenseTitle>
|
||||
|
||||
下面的例子中 `LimitRange` 限定了名称空间中任何 Pod 的最大内存限定(limit)不能超过最小内存请求(request)的两倍:
|
||||
|
||||
<<< @/.vuepress/public/statics/learning/policy/lr-ratio-limit-range.yaml {8}
|
||||
|
||||
* 执行命令以创建该 LimitRange:
|
||||
``` sh
|
||||
kubectl create -f https://kuboard.cn/statics/learning/policy/lr-ratio-limit-range.yaml -n limitrange-demo
|
||||
```
|
||||
执行命令以查看创建结果:
|
||||
``` sh
|
||||
kubectl describe limitrange/limit-memory-ratio-pod -n limitrange-demo
|
||||
```
|
||||
输出结果如下所示:
|
||||
```
|
||||
Name: limit-memory-ratio-pod
|
||||
Namespace: limitrange-demo
|
||||
Type Resource Min Max Default Request Default Limit Max Limit/Request Ratio
|
||||
---- -------- --- --- --------------- ------------- -----------------------
|
||||
Pod memory - - - - 2
|
||||
```
|
||||
|
||||
* 此时,如果我们创建一个 Pod 包含如下属性 `requests.memory=100Mi` 和 `limits.memory=300Mi`:
|
||||
|
||||
<<< @/.vuepress/public/statics/learning/policy/lr-ratio-pod.yaml {11,13}
|
||||
|
||||
执行命令以创建该 Pod:
|
||||
``` sh
|
||||
kubectl apply -f https://kuboard.cn/statics/learning/policy/lr-ratio-pod.yaml -n limitrange-demo
|
||||
```
|
||||
由于该 Pod 的内存限制请求比例为 `3`,超过了 LimitRange 中定义的 `2`,该 Pod 将不能创建成功:
|
||||
```
|
||||
Error from server (Forbidden): error when creating "lr-ratio-pod.yaml": pods "busybox3" is forbidden: memory max limit to request ratio per Pod is 2, but provided ratio is 3.000000.
|
||||
```
|
||||
66
learning/k8s-advanced/policy/lr_storage.md
Normal file
66
learning/k8s-advanced/policy/lr_storage.md
Normal file
@ -0,0 +1,66 @@
|
||||
---
|
||||
vssueId: 143
|
||||
layout: LearningLayout
|
||||
description: Kubernetes教程_本文讨论了如何使用LimitRange_名称空间中限制存储资源的使用_通过LimitRange对象_集群管理员可以限定名称空间中每个PersistentVolumeClaim存储卷声明可以使用的最小最大存储空间
|
||||
meta:
|
||||
- name: keywords
|
||||
content: Kubernetes
|
||||
---
|
||||
|
||||
# 限定存储资源
|
||||
|
||||
|
||||
<AdSenseTitle>
|
||||
|
||||
> 参考文档:[Limit Ranges](https://kubernetes.io/docs/concepts/policy/limit-range/)
|
||||
|
||||
本文讨论了如何使用LimitRange_名称空间中限制存储资源的使用。通过 LimitRange 对象,集群管理员可以限定名称空间中每个 PersistentVolumeClaim(存储卷声明)可以使用的最小、最大存储空间。
|
||||
|
||||
</AdSenseTitle>
|
||||
|
||||
请参考下面的例子:
|
||||
|
||||
<<< @/.vuepress/public/statics/learning/policy/lr-storage-limit.yaml {9,11}
|
||||
|
||||
* 执行命令可创建该 LimitRange:
|
||||
|
||||
``` sh
|
||||
kubectl create -f https://kuboard.cn/statics/learning/policy/lr-storage-limit.yaml -n limitrange-demo
|
||||
```
|
||||
执行命令查看创建结果
|
||||
``` sh
|
||||
kubectl describe limits/storagelimits -n limitrange-demo
|
||||
```
|
||||
输出结果如下所示:
|
||||
```
|
||||
Name: storagelimits
|
||||
Namespace: limitrange-demo
|
||||
Type Resource Min Max Default Request Default Limit Max Limit/Request Ratio
|
||||
---- -------- --- --- --------------- ------------- -----------------------
|
||||
PersistentVolumeClaim storage 1Gi 2Gi - - -
|
||||
```
|
||||
* 现在假设有一个 PVC(存储卷声明),定义文件如下所示:
|
||||
|
||||
<<< @/.vuepress/public/statics/learning/policy/lr-storage-pvc-lower.yaml {10}
|
||||
执行命令创建该 PVC(存储卷声明)
|
||||
``` sh
|
||||
kubectl create -f https://kuboard.cn/statics/learning/policy/lr-storage-pvc-lower.yaml -n limitrange-demo
|
||||
```
|
||||
由于 PVC 中定义的字段 `requests.storage` 比 LimitRange `storagelimits` 中 `limits[0].min.storage` 的定义要小,所以创建该 PVC 时将失败:
|
||||
```
|
||||
Error from server (Forbidden): error when creating "lr-storage-pvc-lower.yaml": persistentvolumeclaims "pvc-limit-lower" is forbidden: minimum storage usage per PersistentVolumeClaim is 1Gi, but request is 500Mi.
|
||||
```
|
||||
* 如果 PVC 的 `requests.storage` 大于 LimitRange 中的 `limits[0].max.storage`,同样不能创建成功,参考下面的例子:
|
||||
|
||||
<<< @/.vuepress/public/statics/learning/policy/lr-storage-pvc-greater.yaml {10}
|
||||
|
||||
执行命令创建该 PVC(存储卷声明)
|
||||
``` sh
|
||||
kubectl create -f https://kuboard.cn/statics/learning/policy/lr-storage-pvc-greater.yaml
|
||||
```
|
||||
输出结果如下所示:
|
||||
```
|
||||
Error from server (Forbidden): error when creating "lr-storage-pvc-greater.yaml": persistentvolumeclaims "pvc-limit-greater" is forbidden: maximum storage usage per PersistentVolumeClaim is 2Gi, but request is 5Gi.
|
||||
```
|
||||
|
||||
:tada: :tada: :tada:
|
||||
Reference in New Issue
Block a user