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

问题描述 投票:6回答:3

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

kubernetes digital-ocean coreos
3个回答
4
投票

LoadBalancer类型的服务是通过将代码添加到特定于每个云提供程序的kubernetes master来实现的。 Digital Ocean(supported cloud providers)没有云提供商,因此LoadBalancer类型将无法利用Digital Ocean的浮动IP。

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


7
投票

事情发生了变化,DigitalOcean创建了自己的云提供程序实现,回答了here,他们正在维护一个Kubernetes“Cloud Controller Manager”实现:

Kubernetes Cloud Controller Manager for DigitalOcean

目前digitalocean-cloud-controller-manager实现:

  • nodecontroller - 使用云提供程序特定标签和地址更新节点,还会在云提供程序上删除时删除kubernetes节点。
  • servicecontroller - 负责在Kubernetes中创建Type:LoadBalancer服务时创建LoadBalancers。

尝试克隆主节点上的项目。

接下来从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

有更多的例子here

一旦你做到了以上,会发生什么? DO的云管理器将创建一个负载均衡器(具有开箱即用的故障转移机制,更多关于它in the load balancer's documentation

随着DigitalOcean加入Kubernetes的行列,检查here,你可以选择让他们管理你的Kuberentes集群,而不是担心很多基础设施(这是我对服务的理解,让我们看看当它变得可用时如何工作...)


2
投票

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

从它看来DO为其浮动IP服务提供了某种覆盖网络。要获得您需要公开的实际IP,您需要ssh到您的网关Droplet并通过点击元数据服务找到它的锚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
© www.soinside.com 2019 - 2024. All rights reserved.