為 Satellite 叢集設定 AWS EBS 儲存空間
為 IBM Cloud Satellite 叢集設定 Amazon Elastic Block Storage ( EBS ),方法是在您的位置建立儲存配置,以啟用動態區塊儲存資源配置。
當您建立 AWS EBS 儲存組態時,您會提供 AWS 認證,這些認證會以 Kubernetes secret 的形式儲存於您指定組態的群集中。 該密碼掛載在 CSI 控制器 pod 內,因此當您使用 IBM- 提供的儲存類別之一建立 PVC 時,您的 AWS 認證會用於動態配置 EBS 實例。
若要為應用程式使用 AWS EBS 儲存,您用於群集工作節點的 Satellite 主機必須位於 AWS。
在您可以將儲存範本部署到您所在位置的群集之前,請確定您已設定 Satellite Config,方法是在主控台中選擇 Enable cluster admin access for Satellite Config 選項,或在建立群集時包含 --enable-config-admin 選項。
您無法自訂儲存類別,因為 Satellite Config 會覆蓋您的變更。
您無法將 Satellite 儲存服務的範圍設定為資源群組。 但是,如果您要將位置和群集等其他資源範圍化為資源群組,則需要為帳戶中的所有資源新增 Satellite 讀取器和連結管理員角色。
使用的先決條件 AWS EBS
若要使用 AWS EBS 儲存範本,請完成下列任務:
-
建立在 Amazon Web Services(AWS)中的計算主機上執行的 Satellite 叢集。 請確保在建立叢集時選取 啟用 Satellite 配置 選項的叢集管理存取權。 如果您在建立叢集時未啟用 Satellite Config 的管理者 (管理) 存取權,則必須先重建叢集並啟用管理存取權,然後才能部署儲存體。 如需如何將主機從 AWS 新增至 Satellite 位置以便將它們指派給叢集的相關資訊,請參閱 將 AWS 主機新增至 Satellite。
-
為 AWS 登入認證 建立 AWS 存取金鑰 ID 及秘密存取金鑰。 在您的帳戶中配置 AWS EBS 儲存空間時需要這些憑證。 當您將儲存組態指定給叢集時,您的 AWS 存取金鑰 ID 和秘密存取金鑰會儲存在叢集的 Kubernetes secret 中。
-
檢視 AWS EBS 儲存配置參數。
-
檢視 AWS EBS 儲存類別。 AWS EBS 儲存範本不支援自訂儲存類別。
在主控台中建立及指派配置
在 CLI 中建立配置
-
檢閱您要使用之範本版本的 參數參照。
-
登入 IBM Cloud CLI。
ibmcloud login -
列出 Satellite 位置,並記下
Managed from直欄。ibmcloud sat location ls -
將 Satellite 位置的
Managed from區域設為目標。 例如,針對wdctargetus-east。 如需相關資訊,請參閱 Satellite 地區。ibmcloud target -r us-east -
如果您使用
default以外的資源群組,請將它設為目標。ibmcloud target -g RESOURCE_GROUP -
針對您要使用的範本版本,複製下列其中一個範例指令。 如需指令的相關資訊,請參閱 指令參考手冊 中的
ibmcloud sat storage config create。建立版本 1.55.0 設定的範例指令。
ibmcloud sat storage config create --location LOCATION --name NAME --template-name aws-ebs-csi-driver --template-version 1.55.0 --param "aws-access-key=AWS-ACCESS-KEY" --param "aws-secret-access-key=AWS-SECRET-ACCESS-KEY" -
根據您要使用的設定來自訂指令。
-
執行此指令以建立設定。
-
請驗證已建立您的配置。
ibmcloud sat storage config get --config CONFIG
在 API 中建立配置
-
產生 API 金鑰,然後要求重新整理記號。 如需更多資訊,請參閱 《 使用 API 金鑰產生 IBM Cloud IAM 憑證 》。
-
檢閱您要使用之範本版本的 參數參照。
-
複製下列其中一個範例要求,並取代您要使用的變數。
建立版本 1.55.0 配置的範例請求。
curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createStorageConfigurationByController" -H "accept: application/json" -H "Authorization: TOKEN" -H "Content-Type: application/json" -d "{ \"config-name\": \"string\", \"controller\": \"string\", \"storage-class-parameters\": [ { \"additionalProp1\": \"string\", \"additionalProp2\": \"string\", \"additionalProp3\": \"string\" } ], \"storage-template-name\": \"aws-ebs-csi-driver\", \"storage-template-version\": \"1.55.0\", \"update-assignments\": true, \"user-config-parameters\":\"user-secret-parameters\": { \"entry.name\": \"AWS-ACCESS-KEY\",{ \"entry.name\": \"AWS-SECRET-ACCESS-KEY\",}
在命令列介面 (CLI) 中建立作業
-
列出儲存空間配置,並記下您要指派給叢集的儲存空間配置。
ibmcloud sat storage config ls -
取得您要指派儲存體之叢集、叢集群組或服務的 ID。
若要確認您的叢集已向 Satellite Config 註冊,或要建立群組,請參閱 《 設定叢集以配合 Satellite Config 使用 》。
列出叢集群組的指令範例。
ibmcloud sat group ls列出叢集的指令範例。
ibmcloud oc cluster ls --provider satellite列出 Satellite 服務的指令範例。
ibmcloud sat service ls --location LOCATION -
將儲存空間配置指派給您先前擷取的叢集、群組或服務。 如需相關資訊,請參閱
ibmcloud sat storage assignment create指令。將配置指派給叢集群組的指令範例。
ibmcloud sat storage assignment create --group GROUP --config CONFIG --name NAME將配置指派給叢集的範例指令。
ibmcloud sat storage assignment create --cluster CLUSTER --config CONFIG --name NAME將配置指派給服務叢集的範例指令。
ibmcloud sat storage assignment create --service-cluster-id CLUSTER --config CONFIG --name NAME -
請確認您的作業已建立。
ibmcloud sat storage assignment ls (--cluster CLUSTER | --config CONFIG | --location LOCATION | --service-cluster-id CLUSTER)
在應用程式介面 (API) 中建立儲存空間指派
-
複製下列其中一個範例要求。
將 配置指派給叢集的要求範例。
curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createAssignmentByCluster" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"channelName\": \"CONFIGURATION-NAME\", \"cluster\": \"CLUSTER-ID\", \"controller\": \"LOCATION-ID\", \"name\": \"ASSIGNMENT-NAME\"}"將配置指派給叢集群組的要求範例。
curl -X POST "https://containers.cloud.ibm.com/global/v2/storage/satellite/createAssignment" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"channelName\": \"CONFIGURATION-NAME\", \"cluster\": \"string\", \"groups\": [ \"CLUSTER-GROUP\" ], \"name\": \"ASSIGNMENT-NAME\"}" -
請將變數取代為您的詳細資料,然後執行要求。
-
請列出您的指派,以驗證已建立指派。
curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignments" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
在主控台中更新儲存體指派
您可以使用 Satellite 主控台,將最新修補程式更新項目套用至您的指派。
-
從 Satellite 主控台中的 位置 頁面,選取您的位置。
-
按一下 儲存體 標籤,以檢視您的配置。
-
請點選您要更新的設定。
-
按一下資訊 資訊 (i) 圖示,以套用最新修訂或修補程式。
-
選用: 啟用儲存體指派的自動修補程式更新。 啟用自動修補程式更新可確保您的指派一律具有最新的安全修正程式。
如果您啟用自動修補程式更新,仍然必須手動套用主要更新項目。
在 CLI 中手動升級指派
升級指派以使用最新儲存體範本修訂。
-
列出您的 Satellite 儲存體指派,記下您要升級的 Satellite 指派。
ibmcloud sat storage assignment ls -
列出 Satellite 儲存體範本,以查看最新可用的版本。
ibmcloud sat storage template ls -
升級 Satellite 指派。
升級指派的指令範例。
ibmcloud sat storage assignment upgrade --assignment ASSIGNMENT
在 CLI 中啟用配置及指派的自動修補程式更新
您可以使用 sat storage assignment autopatch enable CLI 來啟用指派的自動修補程式更新。 啟用自動修補程式更新會自動套用最新的儲存體範本修訂 (修補程式)。 您仍必須手動套用主要更新項目。
-
列出您的 Satellite 儲存體配置。 請記錄下該設定的 ID。
ibmcloud sat storage assignment ls -
執行下列其中一個範例指令,以啟用配置及其相關聯指派的自動修補程式更新。 請輸入您在上一步驟中取得的那個配置 ID。
針對指派啟用自動修補程式更新的範例指令。
ibmcloud sat storage assignment autopatch enable --config CONFIG (--all | --assignment ASSIGNMENT-ID [--assignment ASSIGNMENT-ID])針對給定配置下的所有儲存體指派啟用自動修補程式更新的範例指令。
ibmcloud sat storage assignment autopatch enable --config CONFIG --all針對特定配置下的所有指派停用自動修補程式更新的範例指令。
ibmcloud sat storage assignment autopatch disable --config CONFIG --all針對單一指派及特定配置停用自動修補程式更新的範例指令。
ibmcloud sat storage assignment autopatch disable --config CONFIG --assignment ASSIGNMENT-ID針對多個指派及特定配置停用自動修補程式更新的範例指令。
ibmcloud sat storage assignment autopatch disable --config CONFIG --assignment ASSIGNMENT-ID --assignment ASSIGNMENT-ID
在 CLI 中手動升級配置
您可以升級 Satellite 儲存體配置,以取得相同主要版本內的最新儲存體範本修訂。
-
列出您的 Satellite 儲存體配置,記下您要升級的 Satellite 配置。
ibmcloud sat storage config ls -
升級 Satellite 的設定。 請注意,只會更新配置。 如果您想要升級使用此配置的指派,您可以指定
--include-assignments選項,也可以使用assignment update指令手動更新每一個指派。將配置升級至最新修訂的範例指令。
ibmcloud sat storage config upgrade --config CONFIG [--include-assignments]將配置及其相關指派升級至最新修訂版的範例指令。
ibmcloud sat storage config upgrade --config CONFIG --include-assignments
在 API 中升級配置和指派
您可以使用 /v2/storage/satellite/updateAssignment API,以新的叢集或叢集群組來更新您的指派。 將 updateConfigVersion 設為 true,以套用修訂更新。
-
複製下列範例要求,並取代您要更新之叢集群組及指派的變數。
curl -X PATCH "https://containers.cloud.ibm.com/global/v2/storage/satellite/updateAssignment" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d "{ \"groups\": [ \"CLUSTER-GROUPS\" ], \"name\": \"ASSIGNMENT-NAME\", \"updateConfigVersion\": true, \"uuid\": \"ASSIGNMENT-ID\"}" -
執行要求。
-
取得您指派的詳細資料,以驗證更新。
curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignment?uuid=ASSIGNMENT-ID" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
在 API 中針對指派啟用自動修補程式更新
您可以使用 /v2/storage/satellite/setAssignmentAutoupgrade API 來啟用指派的自動修補程式更新。 啟用自動修補程式更新會自動套用最新的儲存體範本修訂 (修補程式)。 您仍必須手動套用主要更新項目。
-
複製下列範例要求,並取代您要更新之叢集群組及指派的變數。
curl -X PATCH "https://containers.cloud.ibm.com/global/v2/storage/satellite/setAssignmentAutoupgrade" -H "accept: application/json" -H "Authorization: Bearer TOKEN" -H "Content-Type: application/json" -d { "config": "string", "controller": "string", "autopatch": boolean,"assignment" : { "all": boolean, "uuid": ["string", "string", ...], } } -
執行要求。
-
取得您指派的詳細資料,以驗證升級。
curl -X GET "https://containers.cloud.ibm.com/global/v2/storage/satellite/getAssignment?uuid=ASSIGNMENT-ID" -H "accept: application/json" -H "Authorization: Bearer TOKEN"
部署使用 AWS EBS 儲存空間的應用程式
您可以使用 ebs-csi-driver 為群集中的應用程式動態配置 AWS EBS 儲存。
-
列出可用的儲存類別,並選擇您要使用的儲存類別。
oc get sc | grep ebs若要查看儲存類別的詳細資料,請使用
oc describe sc <sc-name>指令或檢閱 儲存類別參照。 -
建立一個 PVC,以提供 AWS EBS 儲存實例,該實例具有您所選擇的儲存類別中描述的特性。 以下範例使用
sat-aws-block-bronze儲存類別建立大小為 125 GB 的st1HDD AWS EBS 儲存實例。 如需此磁區類型的相關資訊,請參閱 硬碟(HDD)。apiVersion: v1 kind: PersistentVolumeClaim metadata: name: sat-aws-block-bronze spec: accessModes: - ReadWriteOnce storageClassName: sat-aws-block-bronze resources: requests: storage: 125Gi -
在叢集裡建立 PVC。
oc apply -f pvc.yaml -
請確認您的 PVC 已建立。 因為所有 IBM提供的儲存空間類別都配置為
WaitForFirstConsumer,所以在您佈建裝載 PVC 的應用程式之前,PVC 的狀態會維持Pending。oc get pvc輸出範例
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE sat-aws-block-bronze Pending sat-aws-block-bronze 17s -
建立 Pod,以裝載您所建立的 PVC。 當您建立此 Pod 時,AWS EBS 驅動程式會開始在您的 AWS 帳戶中動態建立 AWS EBS 範例,以滿足您的儲存要求。 以下範例會建立
nginxpod,將目前日期和時間寫入 AWS EBS 磁碟區掛載路徑上的test.txt檔案。apiVersion: v1 kind: Pod metadata: name: app spec: containers: - name: app image: nginx command: ["/bin/sh"] args: ["-c", "while true; do echo $(date -u) >> /test/test.txt; sleep 5; done"] volumeMounts: - name: persistent-storage mountPath: /test volumes: - name: persistent-storage persistentVolumeClaim: claimName: sat-aws-block-bronze -
在您的叢集中建立該 Pod。
oc apply -f pod.yaml -
請確認該 Pod 已部署。 請注意,儲存請求的處理以及您的應用程式進入「
Running」狀態,可能需要幾分鐘時間。oc get pods輸出範例
NAME READY STATUS RESTARTS AGE app 1/1 Running 0 2m58s -
驗證 PVC 狀態已變更為
Bound。oc get pvc輸出範例
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE sat-aws-block-bronze Bound pvc-86d2f9f4-78d4-4bb2-ab73-39726d144981 125Gi RWO sat-aws-block-bronze 33m如果您的 PVC 仍處於
Pending狀態,請執行oc describe pvc <pvc_name>指令取得 PVC 的詳細資訊,以查看 AWS EBS 儲存實體佈建過程中發生的錯誤。 -
確認應用程式可以寫入您的 AWS EBS 範例。
- 登入 Pod。
oc exec <app_pod_name> -it bash ``` 2. 顯示 `test.txt` 檔案的內容,以確認您的應用程式可以將資料寫入持續性儲存空間。 ```sh {: pre} cat /test/test.txt ``` 輸出範例 ```sh {: screen} Tue Mar 2 20:09:19 UTC 2021 Tue Mar 2 20:09:25 UTC 2021 Tue Mar 2 20:09:31 UTC 2021 Tue Mar 2 20:09:36 UTC 2021 Tue Mar 2 20:09:42 UTC 2021 Tue Mar 2 20:09:47 UTC 2021 ``` 3. 結束 Pod。 ```sh {: pre} exit ``` -
驗證已在 AWS中建立儲存空間實例。
- 列出為 PVC 建立的 PV。
oc get pv ``` 2. 取得您 PV 的詳細資訊,並註記在 `source.volumeHandle` 欄位中建立的 AWS EBS 範例的 ID。 ```sh {: pre} oc describe pv <pv_name> ``` 3. 從 [AWS EC2 儀表板](https://console.aws.amazon.com/ec2/v2/home){: external},選擇 **彈性區塊儲存** > **卷冊**。 4. 使用之前擷取的 ID 尋找您的 AWS EBS 磁碟區。
從應用程式移除 AWS EBS 儲存空間
如果您不再需要您的 AWS EBS 範例,您可以移除您的 PVC、PV 以及 AWS 帳戶中的 AWS EBS 範例。
移除您的 AWS EBS 範例會永久移除此範例中儲存的所有資料。 這個動作無法復原。 在刪除 AWS EBS 實例之前,請務必先備份資料。
- 列出 PVC,並記下您要移除的 PVC 名稱。
oc get pvc - 移除任何裝載 PVC 的 Pod。
- 列出目前裝載您要刪除之 PVC 的所有 Pod。 如果未傳回任何 Pod,則您沒有任何目前使用 PVC 的 Pod。
oc get pods --all-namespaces -o=jsonpath='{range .items[*]}{"\n"}{.metadata.name}{":\t"}{range .spec.volumes[*]}{.persistentVolumeClaim.claimName}{" "}{end}{end}' | grep "<pvc_name>" ``` 輸出範例 ```sh {: screen} app sat-aws-block-bronze ``` 2. 移除使用 PVC 的 Pod。 如果 Pod 是部署的一部分,便移除部署。 ```sh {: pre} oc delete pod <pod_name> ``` ```sh {: pre} oc delete deployment <deployment_name> ``` 3. 驗證已移除 Pod 或部署。 ```sh {: pre} oc get pods ``` ```sh {: pre} oc get deployments ``` - 刪除 PVC。 由於所有 IBM- 提供的 AWS EBS 儲存類別都指定了
Delete領回原則,因此當您刪除 PVC 時,您 AWS 帳戶中的 PV 和 AWS EBS 範例會自動刪除。oc delete pvc <pvc_name> - 請確認您的儲存裝置已移除。
- 確認已自動移除您的 PV。
oc get pv ``` 2. 從 [AWS EC2 儀表板](https://console.aws.amazon.com/ec2/v2/home){: external},選擇 **彈性區塊儲存** > **卷冊**,確認您的 AWS EBS 範例已移除。
從叢集移除 AWS EBS 儲存配置
如果您不再打算在群集中使用 AWS EBS 儲存,您可以從儲存配置中取消指定您的群集。
請注意,您必須先刪除儲存體指派,才能順利刪除儲存體配置。
請注意,如果您移除儲存體配置,則會從所有已指派的叢集解除安裝驅動程式。 不會移除 PVC、PV 及資料。 然而,在您於叢集中重新安裝驅動程式之前,將無法存取您的資料。
從主控台移除儲存體配置
- 從 Satellite 儲存體儀表板中,選取您要刪除的儲存體配置。
- 選取 動作 > 刪除。
- 輸入儲存體配置的名稱。
- 選取刪除。
從 CLI 移除 AWS EBS 儲存配置
使用 CLI 移除 AWS EBS 儲存組態。
請注意,您必須先刪除儲存體指派,才能順利刪除儲存體配置。
- 列出您的儲存體指派,並尋找您用於叢集的儲存體指派。
ibmcloud sat storage assignment ls (--cluster CLUSTER | --config CONFIG | --location LOCATION | --service-cluster-id CLUSTER) - 移除指派。 移除指派後,AWS EBS 驅動程式 pod 和儲存類別會從所有屬於儲存指派的群集中移除。
ibmcloud sat storage assignment rm --assignment <assignment_ID> - 確認 AWS EBS 驅動程式已從群集中移除。
- 列出群集中的儲存類別,並驗證是否已移除 AWS EBS 儲存類別。
oc get sc ``` 2. 列出 `kube-system` 命名空間中的 Pod,並驗證是否已移除 AWS EBS 儲存驅動程式 Pod。 ```sh {: pre} oc get pods -n kube-system | grep ebs ``` 3. 列出 `kube-system` 名稱空間中的密鑰,並驗證已移除儲存 AWS 認證的 AWS 密鑰。 ```sh {: pre} oc get secrets -n kube-system | grep aws ``` - 選用項目: 移除儲存體配置。
- 列出儲存體配置。
ibmcloud sat storage config ls ``` 2. 移除儲存體配置。 ```sh {: pre} ibmcloud sat storage config rm --config <config_name> ```
Parameter Reference
1.55.0 參數參考
| 顯示名稱 | CLI 選項 | 類型 | 說明 | 預設值 |
|---|---|---|---|---|
| AWS 存取金鑰 ID | aws-access-key |
密碼 | AWS 存取金鑰 ID。 | 不適用 |
| AWS 秘密存取金鑰 | aws-secret-access-key |
密碼 | AWS 秘密存取金鑰。 | 不適用 |
儲存類別參考 AWS EBS
檢閱 Satellite 儲存類別 AWS EBS。 您可以使用 oc describe sc <storage-class-name> 指令在指令行中說明儲存類別。 請注意,資料卷會由 AWS 管理的預設金鑰自動加密。 如需詳細資訊,請參閱 EBS 加密的預設 KMS 金鑰。 如需 AWS EBS 加密的詳細資訊,請參閱 AWS EBS 加密如何運作。
| 儲存類別名稱 | EBS 磁區類型 | 檔案系統類型 | 供應者 | 每 GB 的預設 IOPS | 大小範圍 | 硬碟 | 加密? | 磁區連結模式 | 收回原則 | 進一步資訊 |
|---|---|---|---|---|---|---|---|---|---|---|
sat-aws-block-gold 預設值 |
io2 | ext4 | ebs.csi.aws.com |
10 | 10 GiB- 6.25 TiB | SSD | 是 | WaitforFirstConsumer | 刪除 | 鏈結 |
sat-aws-block-silver |
gp3 | ext4 | ebs.csi.aws.com |
不適用 | 1 GiB-16 TiB | SSD | 是 | WaitforFirstConsumer | 刪除 | 鏈結 |
sat-aws-block-bronze |
st1 | ext4 | ebs.csi.aws.com |
不適用 | 125 GiB-16 TiB | HDD | 是 | WaitforFirstConsumer | 刪除 | 鏈結 |
sat-aws-block-bronze-metro |
st1 | ext4 | ebs.csi.aws.com |
不適用 | 125 GiB-16 TiB | HDD | 是 | WaitforFirstConsumer | 刪除 | 鏈結 |
sat-aws-block-silver-metro |
gp3 | ext4 | ebs.csi.aws.com |
1 GiB-16 TiB | SSD | 是 | WaitforFirstConsumer | 刪除 | 鏈結 | |
sat-aws-block-gold-metro |
io2 | ext4 | ebs.csi.aws.com |
10 | 10 GiB- 6.25 TiB | SSD | 是 | WaitforFirstConsumer | 刪除 | 鏈結 |
獲得以下方面的協助和支援 AWS EBS
當您使用 AWS EBS Storage 時,請在開啟支援個案之前嘗試下列資源。
- 檢閱 AWS Knowledge Center中的常見問題。
- 請檢閱 疑難排解文件,以進行疑難排解並解決一般問題。
- 移至 狀態頁面,以檢查 IBM Cloud 平台及資源的狀態。
- 檢閱 Stack Overflow,以查看其他使用者是否遇到相同的問題。 使用
ibm-cloud和AWS-EBS來標記任何問題。 - AWS 支援中心 是另一個可供 AWS 客戶尋找更深入支援選項的資源。