zoukankan      html  css  js  c++  java
  • kubernetes之配置namespace的默认CPU请求和限制

    简介

    主要讲述如何给一个namespace中的容器配置默认的CPU请求数和CPU限制数。如果该命名空间中的容器创建时没有指定自定义的CPU策略,则会使用默认的CPU策略。

    备注:此文档参考官方文档,并加以自己的理解。如有误导性的内容,请批评指正。

    指定namespace中创建的pod配置默认的CPU请求大小和内存最大限额

    创建一个namespace

    # kubectl create namespace default-cpu-example
    

    default-cpu-example命名空间中创建一个pod的LimitRange对象,设置默认CPU最大限制数为1,CPU默认请求数为0.5。文件名:cpu-defaults.yaml

    apiVersion: v1
    kind: LimitRange
    metadata:
      name: cpu-limit-range
    spec:
      limits:
      - default:
          cpu: 1
        defaultRequest:
          cpu: 0.5
        type: Container
    

    创建资源对象

    # kubectl apply -f /root/k8s-example/namespace/cpu-defaults.yaml --namespace=default-cpu-example
    

    如果容器创建于default-cpu-example的namespace中,CPU请求数默认为0.5,最大限制数为1

    例如,创建一个包含一个容器的pod,文件名为:cpu-defaults-pod.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      name: default-cpu-demo
    spec:
      containers:
      - name: default-cpu-demo-ctr
        image: nginx
    

    创建pod

    # kubectl apply -f /root/k8s-example/namespace/cpu-defaults-pod.yaml --namespace=default-cpu-example
    

    查看pod资源详情:

    # kubectl get pod default-cpu-demo --output=yaml --namespace=default-cpu-example
    

    从下可以看到,容器default-cpu-demo中的CPU资源均为默认值

    containers:
    - image: nginx
      imagePullPolicy: Always
      name: default-cpu-demo-ctr
      resources:
        limits:
          cpu: "1"
        requests:
          cpu: 500m
    

    定义容器的CPU限制数且限制数大于默认容器限制数,不定义CPU请求数

    创建一个pod,自定义CPU最大限制数为1,CPU请求数不设置。文件名:cpu-defaults-pod-2.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      name: default-cpu-demo-2
    spec:
      containers:
      - name: default-cpu-demo-2-ctr
        image: nginx
        resources:
          limits:
            cpu: "1"
    
    # kubectl apply -f /root/k8s-example/namespace/cpu-defaults-pod-2.yaml --namespace=default-cpu-example
    

    查看该pod的资源信息:

    # kubectl get pod default-cpu-demo-2 --output=yaml --namespace=default-cpu-example
    

    在容器default-cpu-demo-2中,定义的CPU最大限制数是1,刚好等于默认的最大限制数1。从结果中看出,CPU的请求值是1,而不是默认的0.5

    resources:
      limits:
        cpu: "1"
      requests:
        cpu: "1"
    

    定义容器请求数,且容器请求数小于默认容器请求数,不定义限制数

    创建一个包含一个容器的Pod,文件名:cpu-defaults-pod-3.yaml

    apiVersion: v1
    kind: Pod
    metadata:
      name: default-cpu-demo-3
    spec:
      containers:
      - name: default-cpu-demo-3-ctr
        image: nginx
        resources:
          requests:
            cpu: "0.75"
    
    # kubectl apply -f /root/k8s-example/namespace/cpu-defaults-pod-3.yaml --namespace=default-cpu-example
    

    在容器default-cpu-demo-3中,定义了CPU的请求是是0.75,大于默认的CPU请求数0.5。从结果看,容器default-cpu-demo-3中的CPU请求数等于自定义值,容器的限制数不变,为默认值1

    resources:
      limits:
        cpu: "1"
      requests:
        cpu: 750m
    

    实验完毕,删除namespace

    # kubectl delete namespace default-cpu-example
    

    总结

    1、指定命名空间可以设置容器默认的CPU资源请求数(CPU requests)和CPU最大限制数(CPUlimits)

    2、容器可以自定义自身的CPU资源请求数和CPU最大限制数:

    • 如果容器定义的CPU最大限制数大于或等于默认的CPU最大限制数,则容器的CPU最大限制数为自定义的值,此时,容器CPU资源请求数也将等于容器自定义的CPU最大限制数
    • 如果定义的CPU请求数大于默认的CPU请求数且小于默认最大CPU限制数,则容器的CPU请求数等于自定义的CPU请求数;如果定义的CPU请求数小于默认的CPU请求数,则容器的CPU请求数等于自定义的CPU请求数。总的来说,只要定义的容器CPU请求数小于默认最大CPU限制数,则自定义CPU请求数优先级更高,此时CPU请求数等于自定义的值。
  • 相关阅读:
    SQLServer数据库优化常用语句
    雷军:用互联网思维改造传统产业
    互联网公司该向东莞学什么?
    企业管理:中层领导必看:什么叫工作到位?
    Web页面工作流设计器
    雷军:用互联网思维改造传统产业
    生成html页面客户端随机数和验证码
    IIS应用程序池频繁停止,任务管理器发现有多个w3wp.exe进程
    检测SqlServer服务器性能
    利用任务计划自动删除指定日期文件
  • 原文地址:https://www.cnblogs.com/mcsiberiawolf/p/12214371.html
Copyright © 2011-2022 走看看