在1.9.6-gke.1到GCE实例中的GKE出口网络

时间:2018-04-23 15:25:14

标签: kubernetes google-compute-engine google-kubernetes-engine filebeat gke-networking

我在google kubernetes引擎上,我需要运行找到的filebeat守护进程(https://www.elastic.co/guide/en/beats/filebeat/master/running-on-kubernetes.html)。我用:

创建集群
gcloud container clusters create test_cluster \
     --cluster-version "1.9.6-gke.1" \
     --node-version "1.9.6-gke.1" \
     --zone "us-east1-c" \
     --machine-type n1-standard-4 \
     --scopes "https://www.googleapis.com/auth/compute","https://www.googleapis.com/auth/devstorage.full_control","https://www.googleapis.com/auth/sqlservice.admin","https://www.googleapis.com/auth/log    ging.write","https://www.googleapis.com/auth/pubsub","https://www.googleapis.com/auth/servicecontrol","https://www.googleapis.com/auth/service.management.readonly","https://www.googleapis.com/auth/tra    ce.append" \
     --num-nodes "1" \
     --network "main-network" \
     --subnetwork "main-subnetwork" \
     --no-enable-cloud-monitoring \
     --no-enable-cloud-logging \
     --no-enable-legacy-authorization \
     --disk-size "50"

--cluster-version--node-version设置为1.8.8-gke.0时,它可以正常工作,但当我将其更改为1.9.6-gke.1时,filebeat pod无法访问正在运行logstash的GCE实例

群集和GCE实例都在同一个网络上运行,我确定这不是谷歌云的防火墙问题,因为如果我gcloud compute ssh进入GKE实例并执行nc -vz -w 5 10.0.0.18 5044它连接细

当群集运行1.8.8-gke.0时,filebeat pod可以很好地连接到logstash,并且运行traceroute 10.0.0.18显示它正常连接。当我使用1.9.6-gke.1创建群集时,traceroute 10.0.0.18会显示以下内容:

[root@filebeat-56wtj filebeat]# traceroute 10.0.0.18 
traceroute to 10.0.0.18 (10.0.0.18), 30 hops max, 60 byte packets
 1  gateway (10.52.0.1)  0.063 ms  0.016 ms  0.012 ms
 2  * * *
 3  * * *
 4  * * *
 5  * * *
 6  * * *

编辑:注意这不是特定于filebeat容器,我尝试使用另一个容器,它也无法访问GCE实例。

1 个答案:

答案 0 :(得分:2)

正如您可以在此处阅读[1]:"从Kubernetes版本1.9.x开始,自动防火墙规则已更改,使得Kubernetes Engine群集中的工作负载无法与同一网络上的其他计算引擎VM通信,但在集群之外。此更改是出于安全原因。

您可以通过在群集上设置新的防火墙规则来复制旧群集(1.8.x及更早版本)的行为。"

[1] https://cloud.google.com/kubernetes-engine/release-notes#known-issues