GKE k8s 集群 storage.googleapis.com 偶尔出现名称解析暂时失败

GKE k8s 集群 storage.googleapis.com 偶尔出现名称解析暂时失败

我正在尝试在 kubernetes 集群 (GKE) 上运行 snakemake 管道。该作业是从 GCE VM 启动的。有时它可以工作,但大多数情况下不行。

我采取的步骤是

gcloud container clusters get-credentials snakemake-k8s-demo
kubectl delete pod $(kubectl get pods | grep snakejob|colprint 1)
snakemake --kubernetes --container-image eu.gcr.io/scailyte-is/snakemake-gsdk --use-conda --default-remote-provider GS --default-remote-prefix xxxxxx-snakemake-test-1 --jobs 2

第一次尝试非常成功。

然后,我删除了 snakemake 管道创建的文件并再次运行相同的作业,没有任何更改。

作业失败并显示以下错误消息:

HTTPSConnectionPool(host='storage.googleapis.com', port=443): Max retries exceeded with url: /storage/v1/b/xxxxxxx-snakemake-test-1/o?projection=noAcl (Caused by NewConnectionError('<urllib3.connection.VerifiedHTTPSConnection object at 0x7f3ee35159d0>: Failed to establish a new connection: [Errno -3] Temporary failure in name resolution'))

根据 Google Cloud Status Dashboard,Google Cloud Storage 没有问题。

后续尝试均以同样的方式失败。

非常感谢任何解决的建议。

答案1

问题是由于缺乏允许集群内通信的适当防火墙规则造成的。一旦创建了适当的 ALLOW 规则,问题就会消失,因为 pod 能够访问其 DNS 服务器。

我们的政策是禁止端点之间的所有通信(包括 VPC 内部通信),除非明确允许。因此,新地址空间中的新集群需要添加内容才能正常工作。

我通过启用在先前的 ALLOW 规则不适用时触发的最终 DENY 规则的日志记录来解决这个问题。

我还没有弄清楚为什么它第一次就起作用了,但我怀疑存在一些我没有注意到的差异。

相关内容