在Kubernetes的子域上访问服务
我有以下设置:
- 私有OpenStack云 – 只能访问Web UI(Horizon)
(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资源,该资源可以执行端口和主机重映射。