首页 > 系统相关 >Kubernetes Container、Pod、Namespace内存及CPU限制

Kubernetes Container、Pod、Namespace内存及CPU限制

时间:2022-08-25 20:22:51浏览次数:96  
标签:Container Kubernetes namespace Namespace quota memory ResourceQuota Pod requests

Quota资源限制

  对每个命名空间的资源消耗总量提供限制(在一个namespace下创建quota,就会只对当前namespace进行资源限制)。它可以限制命名空间中某种类型的对象的总数目上限,也可以限制命令空间中的单个Pod可以使用的计算资源的总上限。

 

配额类型

  Kubernetes可以限制两种类型资源:

  • 对象数量:Kubernetes 资源数量,例如pods,services和ingress等。实施资源数量配额可以提高kubernetes稳定性,避免Etcd数据库无限增长,还可以避免占用node中其他功能资源(例如ip地址服务)。
  • 计算资源:物理或者虚拟资源容量,例如CPU,memory和存储容量。同样,实施计算资源配额可以避免消耗kubernetes集群中单个node所有计算资源,避免单个namespace中应用消耗所有集群资源,导致其他namespace中应用无法正常运行。

 

  kubernetes实施配额,通过ResourceQuota类型资源。一个namespace可以包含多个ResourceQuota对象,这些限制是累加的,一般情况,多个ResourceQuota 对象不会限定同一个资源。

 

对象数量:

  • persistentvolumeclaims
  • services
  • secrets
  • configmaps
  • replicationcontrollers
  • deployments.apps
  • deployments.apps
  • statefulsets.apps
  • jobs.batch
  • cronjobs.batch

 

  可以限制给定命名空间中可以请求的计算资源的总和

资源名称

描述

limits.cpu

所有非终止状态的Pod,其CPU限额总量不能超过该值。

limits.memory

所有非终止状态的Pod,其内存限额总量不能超过该值。

requests.cpu

所有非终止状态的Pod,其CPU需求总量不能超过该值。

requests.memory

所有非终止状态的Pod,其内存需求总量不能超过该值。

hugepages-<size>

对于所有非终止状态的Pod,针对指定尺寸的巨页请求总数不能超过此值。

cpu

与requests.cpu相同。

memorys

与requests.memory相同。

 

配额管理

       示例:创建ResourceQuota对象

[root@master10 ~]# kubectl create ns quota	#创建一个ns用于测试
namespace/quota created
[root@master10 ~]# kubectl config set-context --namespace quota --current

kubectl create quota -h   #查看创建帮助

#创建quota my-quota
kubectl create quota my-quota --hard=cpu=1,memory=1G,pods=2,services=3,replicationcontrollers=2,resourcequotas=1,secrets=5,persistentvolumeclaims=10

 

  也可以通过yaml方式创建:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: my-quota
  namespace: quota
spec:
  hard:
    persistentvolumeclaims: "10"
    pods: "5"
    requests.cpu: "2"
    limits.cpu: "4"
    requests.memory: 2Gi
    limits.memory: 4Gi
    secrets: "5"
    services: "3"

 

  pvc限制示例:

apiVersion: v1
kind: ResourceQuota
metadata:
  name: storagequota
spec:
  hard:
    persistentvolumeclaims: "5"
    requests.storage: "5Gi"

 

  查看创建的quota

kubectl get resourcequotas
kubectl describe resourcequotas my-quota

示例:

创建一个quota对deployment pod数量进行限制,上限为5副本

apiVersion: v1
kind: ResourceQuota
metadata:
  name: my-quota
  namespace: quota
spec:
  hard:
    persistentvolumeclaims: "10"
    pods: "5"
    secrets: "5"
    services: "3"

 

创建deployment

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  strategy: {}
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        imagePullPolicy: IfNotPresent

 

水平伸缩扩展deployment为5副本

水平伸缩扩展deployment为6和7副本

 

标签:Container,Kubernetes,namespace,Namespace,quota,memory,ResourceQuota,Pod,requests
From: https://www.cnblogs.com/punchlinux/p/16625590.html

相关文章