针对不同时期流量的大小我们可以给Pod扩缩容,Kubernetes支持通过kubectl命令手动扩缩容,也支持通过HPA自动横向扩缩容。
手动扩缩容
现有如下deployment配置(nginx-deployment.yml):
1 | apiVersion: apps/v1 |
创建该Deployment:
有3个nginx实例,现在用下面这条命令将nginx实例扩充到5个:
1 | kubectl scale deployment nginx-deployment --replicas 5 |
缩容:
1 | kubectl scale deployment nginx-deployment --replicas 1 |
HPA
HPA能够根据特定指标完成目标Pod的自动扩缩容。创建一个与上面nginx-deployment相对应的HPA(nginx-deployment-hpa.yml):
1 | apiVersion: autoscaling/v1 |
主要参数如下:
scaleTargetRef:目标作用对象,可以是Deployment、ReplicationController或ReplicaSet。
targetCPUUtilizationPercentage:期望每个Pod的CPU使用率都为50%,该使用率基于Pod设置的CPU Request值进行计算,例如该值为200m,那么系统将维持Pod的实际CPU使用值为100m。
minReplicas和maxReplicas:Pod副本数量的最小值和最大值,系统将在这个范围内进行自动扩缩容操作,并维持每个Pod的CPU使用率为50%。
使用HPA,需要预先安装Metrics Server,用于采集Pod的CPU使用率。
《Kubernetes权威指南(第4版)》读书笔记