kubernetes生态系统-Qos服务质量

本文作者:行癫

Qos在业内被叫做“服务质量等级”,但大多数人又称为“服务质量保证”,他是作用在pod上的一个配置,当我们使用kubernetes去创建pod时,默认会给我们的pod分配一个Qos等级。Qos的分类如下:

Guaranteed:Pod 里的每个容器都必须有内存/CPU 限制和请求,而且值必须相等。
Burstable:Pod 里至少有一个容器有内存或者 CPU 请求且不满足 Guarantee 等级的要求,即内存/CPU 的值设置的不同。
BestEffort:容器必须没有任何内存或者 CPU 的限制或请求。

这个配置不是通过一个配置项来配置的,而是通过配置 CPU/内存的 limits 与 requests 值的大小来确认服务质量等级的。
使用一下命令可以看到 pod 的配置输出中有 qosClass

kubectl get pod -o yaml

注意:该配置的作用是为了给资源调度提供策略支持,调度算法根据不同的服务质量等级可以确定将 pod 调度到哪些节点上。

例如,下面这个 YAML 配置中的 Pod 资源配置部分设置的服务质量等级就是 Guarantee。

spec:
  containers:
    ...
    resources:
      limits:
        cpu: 100m
        memory: 128Mi
      requests:
        cpu: 100m
        memory: 128Mi

下面的 YAML 配置的 Pod 的服务质量等级是 Burstable。

spec:
  containers:
    ...
    resources:
      limits:
        memory: "180Mi"
      requests:
        memory: "100Mi"

总结:(编者寄语)
关于kubernetes的Qos的配置很容易被kubernetes工程师忽略,但是这个配置关系的我们每个pod的质量。在我们写yaml文件时,这些我们一般情况会使用默认值,为了提高我们的资源利用率,为了提升每个pod的质量,建议大家在去使用yaml文件创建pod时,根据企业或者项目需求合理定义自己每个pod的质量。

关于kubernetes的其他软件,点击下面的链接即可查看:

  • kubernetes的云中漫步系列一
  • kubernetes的云中漫步系列二
  • kubernetes专栏
  • ……

你可能感兴趣的:(行癫k8s教程,kubernetes,docker,运维)