如何在Kubernetes上负载测试Nginx-ingress主机端点?

时间:2018-07-02 10:37:18

标签: nginx kubernetes load-testing kubernetes-ingress

我正在为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次测试。

  1. 对应用程序的集群内服务端点进行负载测试
    demo.default.svc.cluster.local
  2. 对入口群集内服务端点进行负载测试
    ingress-nginx-ingress-controller.default. svc.cluster.local
  3. 按照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"],但它什么也没做。

我想念什么吗?

0 个答案:

没有答案