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

Chr*_* G. 5 kubernetes docker-for-mac minikube kubernetes-helm

更新:使用:

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
Run Code Online (Sandbox Code Playgroud)

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

helm install stable/jenkins
kubectl get services // To get the service name
minikube service original-llama-jenkins // << The service name
Run Code Online (Sandbox Code Playgroud)

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

谢谢

cit*_*ich 16

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

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

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

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


mda*_*iel -5

除非“Docker for Mac”发生了一些非常神奇的事情,否则它type: LoadBalancer只是为云环境而设计的,其中 Ingress 控制器可以配置云负载均衡器(即 AWS 的 ELB、GKE ......无论他们使用什么)。

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

或者您可以跳过伪装并合法地创建服务type: NodePort,然后您和 kubernetes 将就正在发生的事情达成一致。

您可以选择的另一种方法是运行集群内 Ingress 控制器,例如ingress-nginx,并使用虚拟托管在一个端口上公开所有服务。如果您有很多服务要公开,这可能会方便得多,但只为其中一两个服务进行设置可能会很麻烦。

  • 如下所述,Docker for Mac Kubernetes *确实*支持 LoadBalancer,因此这个答案不应该被接受。 (2认同)