我們正在測驗 Ambassador Edge Stack,并開始使用處于自動駕駛模式的全新 GKE 私有集群。
我們按照快速入門教程從頭開始安裝以了解它并最終出現以下錯誤
Error from server: error when creating "mapping-test.yaml": conversion webhook for getambassador.io/v3alpha1, Kind=Mapping failed: Post "https://emissary-apiext.emissary-system.svc:443/webhooks/crd-convert?timeout=30s": net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
我們進行了幾輪 DNS 測驗,并在不同的命名空間中部署了幾個不同的測驗 pod,以驗證 kube-dns 是否正常作業,一切看起來都很好。resolv.conf 看起來也不錯。
大使正在使用emissary-apiext.emissary-system.svc:443應該可以正常決議的主機名(沒有 cluster.local)。順便說一句,使用 FQN(使用 cluster.local)進行查找效果很好。
有什么線索嗎?
非常感謝,保重。
uj5u.com熱心網友回復:
這聽起來像是與 GKE Autopilot 中的 webhook 限制有關的問題
你在哪個版本的 GKE 上?
我們允許 webhook 攔截的資源和命名空間也存在限制
此外,在規則中指定一個或多個以下資源(及其任何子資源)的 webhook 將被拒絕:
- 組:“”資源:節點
- 組:“”資源:持久卷
- 組:certificates.k8s.io 資源:certificatesigningrequests
- 組:authentication.k8s.io 資源:tokenreviews
您可能必須檢查 Ambassador Edge Stack 的清單才能弄清楚這一點。
uj5u.com熱心網友回復:
我想我找到了解決方案,如果以后有人遇到此問題,請在此處發布。
所以我按照這個在 Autopilot 私有集群中部署了 Ambassador Edge Stack。我在嘗試部署 Mapping 物件時遇到了同樣的錯誤(步驟 2.2)。
問題是控制平面(API 服務器)試圖呼叫 emissary-apiext.emissary-system.svc:443 但它后面的 pod 正在偵聽埠 8443(通過描述服務來解決這個問題)。
所以我添加了一條防火墻規則,以允許 GKE 控制平面與埠 443 上的節點通信。
有問題的防火墻規則稱為gke-gke-ap-xxxxx-master。xxxx 稱為集群哈希,每個集群都不同。為確保您正在編輯正確的規則,請仔細檢查源 IP 范圍是否與集群詳細資訊頁面中的“控制平面地址范圍”匹配。這是名稱以 master 結尾的規則。
只需編輯該規則并將 8443 添加到 tcp 埠即可。它應該作業
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/405324.html
標籤:
