k8s资源之ResourceQuota

 欢迎关注我的公众号:

 目前刚开始写一个月,一共写了18篇原创文章,文章目录如下:

istio多集群探秘,部署了50次多集群后我得出的结论

istio多集群链路追踪,附实操视频

istio防故障利器,你知道几个,istio新手不要读,太难!

istio业务权限控制,原来可以这么玩

istio实现非侵入压缩,微服务之间如何实现压缩

不懂envoyfilter也敢说精通istio系列-http-rbac-不要只会用AuthorizationPolicy配置权限

不懂envoyfilter也敢说精通istio系列-02-http-corsFilter-不要只会vs

不懂envoyfilter也敢说精通istio系列-03-http-csrf filter-再也不用再代码里写csrf逻辑了

不懂envoyfilter也敢说精通istio系列http-jwt_authn-不要只会RequestAuthorization

不懂envoyfilter也敢说精通istio系列-05-fault-filter-故障注入不止是vs

不懂envoyfilter也敢说精通istio系列-06-http-match-配置路由不只是vs

不懂envoyfilter也敢说精通istio系列-07-负载均衡配置不止是dr

不懂envoyfilter也敢说精通istio系列-08-连接池和断路器

不懂envoyfilter也敢说精通istio系列-09-http-route filter

不懂envoyfilter也敢说精通istio系列-network filter-redis proxy

不懂envoyfilter也敢说精通istio系列-network filter-HttpConnectionManager

不懂envoyfilter也敢说精通istio系列-ratelimit-istio ratelimit完全手册

 

————————————————

资源限制:

kubernetes提供了两种资源限制的方式:ResourceQuota LimitRange

其中ResourceQuota 是针对namespace做的资源限制,而LimitRange是针对namespace中的每个组件做的资源限制。

ResourceQuota:

配置一个namespace可以使用的资源量

资源配额能够对计算资源CPU和内存)、存储资源、以及对资源对象的数量进行管理。

常用资源类型:

计算资源配额

存储资源配额

对象数量配额

计算资源配额:

存储资源配额:

requests.storage

persistentvolumeclaims

<storage-class-name>.storageclass.storage.k8s.io/requests.storage

<storage-class-name>.storageclass.storage.k8s.io/persistentvolumeclaims

requests.ephemeral-storage

limits.ephemeral-storage

对象数量配额:

Quota Scopes:

示例:

[root@master01 compute-resources]# cat compute-resources.yaml 
apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources
spec:
  hard:
    requests.cpu: "0.1"
    requests.memory: 100Mi
    limits.cpu: "0.2"
    limits.memory: 200Mi
[root@master01 storage]# cat storage.yaml 
apiVersion: v1
kind: ResourceQuota
metadata:
  name: storage-resources
spec:
  hard:
    requests.storage: 200Mi
    requests.ephemeral-storage: 1Mi
    limits.ephemeral-storage: 1Mi
    nfs-sc.storageclass.storage.k8s.io/requests.storage: 100Mi
    nfs-sc.storageclass.storage.k8s.io/persistentvolumeclaims: 1
    persistentvolumeclaims: 2
[root@master01 object-counts]# cat object-counts.yaml 
apiVersion: v1
kind: ResourceQuota
metadata:
  name: object-counts
spec:
  hard:
    persistentvolumeclaims: 1
    services.loadbalancers: 1
    services.nodeports: 1
    configmaps: 1
    pods: 1
    resourcequotas: 1
    services: 1
    secrets: 1
[root@master01 best-effort]# cat best-effort.yaml 
apiVersion: v1
kind: ResourceQuota
metadata:
  name: best-effort
spec:
  hard:
    pods: "2"
  scopes:
  - BestEffort
[root@master01 not-best-effort]# cat not-best-effort.yaml 
apiVersion: v1
kind: ResourceQuota
metadata:
  name: not-best-effort
spec:
  hard:
    pods: "2"
    requests.cpu: "0.1"
    requests.memory: 100Mi
    limits.cpu: "0.2"
    limits.memory: 200Mi
  scopes:
  - NotBestEffort
[root@master01 termination]# cat termination.yaml 
apiVersion: v1
kind: ResourceQuota
metadata:
  name: termination
spec:
  hard:
    requests.cpu: "0.1"
    requests.memory: 100Mi
    limits.cpu: "0.2"
    limits.memory: 200Mi
  scopes:
  - Terminating
[root@master01 nottermination]# cat notterminating.yaml 
apiVersion: v1
kind: ResourceQuota
metadata:
  name: termination
spec:
  hard:
    requests.cpu: "0.1"
    requests.memory: 100Mi
    limits.cpu: "0.2"
    limits.memory: 200Mi
  scopes:
  - NotTerminating
[root@master01 prioity-class]# cat prioity-class.yaml 
apiVersion: v1
kind: ResourceQuota
metadata:
  name: priority-high
spec:
    hard:
      cpu: "0.1"
      memory: 100Mi
      pods: "2"
    scopeSelector:
      matchExpressions:
      - operator : In
        scopeName: PriorityClass
        values: ["high"]

### Kubernetes 中的 ResourceQuota 及其使用方法 ResourceQuota 是 Kubernetes 中用于限制命名空间(Namespace)资源使用上限的一种机制。通过定义 ResourceQuota,集群管理员可以控制每个命名空间中资源的配额,包括 CPU、内存请求与限制、Pod 数量、服务数量等,从而实现多租户环境下的资源公平分配和防止资源滥用。 ResourceQuota 主要作用于命名空间级别,能够对以下类型的资源进行限制: - **计算资源**:如 `cpu` 和 `memory` 的请求(request)和限制(limit) - **对象数量**:如 Pod、Service、ReplicationController、PersistentVolumeClaim 等资源对象的数量 - **存储资源**:如特定存储类(StorageClass)的存储卷大小限制 例如,一个限制命名空间内 CPU 请求总量不超过 20 核、内存请求不超过 1GB,并且最多只能创建 10 个 Pod 的 ResourceQuota 配置如下: ```yaml apiVersion: v1 kind: ResourceQuota metadata: name: example-quota namespace: default spec: hard: cpu: "20" memory: 1Gi pods: "10" ``` 当某个命名空间中的资源使用达到 ResourceQuota 所设定的硬性限制时,Kubernetes 将拒绝进一步的资源创建或分配请求。这种机制对于在共享集群环境中实现资源隔离和成本控制非常关键 [^3]。 此外,ResourceQuota 还支持更细粒度的配置选项,例如通过 `scopes` 字段指定配额适用的范围,如仅适用于 BestEffort 类型的 Pod 或者非终止状态的资源。它还可以与 LimitRange 结合使用,以确保单个容器的资源请求不会超过命名空间级别的总体限制 [^2]。 为了查看某个命名空间下当前的资源使用情况和配额限制,可以使用以下命令: ```bash kubectl get resourcequota -n <namespace> ``` 这将显示该命名空间下的所有 ResourceQuota 对象及其当前使用量和硬性限制值 [^2]。 ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hxpjava1

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值