kubernetes(k8s)为容器和 Pod 分配内存资源
展示如何将内存请求(request)和内存限制(limit)分配给一个容器。 我们保障容器拥有它请求数量的内存,但不允许使用超过限制数量的内存。
创建新的命名空间
kubectl create namespace mem-example
指定内存请求和限制
编辑yaml文件
#创建一个拥有一个容器的Pod
apiVersion: v1
kind: Pod
metadata:
name: memory-demo
namespace: mem-example
spec:
containers:
- name: memory-demo-ctr
image: polinux/stress
#容器会请求100MiB的内存,并且内存会被限制在200MiB以内
resources:
requests:
memory: "100Mi"
limits:
memory: "200Mi"
#容器启动时使用压力测试工具stress
command: ["stress"]
# "--vm","1" 产生一个子进程; --vm 2 产生两个进程
# "--vm-bytes","150M" 每个进程分配150M
# "--vm-hang","1" 指每个消耗内存的进程在分配内存后转入睡眠1秒,然后释放内存一直重复执行这个过程
args: ["--vm","1","--vm-bytes","150M","--vm-hang","1"]
配置文件的 args 部分提供了容器启动时的参数。 “–vm-bytes”, “150M” 参数告知容器尝试分配 150 MiB 内存。
创建pod
kubectl apply -f memory-request-limit.yaml
查看Pod是否正常运行
kubectl get pod memory-demo -n mem-example
查看 Pod 相关的详细信息
kubectl get pod memory-demo -n mem-example -o yaml
输