更新基础HPA实践文档

pull/49/merge
jmgao 2017-12-28 22:13:07 +08:00
parent ad4ee94a11
commit 1a4bc814d4
2 changed files with 63 additions and 2 deletions

56
docs/guide/hpa.md 100644
View File

@ -0,0 +1,56 @@
## Horizontal Pod Autoscaling
自动水平伸缩是指运行在k8s上的应用负载(POD),可以根据资源使用率进行自动扩容、缩容;我们知道应用的资源使用率通常都有高峰和低谷的时候,`HPA` 就是k8s 上最能体现区别于传统运维的一个优势特性,不仅能够弹性伸缩,而且完全自动化!
它可以根据 CPU 使用率或应用自定义 metrics 自动扩展 Pod 数量(支持 replication controller、deploymentk8s1.6版本之前是通过kubelet来获取监控指标来判断是否需要扩缩容1.6版本之后必须通过API server、Heapseter或者kube-aggregator来获取监控指标。
### Metrics支持
根据不同版本的API中HPA autoscale时靠以下指标来判断资源使用率
- autoscaling/v1: CPU
- autoscaling/v2alpha1
- 内存
- 自定义metrics
- 多metrics组合: 根据每个metric的值计算出scale的值并将最大的那个指作为扩容的最终结果
### 基础示例
``` bash
# 创建deploy和service
$ kubectl run php-apache --image=pilchard/hpa-example --requests=cpu=200m --expose --port=80
# 创建autoscaler
$ kubectl autoscale deploy php-apache --cpu-percent=50 --min=1 --max=10
# 稍等查看hpa状态
$ kubectl get hpa php-apache
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache 0% / 50% 1 10 1 1d
# 增加负载
$ kubectl run --rm -it load-generator --image=busybox /bin/sh
Hit enter for command prompt
$ while true; do wget -q -O- http://php-apache; done;
# 稍等查看hpa显示负载增加且副本数目增加为4
$ kubectl get hpa php-apache
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache 430% / 50% 1 10 4 4m
# 注意k8s为了避免频繁增删pod对副本的增加速度有限制
# 实验过程可以看到副本数目从1到4到8到10大概都需要4~5分钟的缓冲期
$ kubectl get hpa php-apache
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache 86% / 50% 1 10 8 9m
$ kubectl get hpa php-apache
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache 52% / 50% 1 10 10 12m
# 清除负载CTRL + C 结束上述负载循环下载程序过段时间后又缩容到1个副本
$ kubectl get hpa php-apache
NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
php-apache Deployment/php-apache 0% / 50% 1 10 1 17m
```
### 自定义metrics示例
待更新

View File

@ -1,6 +1,6 @@
## 使用指南
### 附加组件
### 附加组件安装
- 安装 [kubedns](kubedns.md)
- 安装 [dashboard](dashboard.md)
@ -9,7 +9,12 @@
- 安装 efk
- 安装 [harbor](harbor.md)
### 集群维护
### 基础特性演示
- 自动水平伸缩-基础[Horizontal Pod Autoscaling](hpa.md)
- 网络安全策略[Network Policy](NetworkPolicy.md)
### 集群维护指南
- 集群状态检查
- 集群扩容