2017-06-03 75 views

回答

1

从您的问题中不清楚,但我假设您正在使用Google Container Engine(GKE)。

GKE使用

当你使用谷歌集装箱引擎(GKE),一般的想法是,你只能在Kubernetes水平做配置和GKE负责剩下的照顾。 GKE使用谷歌计算引擎(GCE)下方,以管理基础设施,这就是实例团体和其他GCE资源进来。

Terraform与GKE

的terraform google_container_cluster地图为集群本身GKE配置。手动修改下面的GCE实例组资源似乎并不是常见的用例。

Named ports in GCE is used only for Load balancing,其中负载平衡器中的BackendService配置可以使用命名端口来引用实例组上的端口,而不是指定端口号。

在GKE将映射到GCE负载平衡器(具有后端服务,实例组和虚拟机)的Kubernetes级别you can define services and specify incoming and target ports上。

负载平衡

进行负载平衡,你有Kubernetes 2个主要选项:

  1. 类型负载平衡器 - 从Kubernetes doc about load balancing

类型负载平衡器

在c大声提供商支持外部负载平衡器,将类型字段设置为“LoadBalancer”将为您的服务配置一个 负载平衡器。负载 平衡器的实际创建是异步发生的,有关配置好的 平衡器的信息将在服务的status.loadBalancer字段中发布。

例如:从外部负载平衡器

kind: Service 
apiVersion: v1 
metadata: 
    name: my-service 
spec: 
    selector: 
    app: MyApp 
    ports: 
    - protocol: TCP 
     port: 80 
     targetPort: 9376 
     nodePort: 30061 
    clusterIP: 10.0.171.239 
    loadBalancerIP: 78.11.24.19 
    type: LoadBalancer 
status: 
    loadBalancer: 
    ingress: 
     - ip: 146.148.47.155 

交通将在 后端豆荚被定向,但究竟是如何工作依赖于云 提供商。某些云提供商允许loadBalancerIP指定为 。在这些情况下,将使用用户指定的loadBalancerIP创建负载均衡器。如果指定loadBalancerIP字段不是 ,则会为loadBalancer分配一个短暂IP。如果 指定了loadBalancerIP,但云提供商不支持该功能,则该字段将被忽略。

  • 入口资源 - 如果服务是HTTP/HTTPS,Kubernetes还支持Ingress resource开始Kubernetes v1.1。 GKE会自动设置一个L7负载均衡器并支持SSL/TLS。
  • 使用进入资源具有以下优点:

    1. 指定每个URL路径和港口服务(它使用URL Maps从GCE配置此)。
    2. 在GCE负载均衡器(它使用GCE的Target proxies配置此设置)上设置并终止SSL/TLS。
    3. GKE会自动为您的服务配置GCE health checks

    您只需要在POD中实现后端的服务逻辑以处理请求。

    更多信息可在GKE page about setting up HTTP load balancing

    仍然需要手动添加命名端口?

    最后,如果你仍然觉得有必要,他们一直在使用google_container_cluster创建后修改实例组,这里是一些信息:

    1. instance group API documentation的GCE将解释如何操作命名端口(和其他领域,如果需要)。更具体地看看instanceGroups.setNamedPorts API
    2. 您将使用您之前收到的使用REST API进行操作的URL。
    3. 如果直接使用REST API,则需要传递正确的访问令牌进行身份验证。如果使用任何客户端库,则需要设置应用程序默认凭据(首选方式)或手动加载并配置它们。有关验证的信息和Application Default credentials可用heregcloud也是一种选择。
    4. 仅向实例组添加命名端口是不够的。您很可能需要更新您的BackendService资源以使用这些命名端口。你可以看看portName field in BackendService API