首页 > 其他分享 >K8S之namespace资源限制

K8S之namespace资源限制

时间:2024-08-23 14:19:55浏览次数:7  
标签:限制 name namespace memory Pod K8S cpu metadata

在默认情况下,K8S不会对Pod进行CPU和内存限制,如果某个Pod发生内存泄露那么将是一个非常糟糕的事情
所以在部署Pod的时候都会把Requests和limits加上,配置文件示例如下

apiVersion: apps/v1
kind: Deployment
metadata:
  name: ng-deploy
spec:
  selector:
    matchLables:
      app: ng-demo
    replicas: 2
    template:
      metadata:
        labels:
          app: ng-demo
      spec:
        containers:
        - name: ng-demo
          image: nginx
          imagePullPolicy:IfNotPresent
          resources:
            requests:
              cpu: 100m
              memory: 200Mi
            limits:
              cpu: 100m
              memory: 200Mi          

如果Pod多并只需要相同的限制,这样一个一个设置就比较麻烦了。这时可以通过LimitRange做一个全局限制。如果在部署
pod的时候指定了requests和limits,则指定的生效,反之则全局给pod设置默认的限制

LimitRange特性

  • 限制namespace中每个pod或container的最小和最大资源用量
  • 限制namespace中每个PVC的资源请求范围
  • 限制namespace中资源请求和限制书吏的比例
  • 配置资源的默认限制

配置LimitRange

1、 创建namespace

apiVersion: v1
kind: Namespace
metadata:
  name: coolops

2、为namespace配置limitRange

apiVersion: v1
kind: LimitRange
metadata:
  name: mylimit
  namespace: coolops
spec:
  limits:
  - max: 
      cpu: "1"  
      memory: 1Gi
    min:
      cpu: 100m
      memory: 10Mi
    maxLimitRequestRatio:
      cpu: 3
      memory: 4
    type: Pod
  - default:
      cpu: 300m
      memory: 200Mi
    defaultRequest:
      cpu: 200m
      memory: 100Mi
    max:
      cpu: "2"            
      memory: 1Gi
    min:
      cpu: 100m
      memory: 10Mi
    maxLimitRequestRatio:
      cpu: 5
      memory: 4
    type: Container      

参数说明

  • max: 如果type是Pod/Container,表示整个Pod资源的最大Limit,如果Pod定义中的Limit值大于LimitRange中的值,则Pod无法成功创建
  • min: 如果type是Pod/Container,表示所有容器request的资源总和不能小于min中的值,否则Pod无法成功创建
  • maxLimitRequestRatio: 如果type是Pod,表示Pod中所有容器资源请求的Limit值和request值比值的上限
  • defaultRequest和defaultlimit是默认值,只有type为container才有这两项配置

测试

1、创建一个允许范围之内的 requests 和 limits 的 pod

apiVersion: v1
kind: Pod
metadata:
  name: pod01
  namespace: coolops
spec:
  containers:
  - name: pod-01
    image: nginx
    imagePullPolicy: IfNotPresent
    resources:
      requests:
        cpu: 200m
        memory: 30Mi
      limits:
        cpu: 300m
        memory: 50Mi

2、创建一个 cpu 超出允许访问的 Pod

apiVersion: v1
kind: Pod
metadata:
  name: pod02
  namespace: coolops
spec:
  containers:
  - name: pod-02
    image: nginx
    imagePullPolicy: IfNotPresent
    resources:
      requests:
        cpu: 200m
        memory: 30Mi
      limits:
        cpu: 2
        memory: 50Mi

3、创建低于允许范围的 Pod

apiVersion: v1
kind: Pod
metadata:
  name: pod03
  namespace: coolops
spec:
  containers:
  - name: pod-03
    image: nginx
    imagePullPolicy: IfNotPresent
    resources:
      requests:
        cpu: 200m
        memory: 30Mi
      limits:
        cpu: 100m
        memory: 10Mi

4、创建一个未定义 request 或 Limits 的 Pod

apiVersion: v1
kind: Pod
metadata:
  name: pod04
  namespace: coolops
spec:
  containers:
  - name: pod-04
    image: nginx
    imagePullPolicy: IfNotPresent
    resources:
      requests:
        cpu: 200m
        memory: 200Mi

5、LimitRange限制PVC

apiVersion: v1
kind: LimitRange
metadata:
  name: storagelimits
  namespace: coolops
spec:
  limits:
  - type: PersistentVolumeClaim
    max:
      storage: 2Gi
    min:
      storage: 1Gi

标签:限制,name,namespace,memory,Pod,K8S,cpu,metadata
From: https://www.cnblogs.com/codechange/p/17863826.html

相关文章

  • K8S基本概念和组件
    特点便携性无论公有云、私有云、混合云还是多云架构都全面支持可扩展模块化、可插拔、可挂载、可组合,支持各种形式的扩展自修复自保持应用状态、自重启、自复制、自缩放,声明式语法组件etcd保存整个集群状态,充当数据库角色,只与APIServer通讯apiserve......
  • K8S之Pod对象
    Pod是一组紧密关联的容器组合,共享PID,NETWORK,UTSnamespace。一个Pod里可以运行多个容器。一个Pod里多个容器共享网络和文件系统原理K8S真正处理的还是宿主机操作系统上的namespace和Cgroups,而不存在一个Pod边界或者隔离环境。Pod里所有的容器共享的是同一个NetworkNameS......
  • K8S之Service
    对于K8S整个集群来说,Pod地址是可变的。一个Pod因某些原因退出了,而其设置了副本数replicas大于1那么该Pod就会在集群的任意节点重新启动。重新启动后的Pod的IP与原IP地址不同,这样就不能根据Pod的IP来进行调度。于是K8S引入了Service概念,它为Pod提供了一个入口,主要通过Labels标签来......
  • K8S之配置信息应用
    在K8S中,为容器提供预先定义好的数据,K8S支持四种volume:Secret、ConfigMap、DownloadAPI、ServiceAccountTokenSecret把Pod想要访问的加密数据存放到etcd中,然后可以在Pod容器通过挂载的方式访问secret里保存的数据一旦secret被创建,我们可以通过三种方式使用在创建Pod时,通过......
  • D3 k8s之pod共享网络和文件的实现原理
    》pod是一个逻辑概念,不是一个隔离的环境。引入pod目的是满足容器之间密切协作关系所需的环境,尤其是网络通信和文件共享的需求1、容器之间网络通信》 假设nginx应用程序启用了http_stub_status_module模块,以提供关于nginx运行状态的统计信息。同时,获取这些统计信息的访问路......
  • D2 k8s之pod存在的意义
    1、pod简介》 kubernetes提供的一系列资源和功能都是以pod为中心展开的,旨在高效的管理和编排这些pod》 pod是kubernetes中最小的调度单元,一个pod可以包含一个或多个容器,这些容器运行在同一节点上,从而可以实现共享网络、存储以及其他资源。这种涉及使得pod能够满足复杂的应用程序......
  • 潜行工具箱-支持拼拍拼-解决二次单号限制问题-还可店铺管理
    图片:椰子作者:yezic01在日新月异的电商浪潮中,每一位商家都在寻找那把能够开启成功之门的钥匙。面对日益严格的平台规则,尤其是二次单号限制这一难题,无数商家倍感压力。然而,科技的进步总是能为行业带来意想不到的解决方案——潜行工具箱,作为一款集创新技术与实战经验于一体的电......
  • 不同平台下对进程资源进行限制(CPU与内存)
    不同平台下对进程资源进行限制(CPU与内存)因实际工作中发现,如果不对某些进程硬件资源进行限制,可能某个进程会把操作系统资源耗尽,导致操作系统死机等问题出现。于是就想,是否有什么方法可以限制指定进程内存使用上限,避免其无上限申请内存。WindowsWindows平台可通过作业对......
  • kubeadm升级k8s之1.23.17->1.24.17
    查看当前版本[root@k8s-master31~]#kubectlgetnodes-owideNAMESTATUSROLESAGEVERSIONINTERNAL-IPEXTERNAL-IPOS-IMAGEKERNEL-VERSIONCONTAINER-RUNTIMEk8s-master31Ready......
  • k8s限制外部管理访问
    #允许控制节点iptables-AINPUT-smaster-node-ptcp--dport6443-jACCEPT#允许数据节点iptables-AINPUT-sdata-node-ptcp--dport6443-jACCEPT#允许k8s内部服务网段iptables-AINPUT-s10.40.0.0/16-ptcp--dport6443-jACCEPT#允许k8s内部POD网段iptab......