• kubernetes之创建基于名称空间的内存和cpu限额示例


    系列目录

    首先我们创建一个名称空间

    kubectl create namespace quota-mem-cpu-example
    

    创建资源配额

    apiVersion: v1
    kind: ResourceQuota
    metadata:
      name: mem-cpu-demo
    spec:
      hard:
        requests.cpu: "1"
        requests.memory: 1Gi
        limits.cpu: "2"
        limits.memory: 2Gi
    

    通过命令创建它

    kubectl apply -f https://k8s.io/examples/admin/resource/quota-mem-cpu.yaml --namespace=quota-mem-cpu-example
    

    查看它的详细信息:

    kubectl get resourcequota mem-cpu-demo --namespace=quota-mem-cpu-example --output=yaml
    

    资源配额对名称空间quota-mem-cpu-example增加了以下限制:

    • 每一个pod都必须内存申请/限制,cpu申请/限制

    这里是针对上面的示例来说的,因为示例中配额同时配置了这4个选项,因此pod必须声明这四个选项

    • 所有容器内存申请总和不得超过1G

    • 所有内存限制不得超过2g

    • 所有容器申请的cpu不得超过1

    • 所有容器限制的cpu不得超过2

    下面创建一个pod

    apiVersion: v1
    kind: Pod
    metadata:
      name: quota-mem-cpu-demo
    spec:
      containers:
      - name: quota-mem-cpu-demo-ctr
        image: nginx
        resources:
          limits:
            memory: "800Mi"
            cpu: "800m" 
          requests:
            memory: "600Mi"
            cpu: "400m"
          
    

    创建它

    kubectl apply -f https://k8s.io/examples/admin/resource/quota-mem-cpu-pod.yaml --namespace=quota-mem-cpu-example
    

    查看配额详细信息

    kubectl get resourcequota mem-cpu-demo --namespace=quota-mem-cpu-example --output=yaml
    
    status:
      hard:
        limits.cpu: "2"
        limits.memory: 2Gi
        requests.cpu: "1"
        requests.memory: 1Gi
      used:
        limits.cpu: 800m
        limits.memory: 800Mi
        requests.cpu: 400m
        requests.memory: 600Mi
    

    通过输出信息可以看到资源的配额值和已经使用的值,可以看到pod的申请和限制均没有超限

    尝试再创建一个pod

    apiVersion: v1
    kind: Pod
    metadata:
      name: quota-mem-cpu-demo-2
    spec:
      containers:
      - name: quota-mem-cpu-demo-2-ctr
        image: redis
        resources:
          limits:
            memory: "1Gi"
            cpu: "800m"      
          requests:
            memory: "700Mi"
            cpu: "400m"
    

    通过配置文件可以看到,pod申请的内存为700M,请注意已使用的申请内存和新请求的和已经超限.

    600M+700M>1G

    尝试创建pod

    kubectl apply -f https://k8s.io/examples/admin/resource/quota-mem-cpu-pod-2.yaml --namespace=quota-mem-cpu-example
    

    输出信息

    Error from server (Forbidden): error when creating "examples/admin/resource/quota-mem-cpu-pod-2.yaml":
    pods "quota-mem-cpu-demo-2" is forbidden: exceeded quota: mem-cpu-demo,
    requested: requests.memory=700Mi,used: requests.memory=600Mi, limited: requests.memory=1Gi
    

    从输出信息可以看到,创建这个pod将会导致内存申请超限,因此第二个pod不会创建成功

    如果想要对pod的资源进行限制,则可以使用LimitRange,使用了LimitRange后,超过LimitRange限制资源的pod将不会创建,并且如果容器没有指定申请或者限制,会被赋以LimitRange的默认值.

  • 相关阅读:
    使用python将文字写入word文档中
    将图片显示到excel中
    新的写入xlsxwriter和追加写入openpyxl
    oracle 12.2 alter table move online
    主从复制管理和故障处理方法
    MySQL中的权限管理
    windows的CMD如何全屏最大化
    Troubleshooting query v$asm_disk v$asm_diskgroup hang
    library cache锁争用解决
    一则由ORA-1652引起的fixed object相关问题
  • 原文地址:https://www.cnblogs.com/tylerzhou/p/11042257.html
Copyright © 2020-2023  润新知