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
相关推荐
IT成长日记1 小时前
【Docker基础】Docker数据卷管理:docker volume inspect及其参数详解
运维·docker·容器·volume·inspect
伤不起bb1 小时前
Kubernetes 服务发布基础
云原生·容器·kubernetes
ladymorgana1 小时前
【Docker】如何设置 `wiredTigerCacheSizeGB` 和 `resources.limits.memory`
运维·docker·容器
mcdx1 小时前
基于Docker构建OrangePi5 SDK环境
docker·容器
别骂我h4 小时前
Kubernetes服务发布基础
云原生·容器·kubernetes
要开心吖ZSH4 小时前
微服务架构的演进:迈向云原生
java·微服务·云原生
dyj0954 小时前
Rancher Server + Kubernets搭建云原生集群平台
云原生·rancher
weixin_399380696 小时前
k8s一键部署tongweb企业版7049m6(by why+lqw)
java·linux·运维·服务器·云原生·容器·kubernetes
IT成长日记6 小时前
【Docker基础】Docker数据卷管理:docker volume ls及其参数详解
运维·docker·容器·volume ls
偷萧逸苦茶6 小时前
docker常见命令
docker·容器·eureka