在新的Docker for Mac(Edge)上启动服务(Ingress)

时间:2018-01-13 20:56:30

标签: kubernetes minikube kubernetes-helm docker-for-mac

更新: 使用:

kubectl expose deployment <Name-Of-Servce> --name=loadbalancer --port=8080 --target-port=8080 --type=LoadBalancer

kubectl get services正在显示待处理状态:

loadbalancer                 LoadBalancer   <x.x.x.x>   <pending>     8080:32670/TCP   2m

在Docker支持Kubernetes之前,我可以使用MiniKube和Helm:

helm install stable/jenkins
kubectl get services // To get the service name
minikube service original-llama-jenkins // << The service name

现在我们有支持Kubernetes的Docker for Mac(Edge),你如何添加EXTERNAL-IP

由于

2 个答案:

答案 0 :(得分:15)

两种类型的LoadBalancer和NodePort都可以在Docker for Mac Kubernetes上运行。实际上,这是一个可爱的魔法。只需点击localhost:[port]。对于NodePort,除非在服务定义中指定,否则将自动分配端口。对于类型LoadBalancer,它也在服务定义中指定。请注意,在使用LoadBalancer时,kubectl的状态对于EXTERNAL-IP将显示为<pending>,但它确实有效。

这个家伙注意到它通过vpnkit公开,但我认为另一个来源会有所帮助:

https://github.com/jnewland/local-dev-with-docker-for-mac-kubernetes

编辑:已更新,因为Kubernetes现在可用于稳定版本的DfM。

答案 1 :(得分:-3)

除非“Docker for Mac”发生了一些非常神奇的事情,否则type: LoadBalancer仅适用于云环境,其中Ingress控制器可以provision a cloud load balancer(即AWS的ELB,GKE ......无论他们使用什么)。

也就是说,从输出中可以看出kubernetes的行为就好像是type: NodePort(您的具体示例显示端口32670转到您服务上的端口8080) 。目前还不清楚您是否可以按原样使用该NodePort-ish端口,或者处于“待处理”状态的服务是否意味着流量不会按预期路由。我想也许只是尝试一下?

或者你可以跳过假装并合法地创建type: NodePort的服务,然后你和kubernetes将在同一页上关于正在发生的事情。

您可以选择执行操作的另一种方法是运行集群内Ingress控制器,例如ingress-nginx,并使用虚拟主机在一个端口上公开您的所有服务。如果你有大量的服务要公开,这可能会更方便,但是设置一两个服务可能会非常令人头疼。