Haproxy 入口控制器
Haproxy ingress controller
我已经通过 helm 安装了入口控制器作为守护进程。我已经配置入口如下:
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 地址,也可以很好地卷曲它。我也可以从节点浏览任何入口 pods ip 地址就好了。但是当我浏览节点 ip o 端口 80 时,连接被拒绝。我在这里遗漏了什么吗?
我使用 helm 安装了最后一个 haproxy ingress
版本 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
有两种方法可以访问您的入口:
- 使用
NodePort
:
从上面的输出中有一个 NodePort 30312
用于内部暴露的端口 80
。因此,从集群外部应该通过 Node_IP:NodePort
:
访问它
curl NODE_IP:30312 -IH "Host: example.com"
HTTP/1.1 200 OK
- 设置
metallb
:
关注installation guide and second step is to configure metallb
. I use layer 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
现在我可以通过端口 80
:
上的 EXTERNAL-IP
访问入口
curl 172.16.1.241 -IH "Host: example.com"
HTTP/1.1 200 OK
阅读有用:
我已经通过 helm 安装了入口控制器作为守护进程。我已经配置入口如下:
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 地址,也可以很好地卷曲它。我也可以从节点浏览任何入口 pods ip 地址就好了。但是当我浏览节点 ip o 端口 80 时,连接被拒绝。我在这里遗漏了什么吗?
我使用 helm 安装了最后一个 haproxy ingress
版本 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
有两种方法可以访问您的入口:
- 使用
NodePort
:
从上面的输出中有一个 NodePort 30312
用于内部暴露的端口 80
。因此,从集群外部应该通过 Node_IP:NodePort
:
curl NODE_IP:30312 -IH "Host: example.com"
HTTP/1.1 200 OK
- 设置
metallb
:
关注installation guide and second step is to configure metallb
. I use layer 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
现在我可以通过端口 80
:
EXTERNAL-IP
访问入口
curl 172.16.1.241 -IH "Host: example.com"
HTTP/1.1 200 OK
阅读有用: