k8s-对命名空间资源配额

对k8s命名空间限制的方法有很多种,今天来演示一下很常用的一种

用的k8s对象就是ResourceQuota

一:创建命名空间

kubectl   create ns  test   #namespace命名空间可以简写成ns

二: 对命名空间进行限制

创建resourcequota

vim resourcequota.yaml

apiVersion: v1
kind: ResourceQuota               #定义配额资源   ResourceQuota
metadata:
  name: quota-test
  labels:
    app: quota
  namespace: test            #指定想要限制那个命名空间
spec:
  hard:                           #硬限制
    pods: "3"                     #pod最多创建3个
    count/deployments.apps: "1"   #deploy资源最多创建1个
    cpu: 5                        #cpu 下限总和5核 对比 container.resource下面的request.memory
    memory: 5Gi                   #内存  下限总和5Gi 对比 container.resource下面的request.memory
    limits.cpu: 10                #cpu 上限10核 对比 container.resource下面的limit.cpu
    limits.memory: 10Gi           #内存  上限10Gi 对比 container.resource下面的limit.memory

kubectl  apply  -f  resourcequota.yaml 

查看一下命名空间的详细信息  

kubectl describe ns test

这是显示的就是test这个名称空间下资源限制和使用情况

  • test 命名空间内最多只能有 1 个 Deployment。
  • CPU 使用总量不超过 5 个单位。
  • 内存使用总量不超过 5GiB。
  • Pod 的最大数量是 3 个。

三:创建deploy资源进行测试

vim test-deploy.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: test
  name: quota-deploy
spec:
  selector:
    matchLabels:
      app: test
  replicas: 2       # 副本数设置为 2
  template:
    metadata:
      labels:
        app: test
    spec:
      containers:
      - name: pod-quota
        image: 192.168.8.99/web/nginx:1.20
        imagePullPolicy: IfNotPresent
        resources:
          requests:   # 资源请求,保证容器启动所需的最小资源量
            cpu: 1     # 请求 1 个 CPU 核心
            memory: 1Gi # 请求 1GiB 内存
          limits:     # 资源限制,限制容器可以使用的最大资源量
            cpu: 2     # 限制使用不超过 2 个 CPU 核心
            memory: 2Gi # 限制使用不超过 2GiB 内存
        ports:
        - containerPort: 80

kubectl  apply -f test-deploy.yaml

kubectl get pod -n test

kubectl describe ns test

可以看到pod已经创建出来了,并且查看ns的详细信息显示资源限制pod已使用两个,因为我们的deploy的副本数是两个

cpu和memory都是对应我们yaml文件中指定的resources

---

现在将deploy副本数修改为5个看看会怎么样

kubectl edit deploy quota-deploy -n test

将副本数这里的2换成5 即可

再查看pod

可以看到明明我们写的副本数是5个他却只创建出来了3个

再查看ns的详细信息

可以看到我们定义的资源限制起作用了, 显示这个命名空间下的pod使用率已经满了

----------------

ResourceQuota 的好处和作用主要包括:

  1. 资源管理:限制命名空间内资源的使用量,防止资源过度消耗。
  2. 成本控制:避免不必要的资源浪费,降低运行成本。
  3. 稳定性保障:防止单个应用或用户占用过多资源,影响其他应用运行。
  4. 安全性增强:减少因资源滥用导致的系统不稳定或安全风险

猜你喜欢

转载自blog.csdn.net/weixin_63294004/article/details/142955821