美文网首页
k8s namespace限制最大资源使用量

k8s namespace限制最大资源使用量

作者: Lyudmilalala | 来源:发表于2023-08-31 14:49 被阅读0次

当一个node上有多个服务,每个服务有自己的命名空间,且我们不希望因为一个服务请求过多而饿死其他服务时,可以限制每个命名空间的最大资源持有率

先生成一个命名空间

kubectl create ns rq-test-ns

创建一个限制命名空间资源利用率的约束

apiVersion: v1
kind: ResourceQuota
metadata:
  name: test-rq
  namespace: rq-test-ns
spec:
  hard:
    pods: "10"
    requests.cpu: "1"
    requests.memory: "500Mi"
    limits.cpu: "1"
    limits.memory: "500Mi"

P.S. 若ResourceQuota中设置了limit,则pod文件中必须包含limit参数

应用

编写在这个命名空间中创建pod的脚本

apiVersion: v1
kind: Pod
metadata:
  name: nginx-pod-3
  namespace: rq-test-ns
spec:
  containers:
  - name: nginx-pod-1
    image: nginx:latest
    resources:
      requests:
        cpu: "100m"
        memory: "100Mi"
      limits:
        cpu: "100m"
        memory: "200Mi"

连续在这个命名空间中创建pod,当pod的request.memory总和超过规定的命名空间request.memory时,会报错

$ kubectl apply -f .\podConfig.yml
pod/nginx-pod-1 created
$ kubectl apply -f .\podConfig.yml
pod/nginx-pod-2 created
$ kubectl apply -f .\podConfig.yml
Error from server (Forbidden): error when creating ".\\podConfig.yml": pods "nginx-pod-3" is forbidden: exceeded quota: test-rq, requested: limits.memory=200Mi,requests.memory=200Mi, used: limits.memory=400Mi,requests.memory=400Mi, limited: limits.memory=500Mi,requests.memory=500Mi

可以通过一下命令修改已存在的ResourceQuota

$ kubectl patch resourcequota test-rq -n rq-test-ns --type='json' -p="[{'op': 'replace', 'path': '/spec/hard/requests.memory', 'value': '300Mi'}]"
resourcequota/test-rq patched

然而,修改ResourceQuota并不会导致任何已经创建的Pod被驱逐。一旦Pod被创建,并且其资源请求被ResourceQuota接受,那么即使后续改变了ResourceQuota,该Pod的资源也不会被回收。

相关文章

  • K8S 创建资源的两种方式

    K8S 的资源有 Pod、Service、Volume、Namespace、ReplicaSet、Deployme...

  • 【k8s-8】--pod详解

    pod:是k8s项目中的原子调度单位。 docker:Namespace 做隔离,Cgroups 做限制,root...

  • 6. kubernetes 资源和调度

    6. kubernetes 资源和调度 一、资源配额与限制 资源配额用于管理命名空间(NameSpace)中对象...

  • 13 | K8S - 为什么需要Pod?

    前言说明 容器的本质是什么: 进程,Namespace做隔离,Cgroup做限制,rootfs做文件系统 k8s ...

  • k8s容器资源可见性配置-lxcfs

    k8s 容器资源可见性配置-lxcfs 问题 使用k8s容器化后,对内存 CPU 资源限制后,在容器内查看资源,显...

  • K8s 生产最佳实践-限制 NameSpace 资源用量

    前言 想象一下这个场景:多个系统运行在同一套 K8s 集群上,有重要系统,也有不太重要的系统。但是某一天,某个不重...

  • K8s LimitRange

    什么是LimitRange LimitRange是在namespace范围内,限制pod或container资源使...

  • 容器发展史与Docker概述

    docker 本质为宿主机上的一个进程。通过namespace实现了资源隔离。,通过cgroups实现了资源限制,...

  • Docker学习 - 核心原理的解读

    Docker 容器本质上是宿主机上的进程,通过namespace实现了资源的隔离,通过cgroups实现了资源限制...

  • docker总体架构

    是宿主机的一个进程,docker是通过namespace实现资源隔离,通过cgroup实现资源限制,通过写时复制技...

网友评论

      本文标题:k8s namespace限制最大资源使用量

      本文链接:https://www.haomeiwen.com/subject/hhdamdtx.html