k8s限制pod的资源使用

限制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
相关推荐
掘根9 小时前
【微服务即时通讯项目】系统联调
微服务·云原生·架构
DONG99910 小时前
配置docker代理
docker·容器
怎么就重名了10 小时前
docker可以动态修改端口映射吗
运维·docker·容器
JEECG低代码平台11 小时前
敲敲云零代码平台一键部署实战:命令安装 vs Docker 安装
运维·docker·容器
p***769813 小时前
NAS飞牛Docker 部署OmniBox影视资源聚合平台:网盘秒播、影视聚合、自定义直播,超神的一条龙服务
运维·docker·容器
http阿拉丁神猫14 小时前
kubernetes知识点汇总31-36
云原生·容器·kubernetes
爱学习的程序媛15 小时前
Docker 完全指南:从入门到生产级实践
运维·docker·容器
分布式存储与RustFS15 小时前
Windows原生版RustFS:无需Docker,1分钟本地对象存储环境搭建
windows·docker·容器·对象存储·minio·企业存储·rustfs
问道飞鱼16 小时前
【分布式技术】RustFS 非 Docker 部署完整指南:从单机到生产集群
分布式·docker·容器·rustfs
承渊政道17 小时前
【优选算法】(实战突破字符串:经典题型与解题模板)
c语言·数据结构·c++·笔记·学习·算法·容器