Kubernetes

时间:2016-01-08 18:08:08

标签: docker openstack kubernetes coreos skydns

我有以下设置:

  • 私有OpenStack Cloud - 只能访问Web UI(Horizo​​n)
    (API受到限制,但也许我可以访问)
  • 我使用 CoreOS 设置了一个三个节点
  • 资源是标准化的(默认为OpenStack)
  • 我遵循了GitHub
  • 的CoreOS入门指南(即我使用默认的YAMLs提供的云配置)

当我读到像Web UI(kube-ui)这样的扩展可以作为附加组件添加 - 我已添加(仅限kube-ui)。

现在,如果我运行像simple-nginx这样的测试,我会得到以下输出:

创建pod:

$ kubectl run my-nginx --image=nginx --replicas=2 --port=80

创建服务:

$ kubectl expose rc my-nginx --port=80 --type=LoadBalancer          
NAME       LABELS         SELECTOR       IP(S)     PORT(S)
my-nginx   run=my-nginx   run=my-nginx             80/TCP

获取服务信息:

$ kubectl describe service my-nginx                                                                                                
Name:           my-nginx
Namespace:      default
Labels:         run=my-nginx
Selector:       run=my-nginx
Type:           LoadBalancer
IP:             10.100.161.90
Port:           <unnamed>   80/TCP
NodePort:       <unnamed>   31170/TCP
Endpoints:      10.244.19.2:80,10.244.44.3:80
Session Affinity:   None
No events.

我可以从节点的每个(!)外部IP访问我的服务。

我现在的问题如下:

如何使用子域访问任何已启动的服务以太,因此如何设置此配置(例如我以domain.com为例)或者可以打印出我必须访问的哪个节点-IP我的服务(虽然我只有两个副本(?!))?

描述我的想法更容易理解,我的意思是:

  • 给定域名: domain.com (指向主人)
  • 启动服务 simple-nginx
  • 可以使用 simple-nginx.domain.com
  • 访问服务

1 个答案:

答案 0 :(得分:0)

您的OpenStack云提供程序实现是否支持LoadBalancer类型的服务?

如果是这样,服务控制器应该为服务分配入口IP或主机名,最终应该显示在kubectl describe svc输出中。然后,您可以为它设置外部DNS。

如果没有,只需使用type = NodePort,你仍然会在每个节点上获得一个NodePort。然后,您可以按照注释中的建议创建Ingress资源,该资源可以执行端口和主机重新映射。