无法访问Kubernetes中的公开部署/pod

无法访问Kubernetes中的公开部署/pod,kubernetes,Kubernetes,首先,我想说我不知道所涉及的服务器的确切体系结构。。我只知道它们是云上的Ubuntu机器 我使用两台服务器设置了一个1主/1工作者k8s群集 kubectl集群信息为我提供: Kubernetes master is running at https://10.62.194.4:6443 KubeDNS is running at https://10.62.194.4:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

首先,我想说我不知道所涉及的服务器的确切体系结构。。我只知道它们是云上的Ubuntu机器

我使用两台服务器设置了一个1主/1工作者k8s群集

kubectl集群信息
为我提供:

Kubernetes master is running at https://10.62.194.4:6443
KubeDNS is running at https://10.62.194.4:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
nginx-deploy-7c45b84548-ckqzb   1/1     Running   0          33m   192.168.1.5   myserver1   <none>           <none>
nginx-deploy-7c45b84548-vl4kh   1/1     Running   0          33m   192.168.1.4   myserver1   <none>           <none>
我创建了一个简单的部署:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    run: nginx
  name: nginx-deploy
spec:
  replicas: 2
  selector:
    matchLabels:
      run: nginx
  template:
    metadata:
      labels:
        run: nginx
    spec:
      containers:
      - image: nginx
        name: nginx
        ports:
        - containerPort: 80
它旋转了一个暴露在集装箱端口80上的nginx吊舱

我使用以下方法公开了此部署:

kubectl expose deployment nginx-deploy --type NodePort
当我运行
kubectl get svc
时,我得到:

nginx-deploy   NodePort    10.99.103.239   <none>        80:30682/TCP   29m
由于我使用NodePort公开了部署,我的印象是我可以使用

工作节点的节点IP为10.62.194.5,当我尝试访问时,没有获得nginx登录页

我不明白的一点是,当我描述节点myserver1时,在我收到的长输出中,我可以看到:

Addresses:
  InternalIP:  10.62.194.5
  Hostname:    myserver1
为什么会说“内部IP”?我可以ping这个IP

编辑:
sudo lsof-i-P-n的输出| grep LISTEN

systemd-r   846 systemd-resolve   13u  IPv4  24990      0t0  TCP 127.0.0.53:53 (LISTEN)
sshd       1157            root    3u  IPv4  30168      0t0  TCP *:22 (LISTEN)
sshd       1157            root    4u  IPv6  30170      0t0  TCP *:22 (LISTEN)
xrdp-sesm  9840            root    7u  IPv6 116948      0t0  TCP [::1]:3350 (LISTEN)
xrdp       9862            xrdp   11u  IPv6 117849      0t0  TCP *:3389 (LISTEN)
kubelet   51562            root    9u  IPv4 560219      0t0  TCP 127.0.0.1:42735 (LISTEN)
kubelet   51562            root   24u  IPv4 554677      0t0  TCP 127.0.0.1:10248 (LISTEN)
kubelet   51562            root   35u  IPv6 558616      0t0  TCP *:10250 (LISTEN)
kube-prox 52427            root   10u  IPv4 563401      0t0  TCP 127.0.0.1:10249 (LISTEN)
kube-prox 52427            root   11u  IPv6 564298      0t0  TCP *:10256 (LISTEN)
kube-prox 52427            root   12u  IPv6 618851      0t0  TCP *:30682 (LISTEN)
bird      52925            root    7u  IPv4 562993      0t0  TCP *:179 (LISTEN)
calico-fe 52927            root    3u  IPv6 562998      0t0  TCP *:9099 (LISTEN)
ss-ntlp的输出| grep30682

LISTEN   0         128                       *:30682                  *:*

据我所知,您正试图从位于不同子网的主机(例如您的终端)访问
10.62.194.5
。在Azure中,我猜每个节点都有一个公共IP和一个私有IP。因此,如果您试图从您的终端访问Kubernetes
服务
,您应该将主机的公共IP与端口一起使用,并确保该端口在azure防火墙中打开。

感谢您的回复!我也是这么想的,但是如果是这样的话,我怎么能ping主机呢?我可以ping和ssh到主机中,然后您应该尝试对这个特定端口执行
netcat
,看看它是否可以访问。尝试执行
nc-zvw10.62.194.5 30682
。如果超时,则端口未打开,需要配置Azure防火墙。顺便说一句,这个IP是一个类私有子网的一部分,这个类私有子网肯定是不可公开访问的。可能您正在尝试ping其他主机,或者您已经设置了到此子网的VPN连接。是,这意味着端口未打开。您如何直接使用ssh访问此VM?这不会发生。您需要有一个进程监听端口,才能打开端口。如果要确保此端口上运行了某些内容,请尝试登录主机并运行
ss-ntlp | grep 30682
。您将看到有一个
kube代理
正在侦听此端口。一个成功的netcat可以产生这样的
连接到1.1.1.1端口53[tcp/domain]成功。很好。我认为问题在于,在这两者之间有一个防火墙正在阻止连接。请检查Azure防火墙。