2016-10-15 158 views
2

我正在运行裸机Kubernetes集群并尝试使用Load Balancer来公开我的服务。我通常知道负载平衡器是底层公共云的功能,但最近对Ingress控制器的支持似乎现在应该可以使用nginx作为自托管负载平衡器。将外部IP分配给节点

到目前为止,我一直在关注的例子here建立一个nginx的入口控制器,它背后的一些测试服务。但是,我无法按照步骤6显示运行负载平衡器的节点的外部IP,因为我的节点在地址部分没有ExternalIP,只有LegacyHostIP和InternalIP。

我已经在服务的规范指定它试图手动分配ExternalIP我的集群。但是,这似乎被映射为externalID。

如何手动设置我的节点的ExternalIP地址?

+0

我想我可能已经想通了。通过绑定我的复制控制器到一个服务,并暴露出来,nginx Load Balancer的作品。我现在要解决这个问题,尽管如果任何人都可以评论,如果这是建议的解决方法或不。 – KingJ

回答

3

这东西是测试,适用于特定节点上创建一个nginx的服务。

apiVersion: v1 
kind: Service 
metadata: 
    name: nginx 
    namespace: default 
spec: 
    ports: 
    - port: 80 
     protocol: TCP 
     targetPort: 80 
     name: http 
    - port: 443 
     protocol: TCP 
     targetPort: 443 
     name: https 
    externalIPs: 
     - '{{external_ip}}' 
    selector: 
     app: nginx 

假定有一个nginx的部署上游监听端口80,443 的externalIP是节点的公共IP。

+0

你能否解释external_ip的模板值来自哪里?这几乎是我最终为我的nginx Ingress RC创建的确切服务定义,但我已对外部IP进行了硬编码。 – KingJ

+0

经过多一点挖掘,我发现外部和内部IP由Kubernetes运行的特定云决定。支持因云而异,[https://github.com/kubernetes/kubernetes/blob/master/pkg/cloudprovider/providers/gce/gce.go](例如Google计算引擎的支持)(搜索ExternalIP查看它从哪里获取数据)。由于它依赖于单独的云提供商,因此似乎支持变化很大。 – KingJ

相关问题