Kubernetes:如何访问本地主机上的服务-不是节点而是服务

Kubernetes:如何访问本地主机上的服务-不是节点而是服务,kubernetes,Kubernetes,更新: 找到了,但这是正确的方法吗 我可以看到我可以执行portforward到e节点,如: kubectl port-forward hello-nginx 8080:80 但我想玩游戏,尝试扩展和访问服务。 我已启动服务: kubectl expose deployment hello-nginx --type=NodePort service “hello-nginx” exposed 然后: kubectl get services rolling-sponge-hello-wo

更新:

找到了,但这是正确的方法吗

我可以看到我可以执行portforward到e节点,如:

kubectl port-forward hello-nginx 8080:80
但我想玩游戏,尝试扩展和访问服务。 我已启动服务:

kubectl expose deployment hello-nginx --type=NodePort

service “hello-nginx” exposed
然后:

kubectl get services

rolling-sponge-hello-world   ClusterIP   10.104.12.39   <none>        80/TCP    3d
kubectl获取服务
滚动海绵hello world ClusterIP 10.104.12.39 80/TCP 3d
那么如何代理kubernetes服务


注意:运行Docker for Mac(Edge)。

如您所述,最好的方法是使用入口。这样,您就可以向本地机器IP发送请求,入口控制器就会将流量发送到右侧的
Pods

为此,您需要:

  • 创建描述入口控制器如何将流量路由到
    吊舱的文件。这些规则可以根据请求中的路径或主机将流量重定向到特定的
    pod
  • 部署将遵循这些规则的入口控制器,如。您可以学习如何在中部署它

专门讨论Docker for mac和Ingress。

看起来kubectl get services的输出与您创建的服务不匹配。创建“节点端口”服务时,输出显示“ClusterIP”。NodePort类型允许通过其在每个节点的IP上打开的节点端口代理服务


您也可以使用
kubectl description service hello nginx

提取节点端口,但示例使用minikubeI,我们已经用一篇专门讨论Docker for Mac的新帖子更新了答案。