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
相关推荐
VicdorLin22 分钟前
docker报错: client version 1.24 is too old. Minimum supported API version is 1.44
运维·docker·容器
我是koten27 分钟前
K8s启动pod失败,日志报非法的Jar包排查思路(Invalid or corrupt jarfile /app/xxxx,jar)
java·docker·容器·kubernetes·bash·jar·shell
回忆是昨天里的海33 分钟前
docker compose-语法
运维·docker·容器
J_liaty35 分钟前
Docker 部署 Spring Boot 项目完整指南:从零到生产环境
spring boot·docker·容器
利刃大大1 小时前
【Docker】核心概念 && 常用指令总结 && Docker Compose
docker·容器
tzhou644521 小时前
云原生与K8S入门
云原生·容器·kubernetes
言一木1 小时前
Undertow使用说明
容器
moxiaoran575312 小时前
使用docker安装myql 8.0
运维·docker·容器
喵叔哟14 小时前
15.故障排查与调试
后端·docker·容器·服务发现