疑難排解
疑難排解
我收到關於「無法從「stable」圖表儲存庫取得更新」的警告
執行 helm repo list
。如果它顯示您的 stable
儲存庫指向 storage.googleapis.com
URL,您需要更新該儲存庫。在 2020 年 11 月 13 日,Helm 圖表儲存庫在經過一年的棄用期後 不再受支援。已在 https://charts.helm.sh/stable
提供一個檔案庫,但將不再接收更新。
您可以執行以下命令來修復您的儲存庫
$ helm repo add stable https://charts.helm.sh/stable --force-update
incubator
儲存庫也是如此,它有一個檔案庫位於 https://charts.helm.sh/incubator。您可以執行以下命令來修復它
$ helm repo add incubator https://charts.helm.sh/incubator --force-update
我收到警告「警告:「kubernetes-charts.storage.googleapis.com」已棄用「stable」,並將於 2020 年 11 月 13 日刪除。」
舊的 Google helm 圖表儲存庫已被新的 Helm 圖表儲存庫取代。
執行以下命令以永久修復此問題
$ helm repo add stable https://charts.helm.sh/stable --force-update
如果您收到 incubator
的類似錯誤,請執行此命令
$ helm repo add incubator https://charts.helm.sh/incubator --force-update
當我新增 Helm 儲存庫時,我收到錯誤「錯誤:儲存庫「https://kubernetes-charts.storage.googleapis.com」不再可用」
Helm 圖表儲存庫在 一年的棄用期 後不再受支援。這些儲存庫的檔案庫位於 https://charts.helm.sh/stable
和 https://charts.helm.sh/incubator
,但它們將不再接收更新。除非您指定 --use-deprecated-repos
,否則 helm repo add
命令將不允許您新增舊的 URL。
在 GKE(Google Container Engine)上,我收到「目前沒有開啟任何 SSH 隧道」
Error: Error forwarding ports: error upgrading connection: No SSH tunnels currently open. Were the targets able to accept an ssh-key for user "gke-[redacted]"?
錯誤訊息的另一種變體是
Unable to connect to the server: x509: certificate signed by unknown authority
問題是您的本機 Kubernetes 設定檔必須具有正確的憑證。
當您在 GKE 上建立叢集時,它會提供您憑證,包括 SSL 憑證和憑證授權單位。這些需要儲存在 Kubernetes 設定檔(預設值:~/.kube/config
)中,以便 kubectl
和 helm
可以存取它們。
從 Helm 2 遷移後,helm list
只顯示我的部分(或沒有)發行版本
您可能忽略了 Helm 3 現在在整個叢集命名空間中使用範圍發行版本的事實。這表示對於所有參考發行版本的命令,您必須
- 依賴作用中 kubernetes 上下文中的當前命名空間(如
kubectl config view --minify
命令所述), - 使用
--namespace
/-n
旗標指定正確的命名空間,或 - 對於
helm list
命令,指定--all-namespaces
/-A
旗標
這適用於 helm ls
、helm uninstall
和所有其他參考發行版本的 helm
命令。
在 macOS 上,會存取檔案 /etc/.mdns_debug
。為什麼?
我們知道在 macOS 上有一個案例,Helm 會嘗試存取名為 /etc/.mdns_debug
的檔案。如果該檔案存在,Helm 會在執行期間保持檔案控制代碼開啟。
這是由 macOS 的 MDNS 函式庫引起的。它會嘗試載入該檔案以讀取除錯設定(如果已啟用)。檔案控制代碼可能不應該保持開啟,並且已向 Apple 報告此問題。但是,這是 macOS 而不是 Helm 導致這種行為。
如果您不希望 Helm 載入此檔案,您可以嘗試將 Helm 編譯為不使用主機網路堆疊的靜態函式庫。這樣做會增加 Helm 的二進位檔案大小,但可以防止檔案被開啟。
此問題最初被標記為潛在的安全問題。但後來確定此行為沒有造成任何缺陷或漏洞。
helm repo add 失敗,以前可以正常運作
在 helm 3.3.1 及更早版本中,如果您嘗試新增已存在的儲存庫,則命令 helm repo add <儲存庫名稱> <網址>
將不會有任何輸出。如果儲存庫已註冊,則旗標 --no-update
將會引發錯誤。
在 helm 3.3.2 及之後版本中,嘗試新增現有儲存庫將會出錯
錯誤:儲存庫名稱(儲存庫名稱)已存在,請指定不同的名稱
現在預設行為已反轉。--no-update
現在會被忽略,而如果您想要取代(覆蓋)現有的儲存庫,則可以使用 --force-update
。
這是由於安全性修復的重大變更,如 Helm 3.3.2 發行說明 中所述。
啟用 Kubernetes 用戶端記錄
可以使用 klog 旗標啟用用於除錯 Kubernetes 用戶端的列印記錄訊息。在大多数情况下,使用 -v
旗標設定詳細資訊級別就足夠了。
例如
helm list -v 6
Tiller 安裝停止運作,並且存取被拒絕
Helm 發行版本以前可從 https://storage.googleapis.com/kubernetes-helm/ 取得。如 「宣布 get.helm.sh」 中所述,官方位置已在 2019 年 6 月變更。GitHub Container Registry 提供所有舊的 Tiller 映像檔。
如果您嘗試從過去使用的儲存貯體下載舊版本的 Helm,您可能會發現它們遺失了
<Error>
<Code>AccessDenied</Code>
<Message>Access denied.</Message>
<Details>Anonymous caller does not have storage.objects.get access to the Google Cloud Storage object.</Details>
</Error>
舊版 Tiller 映像檔位置 已於 2021 年 8 月開始移除映像檔。我們已在 GitHub Container Registry 位置提供這些映像檔。例如,要下載版本 v2.17.0,請將
https://storage.googleapis.com/kubernetes-helm/helm-v2.17.0-linux-amd64.tar.gz
取代為
https://get.helm.sh/helm-v2.17.0-linux-amd64.tar.gz
要使用 Helm v2.17.0 初始化
helm init —upgrade
或者,如果需要不同的版本,請使用 --tiller-image 旗標覆蓋預設位置並安裝特定的 Helm v2 版本
helm init --tiller-image ghcr.io/helm/tiller:v2.16.9
注意:Helm 維護人員建議遷移到目前支援的 Helm 版本。Helm v2.17.0 是 Helm v2 的最終版本;Helm v2 自 2020 年 11 月起不再受支援,詳情請參閱 Helm 2 和 Charts 專案現在已不受支援。從那以後,Helm 上已標記許多 CVE,並且這些漏洞已在 Helm v3 中修補,但永遠不會在 Helm v2 中修補。請參閱 已發布的 Helm 諮詢的當前列表,並制定計劃立即 遷移到 Helm v3。