访问在Docker For Desktop中本地运行的Kubernetes服务?

时间:2018-05-04 15:45:05

标签: docker kubernetes

我正在使用Docker For Desktop和内置的Kubernetes集群。我安装了Pod,通过HTTP提供资源,但我不确定如何使用我的浏览器访问它。我有以下ServiceSpec正确路由流量到Pod

spec:
  clusterIP: 10.99.132.220
  externalTrafficPolicy: Cluster
  ports:
  - name: myport
    nodePort: 31534
    port: 8037
    protocol: TCP
    targetPort: 80
  type: LoadBalancer

当我使用kubectl查询时,我可以看到它已设置:

$ kubectl get service
NAME           TYPE           CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
myservice   LoadBalancer   10.99.132.220   localhost     8037:31534/TCP   1h

如何使用浏览器访问此服务?

3 个答案:

答案 0 :(得分:1)

该服务将在您的浏览器http://localhost:8037

中提供

请注意,端口8037对应port对象上的ServiceSpec属性。

如果您无法通过该网址访问该服务,那么它可能是以下几项内容之一,包括但不限于:

  • 群集中还有另一个Service声明了该端口。删除其他Service,或将port属性更改为无人认领的端口。
  • 您的Pod未正常运行。查看kubectl get pods

答案 1 :(得分:0)

对于本地开发,您可能需要为服务使用类型NodePort(请参见https://kubernetes.io/docs/concepts/services-networking/service/#nodeport)。顾名思义,这会将给定的nodePort绑定到节点的端口(对于docker-on-desktop,该端口应为localhost)。

然后该服务应在http://localhost:31534上可用。

答案 2 :(得分:-1)

首先,两种方式不同:1. MiniKube和2. Docker-desktop。

对于Mac上的Docker-Desktop,您始终可以使用localhost,但下面提供了更好的方法。

  1. 转到任何Pod并使用群集节点IP进行访问。
  2. 运行busybox并转到群集节点IP以访问应用程序。

如何获取群集的IP。

$ kubectl describe node docker-for-desktop

在下面搜索

Addresses:
  InternalIP:  192.168.65.3
  Hostname:    docker-desktop

使用上述IP,您可以在busybox中运行命令。请注意,您不能直接访问上述IP,但需要先登录该名称空间的群集的任何Pod。