限制pod的资源使用
创建命名空间
kubectl create namespace mem-example
创建带有限制的命名空间
现在如果在 default-mem-example 命名空间中创建一个 Pod, 并且该 Pod 中所有容器都没有声明自己的内存请求和内存限制, 控制面会将内存的默认请求值 256MiB 和默认限制值 512MiB 应用到 Pod 上
1、先创建命名空间
kubectl create namespace default-mem-example
2、创建限制范围,限制使用的内存(默认和最大)
[root@master pod]# cat default-men.yaml
apiVersion: v1
kind: LimitRange
metadata:
name: mem-limit-range
namespace: default-mem-example
spec:
limits:
- default:
memory: 512Mi
defaultRequest:
memory: 256Mi
type: Container
kubectl apply -f default-men.yaml
3、创建pod绑定到命名空间上
[root@master pod]# cat limit-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: default-mem-demo
namespace: default-mem-example
spec:
containers:
- name: default-mem-demo-ctr
image: nginx
这个时候要查看指定命名空间里的pod
kubectl get pod -n default-mem-example
查看详细信息也要指定命名空间
kubectl describe pod default-mem-demo -n default-mem-example
为容器和 Pod 分配内存资源
[root@master pod]# cat limit-pod-2.yaml
apiVersion: v1
kind: Pod
metadata:
name: memory-demo
namespace: mem-example
spec:
containers:
- name: memory-demo-ctr
image: polinux/stress
resources:
requests: # 请求的资源限制,分配的资源必须达到这个要求
memory: "100Mi" # 最少100M
limits: # 最多请求多少资源
memory: "200Mi" # 最多200M
command: ["stress"]
args: ["--vm", "1", "--vm-bytes", "150M", "--vm-hang", "1"]
OOMKilled:out of memory 使用的内存超出了范围被kill了
[root@master pod]# kubectl apply -f limit-pod-3.yaml
pod/memory-demo-2 unchanged
[root@master pod]# cat limit-pod-3.yaml
apiVersion: v1
kind: Pod
metadata:
name: memory-demo-2
namespace: mem-example
spec:
containers:
- name: memory-demo-2-ctr
image: polinux/stress
resources:
requests:
memory: "50Mi"
limits:
memory: "100Mi"
command: ["stress"]
args: ["--vm", "1", "--vm-bytes", "250M", "--vm-hang", "1"]
[root@master pod]# kubectl apply -f limit-pod-3.yaml
pod/memory-demo-2 created
[root@master pod]# kubectl get pod -n mem-example
NAME READY STATUS RESTARTS AGE
memory-demo 1/1 Running 0 29m
memory-demo-2 0/1 OOMKilled 0 27s
[root@master pod]# kubectl get pod -n mem-example
NAME READY STATUS RESTARTS AGE
memory-demo 1/1 Running 0 31m
memory-demo-2 0/1 CrashLoopBackOff 3 116s