解壓縮離線安裝包檔

將交付的打包檔 output.tar 放置到部署主機的登入帳號之家目錄,並解封至家目錄下

  tar -xf output.tar -C ${HOME}/
cd ${HOME}/outputs/ && chmod a+x *.sh
  

確認版本是否符合相符

可以透過以下方式確認交付的離線安裝包版本

  # 請注意此時為剛解壓完成的步驟,尚未進入到 Kubespray 容器內
cat config.sh | grep VERSION
  

會看到類似下面範例輸出

  # 代表基於官方 v2.21.0 分支 (Kubernetes v1.25) 修改後交付的第 1 個版本
KUBESPRAY_VERSION=v2.21.0-1.25-1

# 代表此離線安裝包支援 Kubernetes 版本為 v1.25.16
KUBE_VERSION=v1.25.16
  

啟動安裝環境

以下指令將解壓部署腳本,並以容器方式啟動所有安裝過程中所需的服務容器

  cd ${HOME}/outputs/ && ./extract-kubespray.sh
  
(Optional) 如需手動移除舊有資料
  1. sudo /usr/local/bin/nerdctl rm -f $(sudo /usr/local/bin/nerdctl ps -a -q)
  2. sudo /usr/local/bin/nerdctl rmi -f $(sudo /usr/local/bin/nerdctl images -a -q)
  3. sudo /usr/local/bin/nerdctl ps -a
  4. sudo /usr/local/bin/nerdctl images -a
  5. sudo rm -rf ${HOME}/mycluster/ ${HOME}/outputs/

設定離線安裝之部署 Package Repo 與 Container Registry

設定遠端 Container Registry

企業內部通常會有用來存放鏡像的 Container Registry (i.e Harbor, Quay)。爲避免後續鏡像因故消失無法重新自遠端下載。需要在部署前將此次所用的到鏡像推送到 Container Registry 儲存

正式環境部署務必調整以下參數 (安裝測試環境可以略過)

  export REGISTRY_HOST=${REGISTRY_HOST:-"localhost"}
export REGISTRY_PORT=${REGISTRY_PORT:-35000}
export REGISTRY_REPO=${REGISTRY_REPO:-""}
export REGISTRY_USER=${REGISTRY_USER:-""}
export REGISTRY_PASSWORD=${REGISTRY_PASSWORD:-""}
  

CNI Plugin 安裝位置

部分情況下,主機上會出現已經 CNI Plugin 已經安裝的情形發生,因此必須宣告 CNI 二進制檔位置

  export CNI_DIR=/path/to/cni/binary/directory
  
不知道 CNI 路徑時,請點擊看指令

如果不知道 CNI 二進制檔位置,需分別檢測以下資料夾

  • check-cni.sh
  #!/bin/bash

folders=(
    "/usr/local/libexec/cni"
    "/usr/libexec/cni"
    "/usr/local/lib/cni"
    "/usr/lib/cni"
    "/opt/cni/bin"
)

file_name="bridge"

for folder in "${folders[@]}"; do
    file_path="$folder/$file_name"

    if [[ -f "$file_path" ]]; then
        echo "export CNI_DIR=$folder"
        exit 0
    fi
done
echo "export CNI_DIR="
  

請複製並執行以下指令後,將會自動宣告 CNI_DIR 環境變數

  $(bash check-cni.sh)
  

啟動相關服務

  cd ${HOME}/outputs/ && ./setup-all.sh
  
自動化腳本內的流程驟說明 (無需手動執行)
  1. 設定防火牆 (RHEL)

    1. sudo firewall-cmd –zone=public –add-port=35000/tcp –permanent
    2. sudo firewall-cmd –zone=public –add-service=http –permanent
    3. sudo firewall-cmd –reload
  2. 安裝 containerd

  3. 載入部署用的映像檔 - nginx / registry / kubespray

  4. 啟動 Nginx

    • start-nginx.sh
    • 部署主機建立起 Web Service,讓目標主機可以連到此處下載對應的BINARY/DEB/RPM套件。
  5. 啟動 Image Registry

    • start-registry.sh
    • 在部署主機建立起 Private Registry,讓目標主機可以連到此處下載對應的 Container Images。
  6. 載入 Kubernates Container Images into Local Private Registry

    • load-push-all-images.sh
    • 由於上一個步驟只是把 Private Registry 架設起來,裡面是沒有任何 Container Image 可供下載的。此步驟就是把 local 端的 Container Images 全部都匯入。

進入 Kubespray 執行環境

以下指令會自動化掛載相關的路徑後進入 Kubespray 腳本執行環境的容器內

  cd ${HOME}/outputs/ && ./start-kubespray.sh
  
手動進入方式
  • 最新指令請參考 start-kubespray.sh
Was this page helpful?