GKE SSL 代理 NEG 健康检查不适用于基于 TCP 的服务
GKE SSL Proxy NEG health check not working for TCP based services
我有一个StatefulSet of 3
replicas of ejabberd。我使用以下声明将它们暴露给 GCP NEG:
apiVersion: v1
kind: Service
metadata:
name: ejabberd
annotations:
cloud.google.com/neg: '{"exposed_ports": {"5222":{"name": "ejabberd-xmpp-production-neg"}, "5443":{"name": "ejabberd-http-production-neg"}}}'
spec:
type: ClusterIP
clusterIP: None
selector:
app: ejabberd
ports:
- protocol: TCP
name: xmpp
port: 5222
targetPort: 5222
- protocol: TCP
name: http
port: 5443
targetPort: 5443
健康检查是端口 5443 的 HTTP 端点,return 路径 /
处的 HTTP 200(正常)状态代码。
问题是,当我创建 SSL Proxy 时,运行状况检查总是失败,但是当我 ssh 进入 pods 并执行 $ curl localhost:5443/
时,我得到了成功响应。 TCP 健康检查也不起作用。
问题是由于云负载均衡器无法访问端口引起的。我通过创建允许负载平衡器访问指定端口的防火墙规则来修复它。
这是通过 运行 以下命令实现的:
gcloud compute firewall-rules create fw-allow-health-check-and-proxy \
--network=NETWORK_NAME \
--action=allow \
--direction=ingress \
--target-tags=GKE_NODE_NETWORK_TAGS \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--rules=tcp:5443,tcp:5222
可以在这里找到更多内容 Attaching an external HTTP(S) load balancer to standalone NEGs
我有一个StatefulSet of 3
replicas of ejabberd。我使用以下声明将它们暴露给 GCP NEG:
apiVersion: v1
kind: Service
metadata:
name: ejabberd
annotations:
cloud.google.com/neg: '{"exposed_ports": {"5222":{"name": "ejabberd-xmpp-production-neg"}, "5443":{"name": "ejabberd-http-production-neg"}}}'
spec:
type: ClusterIP
clusterIP: None
selector:
app: ejabberd
ports:
- protocol: TCP
name: xmpp
port: 5222
targetPort: 5222
- protocol: TCP
name: http
port: 5443
targetPort: 5443
健康检查是端口 5443 的 HTTP 端点,return 路径 /
处的 HTTP 200(正常)状态代码。
问题是,当我创建 SSL Proxy 时,运行状况检查总是失败,但是当我 ssh 进入 pods 并执行 $ curl localhost:5443/
时,我得到了成功响应。 TCP 健康检查也不起作用。
问题是由于云负载均衡器无法访问端口引起的。我通过创建允许负载平衡器访问指定端口的防火墙规则来修复它。
这是通过 运行 以下命令实现的:
gcloud compute firewall-rules create fw-allow-health-check-and-proxy \
--network=NETWORK_NAME \
--action=allow \
--direction=ingress \
--target-tags=GKE_NODE_NETWORK_TAGS \
--source-ranges=130.211.0.0/22,35.191.0.0/16 \
--rules=tcp:5443,tcp:5222
可以在这里找到更多内容 Attaching an external HTTP(S) load balancer to standalone NEGs