Google-Kubernetes-Engine

GKE k8s cluster storage.googleapis.com sporadic 名稱解析暫時失敗

  • April 29, 2020

我正在嘗試在 kubernetes 集群(GKE)上執行蛇形管道。該作業是從 GCE 虛擬機啟動的。有時它會起作用,但大多數情況下它不起作用。

我採取的步驟是

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 沒有問題。

隨後的嘗試以同樣的方式失敗。

任何解決方案的提示都非常感激。

該問題是由於缺少允許集群內通信的適當防火牆規則造成的。一旦創建了適當的 ALLOW 規則,直接的問題就消失了,因為 pod 能夠訪問其 DNS 伺服器。

我們的政策是禁止端點之間的所有通信(包括 VPC 內部),除非明確允許。因此,新地址空間中的新集群需要添加才能使其正常工作。

我通過啟用在沒有先前的 ALLOW 規則適用時觸發的最終 DENY 規則的日誌記錄來解決這個問題。

我還沒有弄清楚為什麼它第一次起作用,但我懷疑有一些我沒有註意到的差異。

引用自:https://serverfault.com/questions/1011627