没有公共IP的GKE负载均衡服务

时间:2017-04-23 00:23:20

标签: kubernetes google-kubernetes-engine

我有一个带负载均衡器的GKE服务,但我想在其他服务内部使用它,例如我希望不将公共IP分配给它

是否可以在没有私有VPN的情况下使用防火墙设置?

所有其他负载平衡(如kube-dns)功能都很有效,而且我的Container Engine中的服务不需要公共IP

所有节点都位于相同的区域和区域,因此我不需要也不关心多区域功能

2 个答案:

答案 0 :(得分:5)

GKE现在支持Internal Load Balancing

apiVersion: v1
kind: Service
metadata:
  name: [SERVICE-NAME]
  annotations:
    cloud.google.com/load-balancer-type: "Internal"
  labels:
    app: echo
spec:
  type: LoadBalancer
  loadBalancerIP: [IP-ADDRESS]
  ports:
  - port: 9000
    protocol: TCP
  selector:
    [KEY]: [VALUE]

注意注释:cloud.google.com/load-balancer-type: "Internal"。 这将创建一个LoadBalancer服务,其中包含可在您的VPC中路由的专用IP地址。

Bitnami也有一篇很棒的博文: creating-private-kubernetes-clusters-on-gke

答案 1 :(得分:3)

在您的问题的背景下,我的其他服务内部是否"以及#34;表示" Kubernetes服务在同一个集群中运行"或者"在GCE中运行但在Kubernetes集群之外运行的其他应用程序"。

Kubernetes" Service"即使资源未设置为LoadBalancer,资源也会进行负载平衡。因此,如果您只需要将此服务公开给在Kubernetes中运行的其他应用程序,则可以将服务的spec.type设置为ClusterIP。来自文档:

  

ClusterIP:在集群内部IP上公开服务。选择此值使服务只能从群集中访问。

如果您需要将此服务公开给Kubernetes以外的应用程序,则需要将spec.type设置为LoadBalancer,这将为其分配公共IP。使用spec.loadBalancerSourceRanges的简单防火墙规则使防火墙配置相对容易。你可以在这里阅读更多相关信息: https://kubernetes.io/docs/tasks/access-application-cluster/configure-cloud-provider-firewall/

相关问题