我正在使用Google Cloud,并且有两个GKE私有集群。
其中一个包含一些作为nodePort安装的服务。另一个集群需要连接到该集群并访问公开的服务。
公开服务的集群只有一个具有私有IP的节点。我可以使用此私有IP从另一个群集成功ping通此节点。
但是我如何获得服务?
我还尝试配置一些防火墙规则,但没有成功。
答案 0 :(得分:2)
请看下面的示例,该示例显示了如何在两个私有GKE集群之间建立与服务(NodePort
)的连接:
此示例将使用两个GKE群集:
gke-private-cluster-main
-这将是具有简单hello-app
gke-private-cluster-europe
-该集群将能够与主集群通信为简化起见,所有群集都只有一个节点。
gke-private-cluster-main
上创建部署和服务下面是hello-app
的一个简单示例,该服务将在端口hello-app
上公开30051
:
apiVersion: apps/v1
kind: Deployment
metadata:
name: hello
spec:
selector:
matchLabels:
app: hello
version: 1.0.0
replicas: 3
template:
metadata:
labels:
app: hello
version: 1.0.0
spec:
containers:
- name: hello
image: "gcr.io/google-samples/hello-app:1.0"
env:
- name: "PORT"
value: "50001"
---
apiVersion: v1
kind: Service
metadata:
name: hello-service
spec:
selector:
app: hello
ports:
- name: hello-port
port: 50001
targetPort: 50001
nodePort: 30051
type: NodePort
应用它并检查产生此Pod的节点的内部 IP地址。您可以使用以下任一方法进行检查:
GCP -> Compute Engine -> VM Instances
kubectl get nodes -o wide
在我的情况下是10.156.0.2
gke-private-cluster-europe
来访问它您可以SSH到gke-private-cluster-europe
的节点,然后尝试从该节点调用命令:
curl 10.156.0.2:30051
。您应该能够与此服务进行通信并获得如下输出:
Hello, world!
Version: 1.0.0
Hostname: hello-5d79ccdb55-vrrbs
要从广告连播内部检查连通性,您需要一个已内置curl
的图像。互联网是各种令人敬畏的事物的聚集地,实际上,其中存在可以卷曲的图像。您可以在YAML
以下生成卷曲的豆荚:
apiVersion: v1
kind: Pod
metadata:
name: curl
namespace: default
spec:
containers:
- image: curlimages/curl
command:
- sleep
- "infinity"
imagePullPolicy: IfNotPresent
name: curl
restartPolicy: Always
在YAML
以上应用后,您可以 exec 进入窗格,并使用以下命令检查自己:
$ kubectl exec -it curl -- /bin/sh
$ curl 10.156.0.2:30051
集群内部的输出将如下所示:
curl: (28) Failed to connect to 10.156.0.2 port 30051: Operation timed out
它适用于节点,但不适用于Pod。
要允许上述网络连接,您将需要:
Google Cloud Platform
gke-private-cluster-main
节点的网络标记
Compute Engine
gke-private-cluster-main
的节点gke-gke-private-cluster-main-80fe50b2-node
gke-private-cluster-europe
的 pod地址范围:
Kubernetes Engine
gke-private-cluster-europe
10.24.0.0/14
复制网络标签和Pod范围后,您可以创建防火墙规则。请转到:
VPC Network -> Firewall rules -> Create a firewall rule
请具体看一下使用网络标签和吊舱范围ip的部件,因为它们对您而言会有所不同。
应用它,然后再次检查gke-private-cluster-europe
中的窗格是否可以访问10.156.0.2:30051
。
它应该为您提供以下输出:
Hello, world!
Version: 1.0.0
Hostname: hello-5d79ccdb55-6s8xh
如果您有任何疑问,请告诉我。