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
相关推荐
努力的小T9 小时前
使用 Docker 部署 Apache Spark 集群教程
linux·运维·服务器·docker·容器·spark·云计算
东风微鸣11 小时前
TTRSS 迁移实战
docker·云原生·kubernetes·可观察性
Smile_Gently12 小时前
Docker
云原生·eureka
转身後 默落13 小时前
04.Docker 镜像命令
docker·容器·eureka
IT_张三13 小时前
Docker+Kubernetes_第一章_Docker入门
java·docker·kubernetes
Diligent_lvan13 小时前
聊聊istio服务网格
云原生·istio
企鹅侠客14 小时前
kube-proxy怎么修改ipvs规则?
云原生·kubernetes·kubelet
仇辉攻防14 小时前
【云安全】云原生- K8S 污点横移
web安全·网络安全·云原生·容器·kubernetes·k8s·安全威胁分析
人工干智能16 小时前
科普:“docker”与“docker compose”
运维·docker·容器
神马都会亿点点的毛毛张16 小时前
【Docker教程】万字长文详解Docker命令
java·运维·后端·docker·容器