zoukankan      html  css  js  c++  java
  • 06-容器的资源限制

    容器的资源限制

    kubernetes 资源控制的几种方式

    k8s 可以通过以下几种方式进行资源控制

    1. pod.spec.containers.resources
    2. limitranges
    3. resource quotas
    4. storagelimits

    服务质量

    requests( 资源需求,最低保障 ):
    limits( 资源限制,硬限制 ):

    CPU: 指CPU线程,一个线程 1000m

    内存

    QoS Class:自动生成

    • Guranteed(优先级高)

      同时设置CPU与内存的request和limits

      ​ CPU.limits=CPU.request

      memory.limits=CPU.request

    • Burstable(优先级中)

      至少一个容器设置了CPU或memory的request

    • BestEffort(优先级低)

      没有任何一个容器被设置了request和limits

    当服务器的资源不够用的时候

    • 会优先杀掉 优先级低 的容器。
    • 按照需求量,占用 比率高 的被杀掉。

    HeapSter+InfluxDB+Grafana(适用于1.10之前的版本,已经不建议使用)

    资源使用量数据采集工具

    • cAdvisor:集成与kunelet,收集node上 pod级别的用量
    • HeapSter: 收集汇总数据
    • InfluxDB:持久化数据
    • Grafana:展示数据

    https://github.com/huruizhi/kubeasz/blob/master/docs/guide/heapster.md

    资源指标API 与 自定义指标API

    • 资源指标
    • 自定义指标

    新一代架构

    • 核心指标流水线:kubelet metric-server 与 API Server 提供的api;监控CPU累计使用率,内存实时使用率,Pod的资源占用与node的磁盘占用率。

    • 监控流水线:从系统手机各种指标数据提供给终端用户、存储系统与HPA,非核心指标不能被k8s所解析。

    metric-server

    资源指标

    kube-aggregator 作为代理将核心指标的访问指向apiserver,将用户自定义的指标指向metric-server

    aggregator

    prometheus + k8s-prometheus-adapter

    自定义指标

    https://github.com/kubernetes/kubernetes/tree/master/cluster/addons/prometheus

    prometheus架构图

    注意:推荐使用helm安装部署prometues

    HPA 应用自动伸缩

    kubectl autoscale (-f FILENAME | TYPE NAME | TYPE/NAME) [--min=MINPODS] --max=MAXPODS
    [--cpu-percent=CPU] [options]

    kubectl explain hpa.spec.scaleTargetRef

    limitranges

    官网地址

    limitranges 可以对cpu、内存 进行资源限制。
    limitranges 有两种type :Pod与 Container。
    limitranges 的作用范围为namespace 下的资源,资源类型由type 决定。
    limitranges 对资源的控制有五种方式:

    • max :资源空闲时 最大的资源使用量
    • min:资源空闲时 最小的资源使用量
    • default:一般情况下最大使用量
    • default request:一般情况下最小使用量
    • maxLimitRequestRatio:最小/最大 使用量的比率。

    Pod 不适用于 default 与 default request。Container 适用于所有的资源控制方式。

    当namespace 中的containers 没有配置resources 资源限制,则使用limitranges的策略。

    如果namespace 中的资源配置了resources 资源限制的配置,则需要满足以下规则

    limitranges type 为container:
    min <= resource 资源限制 <= max
    
    limitranges type 为Pod:
    min <= pod 中所有container的resource 资源限制之和 <= max
    

    limitrange 控制策略在Pod Admission 阶段生效,对于在running 的pod不生效

  • 相关阅读:
    松翰单片机_SN8F570310——INTR
    松翰单片机_SN8F570310——EINT
    松翰单片机_SN8F570310——PWM
    松翰单片机_SN8F570310——SPI
    松翰单片机_SN8F570310——IIC
    松翰单片机_SN8F570310——UART
    全志_input
    全志_ADC驱动
    git随笔
    全志_外部中断
  • 原文地址:https://www.cnblogs.com/pythonPath/p/11267415.html
Copyright © 2011-2022 走看看