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

时间:2016-03-09 06:37:24

标签: kubernetes digital-ocean coreos

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

3 个答案:

答案 0 :(得分:6)

情况发生了变化,DigitalOcean根据回答here创建了自己的云提供商实现,并维护着Kubernetes的“ Cloud Controller Manager”实现:

  

Kubernetes Cloud Controller Manager for DigitalOcean

     

当前digitalocean-cloud-controller-manager的实现:

     
      
  • nodecontroller-使用云提供商特定的标签更新节点,并   地址,在云上删除时也会删除kubernetes节点   提供者。

  •   
  • servicecontroller-负责创建LoadBalancers   在Kubernete中创建类型为:LoadBalancer的服务 s。

  •   

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

接下来从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集群,而不用担心很多基础架构(这是我的了解服务后,让我们看看它何时可用……)

答案 1 :(得分:4)

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

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

答案 2 :(得分: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