kubernetes
  • Introduction
  • 安装
    • 组件端口
    • 二进制安装
    • Kubeadm
      • 安装单Master集群
      • 安装高可用集群(手动分发证书)
      • 安装高可用集群(自动上传证书)
      • 安装ETCD集群
      • 安装高可用集群(外部ETCD)
    • 启动参数解析
      • ETCD相关参数
  • 负载均衡
    • Service
    • Ingress
    • 安装MetalLB
    • Nginx-ingress-controller
      • 转发TCP与UDP服务
      • 启动参数
      • 自定义Nginx模板
  • 存储
    • Volume
    • PV与PVC
    • StorageClass
    • Local-PV
      • Static-Provisioner
    • 实践
      • Ceph-RBD
      • NFS
  • 有状态服务
    • Mysql实践
    • Operator
      • Etcd
      • Zookeeper
      • Mysql
  • 认证与授权
    • 认证
      • 实践
    • 授权
  • Helm
    • 安装
    • Chart
      • 依赖
    • Helm命令
    • Repository
  • 日志
  • 监控
    • Prometheus体系
      • Prometheus
        • 内置函数
        • 配置
          • 规则文件
        • PromQL
      • Exporter
        • Metrics
      • Grafana
        • 配置
      • AlertManager
        • 配置
    • 容器监控
      • Cadvisor的指标
      • k8s中部署Prom与Cadvisor
  • Istio
  • 资源预留
    • imagefs与nodefs
    • 总结
  • 集群联邦
    • 联邦DNS原理
    • 联邦DNS安装
    • 安装federation-v1
  • Other
    • ImagePullSecret
    • QOS
    • Apiserver的代理
    • 资源配额
Powered by GitBook
On this page

Was this helpful?

  1. Other

资源配额

资源配额

我们可以给某个命名空间设置资源配额,比如在命名空间default下创建一个如下的ResourceQuota对象

apiVersion: v1
kind: ResourceQuota
metadata:
  name: resourcequota
  namespace: default
spec:
  hard:
    requests.cpu: "1"
    requests.memory: 1Gi
    limits.cpu: "2"
    limits.memory: 2Gi
    pods: "100"

那么,default命名空间下,所有Pod的

  • requests.cpu之和不能超过"1"

  • requests.memory之和不能超过"1Gi"

  • limits.cpu之和不能超过“2”

  • limits.memory之和不能超过“2Gi”

  • pods数不能超过“100”

当我们在命名空间中创建了一个ResourceQuota对象之后,该命名空间下所有的Pod都必须指定requests与limits。

LimitRange

我们可以在命名空间中创建一个LimitRange对象,如下:

apiVersion: v1
kind: LimitRange
metadata:
  name: limitrange
  namespace: default
spec:
  limits:
  - type: Container
    min:
      cpu: "0.5"
      memory: 512Mi
    max:
      cpu: "1"
      memory: 1Gi
    defaultRequest:
      cpu: "0.8"
      memory: 800Mi
    default:
      cpu: "0.8"
      memory: 800Mi

那么,该命名空间下的Pod的资源配置需要满足:

  • min.cpu <= requests.cpu <= limits.cpu <= max.cpu

  • min.memory <= requests.memory <= limits.memory <= max.memory

如果该命名空间下的Pod没有指定requests与limits,那么

  • requests.cpu会默认设置为defaultRequest.cpu

  • requests.memory会默认设置为defaultRequest.memory

  • limits.cpu会默认设置为default.cpu

  • limits.memory会默认设置为default.memory

注意事项

虽然我们可以在一个命名空间下创建多个ResourceQuota与LimitRange对象,但是我们并不建议这么做,因为这会导致不可预知的效果

PreviousApiserver的代理

Last updated 5 years ago

Was this helpful?