使用 Kubectl 和 kubeconfig 存取叢集
本節描述如何從 Rancher UI 或從您的工作站使用 kubectl 操作您的下游 Kubernetes 叢集。
有關使用 kubectl 的更多資訊,請參閱 Kubernetes 文件:kubectl 概述。
在 Rancher UI 中使用 kubectl Shell 存取叢集
您可以透過登入 Rancher 並在 UI 中開啟 kubectl shell 來存取和管理您的叢集。無需進一步設定。
- 點擊 ☰ > Cluster Management。
- 前往您想使用 kubectl 存取的叢集,然後點擊 Explore。
- 在頂部導航選單中,點擊 Kubectl Shell 按鈕。使用開啟的視窗與您的 Kubernetes 叢集互動。
從您的工作站使用 kubectl 存取叢集
本節描述如何下載叢集的 kubeconfig 檔案、從工作站啟動 kubectl,以及存取您的下游叢集。
這種存取叢集的替代方法允許您透過 Rancher 進行身份驗證並管理您的叢集,而無需使用 Rancher UI。
這些說明假設您已經建立了 Kubernetes 叢集,並且已在您的工作站上安裝 kubectl。有關安裝 kubectl 的幫助,請參閱官方 Kubernetes 文件。
- 點擊左上角的 ☰。
- 選擇 Cluster Management。
- 找到您想下載 kubeconfig 的叢集,並在該行末尾選擇 ⁝。
- 從子選單中選擇 Download KubeConfig。
- 將 YAML 檔案儲存到您的本機電腦。將檔案移至
~/.kube/config。注意:kubectl 使用的 kubeconfig 檔案預設位置是~/.kube/config,但您可以使用任何目錄並使用--kubeconfig旗標指定它,如此命令所示:
kubectl --kubeconfig /custom/path/kube.config get pods
- 從您的工作站啟動 kubectl。使用它與您的 Kubernetes 叢集互動。
關於使用 kubectl 建立的資源的注意事項
Rancher 將會發現並顯示由 kubectl 建立的資源。但是,這些資源在被發現時可能沒有所有必要的註解。如果使用 Rancher UI/API 對資源執行操作(例如擴展工作負載),這可能會因為缺少註解而觸發資源的重新建立。這應該只會在第一次對已發現的資源執行操作時發生。
直接對下游叢集進行身份驗證
本節旨在幫助您設定存取 Rancher 啟動的叢 集的替代方法。
此方法僅適用於啟用了授權叢集端點的 RKE2 和 K3s 叢集。當 Rancher 建立叢集時,它會生成一個 kubeconfig 檔案,其中包含用於存取叢集的額外 kubectl context。這個額外的 context 允許您使用 kubectl 對下游叢集進行身份驗證,而無需透過 Rancher 進行身份驗證。有關授權叢集端點如何運作的更詳細說明,請參閱此頁面。
在 RKE2 和 K3s 叢集上,您需要手動啟用授權叢集端點。
我們建議您作為最佳實踐,應該設定此方法來存取您的 RKE2 和 K3s 叢集,以便在無法連線到 Rancher 的情況下,您仍然可以存取叢集。
以下步驟假設您已建立 Kubernetes 叢集,並遵循了從工作站使用 kubectl 連線到叢集的步驟。
要在您下載的 kubeconfig 檔案中找到 context 的名稱,請執行:
kubectl config get-contexts --kubeconfig /custom/path/kube.config
CURRENT NAME CLUSTER AUTHINFO NAMESPACE
* my-cluster my-cluster user-46tmn
my-cluster-controlplane-1 my-cluster-controlplane-1 user-46tmn
在此範例中,當您使用第一個 context my-cluster 執行 kubectl 時,您將透過 Rancher 伺服器進行身份驗證。
使用第二個 context my-cluster-controlplane-1,您將透過授權叢集端點進行身份驗證,直接與下游 RKE2/K3s 叢集通訊。
我們建議將負載平衡器與授權叢集端點一起使用。有關詳細資訊,請參閱建議架構章節。
現在您已經有了直接對叢集進行身份驗證所需的 context 名稱,您可以在執行 kubectl 命令時將 context 的名稱作為選項傳入。命令將根據您的叢集是否定義了 FQDN 而有所不同。以下各節提供了範例。
當 kubectl 正常運作時,它確認您可以在繞過 Rancher 的身份驗證代理的同時存取您的叢集。
直接連線到已定義 FQDN 的叢集
如果為叢集定義了 FQDN,將建立一個參照 FQDN 的單一 context。該 context 將被命名為 <CLUSTER_NAME>-fqdn。當您想使用 kubectl 在不透過 Rancher 的情況下存取此叢集時,您需要使用此 context。
假設 kubeconfig 檔案位於 ~/.kube/config:
kubectl --context <CLUSTER_NAME>-fqdn get nodes
直接參照 kubeconfig 檔案的位置:
kubectl --kubeconfig /custom/path/kube.config --context <CLUSTER_NAME>-fqdn get pods
直接連線到未定義 FQDN 的叢集
如果叢集未定義 FQDN,將建立額外的 context 來參照控制平面中每個節點的 IP 位址。每個 context 將被命名為 <CLUSTER_NAME>-<NODE_NAME>。當您想使用 kubectl 在不透過 Rancher 的情況下存取此叢集時,您需要使用此 context。
假設 kubeconfig 檔案位於 ~/.kube/config:
kubectl --context <CLUSTER_NAME>-<NODE_NAME> get nodes
直接參照 kubeconfig 檔案的位置:
kubectl --kubeconfig /custom/path/kube.config --context <CLUSTER_NAME>-<NODE_NAME> get pods