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不生效

原文地址:https://www.cnblogs.com/pythonPath/p/11267415.html