3. 安裝 Kubernetes(Docker 安裝請跳過)
如果您在使用 Docker 的單一節點上安裝 Rancher,請跳過本節。
本節說明如何根據我們的 Rancher 伺服器環境最佳實踐安裝 Kubernetes 叢集。此叢集應專用於僅執行 Rancher 伺服器。
Rancher 可以安裝在任何 Kubernetes 叢集上,包括託管的 Kubernetes 提供者。
以下顯示在 RKE2 或 K3s 上設定離線 Kubernetes 叢集的步驟。
- K3s
- RKE2
在本指南中,我們假設您已在離線環境中建立了節點,並在堡壘伺服器上擁有安全的 Docker 私有鏡像倉庫。
安裝概述
1. 準備映像檔目錄
從 releases 頁面取得適合您架構的映像檔 tar 檔案,版本需與您將執行的 K3s 版本相符。
在啟動每個節點上的 K3s 之前,將 tar 檔案放置在 images 目錄中,例如:
sudo mkdir -p /var/lib/rancher/k3s/agent/images/
sudo cp ./k3s-airgap-images-$ARCH.tar /var/lib/rancher/k3s/agent/images/
2. 建立鏡像倉庫 YAML
在 /etc/rancher/k3s/registries.yaml 建立 registries.yaml 檔案。這將告訴 K3s 連接到您私有鏡像倉庫所需的詳細資訊。
registries.yaml 檔案在填入必要資訊前應如下所示:
---
mirrors:
customreg:
endpoint:
- "https://ip-to-server:5000"
configs:
customreg:
auth:
username: xxxxxx # 這是鏡像倉庫使用者名稱
password: xxxxxx # 這是鏡像倉庫密碼
tls:
cert_file: <鏡像倉庫使用的憑證檔案路徑>
key_file: <鏡像倉庫使用的金鑰檔案路徑>
ca_file: <鏡像倉庫使用的 CA 檔案路徑>
請注意,目前 K3s 僅支援安全的鏡像倉庫(使用自訂 CA 的 SSL)。
有關 K3s 私有鏡像倉庫設定檔案的詳細資訊,請參閱 K3s 文件。
3. 安裝 K3s
Rancher 需要安裝在支援的 Kubernetes 版本上。要了解您的 Rancher 版本支援哪些 Kubernetes 版本,請參閱 Rancher 支援矩陣。
要指定 K3s(Kubernetes)版本,請在執行 K3s 安裝腳本時使用 INSTALL_K3S_VERSION(例如 INSTALL_K3S_VERSION="v1.24.10+k3s1")環境變數。
從 releases 頁面取得 K3s 二進位檔案,版本需與用於取得離線映像檔 tar 的版本相符。 同時從 https://get.k3s.io 取得 K3s 安裝腳本。
將二進位檔案放置在每個節點的 /usr/local/bin 中。
將安裝腳本放置在每個節點的任何位置,並命名為 install.sh。
在每個伺服器上安裝 K3s:
INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_VERSION=<VERSION> ./install.sh
在每個代理上安裝 K3s:
INSTALL_K3S_SKIP_DOWNLOAD=true INSTALL_K3S_VERSION=<VERSION> K3S_URL=https://<SERVER>:6443 K3S_TOKEN=<TOKEN> ./install.sh
其中 <SERVER> 是伺服器的 IP 或有效 DNS,<TOKEN> 是從伺服器的 /var/lib/rancher/k3s/server/node-token 檔案中取得的節點權杖。
K3s 還為 kubelet 提供 了 --resolv-conf 標誌,這可能有助於在離線網路中設定 DNS。
4. 儲存並開始使用 kubeconfig 檔案
當您在每個 Rancher 伺服器節點上安裝 K3s 時,會在節點的 /etc/rancher/k3s/k3s.yaml 建立一個 kubeconfig 檔案。此檔案包含對叢集完全存取的憑證,您應將此檔案儲存在安全的位置。
要使用此 kubeconfig 檔案:
- 安裝 kubectl,Kubernetes 命令列工具。
- 複製位於
/etc/rancher/k3s/k3s.yaml的檔案,並將其儲存到本機的~/.kube/config目錄中。 - 在 kubeconfig 檔案中,
server指令被定義為 localhost。將伺服器設定為您的負載平衡器的 DNS,參照連接埠 6443。(Kubernetes API 伺服器將在連接埠 6443 上存取,而 Rancher 伺服器將在連接埠 80 和 443 上存取。)以下是一個k3s.yaml範例:
apiVersion: v1
clusters:
- cluster:
certificate-authority-data: [CERTIFICATE-DATA]
server: [LOAD-BALANCER-DNS]:6443 # 編輯此行
name: default
contexts:
- context:
cluster: default
user: default
name: default
current-context: default
kind: Config
preferences: {}
users:
- name: default
user:
password: [PASSWORD]
username: admin
結果: 您現在可以使用 kubectl 來管理您的 K3s 叢集。如果您有多個 kubeconfig 檔案,可以在使用 kubectl 時透過傳入檔案路徑來指定要使用哪一個:
kubectl --kubeconfig ~/.kube/config/k3s.yaml get pods --all-namespaces
有關 kubeconfig 檔案的詳細資訊,請參閱 K3s 文件或官方 Kubernetes 文件,了解如何使用 kubeconfig 檔案組織叢集存取。
升級注意事項
升級離線環境可以透過以下方式完成:
- 從 releases 頁面下載新的離線映像檔(tar 檔案),版本需與您要升級到的 K3s 版本相符。將 tar 檔案放置在每個節點的
/var/lib/rancher/k3s/agent/images/目錄中。刪除舊的 tar 檔案。 - 複製並替換每個節點上
/usr/local/bin中的舊 K3s 二進位檔案。複製 https://get.k3s.io 的安裝腳本(因為自上次發布以來可能已更改)。使用與之前相同的環境變數再次執行腳本。 - 重新啟動 K3s 服務(如果安裝程式未自動重新啟動)。
在本指南中,我們假設您已在離線環境中建立了節點,並在堡壘伺服器上擁有安全的 Docker 私有鏡像倉庫。
安裝概述
1. 建立 RKE2 設定
在 /etc/rancher/rke2/config.yaml 建立 config.yaml 檔案。這將包含建立高可用性 RKE2 叢集所需的所有設定選項。
在第一個伺服器上,最小設定為:
token: my-shared-secret
tls-san:
- loadbalancer-dns-domain.com
在其他每個伺服器上,設定檔案應包含相同的權杖,並告訴 RKE2 連接到現有的第一個伺服器:
server: https://ip-of-first-server:9345
token: my-shared-secret
tls-san:
- loadbalancer-dns-domain.com
有關詳細資訊,請參閱 RKE2 文件。
RKE2 還為 kubelet 提供了 resolv-conf 選項,這可能有助於在離線網路中設定 DNS。
2. 建立鏡像倉庫 YAML
在 /etc/rancher/rke2/registries.yaml 建立 registries.yaml 檔案。這將告訴 RKE2 連接到您私有鏡像倉庫所需的詳細資訊。
registries.yaml 檔案在填入必要資訊前應如下所示:
---
mirrors:
customreg:
endpoint:
- "https://ip-to-server:5000"
configs:
customreg:
auth:
username: xxxxxx # 這是鏡像倉庫使用者名稱
password: xxxxxx # 這是鏡像倉庫密碼
tls:
cert_file: <鏡像倉庫使用的憑證檔案路徑>
key_file: <鏡像倉庫使用的金鑰檔案路徑>
ca_file: <鏡像倉庫使用的 CA 檔案路徑>
有關 RKE2 私有鏡像倉庫設定檔案的詳細資訊,請參閱 RKE2 文件。
3. 安裝 RKE2
Rancher 需要安裝在支援的 Kubernetes 版本上。要了解您的 Rancher 版本支援哪些 Kubernetes 版本,請參閱支援維護條款。
從發布版本下載安裝腳本、rke2、rke2-images 和 sha256sum 封存檔,並將它們上傳到每個伺服器的目錄中:
mkdir /tmp/rke2-artifacts && cd /tmp/rke2-artifacts/
wget https://github.com/rancher/rke2/releases/download/v1.21.5%2Brke2r2/rke2-images.linux-amd64.tar.zst
wget https://github.com/rancher/rke2/releases/download/v1.21.5%2Brke2r2/rke2.linux-amd64.tar.gz
wget https://github.com/rancher/rke2/releases/download/v1.21.5%2Brke2r2/sha256sum-amd64.txt
curl -sfL https://get.rke2.io --output install.sh
接下來,在每個伺服器上使用該目錄執行 install.sh,如下例所示:
INSTALL_RKE2_ARTIFACT_PATH=/tmp/rke2-artifacts sh install.sh
然後在所有伺服器上啟用並啟動服務:
systemctl enable rke2-server.service systemctl start rke2-server.service
有關詳細資訊,請參閱 RKE2 文件。