前置条件:
1、阿里云ack集群
2、已配置安装好ingress的日志
参考链接:
https://help.aliyun.com/document_detail/151555.html
操作:
以nginx服务为例
step1:创建nginx的deployment
cat nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
labels:
app: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:latest
ports:
- containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
name: nginx
namespace: default
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: nginx
type: ClusterIP
kubectl apply -f nginx-deployment.yaml
step2:创建hpa
cat nginx-hpa.yaml
apiVersion: autoscaling/v2beta2 #v1只支持cpu和内存,v2支持自定义指标
kind: HorizontalPodAutoscaler
metadata:
name: ingress-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: nginx
minReplicas: 2
maxReplicas: 10
metrics:
- type: External
external:
metric:
name: sls_ingress_qps
selector:
matchLabels:
sls.project: "ex-beta" #日志服务的日志库名称,必填。
sls.logstore: "nginx-ingress" #日志服务的Project名称,必填。
sls.ingress.route: "default-nginx-80" #必填,参数的格式为:
<namespace>-<svc>-<port>,例如default-nginx-80
target:
type: AverageValue
averageValue: 1
- type: External
external:
metric:
name: sls_ingress_latency_p9999
selector:
matchLabels:
# default ingress log project is k8s-log-clusterId
sls.project: "ex-beta"
# default ingress logstre is nginx-ingress
sls.logstore: "nginx-ingress"
# namespace-svc-port
sls.ingress.route: "default-nginx-80"
# sls vpc endpoint, default true
# sls.internal.endpoint:true
target:
type: Value
# sls_ingress_latency_p9999 > 10ms
value: 1
step3:查看ingress的相关指标
kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1/" | grep sls_ingress_qps
kubectl get --raw "/apis/external.metrics.k8s.io/v1beta1/" | grep sls_ingress_latency_p9999
step4:创建ingress路由
目的是通过ingress路由访问的请求流转到sls中的ingress-nginx中,进而为hpa获取数值做铺垫。
1> 阿里云界面创建路由
2> 访问测试
step5:压测访问
压测中
压测中的ingress的大盘展示
压测结束
静默期过后,pod会自动收缩
分析:
如果hpa服务正常,但是压测一直没反应,需要排查
第一、查看sls的ingress-nginx日志,查看是否有日志
第二、ingress的概览界面,然后通过浏览器的’检查’(windows是F12)-网络-然后查看alibaba-log-configuration.json,查看配置的logstore是否是我们在nginx-hpa/.yaml中配置的,如果不一样,显然是hpa中配置错误。
都到这儿了,更多文章,详见个人微信公众号ALL In Linux,来扫一扫吧!