使用:
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 for Mac(Edge) 支持 Kubernetes,如何添加 EXTERNAL-IP
?
最佳答案
除非“Docker for Mac”发生了一些非常神奇的事情,否则 type: LoadBalancer
仅适用于云环境,其中 Ingress Controller 可以 provision a cloud load balancer (即 AWS 的 ELB、GKE ......无论他们使用什么)。
也就是说,从您的输出中可以看出 kubernetes 的行为就像 type: NodePort
(您的具体示例显示端口 32670
转到您服务上的端口 8080
)。目前尚不清楚您是否可以按原样使用 NodePort-ish 端口,或者处于“待处理”状态的服务是否以某种方式意味着流量不会按预期路由。我想也许只是尝试一下?
或者您可以跳过伪装并合法地创建 type: NodePort
的服务。 ,然后您和 kubernetes 将在同一页面上了解正在发生的事情。
您可以选择的另一种方式是运行集群内 Ingress Controller ,例如 ingress-nginx ,并使用虚拟主机仅在一个端口上公开您的所有服务。如果您有很多服务要公开,那会方便得多,但只为其中一两个设置可能会让人头疼。
关于kubernetes - 在 Docker for Mac 上启动 Ingress 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48244233/