跳至主要内容

在 Google Kubernetes Engine 叢集上安裝 Rancher

在本節中,您將學習如何使用 Google Kubernetes Engine 安裝 Rancher。

如果您已經擁有 GKE Kubernetes 叢集,請跳到有關安裝 ingress 的步驟。然後按照此頁面上的說明安裝 Rancher Helm chart。

前置條件​

  • 您需要一個 Google 帳戶。
  • 您需要一個 Google Cloud 計費帳戶。您可以使用 Google Cloud Console 管理您的 Cloud Billing 帳戶。有關 Cloud Console 的更多資訊,請參閱主控台的一般指南。
  • 您需要至少一個使用中的 IP 位址和至少 2 個 CPU 的雲端配額。有關 Rancher 伺服器硬體要求的更多詳細資訊,請參閱本節。

1. 啟用 Kubernetes Engine API​

採取以下步驟來啟用 Kubernetes Engine API:

  1. 在 Google Cloud Console 中造訪 Kubernetes Engine 頁面。
  2. 建立或選擇一個專案。
  3. 開啟專案並為專案啟用 Kubernetes Engine API。等待 API 和相關服務啟用。這可能需要幾分鐘。
  4. 確保為您的 Cloud 專案啟用計費。有關如何為專案啟用計費的資訊,請參閱 Google Cloud 文件。

2. 開啟 Cloud Shell​

Cloud Shell 是一個用於管理在 Google Cloud 上託管的資源的 shell 環境。Cloud Shell 預先安裝了 gcloud 命令列工具和 kubectl 命令列工具。gcloud 工具提供了 Google Cloud 的主要命令列介面,而 kubectl 提供了針對 Kubernetes 叢集執行命令的主要命令列介面。

以下部分描述如何從 Google Cloud Console 或從您的本地工作站啟動 cloud shell。

Cloud Shell​

要從 Google Cloud Console 啟動 shell,請前往主控台的右上角並按一下終端按鈕。將游標懸停在按鈕上時,它標記為 Activate Cloud Shell。

本地 Shell​

要安裝 gcloud 和 kubectl,請執行以下步驟:

  1. 按照這些步驟安裝 Cloud SDK。Cloud SDK 包含 gcloud 命令列工具。步驟因您的作業系統而異。

  2. 安裝 Cloud SDK 後,透過執行以下命令安裝 kubectl 命令列工具:

    gcloud components install kubectl

    在後續步驟中,kubectl 將設定為使用新的 GKE 叢集。

  3. 如果尚未安裝,安裝 Helm 3。

  4. 使用 HELM_EXPERIMENTAL_OCI 變數啟用 Helm 實驗性 OCI 映像支援。將以下行新增到 ~/.bashrc(或 macOS 中的 ~/.bash_profile,或您的 shell 儲存環境變數的任何位置):

    export HELM_EXPERIMENTAL_OCI=1
  5. 執行以下命令以載入更新的 .bashrc 檔案:

    source ~/.bashrc

    如果您正在執行 macOS,請使用此命令:

    source ~/.bash_profile

3. 設定 gcloud CLI​

使用以下方法之一設定預設 gcloud 設定:

  • 使用 gcloud init,如果您想要逐步設定預設值。
  • 使用 gcloud config,以單獨設定您的專案 ID、區域和地區。
  1. 執行 gcloud init 並按照指示操作:

    gcloud init

    如果您在遠端伺服器上使用 SSH,請使用 --console-only 標誌來防止命令啟動瀏覽器:

    gcloud init --console-only
  2. 按照說明授權 gcloud 使用您的 Google Cloud 帳戶並選擇您建立的新專案。

4. 確認 gcloud 設定正確​

執行:

gcloud config list

輸出應類似於以下內容:

[compute]
region = us-west1 # 您選擇的地區
zone = us-west1-b # 您選擇的區域
[core]
account = <您的電子郵件>
disable_usage_reporting = True
project = <您的專案 ID>

Your active configuration is: [default]

5. 建立 GKE 叢集​

以下命令建立一個三節點叢集。

將 cluster-name 替換為您的新叢集名稱。

選擇 Kubernetes 版本時,請務必先參考支援矩陣以找到已針對您的 Rancher 版本驗證的最高 Kubernetes 版本。

要成功使用 Rancher 建立 GKE 叢集,您的 GKE 必須處於 Standard 模式。GKE 在建立 Kubernetes 叢集時有兩種操作模式:Autopilot 和 Standard 模式。Autopilot 模式的叢集設定對編輯 kube-system 命名空間有限制。然而,Rancher 在安裝過程中需要在 kube-system 命名空間中建立資源。因此,您將無法在以 Autopilot 模式建立的 GKE 叢集上安裝 Rancher。有關 GKE Autopilot 模式和 Standard 模式之間差異的更多資訊,請造訪比較 GKE Autopilot 和 Standard。

注意: 如果您要從較舊版本的 Kubernetes 更新到 Kubernetes v1.22 或更高版本,您還需要更新 ingress-nginx。

gcloud container clusters create cluster-name --num-nodes=3 --cluster-version=<VERSION>

6. 取得驗證憑證​

建立叢集後,您需要取得驗證憑證以與叢集互動:

gcloud container clusters get-credentials cluster-name

此命令設定 kubectl 以使用您建立的叢集。

7. 安裝 Ingress​

叢集需要一個 Ingress,以便可以從叢集外部存取 Rancher。

以下命令安裝一個帶有 LoadBalancer 服務的 nginx-ingress-controller:

helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
helm repo update
helm upgrade --install \
ingress-nginx ingress-nginx/ingress-nginx \
--namespace ingress-nginx \
--set controller.service.type=LoadBalancer \
--version 4.0.18 \
--create-namespace

8. 取得負載平衡器 IP​

要取得負載平衡器的位址,請執行:

kubectl get service ingress-nginx-controller --namespace=ingress-nginx

結果應類似於以下內容:

NAME                       TYPE           CLUSTER-IP     EXTERNAL-IP     PORT(S)                      AGE
ingress-nginx-controller LoadBalancer 10.3.244.156 35.233.206.34 80:31876/TCP,443:32497/TCP 81s

儲存 EXTERNAL-IP。

9. 設定 DNS​

前往 Rancher 伺服器的外部流量需要導向到您建立的負載平衡器。

設定 DNS 以指向您儲存的外部 IP。此 DNS 將用作 Rancher 伺服器 URL。

有許多有效的方法可以設定 DNS。如需協助,請參閱 Google Cloud 文件中有關管理 DNS 記錄的內容。

10. 安裝 Rancher Helm chart​

接下來,按照此頁面上的說明安裝 Rancher Helm chart。在任何 Kubernetes 發行版上安裝 Rancher 的 Helm 說明都是相同的。

安裝 Rancher 時,使用上一步驟中的 DNS 名稱作為 Rancher 伺服器 URL。它可以作為 Helm 選項傳入。例如,如果 DNS 名稱是 rancher.my.org,您可以使用選項 --set hostname=rancher.my.org 執行 Helm 安裝命令。

在此設定上安裝 Rancher 時,您還需要設定用於 Rancher ingress 資源的 ingress controller 名稱:

--set ingress.ingressClassName=nginx

有關您選擇的憑證選項的 Helm 安裝命令,請參閱此處。

在 Rancher v2.7.5 中,如果您打算在叢集上使用預設的 GKE ingress 而不啟用 VPC 原生叢集模式,則需要設定以下標誌:

--set service.type=NodePort

這是必要的,因為此設定與 ClusterIP(cattle-system/rancher 的預設類型)之間存在相容性問題。