對叢集的一般 CLI 問題進行除錯

虛擬私有雲 經典基礎架構

請檢閱 CLI 連線問題或指令失敗的下列一般原因。

防火牆導致無法執行 CLI 指令

當您從 CLI 執行 ibmcloud, kubectl,oc 或 calicoctl 指令時,這些指令會失敗。

您的組織網路原則可能會導致無法透過 Proxy 或防火牆從本端系統存取公用端點。

允許 TCP 存取以讓 CLI 指令運作。

此作業需要叢集的 管理者 IBM Cloud IAM 平台存取角色。

kubectl 或 oc 指令無法運作

當您針對群集執行 kubectl 或 oc 指令時,您的指令會以類似以下範例的錯誤訊息失敗。

No resources found.
Error from server (NotAcceptable): unknown (get nodes)
invalid object doesn't have additional properties
error: No Auth Provider found for name "oidc"

您的 kubectl 版本與叢集版本不同。

Kubernetes 不支援 kubectl 與伺服器版本相差 2 個或更多版本 (n +/- 2) 的用戶端版本。 如果您使用社群 Kubernetes 叢集,則也可能具有 kubectl 的 Red Hat OpenShift 版本,它無法與社群 Kubernetes 叢集搭配使用。

若要根據群集伺服器版本檢查用戶端的 kubectl 版本,請執行 oc version --short。

安裝符合叢集版本的 CLI 版本。

如果您有不同版本或不同容器平台的多個群集,例如 Red Hat OpenShift,請將每個 kubectl 版本的二進位檔案下載到單獨的目錄。 然後,您可以在本機命令列介面 (CLI) 設定設定檔中設定別名,指向與您要使用的 kubectl 版本相符合的 kubectl 二進位檔案目錄,或者您也許能夠使用 brew switch kubernetes-cli <major.minor> 之類的工具。

嘗試連接至 Pod 時逾時

您嘗試連接至 Pod,例如使用 oc exec 登入或使用 oc logs 取得日誌。 pod 是健康的,但您會看到類似以下範例的錯誤訊息。

Error from server: Get https://<10.xxx.xx.xxx>:<port>/<address>: dial tcp <10.xxx.xx.xxx>:<port>: connect: connection timed out

VPN 伺服器遇到設定問題,無法從其內部位址存取 Pod。

開始之前:存取您的 Red Hat OpenShift 群集。

  1. 透過在主控台裡或使用 cluster ls 或 worker ls 指令來檢視叢集和工作者節點的詳細資料,檢查叢集和工作者節點的更新是否可用。 如果可用,請將叢集和工作者節點更新到最新版本。
  2. 刪除 VPN pod,重新啟動 VPN pod。 這將排定另一個 VPN Pod。 在其 STATUS 為 Running 時,嘗試連接先前無法連接的 Pod。
    oc delete pod -n kube-system -l app=vpn
    

嘗試透過 oc login 登入 Red Hat OpenShift 叢集時發生 500 錯誤

當您第一次嘗試透過 oc login 登入 Red Hat OpenShift 叢集時,看到類似以下範例的錯誤訊息。

$ oc login SERVER -u apikey -p <APIKEY>
The server uses a certificate signed by an unknown authority.
You can bypass the certificate check, but any data you send to the server could be intercepted by others.
Use insecure connections? (y/n): y

Error from server (InternalError): Internal error occurred: unexpected response: 500

最近對 IAM 使用者角色所做的一些變更尚未同步至 Red Hat OpenShift 群集。

將 IAM 使用者資訊同步化至 Red Hat OpenShift 群集。 執行起始使用者同步化之後,應該會自動進行進一步的 RBAC 同步化。

開始之前:

存取您的 Red Hat OpenShift 叢集。

若要同步化使用者的 IAM 資訊,您有 2 個選項:

  • 從 Red Hat OpenShift 主控台登入群集。
  • 執行 ibmcloud oc cluster config --cluster CLUSTER 指令,以設定叢集的指令行環境定義。

如果您使用功能 ID 或另一個使用者的 API 金鑰,請確保以正確的使用者身分登入。

受影響使用者完成 IAM 同步化之後,叢集管理者可以使用 oc get users 指令列出使用者,以驗證該使用者是否存在於叢集中。

缺少專案或 oc 和 kubectl 指令失敗

虛擬私有雲 經典基礎架構

您看不到您可以存取的所有專案。 嘗試執行 oc 或 kubectl 指令時,看到類似下列內容的錯誤。

No resources found.
Error from server (Forbidden): <resource> is forbidden: User "IAM#user@email.com" can't list <resources> at the cluster scope: no RBAC policy matched

您需要下載群集的 admin 設定檔案,才能執行需要 cluster-admin 群集角色的指令。

執行 ibmcloud oc cluster config --cluster <cluster_name_or_ID> --admin 並再試一次。