【发布时间】:2021-10-29 15:07:54
【问题描述】:
我已经有一台运行 HAProxy 的主机。在我对 Kubernetes 做任何事情之前,它就一直在运行。它可以完美地作为反向代理和 SSL 终结器,用于各种其他主机上的各种 Docker 容器中的各种 Web 事物。
现在我有一个 Kubernetes 集群并在其他一些机器上运行。我已经创建了在每个工作节点上公开端口 30080 的 NodePort 服务,如下所示:
apiVersion: v1
kind: Service
metadata:
name: snginx
labels:
app: nginx
spec:
type: NodePort
externalTrafficPolicy: Local #Cluster or Local
selector:
app: nginx
ports:
- protocol: TCP
port: 8080
targetPort: 80
nodePort: 30080
从运行 HAProxy 的机器(不是集群的一部分),我可以成功地 curl NodePort( curl 10.0.0.20:30080 ),我得到“欢迎使用 nginx!...”但是,如果我设置那个 NodePort 作为 HAProxy 中的后端,我得到一个 503“没有可用的服务器”,并且 HAProxy 流量日志说:
localhost haproxy[18489]: [redactedIP]:49399 [30/Aug/2021:19:24:00.764] http-in~ load/load 66/0/-1/-1/67 503 212 - - SC-- 1/1/0/0/3 0/0 "GET / HTTP/1.1"
haproxy 管理日志说:
Aug 30 20:07:13 localhost haproxy[18839]: Server load/load is DOWN, reason: Layer4 connection problem, info: "General socket error (Permission denied)"
但是,我已经禁用了防火墙
sudo systemctl disable --now firewalld
并验证状态未运行。此外,我安装集群时禁用了 SELinux。另外,我可以 ping 10.0.0.20 就好了。
“load”是我用于测试负载平衡的主机名(即 load.mydomain.com)。
此外,如果我在物理路由器上使用 PAT 从建筑物外部直接路由到该 NodePort,它会按预期工作。
什么给了?代理请求和 curl 有什么区别?
谢谢。
【问题讨论】:
标签: kubernetes haproxy kube-proxy