# 限定Pod的计算资源
本文讨论了如何使用 LimitRange 在 Pod 级别限定资源的使用。下面是一个用于限定 Pod 资源使用的 LimitRange 对象。
apiVersion: v1
kind: LimitRange
metadata:
name: limit-mem-cpu-per-pod
spec:
limits:
- max:
cpu: "2"
memory: "2Gi"
type: Pod
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
TIP
在您开始本教程之前,请您先完成 限定容器的计算资源,并确保该教程中的 LimitRange limit-mem-cpu-per-container
和 Pod busybox1
都已经创建。
执行如下命令,创建
limit-mem-cpu-pod
上面 yaml 中的 LimitRange,该 LimitRange 限定了每一个 Pod 的CPU使用不超过 2 核,内存不超过 2Gi。kubectl apply -f https://kuboard.cn/statics/learning/policy/lr-pod-limit-range.yaml -n limitrange-demo
1执行命令查看
limit-mem-cpu-per-pod
的创建结果:kubectl describe limitrange/limit-mem-cpu-per-pod -n limitrange-demo
1输出结果如下所示
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 - - -
1
2
3
4
5
6创建第二个 Pod,yaml 文件如下:
apiVersion: v1 kind: Pod metadata: name: busybox2 spec: containers: - name: busybox-cnt01 image: busybox command: ["/bin/sh"] args: ["-c", "while true; do echo hello from cnt01; sleep 10;done"] resources: requests: memory: "100Mi" cpu: "100m" limits: memory: "200Mi" cpu: "500m" - name: busybox-cnt02 image: busybox command: ["/bin/sh"] args: ["-c", "while true; do echo hello from cnt02; sleep 10;done"] resources: requests: memory: "100Mi" cpu: "100m" - name: busybox-cnt03 image: busybox command: ["/bin/sh"] args: ["-c", "while true; do echo hello from cnt03; sleep 10;done"] resources: limits: memory: "200Mi" cpu: "500m" - name: busybox-cnt04 image: busybox command: ["/bin/sh"] args: ["-c", "while true; do echo hello from cnt04; sleep 10;done"]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37执行如下命令可创建该 Pod
kubectl apply -f https://kuboard.cn/statics/learning/policy/lr-pod-pod.yaml -n limitrange-demo
1Pod
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.]
1执行命令查看
busybox1
的资源使用kubectl get po/busybox1 -n limitrange-demo -o json | jq ".spec.containers[].resources.limits.memory"
1输出结果如下所示:
"200Mi" "900Mi" "200Mi" "900Mi"
1
2
3
4Pod
busybox2
将不能在集群中创建,因为其中所有容器的内存限制的总和超过了 LimitRangelimit-mem-cpu-per-pod
中的限定。busybox1
将不会被驱逐,因为该 Pod 在创建 LimitRangelimit-mem-cpu-per-pod
就已经创建好了。
🎉 🎉 🎉
免费答疑
微信群
微信扫码 进群发广告者死全家...
赞赏
微信扫码