0

亲爱的,我已经部署了一个示例服务,例如:

 kubectl get svc
NAME          TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
kubernetes    ClusterIP   10.233.0.1     <none>        443/TCP          1d
mynodejsapp   NodePort    10.233.2.225   <none>        3000:31209/TCP   43s

请问如何访问集群ip上的app mynodejsapp?

当我执行 get nodes -o wide 时,这就是我所看到的,如下所示,

$ kubectl get nodes -o wide
NAME                    STATUS    ROLES     AGE       VERSION            EXTERNAL-IP   OS-IMAGE                  KERNEL-VERSION                   CONTAINER-RUNTIME
controlplane-node-001   Ready     master    2d        v1.9.1+2.1.8.el7   <none>        Oracle Linux Server 7.2   4.1.12-112.14.13.el7uek.x86_64   docker://17.3.1
controlplane-node-002   Ready     master    2d        v1.9.1+2.1.8.el7   <none>        Oracle Linux Server 7.2   4.1.12-112.14.13.el7uek.x86_64   docker://17.3.1
controlplane-node-003   Ready     master    2d        v1.9.1+2.1.8.el7   <none>        Oracle Linux Server 7.2   4.1.12-112.14.13.el7uek.x86_64   docker://17.3.1
default-node-001        Ready     node      2d        v1.9.1+2.1.8.el7   <none>        Oracle Linux Server 7.2   4.1.12-112.14.13.el7uek.x86_64   docker://17.3.1
default-node-002        Ready     node      2d        v1.9.1+2.1.8.el7   <none>        Oracle Linux Server 7.2   4.1.12-112.14.13.el7uek.x86_64   docker://17.3.1

任何帮助。谢谢。

4

1 回答 1

1

请问我如何访问集群ip上的应用程序mynodejsapp?

现在,直接回答您关于服务概述的问题:

  • 要从集群外部访问mynodejsapp服务,您需要以任何on 端口的 IP 为目标(并将其路由到您的服务)nodes31209kube-proxymynodejsapp
  • 要从集群内访问mynodejsapp服务,这意味着从在同一个集群上运行的另一个 pod,您需要以 clusterIP 为目标(或者在运行时您可以直接使用服务名称)10.233.2.225:3000kube-dnsmynodejsapp:3000

正如官方文档中详述的, clusterIP 与 service 绑定,然后通过 kube-dns 从 service name 解析到 clusterIP。简而言之,您只能在所述集群上运行的 Pod 中使用 clusterIP(与服务相同)。

至于通过 NodePort 向外部公开服务,您也可以在官方文档中找到更多信息

于 2018-09-07T19:45:42.067 回答