kubernetes集群实战——资源限制(内存、CPU、NameSpace)

本文详细介绍了如何在Kubernetes集群中设置资源限制,包括内存和CPU的request与limit,以及如何对namespace进行资源限制和配额配置。通过实例展示了资源超限导致的Pod调度失败,并解释了ResourceQuota对象在命名空间资源管理中的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.k8s容器资源限制

Kubernetes采用request和limit两种限制类型来对资源进行分配。
request(资源需求):即运行Pod的节点必须满足运行Pod的最基本需求才能 运行Pod。
limit(资源限额):即运行Pod期间,可能内存使用量会增加,那最多能使用多少内存,这就是资源限额。
资源类型:
CPU 的单位是核心数,内存的单位是字节。
一个容器申请0.5个CPU,就相当于申请1个CPU的一半,你也可以加个后缀 m 表示千分之一的概念。比如说100m的CPU,100豪的CPU和0.1个CPU都是一样的。
内存单位:

K、M、G、T、P、E 	##通常是以1000为换算标准的。
Ki、Mi、Gi、Ti、Pi、Ei 	##通常是以1024为换算标准的。

2.内存限制

实验
(1) 推送所需镜像stress到私有仓库,以便集群各节点拉取
在这里插入图片描述
(2)做内存资源限制
启用一个占用200Mi的pod,设定内存资源上限100Mi,下限50Mi
应用yaml文件,pod调度失败

[root@server2 ~]# mkdir quota
[root@server2 ~]# cd quota
[root@server2 quota]# vim demo.yml
[root@server2 quota]# cat demo.yml 
apiVersion: v1 
kind: Pod 
metadata:  
  name: memory-demo 
spec:  
  containers:  
  - name: memory-demo    
    image: stress    
    args:    ##启用一个pod,他会占用200M内存
    - --vm    	
    - "1"    
    - --vm-bytes    
    - 200M    
    resources:      
      requests: 
        memory: 50Mi      ##下限50Mi
      limits:        
        memory: 100Mi	##上限100Mi
[root@server2 quota]# kubectl apply -f demo.yml 
pod/memory-demo created
[root@server2 quota]# kubectl get pod
NAME          READY   STATUS              RESTARTS   AGE
memory-demo   0/1     ContainerCreating   0          6s
[root@server2 quota]# kubectl get pod	##超出内存限制,调度失败
NAME          READY   STATUS      RESTARTS   AGE
memory-demo   0/1     OOMKilled   2          33s
[root@server2 quota]# kubectl describe pod memory-demo
Name:         memory-demo
Namespace:    default
Priority:     0
Node:         server3/172.25.12.3
Start Time:   Fri, 10 Jul 2020 07:12:28 +0800
Labels:       <none>
Annotations:  Status:  Running
IP:           10.244.1.47
IPs:
  IP:  10.244.1.47
Containers:
  memory-demo:
    Container ID:  docker://4c3975e48d5fc09540e9d0b344ab2c4e70f5185f27514205b5d53e448efef587
    Image:         stress
    Image ID:      docker-pullable://stress@sha256:48a71454d405dbe1c756dd728cadeb577f429f61313ac62b413b52fbaa8a3b44
    Port:          <none>
    Host Port:     <none>
    Args:
      --vm
      1
      --vm-bytes
      200M
    State:          Waiting
      Reason:       CrashLoopBackOff
    Last State:     Terminated
      Reason:       OOMKilled
      Exit Code:    1
      Started:      Fri, 10 Jul 2020 07:13:20 +0800
      Finished:     Fri, 10 Jul 2020 07:13:20 +0800
    Ready:          False
    Restart Count:  3
    Limits:
      memory:  100Mi
    Requests:
      memory:     50Mi
    Environment:  <none>
    Mounts:
      /var/run/secrets/kubernetes.io/serviceaccount from default-token-d8qhv (ro)
Conditions:
  Type              Status
  Initialized       True 
  Ready             False 
  ContainersReady   False 
  PodScheduled      True 
Volumes:
  default-token-d8qhv:
    Type:        Secret (a volume populated by a Secret)
    Sec
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值