【发布时间】:2020-10-30 16:38:57
【问题描述】:
问题:从集群外部,通过 NodePort 公开服务,我无法访问应用程序。 我应该从 MyApp 得到响应:从我的 mac 客户端 (http://nodeIP:nodePort/api/users) --> 节点 (nodePort) --> 服务 (endPoints) -- pod --> MyApp (in容器)
设置:
- 操作系统:Mac 和 DockerDesktop 使用 KIND,创建集群(1-master, 2 名工人)
- 部署了简单的应用程序并能够'kubectl exec myPod -- curl http://localhost/api/users'
- 然后创建类型为:NodePort 的“服务”(由 k8 自动选择)
- 假设从我的 Mac(客户端),我应该能够访问 MyApp,但尝试 'curl (http://nodeIP:nodePort/api/users)' 只是超时。
请求: 不知道缺少什么:是防火墙阻止它,是否缺少端口转发,其他东西......来自我的计算机试图 'curl http://:/api/users' 超时。
旁注:我知道我可以使用其他方法,例如 ingress。目前,我正在尝试学习并找出 NodePort 方法不起作用的原因。
【问题讨论】:
-
您在 URL 中使用的
nodeIP是什么?你配置好 kind 的网络层了吗? -
你能发布一些像
kubectl describe svc和kubect describe pod -o wide这样的东西吗?也可能很高兴看到您拥有的任何 yaml。 -
localhost有效且NodePort的事实并不意味着该服务仅在容器内的 localhost 上侦听——决胜局将是您是否可以从另一个 Pod 访问该 Pod集群内的 Pod(然后在集群内对 Service 进行相同的实验)
标签: kubernetes kubernetes-service