新增叢集的必要條件
在新增叢集之前、您應確保符合先決條件。您也應該執行資格檢查、以確保叢集已準備好新增至Astra控制中心。
新增叢集之前所需的功能
-
下列叢集類型之一:
-
執行OpenShift 4.6-8、4.7、4.8或4.9的叢集
-
使用RKE1執行Rancher 2.5.x、2.5.x或2.6的叢集
-
執行Kubernetes 1.20至1.23的叢集
-
執行VMware Tanzu Kubernetes Grid 1.4的叢集
-
執行VMware Tanzu Kubernetes Grid整合版1.12.2的叢集
請確定您的叢集有一個或多個工作節點、且至少有1GB RAM可供執行遙測服務。
如果您計畫將第二個OpenShift 4.6、4.7或4.8叢集新增為受管理的運算資源、則應確保已啟用Astra Trident Volume Snapshot功能。請參閱官方的Astra Trident "說明" 使用Astra Trident啟用及測試Volume Snapshot。 -
-
Astra Trident儲存類設定為 "支援的儲存後端" (任何類型的叢集都需要)
-
支援ONTAP 的支援功能不只是超級使用者和使用者ID、更能使用Astra Control Center來備份和還原應用程式。在支援指令行中執行下列命令ONTAP :「匯出原則規則modify -vserver <儲存虛擬機器名稱>-policyname <原則名稱>-rueindex 1 -sm超級 使用者sym --anon 65534」
-
由系統管理員定義的Astra Trident「volumesnapshotClass」物件。瞭解Astra Trident "說明" 使用Astra Trident啟用及測試Volume Snapshot。
-
請確定您只為Kubernetes叢集定義單一預設儲存類別。
執行資格檢查
執行下列資格檢查、確保您的叢集已準備好新增至Astra控制中心。
-
檢查Trident版本。
kubectl get tridentversions -n trident
如果存在Trident、您會看到類似下列的輸出:
NAME VERSION trident 21.04.0
如果Trident不存在、您會看到類似下列的輸出:
error: the server doesn't have a resource type "tridentversions"
如果未安裝Trident或安裝的版本不是最新版本、您必須先安裝最新版本的Trident、才能繼續進行。請參閱 "Trident文件" 以取得相關指示。 -
檢查儲存類別是否使用支援的Trident驅動程式。置備程式名稱應為「csi.trident.netapp.io`」。請參閱下列範例:
kubectl get sc NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE ontap-gold (default) csi.trident.netapp.io Delete Immediate true 5d23h thin kubernetes.io/vsphere-volume Delete Immediate false 6d
建立管理角色KECBEConfig
在執行步驟之前、請先確定機器上有下列項目:
-
安裝了「kubecll」v1.19或更新版本
-
具有作用中內容叢集管理權限的作用中Kbeconfig
-
建立服務帳戶、如下所示:
-
建立名為「astracontinal-service-account.yaml」的服務帳戶檔案。
視需要調整名稱和命名空間。如果在此處進行變更、您應該在下列步驟中套用相同的變更。
astracontrol-service-account.yaml
+
apiVersion: v1 kind: ServiceAccount metadata: name: astracontrol-service-account namespace: default
-
套用服務帳戶:
kubectl apply -f astracontrol-service-account.yaml
-
-
(選用)如果叢集使用限制的Pod安全性原則、而該原則不允許建立具有權限的Pod、或允許Pod容器內的處理程序以root使用者身分執行、請為叢集建立自訂的Pod安全性原則、讓Astra Control能夠建立及管理Pod。如需相關指示、請參閱 "建立自訂Pod安全性原則"。
-
授予叢集管理權限、如下所示:
-
建立名為「astracontletil-clusterrolebind.yaml」的「ClusterRoeBinding」檔案。
視需要在建立服務帳戶時調整任何已修改的名稱和命名空間。
astracontrol-clusterrolebinding.yaml
+
apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: name: astracontrol-admin roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole name: cluster-admin subjects: - kind: ServiceAccount name: astracontrol-service-account namespace: default
-
套用叢集角色繫結:
kubectl apply -f astracontrol-clusterrolebinding.yaml
-
-
列出服務帳戶機密、將「<內容>」取代為正確的安裝內容:
kubectl get serviceaccount astracontrol-service-account --context <context> --namespace default -o json
輸出的結尾應類似於下列內容:
"secrets": [ { "name": "astracontrol-service-account-dockercfg-vhz87"}, { "name": "astracontrol-service-account-token-r59kr"} ]
"secretts "陣列中每個元素的索引以0開頭。在上述範例中、「astracontlivter-service-account-dockercfg-vhz87」的索引為0、而「astracontlive-service-account-toke-r59kr"的索引則為1。在輸出中、記下含有「權杖」一詞的服務帳戶名稱索引。
-
產生以下的Kbeconfig:
-
建立「cree-kupeconfig.sh」檔案。將下列指令碼開頭的「toke_index」取代為正確的值。
create-kubeconfig.sh
# Update these to match your environment. # Replace TOKEN_INDEX with the correct value # from the output in the previous step. If you # didn't change anything else above, don't change # anything else here. SERVICE_ACCOUNT_NAME=astracontrol-service-account NAMESPACE=default NEW_CONTEXT=astracontrol KUBECONFIG_FILE='kubeconfig-sa' CONTEXT=$(kubectl config current-context) SECRET_NAME=$(kubectl get serviceaccount ${SERVICE_ACCOUNT_NAME} \ --context ${CONTEXT} \ --namespace ${NAMESPACE} \ -o jsonpath='{.secrets[TOKEN_INDEX].name}') TOKEN_DATA=$(kubectl get secret ${SECRET_NAME} \ --context ${CONTEXT} \ --namespace ${NAMESPACE} \ -o jsonpath='{.data.token}') TOKEN=$(echo ${TOKEN_DATA} | base64 -d) # Create dedicated kubeconfig # Create a full copy kubectl config view --raw > ${KUBECONFIG_FILE}.full.tmp # Switch working context to correct context kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp config use-context ${CONTEXT} # Minify kubectl --kubeconfig ${KUBECONFIG_FILE}.full.tmp \ config view --flatten --minify > ${KUBECONFIG_FILE}.tmp # Rename context kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ rename-context ${CONTEXT} ${NEW_CONTEXT} # Create token user kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ set-credentials ${CONTEXT}-${NAMESPACE}-token-user \ --token ${TOKEN} # Set context to use token user kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ set-context ${NEW_CONTEXT} --user ${CONTEXT}-${NAMESPACE}-token-user # Set context to correct namespace kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ set-context ${NEW_CONTEXT} --namespace ${NAMESPACE} # Flatten/minify kubeconfig kubectl config --kubeconfig ${KUBECONFIG_FILE}.tmp \ view --flatten --minify > ${KUBECONFIG_FILE} # Remove tmp rm ${KUBECONFIG_FILE}.full.tmp rm ${KUBECONFIG_FILE}.tmp
-
請輸入命令以將其套用至Kubernetes叢集。
source create-kubeconfig.sh
-
-
(選用)將KUbeconfig重新命名為有意義的叢集名稱。保護您的叢集認證資料。
chmod 700 create-kubeconfig.sh mv kubeconfig-sa.txt YOUR_CLUSTER_NAME_kubeconfig