1

我已经通过 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 地址也可以很好地卷曲它。我也可以从节点浏览任何入口 Pod 的 IP 地址。但是当我浏览节点 ip o 端口 80 时,连接被拒绝。我在这里缺少什么吗?

4

1 回答 1

2

我最后安装haproxy ingress的是0.13.4使用 helm 的版本。

默认情况下,它使用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将等待处理。正如您在问题中正确提到的那样,CLUSTER-IP在使用kubeadm.


有两种方法可以访问您的入口:

  1. 使用NodePort

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

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

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

在我安装并设置之后metallb,我的 haproxyEXTERNAL-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

有用的阅读:

于 2021-12-07T10:35:26.230 回答