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

时间:2019-07-22 19:53:13

标签: kubernetes

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

我已经使用两台服务器建立了一个master / 1 worker k8s集群。

kubectl cluster-info给我:

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'.

我已经这样创建了一个简单的部署:

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

kubectl get pods -o wide给我:

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>

由于我使用NodePort公开了部署,因此给我留下了可以使用< Node IP > : < Node Port >访问该部署的印象

辅助节点的节点IP为10.62.194.5,当我尝试访问http://10.62.194.5:30682时,没有得到nginx登陆页面。

我不了解的一部分是,当我做kubectl describe node myserver1时,在收到的长输出中,我可以看到:

Addresses:
  InternalIP:  10.62.194.5
  Hostname:    myserver1

为什么说InternalIP?我可以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 | grep 30682的输出

LISTEN   0         128                       *:30682                  *:*

1 个答案:

答案 0 :(得分:0)

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