当前位置: 首页 > 知识库问答 >
问题:

DigitalOcean上的Kubernetes外部负载平衡器服务

漆雕宏浚
2023-03-14

我正在DigitalOcean上使用CoreOs和库伯内特斯构建一个容器集群,我已经看到,为了向世界公开Pod,您必须使用Type: LoadBalancer创建一个服务。我认为这是最佳解决方案,因此您不需要在nginx或haagent等kubernetes之外添加外部负载均衡器。我想知道是否可以使用DO的浮动IP创建它。

共有3个答案

施靖
2023-03-14

实际上可以通过浮动IP公开服务。唯一的问题是您需要使用的外部IP有点不直观。

从表面上看,他们的浮动IP服务有某种覆盖网络。要获得需要公开的实际IP,您需要ssh到网关滴中,并通过访问元数据服务找到其锚定IP:

curl -s http://169.254.169.254/metadata/v1/interfaces/public/0/anchor_ipv4/address

你会得到这样的结果

10.x.x.x

这是您可以在kubernetes中的LoadBalancer类型服务中用作外部ip的地址。

例子:

kubectl expose rc my-nginx --port=80 --public-ip=10.x.x.x --type=LoadBalancer
狄法
2023-03-14

LoadBalancer类型的服务是通过向kubernetes主机添加特定于每个云提供商的代码来实现的。Digital Ocean没有云提供商(支持的云提供商),因此LoadBalancer类型将无法利用Digital Ocean的浮动IP。

相反,您应该考虑使用NodePort服务或将ExternalIP附加到您的服务,并将公开的IP映射到DO浮动IP。

呼延哲
2023-03-14

事情发生了变化,DigitalOcean创建了自己的云提供商实现,正如这里所回答的,他们正在维护Kubernetes的“云控制器管理器”实现:

DigitalOcean的Kubernetes云控制器管理器

目前,digitalocean云控制器管理器实现:

>

  • NodeControl—使用云提供商特定的标签和地址更新节点,在云提供商上删除kubernetes节点时,也会删除这些节点。

    当在库伯内特斯中创建类型为:LoadBalancer的服务时,负责创建LoadBalancer。

    若要尝试,请在主节点上克隆项目。

    接下来从获取令牌密钥https://cloud.digitalocean.com/settings/api/tokens并运行:

    export DIGITALOCEAN_ACCESS_TOKEN=abc123abc123abc123
    scripts/generate-secret.sh
    kubectl apply -f do-cloud-controller-manager/releases/v0.1.6.yml
    

    这里有更多的例子

    执行上述操作后会发生什么?DO的云管理器将创建一个负载均衡器(它具有开箱即用的故障转移机制,更多信息请参见负载均衡器的留档

    一旦DigitalOcean加入Kubernetes的行列,情况将再次发生变化,请查看此处,您可以选择让他们管理您的Kuberentes群集,而不用担心大量的基础设施(这是我对该服务的理解,让我们看看它在可用时是如何工作的……)

  •  类似资料:
    • 试图自学如何使用库伯内特斯,但有一些问题。 我的下一步是尝试使用LoadBalancer类型的服务来访问nginx。 我建立了一个新的集群并部署了nginx映像。 然后,我为LoadBalancer设置服务 设置完成后,我尝试使用LoadBalancer入口(我在描述LoadBalancer服务时发现)访问nginx。我收到一个此页面无法工作的错误。 不太确定我哪里出错了。 kubectl获得sv

    • 我必须手动在MS Azure中创建Kubernetes群集,而不是使用AKS。因此: > 我在一个可用性集中创建了2个VM:一个用于k8s master,第二个用于k8s节点。 我创建了外部负载均衡器并将2个VM添加到后端池。 我使用kubes祈祷创建了k8s集群。 我创建了部署和负载均衡器服务: 但LoadBalancer服务外部IP始终处于挂起状态: 此外,telnet azure\u loa

    • 我安装了一个kubernetes集群。我想为我的一个微服务使用外部数据库(在我的集群之外),但这个外部数据库被设置为集群,没有自己的负载均衡器。 有没有办法创建一个内部负载平衡器服务,让kubernetes始终将微服务定向到正在运行的实例? 我看到您可以设置loadbalancer类型的服务,我如何使用它?我尝试创建它,但我看到loadbalancer服务是用NodePort创建的。它可以在没有节

    • 在Kubernetes中创建负载平衡器类型的服务时,它是创建一个全新的外部负载平衡器,还是只为负载平衡器类型的第一个服务创建一个负载平衡器,并将该负载平衡器重新用于负载平衡器类型的所有后续服务? 这个问题特别重要,因为为每个服务构建一个单独的负载平衡器对我来说成本太高。 如果它特定于云提供商,我使用Azure,但我很想知道其他云提供商是否不同。

    • 我已经在AKS上部署了我的kubernetes应用程序,它使用内部负载均衡器,而没有单独的入口控制器。 目前该服务可以使用超文本传输协议访问,我想保护该服务。如何启用https以及应在何处安装证书?

    • 我正在尝试运行一个连接到部署pod的简单负载平衡服务器。 我安装了Docker for Mac edge版本。 问题是,当我尝试向公开的负载均衡器urlhttp://localhost:8081/api/v1/posts/health发出GET请求时,出现的错误是: org.apache.http.localhost:8081响应失败 做的时候: 我得到: 很明显,服务正在运行,但localhos