外部 http 访问 kubernetes 集群

时间:2021-04-14 13:37:39

标签: kubernetes kubernetes-ingress metallb

如果我的项目能得到一些帮助,我将不胜感激。

我在 2 台远程服务器上创建了一个 Kubernetes Master-Worker 集群,这两个服务器都有公共 IP。

我希望能够在我的本地机器上添加一个指向主节点 IP 的 DNS 条目并接收来自虚拟 nginx 应用程序的响应。

这是我目前所拥有的:

NAME          STATUS   ROLES                  AGE     VERSION   INTERNAL-IP     EXTERNAL-IP   
master-node   Ready    control-plane,master   6d21h   v1.21.0   PUBLIC_IP_MASTER <none>
worker-node   Ready    <none>                 6d21h   v1.21.0   PUBLIC_IP_WORKER <none>

命名空间:

NAME              STATUS   AGE
default           Active   6d21h
ingress-nginx     Active   173m
kube-node-lease   Active   6d21h
kube-public       Active   6d21h
kube-system       Active   6d21h
metallb-system    Active   4d
test              Active   61m

Metallb configMap 使用 IP 10.244.0.101-10.244.0.110

托管 hello-world 应用程序的测试命名空间从 MetalLB 获取 IP 并公开端口 8080:

NAME                               READY   STATUS    RESTARTS   AGE
pod/hello-world-6df5659cb7-9dsnv   1/1     Running   0          60m
pod/hello-world-6df5659cb7-ck9tm   1/1     Running   0          60m
pod/hello-world-6df5659cb7-dfmw4   1/1     Running   0          60m
pod/hello-world-6df5659cb7-n2t6j   1/1     Running   0          60m
pod/hello-world-6df5659cb7-rm79h   1/1     Running   0          60m

NAME                 TYPE           CLUSTER-IP    EXTERNAL-IP    PORT(S)          AGE
service/my-service   LoadBalancer   10.98.97.75   10.244.0.102   8080:31647/TCP   18m

NAME                          READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/hello-world   5/5     5            5           60m

NAME                                     DESIRED   CURRENT   READY   AGE
replicaset.apps/hello-world-6df5659cb7   5         5         5       60m

测试入口将dashboard.com 指向与测试相关的服务。即使我尝试将 ServicePort 设置为 8080,端口也是 80:

test           nginx            <none>   dashboard.com            144.76.82.244   80      54m

nginx 入口控制器也有一个由 MetalLB 分配的 IP:

pod/ingress-nginx-controller-7fcdd96bcf-vfhbp   1/1     Running     0          174m

    NAME                                         TYPE           CLUSTER-IP       EXTERNAL-IP    PORT(S)                      AGE
    service/ingress-nginx-controller             LoadBalancer   10.110.42.108    10.244.0.101   80:31440/TCP,443:30912/TCP   174m
    service/ingress-nginx-controller-admission   ClusterIP      10.111.168.247   <none>         443/TCP                      174m

此时,如果我从 Master 或 Worker 处卷曲,我会得到响应:

curl 10.244.0.102:8080
Hello Kubernetes!

如果我将 10.244.0.102dashboard.com 添加到主节点上的主机文件中,我将再次收到响应:

curl dashboard.com:8080
Hello Kubernetes!

但是,如果我在本地计算机上键入dashboard.com:8080,并在 /etc/hosts 中输入一个指向 MASTER_IP 到dashboard.com 的条目,则会出现超时。

我可以从主节点的 netstat 看到没有服务在 80 或 8080 上侦听,那么我错过了哪一步?

我的思维过程错了吗?我想如果我在我的主 IP 上指向一个新域,设置将根据入口规则中存在的域路由相关服务上的流量。

预先感谢您提供任何提示/阅读材料。

0 个答案:

没有答案