十五章
创建一个deployment对应的服务
k expose deployment kubia --port=80 --target-port=8080

 

设置一个应用deployment 的HPA
k top pod
k autoscale deployment kubia --cpu-percent=30 --min=1 --max=5

 

如果过后觉得30太低,想设置高点,可以通过命令
k edit hpa命令 修改 targetCPUUtilizationPercentage: 字段设置为 50

 

k8s 之HPA_字段

 

 


查看hpa
k get hpa
k describe hpa
k get hpa.v2beta1.autoscaling kubia -o yaml

 

持续观察hpa与deployment 状态
watch -n 1 kubectl get hpa,deployment

 

在一个Pod中支行循环
k run -it --rm --restart=Never loadgenerator --image=busybox -- sh -c "while true; do wget -O - -q http://kubia.default;done"

 

除了Resource度量类型,另外 2 种 度量的类型是PodS和Object

Pods 用于监控除CPU内存之外的度量,如qps (详见 P455)

Object 用于引用其它类型的度量,如监控 Ingress 类型的延迟扩容 对应的后端deployment (详见P455)

 

空载(idling) 与解除空载(un-idling),即允许提供特定服务的pod被缩容到0副本。在新的请求到来时,请求会先被阻塞,直到pod被启动,从而请求被转发到新的pod为止。

纵向扩缩容VPA

节点扩缩容组件-------------------Cluster Autoscaler

一些服务要求至少保持一定数量的Pod持续运行,K8S可以指定下线等操作时需要保持的最少pod数量,我们通过创建一个podDisruptionBudget资源的方式来利用这一特性

它只包含一个pod标签选择器和一个数字,指定最少需要维持运行的pod数量,还有最大可以接收的不可用pod数量。

 k create pdb kubia-pdb  --selector=app=kubia  --min-available=3

 确保标签选择器app=kubia的pod最少有3个在运行

 k get pdb kubia-pdb -o yaml

k8s 之HPA_选择器_02

 

 

 

 也可以用一个百分比而非绝对数值来写 minAvailable: 字段。比方说,可以指定 60%带app=kubia标签的pod应当时刻保持运行。

PDB也支持maxUnavailable,即当很多pod不可用而想要阻止pod被剔除时,就可以用maxUnavailable字段,而不是minAvailable.

只要PDB存在,Cluster Autoscaler 与 kubectl drain 命令都会遵守它,如果疏散一个带有app=kubia标签的pod会导致它们的总数小于3,那这个操作就永远不会被执行