• 三、资源限制,重启策略


    1、资源限制
    Pod和Container的资源请求和限制:

    spec.containers[].resources.limits.cpu
    spec.containers[].resources.limits.memory
    spec.containers[].resources.requests.cpu
    spec.containers[].resources.requests.memory

    limits:pod最大可使用的资源

    requests:运行pod所分配的最小资源
    0 <= request <= limit,如果limit=0表示不对资源进行限制, 这时可以小于request。

    示例:

    apiVersion: v1
    kind: Pod
    metadata:
      name: frontend
    spec:
      containers:
      - name: db
        image: mysql
        env:
        - name: MYSQL_ROOT_PASSWORD
        value: "password"
      resources:
        requests:
          memory: "64Mi" #允许的内存64m
          cpu: "250m"    #允许的CPU,单个CPU的0.25核
        limits:
          memory: "128Mi" #允许的内存128m
          cpu: "500m"     #允许的CPU,单个CPU的0.5核
      - name: wp
        image: wordpress
        resources:
          requests:
            memory: "64Mi"
            cpu: "250m"
          limits:
            memory: "128Mi"
            cpu: "500m"
    [root@k8s-master01-etcd01 yaml]# kubectl describe node k8s-node02|egrep "frontend|Namespace"
      Namespace                  Name                                CPU Requests  CPU Limits  Memory Requests  Memory Limits  AGE
      default                    frontend                            500m (12%)    1 (25%)     128Mi (7%)       256Mi (14%)    12m

    2、LimitRange设置默认的资源限制及资源限制比例
    LimitRange从字面意义上来看就是对范围进行限制,实际上是对cpu和内存资源使用范围的限制
    资源配额是对整个名称空间的资源的总限制,是从整体上来限制的,而LimitRange则是对pod和container级别来做限制的
    由于LimitRange是基于名称空间的,因此为了测试,我们先创建一个名称空间

    kubectl create namespace example

    示例:

    apiVersion: v1
    kind: LimitRange
    metadata:
      name: mem-limit-range
      namespace: example
    spec:
      limits:
      - default:  # default limit
          memory: 512Mi
          cpu: 2
        defaultRequest:  # default request
          memory: 256Mi
          cpu: 0.5
        max:  # max limit
          memory: 800Mi
          cpu: 3
        min:  # min request
          memory: 100Mi
          cpu: 0.3
        maxLimitRequestRatio:  # 最小/最大 使用量的比率
          memory: 5
          cpu: 4
        type: Container
    [root@k8s-master01-etcd01 nginx]# kubectl describe limits -n example          
    Name:       mem-limit-range
    Namespace:  example
    Type        Resource  Min    Max    Default Request  Default Limit  Max Limit/Request Ratio
    ----        --------  ---    ---    ---------------  -------------  -----------------------
    Container   cpu       300m   3      500m             1              4
    Container   memory    100Mi  800Mi  256Mi            512Mi          5

    3、重启策略
    Always:当容器终止退出后,总是重启容器,默认策略。
    OnFailure:当容器异常退出(退出状态码非0)时,才重启容器。
    Never::当容器终止推出,从不重启容器。

    配置:

    apiVersion: v1
    kind: Pod
    metadata:
      name: foo
      namespace: awesomeapps
    spec:
      containers:
      - name: foo
        image: janedoe/awesomeapp:v1
      restartPolicy: Always   #配置重启策略,和containers一个级别
  • 相关阅读:
    Delphi三层开发小技巧:TClientDataSet的Delta妙用
    Delphi ADOQuery的速度优化
    delphi ADOQUery中错误解决方法"无法为更新定位行。一些值可能已在最后...
    ClientDataSet中修改,删除,添加数据和Delta属性
    学习 SQL 语句
    Delphi处理数据网格DBGrid的编辑框 获取还没有提交到数据集的字段文本
    移动前端头部标签(HTML5 head meta)
    最全面的前端开发指南
    解决jQuery.live在mobile safari(iphone / ipad / ipod)绑定失败的问题
    jQuery滑动选取数值范围插件
  • 原文地址:https://www.cnblogs.com/xw115428/p/11957916.html
Copyright © 2020-2023  润新知