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

如何通过ClusterIP访问Kubernetes服务

岳飞航
2023-03-14

我正在尝试使用三个虚拟机(Master–10.x.x.4、Node1–10.x.x.150、Node2–10.x.x.160)创建Kubernetes集群。

我能够通过此链接成功创建留言簿应用程序:http://kubernetes.io/v1.0/examples/guestbook/.我只对frontend-service.yaml做了一个更改:使用NodePort。我可以使用节点IP和端口号(10. x. x.150:30724或10. x. x.160:30724)访问前端服务。所以一切都按预期工作,但我无法使用ClusterIP地址访问前端服务(在我的例子中为10. x. x.79)。

我对NodePort的理解是,服务可以通过集群IP访问,也可以通过集群中每个节点上的端口访问。如何通过ClusterIP访问服务,从而不必访问每个节点?我错过什么了吗?

服务和吊舱详细信息

$sudo kubectl描述服务前端

Name:                   frontend
Namespace:              default
Labels:                 name=frontend
Selector:               name=frontend
Type:                   NodePort
IP:                     10.x.x.79
Port:                   <unnamed>       80/TCP
NodePort:               <unnamed>       30724/TCP
Endpoints:              172.x.x.13:80,172.x.x.14:80,172.x.x.11:80
Session Affinity:       None

No events.

$sudo kubectl描述pod前端-2b5us

Name:                           frontend-2b5us
Namespace:                      default
Image(s):                       gcr.io/google_samples/gb-frontend:v3
Node:                           10.x.x.150/10.x.x.150
Labels:                         name=frontend
Status:                         Running
Reason:
Message:
IP:                             172.x.x.11
Replication Controllers:        frontend (3/3 replicas created)
Containers:
  php-redis:
    Image:              gcr.io/google_samples/gb-frontend:v3
    State:              Running
      Started:          Fri, 30 Oct 2015 04:00:40 -0500
    Ready:              True
    Restart Count:      0

我试图搜索,但没有找到任何解决我的确切问题的方法,但我确实找到了类似于GCE的问题。

为什么我不能通过其IP访问Kubernetes服务?

共有2个答案

乐正晟
2023-03-14

你想从哪里访问clusterIP?clusterIP(默认情况下)仅在集群内工作。它是一个虚拟IP,而不是路由。

田志尚
2023-03-14

您没有ClusterIP服务。你有一个节点端口服务。要访问它,您需要连接到集群中任何节点上的节点端口,正如您已经发现的那样。你可以在这里实现负载平衡。即使连接到集群节点,您得到的pod也不一定在该特定节点上运行。

阅读文档中的相关章节https://html" target="_blank">kubernetes.io/docs/concepts/services-networking/service/#publishing-服务——了解其他服务类型的服务类型。你可能不想在GCP上使用NodePort。

谈论集群。要访问ClusterIP服务进行调试,可以运行kubectl port forward。您实际上不会访问该服务,但您将直接连接到其中一个播客。

例如

kubectl port-forward frontend-2b5us 80 8080

现在连接到localhost:8080

更复杂的命令,在给定名称空间-n weave和选择器的情况下,它会自行发现端口。摘自https://www.weave.works/docs/scope/latest/installing/

kubectl port-forward -n weave \
    "$(kubectl get -n weave pod \
         --selector=weave-scope-component=app \
         -o jsonpath='{.items..metadata.name}')" \
    4040
 类似资料:
  • 我使用此处的说明在 VirtualBox 上创建了一个 3 节点 kubernetes 集群(1 个主 2 个工作线程)。我正在使用法兰绒作为覆盖网络。 我在安装过程中在主服务器上设置了< code > sysctl-w net . bridge . bridge-nf-call-iptables = 1 和< code > sysctl-w net . bridge . bridge-nf-ca

  • 我正在寻求帮助,以解决这个基本方案无法正常工作的问题: 在运行在MacBook上的VirtualBox VM上安装了kubeadm的三个节点: Virtualbox VM有2个适配器:1)主机专用2)NAT。来自客户计算机的节点IP是: 我将它们公开为ClusterIP服务: 现在问题来了: 我ssh到kubernetes-node1并使用集群IP卷曲服务: 如果我ssh到kubernetes-n

  • 我正在尝试访问一个运行在Openshift吊舱中的Flask服务器。 为此,我创建了如下服务。 1)首先,我豆荚ping到另一个豆荚并得到响应。 但是,当我尝试时,它没有响应。 2) 之后,我尝试从一个pod访问集群IP。在这种情况下,都不可访问。 请告诉我哪里出错了。为什么上面的情况#1,#2失败。如何访问集群IP服务。 我对服务和访问服务完全陌生,因此我可能缺少一些基础知识。 我回答了其他问题

  • 我是的新手,虽然我阅读了基本文档,并尝试部署一个简单的Spring BootAPI,但我可能缺少很多东西 我已经将API部署为.jar文件,然后安装并使用以下命令推送它: 然后使用docker命令启动API: 当我访问localhost:7777/hello时,我得到了所需的响应 这是我的 根据这个应答的命令,发布这个命令以获取 因此,我使用运行它,得到了这个错误 如果我设法获得,我是否能够访问它

  • 什么起作用了? 使用Helm(启用RBAC)部署入口控制器 集群IP服务部署 什么不起作用? null K8S入口 注释中最后应用的配置(入口描述输出)显示入口资源清单。但是,我贴在下面作为参考 附加信息 null 任何关于我可能做错了什么的建议或见解将非常感谢。

  • 我对Kubernetes和Istio有点陌生。我正在尝试创建一个服务并通过HTTPS访问它。 通过HTTP看起来一切都很好 我使用了cert-manager和let's Encrypt来生成证书 证书已成功生成 我使用以下命令生成了机密 这些是我的网关、虚拟服务、集群颁发者和证书的配置文件。 网关 证书 当我运行时,我可以看到tls.crt和tls.key内容。 有什么想法为什么我不能达到我可以通