在中间层的DCOS中向公众展示Kubernete服务

时间:2016-02-05 01:06:42

标签: amazon-web-services kubernetes mesos mesosphere

关注https://www.mesosphere.com/amazon/我在Amazon AWS上创建了一个DCOS群集。 然后我跟着http://kubernetes.io/v1.1/docs/getting-started-guides/dcos.html并在上面安装了Kubernete。 然后我跟着http://kubernetes.io/v1.1/docs/user-guide/quick-start.html 我成功地启动了pod。 然后我遇到了将服务暴露给公众的问题。

$ dcos kubectl expose rc my-nginx --port=80 --type=LoadBalancer
service "my-nginx" exposed
$ dcos ssun$ dcos kubectl get svc my-nginx
NAME       CLUSTER_IP    EXTERNAL_IP   PORT(S)   SELECTOR       AGE
my-nginx   10.10.10.32                 80/TCP    run=my-nginx   8s

EXTERNAL_IP地址不存在。根据教程,它应该。因此,我认为这与我的Kubernete在DCOS内部有关。

请帮忙。非常感谢你!

1 个答案:

答案 0 :(得分:2)

Mesos / DCOS上的Kubernetes尚不支持自动创建LoadBalancer。

正如quick start所述:

  

通过与某些云提供商(例如Google Compute Engine和AWS EC2)集成,Kubernetes可让您请求为您的应用提供公共IP地址。

AFAIK,到目前为止,只有GCE,GKE和AWS支持自动创建LoadBalancer。

DCOS的另一个关键区别(与kubernetes相比)是默认情况下带有两个区域:公共区域和私有区域。因此,如果没有公共节点上的反向代理,可以从外部访问私有节点上的任何内容。

此外,DCOS上的Kubernetes还不支持每容器IP。 DCOS/Calico integration正在开发对每容器IP的支持。据报道,一些社区成员还尝试使用群集范围的docker overlay网络。

目前,有一些替代方案可以在外部使用您的广告连接:

  1. 在所有公共奴隶(使用resource role annotations)和hostPort:80上部署您的广告连播。然后点击DCOS公共从属AWS ELB的地址。
  2. 创建您自己的负载均衡器nginx pod(例如service-loadbalancer并使用hostPort:80在公共从站上安排它。然后点击它所在的主机节点的IP。
  3. Mesosphere Kubernetes团队绝对优先考虑让DCOS上的体验更加顺畅。希望该解决方案将包括自动创建LoadBalancer。