Toggle navigation
首页
技术
骑行
羽毛球
资讯
联络我
登录
kubernetes服务自动伸缩
2018-10-22
kubernetes
> 本文介绍在kubernetes环境下如何配置服务自动伸缩 # 为什么需要自动伸缩? 如果一台server上面只部署一个服务,那么大多数情况下,这台server的负载是很低的,也就是有空闲资源。 kubernetes相当于把server集群当做一个大的资源池,然后进行合理的调度和利用,最大化的利用server的资源 # 自动伸缩的前提 对于一个需要自动伸缩的服务,前提是需要定义好这个服务主要的资源(内存,CPU),否则kubernetes是不清楚什么情况下需要伸缩服务。 定义资源的方法如下: ```yaml resources: requests: cpu: 250m memory: 256Mi limits: cpu: 500m memory: 512Mi ``` 其中cpu的单位为 milli,即千分之一个CPU # 定义自动伸缩条件 语法: kubectl autoscale deploy foo --min=2 --max=5 --cpu-percent=80 上述定义了一个自动伸缩,最小保持2个pod,最多不超过5个,衡量标准(desiredMetricValue)为80%的cpu占用。 服务对资源的使用量(currentMetricValue)是以requests中定义的cpu值为基准来计算的,比如,当前服务占用cpu为500m,则currentMetricValue=500m/250m=200%。 实际需要的副本数量计算公式如下: desiredReplicas = ceil[currentReplicas * ( currentMetricValue / desiredMetricValue )] 需要注意的是,如果 currentMetricValue / desiredMetricValue 的比值在 1 ± 0.1 之内,则会跳过缩放,这个 0.1 可以通过 --horizontal-pod-autoscaler-tolerance 来设定 另外,kubernetes会每5分钟检测一次是否需要缩放资源。 # 参考: * (Horizontal Pod Autoscaler)[https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/]
×
本文为博主原创,如需转载,请注明出处:
http://www.supperxin.com
返回博客列表