【问题标题】:k3d no external ip for a service of load balanacer typek3d 负载均衡器类型的服务没有外部 IP
【发布时间】:2020-10-18 19:42:13
【问题描述】:

我正在将 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:

【问题讨论】:

    标签: kubernetes rancher k3s


    【解决方案1】:

    LoadBalancer 类型的服务只有在您使用 AWS EKS、Azure AKS、Google GCP 等云提供商提供的托管 kubernetes 服务时才会获得外部 IP。k3d 等工具用于本地开发,并且如果您创建 @ 987654323@ 类型的服务外部 ip 将被挂起。另一种方法是使用 NodePort 类型的 service 或 ingress 。这是doc

    您也可以使用kubectl port forwardkubectl proxy 访问pod。

    【讨论】:

      【解决方案2】:

      您需要cloud controller manager 作为服务控制器来执行此操作。就本地而言,您的最佳选择可能是MetalLB

      话虽如此,我不知道这将如何处理 K3d 中的底层 docker 网络。它在我要尝试的事情清单上。如果我觉得效果不错,我会回来更新这篇文章。

      【讨论】:

        【解决方案3】:

        我在关注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,它比 minikube 更像是一个完整的 kubernetes 设置。我可以毫无问题地访问http://172.20.0.2:8081 的服务。

        【讨论】:

        • 嗨。感谢您的(迟到的)回答。你能添加你运行的k3d-命令来创建集群吗?听起来你用它映射了这个服务的NodePort。请参阅k3d.io/usage/guides/exposing_services/#2-via-nodeport 请在此处添加您链接的示例的必要部分。作为答案应该是独立的。
        【解决方案4】:

        我通过将清单从 LoadBalancer 类型更改为 Ingress 类型解决了这个问题。 K3d 似乎没有将外部 IP 正确地暴露给负载均衡器类型。

        奇怪的是,我确实发现如果我部署得非常快,我就能让 LoadBalancer 类型工作。似乎必须在主节点启动之后,任何代理启动之前。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2018-06-25
          • 1970-01-01
          • 2020-06-02
          • 2020-01-30
          • 2016-06-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多