Skip to main content
此產品有較新版本可以使用。
本繁體中文版使用機器翻譯,譯文僅供參考,若與英文版本牴觸,應以英文版本為準。

新增叢集的必要條件

貢獻者

在新增叢集之前、您應確保符合先決條件。您也應該執行資格檢查、以確保叢集已準備好新增至Astra控制中心。

新增叢集之前所需的功能

確保您的叢集符合中所述的要求 "應用程式叢集需求"

註 如果您計畫將第二個OpenShift 4.6、4.7或4.8叢集新增為受管理的運算資源、則應確保已啟用Astra Trident Volume Snapshot功能。請參閱官方的Astra Trident "說明" 使用Astra Trident啟用及測試Volume Snapshot。
  • Astra Trident儲存類設定為 "支援的儲存後端" (任何類型的叢集都需要)

  • 支援ONTAP 的支援功能不只是超級使用者和使用者ID、更能使用Astra Control Center來備份和還原應用程式。在flexf2命令列中執行下列命令ONTAP :
    export-policy rule modify -vserver <storage virtual machine name> -policyname <policy name> -ruleindex 1 -superuser sysm --anon 65534

  • 阿斯特拉部落 volumesnapshotclass 已由系統管理員定義的物件。瞭解Astra Trident "說明" 使用Astra Trident啟用及測試Volume Snapshot。

  • 請確定您只為Kubernetes叢集定義單一預設儲存類別。

執行資格檢查

執行下列資格檢查、確保您的叢集已準備好新增至Astra控制中心。

步驟
  1. 檢查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文件" 以取得相關指示。
  2. 檢查儲存類別是否使用支援的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

在執行步驟之前、請先確定機器上有下列項目:

  • kubectl 已安裝v1.19或更新版本

  • 具有作用中內容叢集管理權限的作用中Kbeconfig

步驟
  1. 建立服務帳戶、如下所示:

    1. 建立名為的服務帳戶檔案 astracontrol-service-account.yaml

      視需要調整名稱和命名空間。如果在此處進行變更、您應該在下列步驟中套用相同的變更。

    astracontrol-service-account.yaml

    +

    apiVersion: v1
    kind: ServiceAccount
    metadata:
      name: astracontrol-service-account
      namespace: default
    1. 套用服務帳戶:

      kubectl apply -f astracontrol-service-account.yaml
  2. (選用)如果叢集使用限制的Pod安全性原則、而該原則不允許建立具有權限的Pod、或允許Pod容器內的處理程序以root使用者身分執行、請為叢集建立自訂的Pod安全性原則、讓Astra Control能夠建立及管理Pod。如需相關指示、請參閱 "建立自訂Pod安全性原則"

  3. 授予叢集管理權限、如下所示:

    1. 建立 ClusterRoleBinding 檔案已呼叫 astracontrol-clusterrolebinding.yaml

      視需要在建立服務帳戶時調整任何已修改的名稱和命名空間。

    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
    1. 套用叢集角色繫結:

      kubectl apply -f astracontrol-clusterrolebinding.yaml
  4. 列出取代的服務帳戶機密 <context> 正確的安裝環境:

    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"}
    ]

    中每個元素的索引 secrets 陣列開頭為0。在上述範例中、索引為 astracontrol-service-account-dockercfg-vhz87 將為0、索引則為 astracontrol-service-account-token-r59kr 應該是1。在輸出中、記下含有「權杖」一詞的服務帳戶名稱索引。

  5. 產生以下的Kbeconfig:

    1. 建立 create-kubeconfig.sh 檔案:更換 TOKEN_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
    2. 請輸入命令以將其套用至Kubernetes叢集。

      source create-kubeconfig.sh
  6. 選用)將KUbeconfig重新命名為有意義的叢集名稱。保護您的叢集認證資料。

    chmod 700 create-kubeconfig.sh
    mv kubeconfig-sa.txt YOUR_CLUSTER_NAME_kubeconfig

接下來呢?

現在您已經確認已符合先決條件、您已經準備好了 "新增叢集"

如需詳細資訊、請參閱