我无法从k8s集群访问应用程序。有了nodePort,一切都能正常工作。如果我使用入口控制器,我可以看到它是成功创建的。我可以平IP。如果我试着上网,上面说连接被拒绝了。我也无法访问应用程序。我错过了什么?在入口舱里我没有看到任何例外。
kubectl get ing -n test   
                 
NAME          CLASS    HOSTS   ADDRESS         PORTS   AGE
web-ingress   <none>   *       192.168.0.102   80      44m
ping 192.168.0.102
PING 192.168.0.102 (192.168.0.102) 56(84) bytes of data.
64 bytes from 192.168.0.102: icmp_seq=1 ttl=64 time=0.795 ms
64 bytes from 192.168.0.102: icmp_seq=2 ttl=64 time=0.860 ms
64 bytes from 192.168.0.102: icmp_seq=3 ttl=64 time=0.631 ms
^C
--- 192.168.0.102 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2038ms
rtt min/avg/max/mdev = 0.631/0.762/0.860/0.096 ms
telnet 192.168.0.102 80
Trying 192.168.0.102...
telnet: Unable to connect to remote host: Connection refusedkubectl get all -n ingress-nginx显示如下
NAME                                            READY   STATUS      RESTARTS   AGE
pod/ingress-nginx-admission-create-htvkh        0/1     Completed   0          99m
pod/ingress-nginx-admission-patch-cf8gj         0/1     Completed   0          99m
pod/ingress-nginx-controller-7fd7d8df56-kll4v   1/1     Running     0          99m
NAME                                         TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                      AGE
service/ingress-nginx-controller             NodePort    10.102.220.87    <none>        80:31692/TCP,443:32736/TCP   99m
service/ingress-nginx-controller-admission   ClusterIP   10.106.159.230   <none>        443/TCP                      99m
NAME                                       READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/ingress-nginx-controller   1/1     1            1           99m
NAME                                                  DESIRED   CURRENT   READY   AGE
replicaset.apps/ingress-nginx-controller-7fd7d8df56   1         1         1       99m
NAME                                       COMPLETIONS   DURATION   AGE
job.batch/ingress-nginx-admission-create   1/1           7s         99m
job.batch/ingress-nginx-admission-patch    1/1           8s         99m发布于 2020-07-27 23:39:40
回答
来自kubectl get ing -n test的IP不是您应该使用的外部访问地址。
您的NGINX it部署在它旁边部署了一个服务。您可以使用此服务的外部IP (如果有此IP)来攻击您的“侵入控制器”。
因为您的服务是NodePort类型的(并且没有显示外部IP),所以您必须通过集群的节点IP来处理。您需要跟踪哪个节点的Pod,然后找到节点的IP。下面是一个这样做的例子:
NODE=$(kubectl get pods -o wide | grep "ingress-nginx-controller" | awk {'print $8'})
NODE_IP=$(kubectl get nodes "$NODE" -o wide | grep Ready | awk {'print $7'})更多信息
如果您的集群是被管理的(即GKE/Azure/AWS),您可以使用LoadBalancer服务来提供外部IP来命中侵入控制器。
https://stackoverflow.com/questions/63124560
复制相似问题