我正在使用DigitalOcean上的CoreOs和Kubernetes构建一个容器集群,我已经看到,为了向世界公开Pod,您必须使用Type:LoadBalancer创建一个Service . 我认为这是最佳解决方案,因此您不需要在kubernetes之外添加外部负载均衡器,如nginx或haproxy . 我想知道是否可以使用DO的浮动IP来创建它 .
实际上可以通过浮动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
事情发生了变化,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集群,而不是担心很多基础设施(这是我对服务的理解,让我们看看当它变得可用时如何工作...)
LoadBalancer类型的服务是通过向每个 Cloud 提供程序特定的kubernetes master添加代码来实现的 . Digital Ocean(supported cloud providers)没有 Cloud 提供商,因此LoadBalancer类型将无法利用Digital Ocean的浮动IP .
相反,您应该考虑使用NodePort service或将ExternalIP附加到您的服务并将公开的IP映射到DO浮动IP .
3 回答
实际上可以通过浮动ip公开服务 . 唯一的问题是您需要使用的外部IP有点不直观 .
从它看起来DO为其浮动IP服务提供了某种覆盖网络 . 要获得您需要公开的实际IP,您需要ssh到您的网关Droplet并通过点击元数据服务找到其锚IP:
你会得到类似的东西
这是您可以在kubernetes中的LoadBalancer类型服务中用作外部IP的地址 .
Example:
事情发生了变化,DigitalOcean创建了他们自己的 Cloud 提供程序实现,并回答了here,他们正在维护一个Kubernetes“Cloud Controller Manager”实现:
尝试克隆主节点上的项目 .
接下来从https://cloud.digitalocean.com/settings/api/tokens获取令牌密钥并运行:
还有更多例子here
一旦你完成上述任务,会发生什么? DO的 Cloud 管理器将创建一个负载均衡器(具有开箱即用的故障转移机制,更多关于它in the load balancer's documentation
随着DigitalOcean加入Kubernetes的潮流,事情将很快再次发生变化,检查here你可以选择让他们管理你的Kuberentes集群,而不是担心很多基础设施(这是我对服务的理解,让我们看看当它变得可用时如何工作...)
LoadBalancer类型的服务是通过向每个 Cloud 提供程序特定的kubernetes master添加代码来实现的 . Digital Ocean(supported cloud providers)没有 Cloud 提供商,因此LoadBalancer类型将无法利用Digital Ocean的浮动IP .
相反,您应该考虑使用NodePort service或将ExternalIP附加到您的服务并将公开的IP映射到DO浮动IP .