2

我有以下设置:

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

当我阅读诸如 Web UI (kube-ui) 之类的扩展时,可以将其添加为附加组件 - 我已添加(仅 kube-ui)。

现在,如果我运行诸如 simple-nginx 之类的测试,我会得到以下输出:

创建豆荚:

$ 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访问服务
4

1 回答 1

0

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

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

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

于 2016-03-09T03:57:25.713 回答