美文网首页kubernetes
k8s集群可扩展性和性能SLI/SLO

k8s集群可扩展性和性能SLI/SLO

作者: 栗山海芋 | 来源:发表于2019-01-09 11:54 被阅读0次

    k8s集群重要的特性是可扩展性和性能稳定性。参考k8s测试小组的文档,可以使用SLI(Service Level indicators)和 SLO(Service Level Objectives)来定义集群性能的衡量标准和集群性能要达到的目标。

    SLI/SLO 需要满足如下特性:

    • 必须是可测试的
    • 必须是可以被用户理解的

    SLO 类型

    一般SLI是比较独立的,只用来定义测试什么以及怎样测试;而SLO会提供一个性能保证, 即在满足的集群环境中,集群性能可以获得保证。

    一般有如下两类SLO

    • 负载平稳状态下的SLO(Steady state SLO)
      在负载平稳状态中,对集群做的所有操作,保证集群的行为满足SLO定义的要求。

      稳定状态的定义:
      We define system to be in steady state when the cluster churn per second is <= 20, where
      churn = #(Pod spec creations/updates/deletions) + #(user originated requests) in a given second

    • 突发高负载下的SLO(Burst SLO)
      在突发高负载的情况下,我们需要保证集群的稳定性。

    环境

    为了保证达到SLO定义的性能目标,集群部署环境需要满足如下要求:

    • master规格: 16C32G
    • 主etcd运行在master节点
    • 事件保存在独立的etcd集群
    • kubernets 版本至少在 x.y.z 以上

    kubernetes SLI/SLO

    以下是k8s集群要达到的服务质量目标(SLO),需要集群通过以下测试来保证性能的稳定性。

    Steady state SLIs/SLOs

    SLI SLO
    测试一段时间内k8s资源对象的 post/put/patch/delete api调用,观察api响应延时 99%的api延时 <= 500ms
    测试一段时间内k8s资源对象的 get/list api调用延时 99%的api延时: scope=resource: <= 1s, scope=namespace: <= 5s , scope=cluster: <= 30s
    测试无状态和可调度pod的启动延时,不包括拉取镜像和运行init容器的时间 99%的pod启动延时 <= 5s
    测试集群内service的访问延时(node之间网络延时) node之间RTT值99% <= X
    测试集群内DNS域名解析延时 99%值 <= X

    Burst SLIs/SLOs

    SLI SLO
    平均每个node启动30个pod,一共启动 30 * node_num 个pod所需要的时间 所有pod启动完成 <= X minutes

    Normal SLO
    apiserver 进程的 cpu 使用率少于 70%

    Reference:

    Kubernetes scalability and performance SLIs/SLOs

    相关文章

      网友评论

        本文标题:k8s集群可扩展性和性能SLI/SLO

        本文链接:https://www.haomeiwen.com/subject/obbwrqtx.html