我正在将hello-world docker容器部署到k3d集群。为了获取外部IP,需要部署负载均衡类型的服务。
在那之后,我希望通过负载均衡器调用应用程序。但是我不知道外部的ip地址。
k3d create --name="mydemocluster" --workers="2" --publish="80:80"
export KUBECONFIG="$(k3d get-kubeconfig --name='mydemocluster')"
kubectl run kubia --image=hello-world --port=8080 --generator=run/v1
kubectl expose rc kubia --type=LoadBalancer --name kubia-http
export KUBECONFIG="$(k3d get-kubeconfig --name='mydemocluster')"然后是kubectl get services:

发布于 2020-06-28 23:55:39
如果您使用由云提供商提供的托管kubernetes服务,例如AWS EKS、Azure AKS、Google GCP etc.Tools 用于本地开发,则LoadBalancer类型的服务将获得外部IP,如果您创建LoadBalancer类型的服务,外部ip将被挂起。另一种方法是使用NodePort类型的服务或入口。这是关于这个的doc。
您也可以使用kubectl port forward或kubectl proxy访问pod。
发布于 2020-07-15 22:42:56
为此,您需要一个cloud controller manager来充当服务控制器。就on-prem而言,你最好的选择可能是MetalLB。
也就是说,我不知道这在K3d的底层docker网络中会有什么表现。这在我要尝试的事情清单上。如果我发现它运行良好,我会回来更新这篇文章。
发布于 2021-05-14 23:22:02
我在跟踪this example
对于k3d和那里,它似乎工作得很好:
(base) erik@buzzard:~/kubernetes/tutorial>
kubectl get services
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.43.0.1 <none> 443/TCP 3d6h
mongodb-service ClusterIP 10.43.215.113 <none> 27017/TCP 27m
mongo-express-service LoadBalancer 10.43.77.100 172.20.0.2 8081:30000/TCP 27m据我所知,k3d运行的是k3s,例如,它更像是一个完整的kubernetes设置,而不是minikube。我可以在http://172.20.0.2:8081上毫无问题地访问该服务。
https://stackoverflow.com/questions/62624652
复制相似问题