【kubernetes】pod资源配额

1. 说明
  • 1.在 Kubernetes 中,Pod 资源配额用于限制命名空间中可以消耗的计算资源(如 CPU 和内存)总量,以防止某个命名空间过度占用集群资源,确保资源在多个团队或项目之间公平分配。
  • 2.资源配额主要通过 ResourceQuota 对象实现,同时可以结合 LimitRange 提供更细粒度的资源限制。
  • 3.LimitRange 可以为命名空间中的 Pod 和容器设置默认的资源请求和限制,并定义资源的最小值和最大值。与 ResourceQuota 结合使用,可以确保 Pod 的资源使用既符合默认配置,又不会超出命名空间的资源配额。
2. ResourceQuota 的作用
  • 1.限制资源总量:可以限制命名空间中所有 Pod 的 CPU、内存、存储等资源的总量。

  • 2.限制资源请求和限制:可以限制 Pod 的资源请求(requests)和限制(limits)的总和。

  • 3.限制对象数量:可以限制命名空间中可以创建的 Pod、Service、ConfigMap 等对象的数量。

3. 创建 ResourceQuota
  • 1.ResourceQuota 是一个命名空间级别的资源对象,可以通过 YAML 文件定义并应用到命名空间中。
4. 限制 CPU 和内存
  • 1.限制命名空间中 CPU 和内存资源的 ResourceQuota 示例:
apiVersion: v1
kind: ResourceQuota
metadata:
  name: compute-resources
  namespace: my-namespace
spec:
  hard:
    requests.cpu: "4"          # 限制所有 Pod 的 CPU 请求总量为 4 核
    requests.memory: 8Gi       # 限制所有 Pod 的内存请求总量为 8 GiB
    limits.cpu: "8"            # 限制所有 Pod 的 CPU 限制总量为 8 核
    limits.memory: 16Gi        # 限制所有 Pod 的内存限制总量为 16 GiB
5. 限制对象数量
  • 1.一个限制命名空间中对象数量的 ResourceQuota 示例:
apiVersion: v1
kind: ResourceQuota
metadata:
  name: object-counts
  namespace: my-namespace
spec:
  hard:
    pods: "10"                # 限制最多创建 10 个 Pod
    services: "5"             # 限制最多创建 5 个 Service
    configmaps: "10"          # 限制最多创建 10 个 ConfigMap
    persistentvolumeclaims: "3" # 限制最多创建 3 个 PVC
6. 应用 ResourceQuota
  • 1.将定义的 ResourceQuota 应用到命名空间中:kubectl apply -f resourcequota.yaml
7. 查看 ResourceQuota
  • 1.查看命名空间中的 ResourceQuota 及其使用情况:kubectl describe resourcequota compute-resources -n my-namespace
  • 3.输出示例:
Name:            compute-resources
Namespace:       my-namespace
Resource         Used   Hard
--------         ----   ----
requests.cpu     2      4
requests.memory  4Gi    8Gi
limits.cpu       4      8
limits.memory    8Gi    16Gi
7. 示例:LimitRange 配置
  • 1.以下是一个 LimitRange 示例,限制容器的 CPU 和内存请求和限制:
apiVersion: v1
kind: LimitRange
metadata:
  name: mem-limit-range
  namespace: my-namespace
spec:
  limits:
  - default:
      memory: 512Mi
      cpu: 500m
    defaultRequest:
      memory: 256Mi
      cpu: 250m
    type: Container
8. Pod 资源请求和限制
  • 1.在创建 Pod 时,可以指定容器的资源请求和限制。如果命名空间中启用了 ResourceQuota 和 LimitRange,则 Pod 的资源请求和限制必须符合这些配置。
  • 2.示例:Pod 配置
apiVersion: v1
kind: Pod
metadata:
  name: example-pod
  namespace: my-namespace
spec:
  containers:
  - name: app
    image: nginx
    resources:
      requests:
        memory: "256Mi"
        cpu: "250m"
      limits:
        memory: "512Mi"
        cpu: "500m"
9. 资源配额的注意事项
  • 1.命名空间隔离:ResourceQuota 是命名空间级别的,不同命名空间之间的资源配额互不影响。
  • 2.动态调整:ResourceQuota 可以动态调整,但调整后不会影响已存在的资源对象。
  • 3.超额分配:如果命名空间中的资源使用量接近配额限制,可能会导致新的 Pod 无法调度。
  • 4.监控和告警:建议结合监控工具(如 Prometheus、Grafana)实时监控资源使用情况,并在接近配额限制时发出告警。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

王佑辉

老板,赏点吧

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

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

打赏作者

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

抵扣说明:

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

余额充值