Haproxy入口控制器



我已经通过helm安装了ingress控制器作为守护程序集。我已将入口配置如下:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: webapp-ingress
namespace: rcc
annotations:
haproxy.org/check: 'true'
haproxy.org/check-http: /serviceCheck
haproxy.org/check-interval: 5s
haproxy.org/cookie-persistence: SERVERID
haproxy.org/forwarded-for: 'true'
haproxy.org/load-balance: leastconn
kubernetes.io/ingress.class: haproxy
spec:
rules:
- host: example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: webapp-frontend
port:
number: 8080
kubectl get ingress -n rcc
Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
NAME            CLASS    HOSTS                    ADDRESS          PORTS   AGE
webapp-ingress   <none>   example.com   10.110.186.170   80      11h

选择的类型是负载平衡器。我可以从任何节点ping端口80上入口的ip地址,也可以很好地卷曲它。我还可以从节点浏览任何入口pod的ip地址,这很好。但当我浏览节点ip o端口80时,连接被拒绝。我在这里缺了什么吗?

我安装了上一个haproxy ingress,它是使用helm的0.13.4版本。

默认情况下,它安装有LoadBalancer服务类型:

$ kubectl get svc -n ingress-haproxy
NAME              TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
haproxy-ingress   LoadBalancer   10.102.166.149   <pending>     80:30312/TCP,443:32524/TCP   3m45s

由于我有相同的kubeadm集群,EXTERNAL-IP将挂起。正如您在问题中正确提到的,当使用kubeadm设置集群时,CLUSTER-IP可以在节点上访问。


有两个选项可以访问入口:

  1. 使用NodePort

从上面的输出中,有一个用于内部暴露端口80NodePort 30312。因此,Node_IP:NodePort:应该从集群外部访问它

curl NODE_IP:30312 -IH "Host: example.com"
HTTP/1.1 200 OK
  1. 设置metallb

按照安装指南进行操作,第二步是配置metallb。我使用第2层。请小心分配未使用的ip范围!

在我安装并设置了metallb之后,我的haproxy现在有了EXTERNAL-IP

$ kubectl get svc -n ingress-haproxy
NAME              TYPE           CLUSTER-IP       EXTERNAL-IP    PORT(S)                      AGE
haproxy-ingress   LoadBalancer   10.102.166.149   172.16.1.241   80:30312/TCP,443:32524/TCP   10m

现在我可以通过EXTERNAL-IP在端口80:上访问入口

curl 172.16.1.241 -IH "Host: example.com"
HTTP/1.1 200 OK

阅读有用:

  • Kubernetes服务类型

相关内容

  • 没有找到相关文章

最新更新