我最近在测试我的 Kubernetes 服务。而且我发现它非常不可靠。情况如下:
1. 在端口 80 接收 HTTP 请求的测试服务“A”在三个节点上部署了五个 Pod。
2. nginx 入口设置为将外部流量路由到服务“A”。
3.入口设置如下:
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-A
annotations:
nginx.ingress.kubernetes.io/proxy-connect-timeout: "1s"
nginx.ingress.kubernetes.io/proxy-next-upstream: "error timeout invalid_header http_502 http_503 http_504"
nginx.ingress.kubernetes.io/proxy-next-upstream-tries: "2"
spec:
rules:
- host: <test-url>
http:
paths:
- path: /
backend:
serviceName: A
servicePort: 80
- http_load 在客户端主机上启动,并以每秒 1000 的速度不断向入口 nginx 发送请求。所有请求都被路由到 k8s 中的服务“A”,一切顺利。
当我手动重启其中一个节点时,出现了问题:
在接下来的 3 分钟内,大约 20% 的请求超时,这在产品环境中是不可接受的。
不知道为什么k8s反应这么慢,有没有办法解决这个问题?