在 Docker 上为 Mac 启动 Ingress 服务
Starting an Ingress service on 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
现在我们有 Docker 用于支持 Kubernetes 的 Mac(Edge),您如何添加 EXTERNAL-IP
?
除非“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,并使用虚拟主机仅在一个端口上公开您的所有服务。如果您有很多服务要公开,这会方便得多,但只为其中一两个设置可能会让人头疼。
LoadBalancer 和 NodePort 都在 Docker 上为 Mac Kubernetes 工作。实际上,这是一个可爱的魔法。只需点击本地主机:[端口]。对于 NodePort,除非在服务定义中指定,否则会自动分配一个端口。对于类型 LoadBalancer,它也在服务定义中指定。请注意,在使用 LoadBalancer 时,来自 kubectl
的状态对于 EXTERNAL-IP 将显示为 <pending>
,但它确实有效。
这个人指出它是通过 vpnkit 公开的,但我认为另一个来源会有所帮助:
https://github.com/jnewland/local-dev-with-docker-for-mac-kubernetes
编辑:更新是因为 Kubernetes 现在可以在 DfM 的稳定版本中使用。
使用:
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
现在我们有 Docker 用于支持 Kubernetes 的 Mac(Edge),您如何添加 EXTERNAL-IP
?
除非“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,并使用虚拟主机仅在一个端口上公开您的所有服务。如果您有很多服务要公开,这会方便得多,但只为其中一两个设置可能会让人头疼。
LoadBalancer 和 NodePort 都在 Docker 上为 Mac Kubernetes 工作。实际上,这是一个可爱的魔法。只需点击本地主机:[端口]。对于 NodePort,除非在服务定义中指定,否则会自动分配一个端口。对于类型 LoadBalancer,它也在服务定义中指定。请注意,在使用 LoadBalancer 时,来自 kubectl
的状态对于 EXTERNAL-IP 将显示为 <pending>
,但它确实有效。
这个人指出它是通过 vpnkit 公开的,但我认为另一个来源会有所帮助:
https://github.com/jnewland/local-dev-with-docker-for-mac-kubernetes
编辑:更新是因为 Kubernetes 现在可以在 DfM 的稳定版本中使用。