Sun*_*mar 18 google-cloud-platform kubernetes google-kubernetes-engine
我有两个服务,集群K1中的S1和集群K2中的S2.它们有不同的硬件要求.服务S1需要与S2通信.
出于安全原因,我不想公开S2的公共IP.通过网络负载平衡在K2集群的计算实例上使用NodePorts可以灵活地实现,因为每次在K2中添加/删除节点时,我都必须在目标池中添加/删除K2的计算实例.
是否有类似"服务选择器"的东西来自动更新目标池?如果没有,这个用例还有其他更好的方法吗?
CJ *_*len 11
我可以想到几种方法来访问连接到同一GCP专用网络的多个集群中的服务:
所有k2服务的堡垒路线为k2:
找到SERVICE_CLUSTER_IP_RANGE
k2群集.在GKE上,它将是servicesIpv4Cidr
集群输出中的字段描述:
$ gcloud beta container clusters describe k2
...
servicesIpv4Cidr: 10.143.240.0/20
...
Run Code Online (Sandbox Code Playgroud)
添加高级路由规则以获取发往该范围的流量并将其路由到k2中的节点:
$ gcloud compute routes create --destination-range 10.143.240.0/20 --next-hop-instance k2-node-0
Run Code Online (Sandbox Code Playgroud)
这将导致k2-node-0
来自专用网络的任何k2服务的代理请求.这有k2-node-0
额外工作的明显缺点,但很简单.
在k1中的所有节点上安装k2的kube-proxy.
看看k2中任何节点上当前运行的kube-proxy:
$ ps aux | grep kube-proxy
... /usr/local/bin/kube-proxy --master=https://k2-master-ip --kubeconfig=/var/lib/kube-proxy/kubeconfig --v=2
Run Code Online (Sandbox Code Playgroud)
将k2的kubeconfig文件复制到k1中的每个节点(比如说/var/lib/kube-proxy/kubeconfig-v2
),并在每个节点上启动第二个kube-proxy:
$ /usr/local/bin/kube-proxy --master=https://k2-master-ip --kubeconfig=/var/lib/kube-proxy/kubeconfig-k2 --healthz-port=10247
Run Code Online (Sandbox Code Playgroud)
现在,k1中的每个节点处理本地代理到k2.设置有点困难,但具有更好的缩放属性.
如您所见,这两种解决方案都不是那么优雅.正在讨论如何在Kubernetes中理想地使用这种类型的设置.您可以查看群集联合提议文档(特别是跨群集服务发现部分),并通过打开问题/发送PR加入讨论.
GKE现在支持内部负载均衡器: https : //cloud.google.com/kubernetes-engine/docs/how-to/internal-load-balancing
它的主要用例是拥有一个不暴露于公共互联网的负载平衡器,以便可以从同一网络中的其他GCE VM或其他GKE群集访问在GKE上运行的服务。
归档时间: |
|
查看次数: |
4863 次 |
最近记录: |