在Kubernetes的子域上访问服务

我有以下设置:

  • 私有OpenStack云 – 只能访问Web UI(Horizo​​n)
    (API是有限的,但也许我可以访问)
  • 我已经使用CoreOS设置了一个 节点三个节点
  • 资源是标准化的(默认为OpenStack)
  • 在GitHub上,我遵循了CoreOS的入门指南(即,我使用了提供的用于configurationcloud-config的默认YAML)

当我读扩展,如Web UI(kube-ui)可以添加为附加 – 我已经添加(只有kube-ui)。

现在,如果我运行一个类似simple-nginx的testing,我会得到以下输出:

创build豆荚:

$ 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访问我的服务。

我现在的问题如下:

如何访问任何已启动的服务以及子域,因此如何设置此configuration(例如,我有domain.com作为示例),还是可以打印出哪个节点IP我必须访问我的服务(尽pipe我有只有两个副本(?!))?

为了形容我的想法更容易理解,我的意思是:

  • 给定域名: domain.com (指向主)
  • 开始服务simple-nginx
  • 可以通过simple-nginx.domain.com访问服务

您的OpenStack云提供商实施是否支持LoadBalancertypes的服务?

如果是这样,服务控制器应该分配一个入口IP或主机名到服务,最终应该显示在kubectl描述svc输出。 您可以为其设置外部DNS。

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