跳至主要内容

技術常見問題

如何重設管理員密碼?​

Docker 安裝:

$ docker exec -ti <container_id> reset-password
New password for default administrator (user-xxxxx):
<new_password>

Kubernetes 安裝 (Helm):

$ KUBECONFIG=./kube_config_cluster.yml
$ kubectl --kubeconfig $KUBECONFIG -n cattle-system exec $(kubectl --kubeconfig $KUBECONFIG -n cattle-system get pods -l app=rancher --no-headers | head -1 | awk '{ print $1 }') -c rancher -- reset-password
New password for default administrator (user-xxxxx):
<new_password>

我刪除/停用了最後一個管理員,如何修復?​

Docker 安裝:

$ docker exec -ti <container_id> ensure-default-admin
New default administrator (user-xxxxx)
New password for default administrator (user-xxxxx):
<new_password>

Kubernetes 安裝 (Helm):

$ KUBECONFIG=./kube_config_cluster.yml
$ kubectl --kubeconfig $KUBECONFIG -n cattle-system exec $(kubectl --kubeconfig $KUBECONFIG -n cattle-system get pods -l app=rancher | grep '1/1' | head -1 | awk '{ print $1 }') -- ensure-default-admin
New password for default administrator (user-xxxxx):
<new_password>

如何啟用除錯日誌記錄?​

請參閱疑難排解: 日誌記錄

我的 ClusterIP 不回應 ping​

ClusterIP 是虛擬 IP,不會回應 ping。測試 ClusterIP 是否設定正確的最佳方法是使用 curl 存取 IP 和連接埠,查看它是否回應。

在哪裡可以管理節點範本?​

可以透過開啟您的帳戶選單 (右上角) 並選擇 Node Templates 來存取節點範本。

為什麼我的 Layer-4 負載平衡器處於 Pending 狀態?​

Layer-4 負載平衡器是以 type: LoadBalancer 建立的。在 Kubernetes 中,這需要能夠滿足這些請求的雲端提供者或控制器,否則這些將永遠處於 Pending 狀態。更多資訊可以在雲端提供者或建立外部負載平衡器找到。

Rancher 的狀態儲存在哪裡?​

  • Docker 安裝: 在 rancher/rancher 容器的嵌入式 etcd 中,位於 /var/lib/rancher。
  • Kubernetes 安裝: 預設位置在建立來執行 Rancher 的各自 RKE2/K3s 叢集的 /var/lib/rancher/rke2 或 /var/lib/rancher/k3s 目錄中。

如何確定支援的 Docker 版本?​

我們遵循上游 Kubernetes 版本的已驗證 Docker 版本。已驗證的版本可以在 Kubernetes 發行版 CHANGELOG.md 的 External Dependencies 下找到。

如何存取 Rancher 建立的節點?​

可以透過 Nodes 檢視下載存取 Rancher 建立的節點的 SSH 金鑰。選擇您要存取的節點,點選該列末端的垂直 ⋮ 按鈕,然後選擇 Download Keys,如下圖所示。

Download Keys

解壓縮下載的 zip 檔案,並使用 id_rsa 檔案連接到您的主機。請確保使用正確的使用者名稱 (RancherOS 使用 rancher 或 docker,Ubuntu 使用 ubuntu,Amazon Linux 使用 ec2-user)

$ ssh -i id_rsa user@ip_of_node

如何在 Rancher 中自動化任務 X?​

UI 由靜態檔案組成,並基於 API 的回應運作。這意味著您可以在 UI 中執行的每個動作/任務都可以透過 API 自動化。有兩種方法可以做到這一點:

  • 造訪 https://your_rancher_ip/v3 並瀏覽 API 選項。
  • 在使用 UI 時擷取 API 呼叫 (最常用於此的是 Chrome Developer Tools,但您可以使用任何您喜歡的工具)

節點的 IP 位址變更了,如何恢復?​

節點需要設定靜態 IP (或透過 DHCP 保留 IP)。如果節點的 IP 變更了,您必須將它從叢集中移除,然後再次新增。移除後,Rancher 將把叢集更新到正確的狀態。如果叢集不再處於 Provisioning 狀態,則節點已從叢集中移除。

當節點的 IP 位址變更時,Rancher 失去與節點的連線,因此將無法正確清理節點。請參閱清理叢集節點來清理節點。

當節點從叢集中移除,並清理了節點後,您可以將節點新增到叢集。

如何在 Rancher 啟動的 Kubernetes 叢集中為 Kubernetes 元件新增更多引數/繫結/環境變數?​

您可以透過各自的 RKE2 設定檔或 K3s 設定檔新增更多引數/繫結/環境變數。

如何檢查我的憑證鏈是否有效?​

使用 openssl verify 指令驗證您的憑證鏈:

提示

將 SSL_CERT_DIR 和 SSL_CERT_FILE 設定為虛擬位置,以確保在手動驗證時不會使用作業系統安裝的憑證。

SSL_CERT_DIR=/dummy SSL_CERT_FILE=/dummy openssl verify -CAfile ca.pem rancher.yourdomain.com.pem
rancher.yourdomain.com.pem: OK

如果您收到錯誤 unable to get local issuer certificate,表示憑證鏈不完整。這通常意味著存在簽發您的伺服器憑證的中繼 CA 憑證。如果您已經有此憑證,可以在驗證憑證時使用它,如下所示:

SSL_CERT_DIR=/dummy SSL_CERT_FILE=/dummy openssl verify -CAfile ca.pem -untrusted intermediate.pem rancher.yourdomain.com.pem
rancher.yourdomain.com.pem: OK

如果您已成功驗證憑證鏈,您應該在伺服器憑證中包含所需的中繼 CA 憑證,以完成與 Rancher 的任何連線 (例如,由 Rancher 代理) 的憑證鏈。伺服器憑證檔案中的憑證順序應該首先是伺服器憑證本身 (rancher.yourdomain.com.pem 的內容),然後是中繼 CA 憑證 (intermediate.pem 的內容)。

-----BEGIN CERTIFICATE-----
%YOUR_CERTIFICATE%
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
%YOUR_INTERMEDIATE_CERTIFICATE%
-----END CERTIFICATE-----

如果在驗證期間仍然出現錯誤,您可以使用以下指令檢索伺服器憑證的主體和簽發者:

openssl x509 -noout -subject -issuer -in rancher.yourdomain.com.pem
subject= /C=GB/ST=England/O=Alice Ltd/CN=rancher.yourdomain.com
issuer= /C=GB/ST=England/O=Alice Ltd/CN=Alice Intermediate CA

如何檢查伺服器憑證中的 Common Name 和 Subject Alternative Names?​

雖然從技術上講,Subject Alternative Names 中需要有一個條目,但在 Common Name 和 Subject Alternative Names 中都包含主機名可以為您提供與較舊瀏覽器/應用程式的最大相容性。

檢查 Common Name:

openssl x509 -noout -subject -in cert.pem
subject= /CN=rancher.my.org

檢查 Subject Alternative Names:

openssl x509 -noout -in cert.pem -text | grep DNS
DNS:rancher.my.org

為什麼當節點故障時,pod 需要 5 分鐘以上才能重新排程?​

這是由於以下預設 Kubernetes 設定的組合:

  • kubelet
    • node-status-update-frequency: 指定 kubelet 向主節點發布節點狀態的頻率 (預設 10s)
  • kube-controller-manager
    • node-monitor-period: NodeController 中同步 NodeStatus 的週期 (預設 5s)
    • node-monitor-grace-period: 在將正在執行的節點標記為不健康之前,我們允許它無回應的時間量 (預設 40s)
    • pod-eviction-timeout: 在故障節點上刪除 pod 的寬限期 (預設 5m0s)

有關這些設定的更多資訊,請參閱 Kubernetes: kubelet 和 Kubernetes: kube-controller-manager。

在 Kubernetes v1.13 中,TaintBasedEvictions 功能預設啟用。有關更多資訊,請參閱 Kubernetes: Taint based Evictions。

  • kube-apiserver (Kubernetes v1.13 及更高版本)
    • default-not-ready-toleration-seconds: 指示預設新增到每個尚未具有此類容忍度的 pod 的 notReady:NoExecute 容忍度的 tolerationSeconds。
    • default-unreachable-toleration-seconds: 指示預設新增到每個尚未具有此類容忍度的 pod 的 unreachable:NoExecute 容忍度的 tolerationSeconds。

我可以在 UI 中使用鍵盤快捷鍵嗎?​

可以,UI 的大多數部分都可以使用鍵盤快捷鍵到達。要查看可用快捷鍵的概覽,請在 UI 的任何位置按 ?。