zoukankan      html  css  js  c++  java
  • k8s使用hpa自动横向伸缩资源

    度量获取流程:pod到cadvisor到heapster到hpa

    cadvisor获取当前node节点的pod的度量信息,向上汇总到heapster,然后hpa从heapster抓取信息,然后hpa控制器根据用户定义的度量的targetavg值做计算,让pod的平均度量值达到要求,比如以cpu度量为例子,用户定义30%,若当前有三个Pod,里面的currentcpu/requestscpu 的百分比分别为50,50,60,那么(50+50+60)/3 = 55,超过了用户定义的30,这时就会以160/30取值然后向上取整,即160/30=5.34,那么就会取整数6,当6不超过用户定义的最大允许存在的容器时,hpa就会自动横向扩容pod数量达到6个,具体是hpa取到整数6副本时,会去更改所监控的资源的replicas数量,然后由资源对象的控制器去调整pod数量,比如以deployment为例子,deplyment控制器watch监听deployment资源对象,当对象的replicas数量改变时,deployment控制器会生成replicaset对象,然后replicaset控制器根据对象又会生成pod资源清单,资源清单此时没有调度器调度,所以pod清单里面的node节点为空,调度器就会根据一系列算法对pod选择合适的node节点运行,选择好后,apiserver会让选中的node节点的kubelet去根据pod清单调用docker创建对应的pod。

    kubectl autoscale deployment learnlogs --cpu-percent=30 --min=1 --max=5 -n devops

    以上命令会生成hpa,监控deployment对象learnlogs,度量以cpu百分比为度量,最小的pod数量为1,最大的pod数量为5 deployment所在的命名空间是devops

    可以用watch -n 1 kubectl get hpa,deployment -n devops 监听hpa与deployment对象的变化

    之前使用的是heapster,但是1.12后就废弃了,之后使用的替代者是metrics-server;metrics-server是由用户开发的一个api server,用于服务资源指标,而不是服务pod,deploy的。metrics-server本身不是k8s的组成部分,是托管运行在k8s上的一个pod,那么如果想要用户在k8s上无缝的使用metrics-server提供的api服务,因此在新一代的架构中需要这样去组合它们。如图,使用一个聚合器去聚合k8s的api server与metrics-server,然后由群组/apis/metrics.k8s.io/v1beta1来获取。
    所以新版本的k8s要想用hpa自动伸缩资源,需要先部署mertrics-server,主要部署的资源是serveraccount跟role,clusterrole,metrics-server的deployment,还有service,最后把service注册到apiserver服务中去

    aggregated-metrics-reader.yaml auth-reader.yaml metrics-server-deployment.yaml metrics-server-service.yaml
    auth-delegator.yaml metrics-apiservice.yaml  resource-reader.yaml

    参考:https://www.cnblogs.com/binghe001/p/12821804.html

  • 相关阅读:
    从Oracle提供两种cube产品说开
    Sql Server DWBI的几个学习资料
    Unload Oracle data into text file
    初学Java的几个tips
    我常用的Oracle知识点汇总
    benefits by using svn
    如何在windows上使用putty来显示远端linux的桌面
    building commercial website using Microsoft tech stack
    Understand Thread and Lock
    Update google calendar by sunbird
  • 原文地址:https://www.cnblogs.com/allmdzz/p/14523693.html
Copyright © 2011-2022 走看看