2

我正在尝试将我的部署公开到一个端口,我可以通过 Minikube 通过我的本地计算机访问该端口。

我尝试了两种 YAML 配置(一种是负载均衡器,一种只是公开端口的服务)。我: http: //pastebin.com/gL5ZBZg7

apiVersion: v1
kind: Service
metadata:
  name: bot
labels:
    app: bot
spec:
  type: LoadBalancer
  ports:
  - port: 8000
    targetPort: 8000
    protocol: TCP
  selector:
    app: bot

二: http: //pastebin.com/sSuyhzC5

apiVersion: v1
kind: Service
metadata:
  name: bot
  labels:
    app: bot
spec:
  ports:
  - port: 8000
    targetPort: 8000
    protocol: TCP
  selector:
    app: bot

部署和 docker 容器镜像都暴露了 8000 端口,并且 Pod 被标记为 app:bot。

第一个导致服务的端口永远不会完成,并且外部 IP 永远不会被分配。第二个结果是我的仪表板中的 bot:8000 TCP, bot:0 TCP 端口,当我尝试“minikube service bot”时没有任何反应。如果我输入“kubectl expose service bot”,也会发生同样的情况。

我在 Mac OS X 上。

如何正确设置?

4

2 回答 2

3

LoadBalancer服务适用于云提供商,与 minikube 无关。

文档中:

在支持外部负载均衡器的云提供商上,将类型字段设置为“LoadBalancer”将为您的服务提供负载均衡器。

使用minikube 文档的网络部分中提到Service的类型NodePort(参见文档)是在 minikube上公开服务的预期方式。

所以你的配置应该是这样的:

apiVersion: v1
kind: Service
metadata:
  name: bot
  labels:
    app: bot
spec:
  type: NodePort
  ports:
  - port: 8000
    targetPort: 8000
    nodePort: 30356
    protocol: TCP
  selector:
    app: bot

并通过以下方式访问您的应用程序:

> IP=$(minikube ip)
> curl "http://$IP:30356"

希望有帮助。

于 2017-03-04T18:21:52.123 回答
0

Minikube 现在有 service 命令来访问服务。

使用kubectl service <myservice>.

这将为您提供一个可用于与服务对话的 URL。

于 2017-03-06T16:18:19.723 回答