Kubernetes本地端口在Minikube部署

时间:2017-03-03 21:00:30

标签: kubernetes minikube

我正在尝试将我的部署公开到一个端口,我可以通过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

II: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上。

如何正确设置?

2 个答案:

答案 0 :(得分:3)

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

来自documentation

  

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

使用documentation中提到的ServiceNodePort(请参阅Networking part of the minikube documentation)是在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"

希望有所帮助。

答案 1 :(得分:0)

Minikube现在具有访问服务的服务命令。

使用kubectl service <myservice>

这将为您提供一个可用于与服务进行通信的URL。