高级调度-Resourcequota-limitRange

十二章:高级调度准入控制

1.为什么生产一定要用ResourceQuota

资源配额
image

image

image

ResourceQuota

2.1 ResourceQuota配置

# cat resource.yaml
========================================
apiVersion: v1
kind: ResourceQuota
metadata:
  name: resource-test
  labels:
    app: resourcequota
spec:
  hard:
    pods: 50
    requests.cpu: 0.5
    requests.memory: 512Mi
    limits.cpu: 5
    limits.memory: 16Gi
    configmaps: 20
    requests.storage: 40Gi
    persistentvolumeclaims: 20
    replicationcontrollers: 20
    secrets: 20
    services: 50
    services.loadbalancers: "2"
    services.nodeports: "10"
============================================
pods: 限制最多启动Pod的个数
requests.cpu 限制最高的cpu请求数
requests.memory: 限制最高内存的请求数
limits.cpu 限制最高的cpu的limit上限
limits.memory 限制最高内存的limit上线
===========================================
上面resourcequota规则创建完成后,下面搞了一个deployment测试
[root@k8s-master01 ~]# cat nginxtest.yaml 
apiVersion: apps/v1   ##版本号 ,pod资源
kind: Deployment      ##类型/控制器
metadata:               		##数据标签
  name: nginx2-deployment
  labels:						##子标签
    app: nginx				##业务容器
spec:
  replicas: 3					##副本集
  selector:						##选择器
    matchLabels:				##匹配标签
      app: nginx					##对应上面的业务容器
  template:					##模板
    metadata:
      labels:
        app: nginx
    spec:
      containers:       ##容器
      - name: nginx     ##对应上面的业务容器
        image: nginx:1.18.0    ##使用镜像信息
        ports:
        - containerPort: 80      ##容器端口信息
---
apiVersion: v1        ##版本号
kind: Service        ##服务类型
metadata:
  name: nginx2-service
  labels:
    app: nginx
spec:
  type: NodePort     ##端口映射
  ports:
  - port: 80 		##内部端口
    targetPort: 80   ##映射端口
  selector:       ##选择器/
    app: nginx			##选择业务进行发布
=====================================================
 测试结果:有了resourcequota的限制,上面的deployment创建失败,删除限制则创建成功

LimitRange

3.1 引言

光靠ResourceQuota配置还是不行的,需要更细节化的限制;

那么LimitRange的出现就是在ResourceQuota的基础上更加细节化的限制资源使用。

只有ResourceQuota的限制还是不够

image

LimitRange做了什么

image

3.2配置示例

配置示例:
[root@k8s-master01 ResourceQuota]# cat limitrange.yaml 
apiVersion: v1
kind: LimitRange
metadata:
  name: cpu-mem-limit-range
spec:
  limits:
  - default:
      cpu: 1
      memory: 512Mi
    defaultRequest:
      cpu: 0.5
      memory: 256Mi
    type: Container
================================
➢ default:默认limits配置
➢ defaultRequest:默认requests配置

=========查看============================
[root@k8s-master01 ResourceQuota]# kubectl get LimitRange
NAME                  CREATED AT
cpu-mem-limit-range   2022-11-20T17:37:04Z

LimitRange配置示例:requests和limits的范围

3.3内存cpu限制

===================
[root@k8s-master01 ResourceQuota]# cat limitrange.yaml 
apiVersion: v1
kind: LimitRange
metadata:
  name: cpu-mem-limit-range
spec:
  limits:
  - default:
      cpu: 1
      memory: 512Mi
    defaultRequest:
      cpu: 0.5
      memory: 256Mi
    type: Container
    max:
      cpu: "1800m"
      memory: 1Gi
    min:
      cpu: "200m"
      memory: 200Mi
    type: Container
================
➢ max:内存CPU的最大配置
➢ min:内存CPU的最小配置

3.4 存储卷限制

​ 限制申请存储空间的大小

apiVersion: v1
kind: LimitRange
metadata:
  name: storagelimits
spec:
limits:
- type: PersistentVolumeClaim
  max:
    storage: 2Gi
  min:
    storage: 1Gi
posted @ 2022-11-21 02:00  名字长的像一只老山羊  阅读(51)  评论(0编辑  收藏  举报