安裝 DirectPV
先決條件
生產環境整備檢查清單
在開始生產部署之前,請確保已完成以下步驟(如果適用)
-
如果使用私有登錄檔,請將 氣隙安裝映像 中列出的所有映像提供於私有登錄檔中。
-
如果在系統上使用 seccomp,請在所有節點上載入 DirectPV seccomp 政策。
如需有關 seccomp 的詳細說明,請參閱 Kubernetes 文件
-
如果在系統上使用 AppArmor,請在所有節點上載入 DirectPV apparmor 設定檔。
如需有關 Kubernetes 環境中 AppArmor 的詳細說明,請參閱 Kubernetes 文件。
外掛程式安裝
在您的本機環境中安裝 DirectPV 外掛程式,以管理 Kubernetes 叢集中的 DirectPV CSI 驅動程式。您可以使用 krew
安裝,或安裝為二進位檔。
krew
安裝 DirectPV 外掛程式
使用 最新的 DirectPV 外掛程式可在 Krew
存放庫中取得。
-
更新
Krew
以下載最新版本的外掛程式。kubectl krew update
-
將 DirectPV 安裝至您的 krew 安裝目錄(預設值:
$HOME/.krew
)。kubectl krew install directpv
-
執行
kubectl directpv --version
以驗證 DirectPV 是否正確安裝。如果您收到錯誤訊息
Error: unknown command "directpv" for "kubectl"
,您可能需要將$HOME/.krew/bin
新增至您的$PATH
。
將 DirectPV 外掛程式安裝為二進位檔
外掛程式的二進位檔名稱以 kubectl-directpv
開頭,可從 https://github.com/minio/directpv/releases/latest 取得。請下載適用於您作業系統和架構的二進位檔。您可能需要將該檔案移至系統路徑可存取的位置。
請參閱您作業系統的文件,以瞭解如何將二進位檔案設為可執行,以及如何執行該檔案。由於每個可用的作業系統的詳細說明超出本文件的範圍,因此不在此贅述。
以下是在 amd64
架構上的 GNU/Linux
的範例
# Download DirectPV plugin.
$ release=$(curl -sfL "https://api.github.com/repos/minio/directpv/releases/latest" | awk '/tag_name/ { print substr($2, 3, length($2)-4) }')
$ curl -fLo kubectl-directpv https://github.com/minio/directpv/releases/download/v${release}/kubectl-directpv_${release}_linux_amd64
# Make the binary executable.
$ chmod a+x kubectl-directpv
$ mv kubectl-directpv /usr/local/bin/kubectl-directpv
kubectl-directpv
而非 kubectl directpv
來叫用命令。驅動程式安裝
將 DirectPV 驅動程式安裝至您的 Kubernetes 部署。
標準安裝
標準安裝會使用預設選項,並在所有節點上安裝 DirectPV。
先決條件
-
Kubernetes >= v1.18 (在 amd64 上的 GNU/Linux 上)
-
如果您使用私人登錄檔,則必須將下列映像檔推送至您的登錄檔。
您可以使用 輔助指令碼 來執行此操作。
- quay.io/minio/csi-node-driver-registrar:v2.8.0
- quay.io/minio/csi-provisioner:v3.5.0 (適用於 Kubernetes >= v1.20)
- quay.io/minio/csi-provisioner:v2.2.0-go1.18 (適用於 Kubernetes < v1.20)
- quay.io/minio/livenessprobe:v2.10.0
- quay.io/minio/csi-resizer:v1.8.0
- quay.io/minio/directpv:latest
-
如果已啟用
seccomp
,請在您要安裝 DirectPV 的節點上載入 DirectPV seccomp 設定檔,並使用--seccomp-profile
旗標搭配kubectl directpv install
命令。如需更多資訊,請參閱 Kubernetes 文件中的 seccomp。
-
如果已啟用
apparmor
,請在您要安裝 DirectPV 的節點上載入 DirectPV apparmor 設定檔,並使用--apparmor-profile
旗標搭配kubectl directpv install
命令。如需更多資訊,請參閱Kubernetes 文件中的 apparmor。
-
請檢閱驅動程式規格文件。
-
對於 Red Hat OpenShift 使用者,請參閱OpenShift 專用文件,以了解安裝 DirectPV 之前的組態設定。
程序
安裝程序會建立名為 directpv-min-io
的新儲存類別。您可以使用此儲存類別作為 PodSpec.VolumeClaimTemplates
中的 storageClassName
來佈建 DirectPV 磁碟區。
如需使用 directpv-min-io
的範例,請參閱GitHub 上的 MinIO 範例。
請參閱CLI 指南,以了解以下命令的更多輔助說明。
安裝驅動程式
在 Kubernetes 叢集中的所有節點上安裝 directpv-min-io
CSI 驅動程式。
kubectl directpv install
- DirectPV 元件會安裝在
directpv
名稱空間中。 - 使用
kubectl directpv --kubeconfig /path/to/kubeconfig
來指定替代的 kubeconfig。 - DirectPV 驅動程式需要規格文件中列出的基於角色的存取控制 (RBAC)。
- DirectPV 驅動程式會在
privileged
模式下執行,這是掛載、卸載和格式化磁碟機所必需的。 - DirectPV 使用的 daemonset 需要下列開啟的連接埠
10443
用於度量- 連接埠
30443
用於就緒處理常式
kubelet
目錄,請參閱下方的自訂安裝章節。列出探索到的磁碟機
列出 Kubernetes 叢集中所有可用的磁碟機。DirectPV 會產生一個 init
組態檔 (預設值:drives.yaml
),您可以使用它來初始化這些磁碟機。
kubectl directpv discover
根據需要修改該檔案,以移除 DirectPV 不應控制的任何磁碟機。
初始化磁碟機
初始化 drives.yaml
中選取的磁碟機
kubectl directpv init drives.yaml
驗證安裝
若要驗證安裝,請使用下列命令列出關於已格式化並新增至 DirectPV 的磁碟機的資訊。
kubectl directpv info
使用指令碼安裝
下列命令會下載並執行 install.sh
指令碼檔,以在所有節點上執行 DirectPV 的標準安裝。
curl -sfL https://github.com/minio/directpv/raw/master/docs/tools/install.sh | sh - apply
氣隙安裝(私人登錄檔)
將下列映像檔推送至您的私人登錄檔
- quay.io/minio/csi-node-driver-registrar:v2.6.3
- quay.io/minio/csi-provisioner:v3.4.0
- quay.io/minio/livenessprobe:v2.9.0
- quay.io/minio/csi-resizer:v1.7.0
- quay.io/minio/directpv:latest
附註
- 如果您使用早於 v1.20 的 Kubernetes 版本,您需要推送
quay.io/minio/csi-provisioner:v2.2.0-go1.18
下列 shell 指令碼會執行上述步驟
/bin/bash -e
# set this to private registry URL (the URL should NOT include http or https)
if [ -z $PRIVATE_REGISTRY_URL ]; then "PRIVATE_REGISTRY_URL env var should be set"; fi
images[0]=quay.io/minio/csi-node-driver-registrar:v2.6.3
images[1]=quay.io/minio/csi-provisioner:v3.4.0
images[2]=quay.io/minio/livenessprobe:v2.9.0
images[3]=quay.io/minio/csi-resizer:v1.7.0
images[4]=quay.io/minio/directpv:$(curl -s "https://api.github.com/repos/minio/directpv/releases/latest" | grep tag_name | sed -E 's/.*"([^"]+)".*/\1/')
function privatize(){ echo $1 | sed "s#quay.io#${PRIVATE_REGISTRY_URL}#g"; }
function pull_tag_push(){ docker pull $1 && docker tag $1 $2 && docker push $2; }
for image in ${images[*]}; do pull_tag_push $image $(privatize $image); done
在 OpenShift 上安裝
當部署至 OpenShift 時,DirectPV 需要不同的組態設定選項。使用下列命令在 OpenShift 上安裝具有適當設定的 DirectPV
$ kubectl directpv install --openshift
自訂安裝
在選定的節點上安裝
若要僅在選定的節點上安裝 DirectPV,請使用 --node-selector
旗標來指定所需的節點
kubectl directpv info
# Install DirectPV on nodes having label 'group-name' key and 'bigdata' value
$ kubectl directpv install --node-selector group-name=bigdata
在受污節點上安裝
若要在受污節點上安裝 DirectPV,請使用 --toleration
旗標。
下列範例會在受污節點上安裝 DirectPV,方法是容忍具有 'PVs' 值的 'key1' 鍵,並使用 'NoSchedule' 效果
kubectl directpv install --tolerations key1=PVs:NoSchedule
以下範例會透過容忍 ‘key2’ 鍵的存在(無論該鍵被賦予何值),並使用 ‘NoExecute’ 效果,在受污染的節點上安裝 DirectPV。
$ kubectl directpv install --tolerations key2:NoExecute
kubelet
目錄上安裝
在非標準 若要安裝在非標準的 kubelet
目錄上,請在開始安裝前設定 KUBELET_DIR_PATH
環境變數。
export KUBELET_DIR_PATH=/path/to/my/kubelet/dir
kubectl directpv install
透過產生 DirectPV 資訊清單來安裝
若要使用產生的資訊清單檔案進行安裝,請使用以下指令。
curl -sfL https://github.com/minio/directpv/raw/master/docs/tools/install.sh | sh -s - apply