首页 文章

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

提问于
浏览
5

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

3 回答

  • 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的地址 .

    Example:

    kubectl expose rc my-nginx --port=80 --public-ip=10.x.x.x --type=LoadBalancer
    
  • 4

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

    适用于DigitalOcean的Kubernetes Cloud 控制器管理器目前,digitalocean-cloud-controller-manager实现:nodecontroller - 使用 Cloud 提供商特定标签和地址更新节点,还在 Cloud 提供商上删除时删除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的 Cloud 管理器将创建一个负载均衡器(具有开箱即用的故障转移机制,更多关于它in the load balancer's documentation

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

  • 5

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

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

相关问题