当前位置: 首页 > 知识库问答 >
问题:

使用nodeport访问kubernetes上的应用程序

宦瀚
2023-03-14

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

 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

当我执行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

任何帮助。谢了。

共有1个答案

胡高朗
2023-03-14

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

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

  • 要从集群外部访问MyNodeJsapp服务,您需要针对端口31209上任何节点的IP(并且kube-proxy将为您路由到MyNodeJsapp服务)
  • 要从集群内访问mynodejsapp服务,这意味着从运行在同一集群上的另一个pod中,您需要针对clusterIP10.233.2.225:3000(或者运行kube-dns,您可以直接使用服务名称mynodejsapp:3000)

正如官方文档中详细描述的那样,clusterIP与服务相关联,然后通过kube-dns将服务名解析为clusterIP。简而言之,您只能从运行在所述集群上的pod中使用clusterIP(与服务相同)。

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

 类似资料:
  • 我在远程机器上用docker驱动程序启动了minikube,并为特定的pod使用了nodePort服务。我认为nodePort公开了minikube docker容器上的端口。在做minikube IP时,它给了我minikubo运行的docker容器的IP。如何将端口从minnikube容器映射到主机端口,以便远程访问它。除了使用driver=none或重新启动minikube之外,还有一种不同

  • 我正在尝试将我的Docked React应用程序部署到Kubernetes。我相信我已经正确对接了,但我无法访问暴露的吊舱。 我没有在Docker或Kubernetes工作的经验,所以任何帮助都将不胜感激。 我的反应应用程序只是从Tomcat提供的静态文件(从npm运行构建)。 我的Dockerfile在下面。总之,我把我的应用程序放在Tomcat文件夹中,并公开端口8080。 我构建并将Dock

  • 我使用此处的说明在 VirtualBox 上创建了一个 3 节点 kubernetes 集群(1 个主 2 个工作线程)。我正在使用法兰绒作为覆盖网络。 我在安装过程中在主服务器上设置了< code > sysctl-w net . bridge . bridge-nf-call-iptables = 1 和< code > sysctl-w net . bridge . bridge-nf-ca

  • 在我的 OVH 托管 Kubernetes 集群中,我正在尝试公开 NodePort 服务,但看起来无法通过以下方式

  • 我试图直接访问Kubernetes API,而不运行。但是当我使用serviceaccount默认值的令牌时,我得到一个403。即使在为此serviceaccount创建了ClusterRole和ClusterRoleBinding之后,请求也会被拒绝403。 我应用的配置如下所示: (它几乎是来自kubernetes io上的文档,只是使用了ServiceAccount作为主题,并将资源更改为p

  • Kubenretes1.6中使用etcd V3版本的API,使用etcdctl直接ls的话只能看到/kube-centos一个路径。需要在命令前加上ETCDCTL_API=3这个环境变量才能看到kuberentes在etcd中保存的数据。 ETCDCTL_API=3 etcdctl get /registry/namespaces/default -w=json|python -m json.to