Kubernetes:如何访问localhost上的服务 - 不是节点而是服务

时间:2018-01-17 14:22:12

标签: kubernetes

更新

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

我可以看到我可以移植到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

那么你如何代理kubernetes服务呢?

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

2 个答案:

答案 0 :(得分:1)

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

为此你需要:

  • 创建Ingress rules,说明您希望Ingress控制器如何将流量路由到Pods。这些规则可以根据请求中的路径或主机将流量重定向到特定的Pods
  • 部署符合这些规则的Ingress控制器,例如nginx Ingress controller。您可以在this blog post中了解如何部署它。

This blog post专门讨论了Docker for mac和Ingress。

答案 1 :(得分:0)

看起来kubectl get services的输出与您创建的服务不匹配。输出说&#34; ClusterIP&#34;当你创建一个&#34; NodePort&#34;服务。 NodePort类型允许通过其节点端口代理服务,该端口在每个节点的IP上打开。

您也可以使用kubectl describe service hello-nginx

提取NodePort