我正在为Kubernetes集群的部署而部署水平Pod自动缩放器[HPA]。
---
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: {{ .Values.ProjectName }}-autoscaler
spec:
scaleTargetRef:
apiVersion: extensions/v1beta1
kind: Deployment
name: {{ .Values.ProjectName }}-deployment
minReplicas: 1
maxReplicas: 5
targetCPUUtilizationPercentage: 10
然后,我想测试并适当调整它们。为此,我使用了Kubernetes文档中的示例负载生成器,该示例会反复请求一个端点。
kubectl run load-generator --replicas=20 --image=busybox /bin/sh -- '-c' 'while true; do wget -q -O- https://demo.domain.eu:443; done'
我请求的页面只是一个静态HTML,其中没有太多内容。
我想对最终用户访问我的应用程序进行测试。
为进行实验和清晰起见,我进行了3次测试。
demo.default.svc.cluster.local
ingress-nginx-ingress-controller.default. svc.cluster.local
host
yaml文件中的说明对应用程序的ingress
进行负载测试demo.domain.eu
这是ingress.yaml
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: main-ingress
annotations:
kubernetes.io/ingress.class: nginx
# nginx.ingress.kubernetes.io/cache-enable: "true"
nginx.ingress.kubernetes.io/ssl-redirect: "false"
nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
nginx.ingress.kubernetes.io/proxy-read-timeout: "86400"
nginx.ingress.kubernetes.io/proxy-send-timeout: "86400"
spec:
tls:
- secretName: domain-eu-secret
hosts:
- demo.domain.eu
rules:
- host: demo.domain.eu
http:
paths:
- path: /
backend:
serviceName: demo
servicePort: 80
- path: /api
backend:
serviceName: be-srvc
servicePort: 80
- path: /echo
backend:
serviceName: be-srvc
servicePort: 80
因此,当我进行第一次和第二次负载测试时,我成功地使服务端点超载并且自动缩放器启动。在两种情况下,应用程序和nginx的Pod均按预期缩放。
但是,当我尝试对host
端点执行相同操作时,什么也没发生。我从负载生成器pod中获取日志,并且可以看到返回的HTML。
我还试图添加一个注释,以禁用缓存[nginx.ingress.kubernetes.io/cache-enable: "false"
],但它什么也没做。
我想念什么吗?