雲端內嵌邊緣磁碟區設定
本文說明雲端內嵌邊緣磁碟區的設定 (使用本機清除進行 Blob 上傳)。
什麼是雲端內嵌邊緣磁碟區?
雲端內嵌邊緣磁碟區有助於從邊緣到 Blob 的無限資料內嵌,包括 ADLSgen2。 寫入此儲存體類型的檔案會順暢地傳輸至 Blob 儲存體,一旦確認上傳後,則會在本機清除。 此移除可確保新資料的空間可用性。 此外,此儲存體選項支援中斷連線環境中的資料完整性,可在重新連線到網路時啟用本機儲存體和同步。
例如,您可以將檔案寫入雲端內嵌 PVC,而程序會每分鐘執行掃描來檢查是否有新檔案。 識別之後,會傳送檔案以上傳至您指定的 Blob 目的地。 確認上傳成功之後,雲端內嵌邊緣磁碟區會等候五分鐘,然後刪除檔案的本機版本。
必要條件
設定延伸模組身分識別
邊緣磁碟區允許使用系統指派的延伸模組身分識別來存取 Blob 儲存體。 本節說明如何使用系統指派的延伸模組身分識別來授與儲存體帳戶的存取權,讓您將雲端內嵌磁碟區上傳至這些儲存體系統。
建議您使用延伸模組身分識別。 如果您的最終目的地是 Blob 儲存體或 ADLSgen2,請參閱下列指示。 如果您的最終目的地是 OneLake,請遵循設定延伸模組身分識別的 OneLake 中的指示。
雖然不建議這麼做,但如果您想要使用金鑰型驗證,請遵循金鑰型驗證中的指示。
取得延伸模組身分識別
Azure 入口網站
- 瀏覽至您的 Arc 連線叢集。
- 選取 [擴充功能]。
- 安裝由 Azure Arc 延伸模組啟用的 Azure 容器儲存體。
- 記下 [叢集延伸模組詳細資料] 底下的主體識別碼。
設定延伸模組身分識別的 Blob 儲存體帳戶
將延伸模組身分識別權限新增至儲存體帳戶
- 瀏覽至 Azure 入口網站中的儲存體帳戶。
- 選取存取控制 (IAM)。
- 選取 [新增+ -> 新增角色指派]。
- 選取 [儲存體 Blob 資料擁有者],然後選取 [下一步]。
- 選取 [+選取成員]。
- 若要將主體識別碼新增至 [選取的成員:] 清單,請貼上識別碼,然後選取身分識別旁邊的 +。
- 按一下 [選取]。
- 若要檢閱並指派權限,請選取 [下一步],然後選取 [檢閱 + 指派]。
建立雲端內嵌永續性磁碟區宣告 (PVC)
建立名為
cloudIngestPVC.yaml
的檔案,包含以下內容。 編輯metadata.name
這一行,並為您的永續性磁碟區宣告建立名稱。 下一個步驟中deploymentExample.yaml
的最後一行會參考此名稱。 此外,請使用您預期的取用 Pod 來更新metadata.namespace
值。 如果您沒有預期的取用 Pod,則metadata.namespace
值為default
。spec.resources.requests.storage
參數會決定永續性磁碟區的大小。 在此範例中為 2 GB,但可以修改以符合您的需求:注意
請只使用小寫字母和數字。 如需詳細資訊,請參閱 Kubernetes 物件命名文件。
kind: PersistentVolumeClaim apiVersion: v1 metadata: ### Create a name for your PVC ### name: <create-persistent-volume-claim-name-here> ### Use a namespace that matched your intended consuming pod, or "default" ### namespace: <intended-consuming-pod-or-default-here> spec: accessModes: - ReadWriteMany resources: requests: storage: 2Gi storageClassName: cloud-backed-sc
若要套用
cloudIngestPVC.yaml
,請執行:kubectl apply -f "cloudIngestPVC.yaml"
將子磁碟區附加至邊緣磁碟區
若要使用延伸模組身分識別來建立子磁碟區以連線到您的儲存體帳戶容器,請使用下列流程:
使用下列指令取得您的內嵌 Edge 磁碟區名稱:
kubectl get edgevolumes
建立名為
edgeSubvolume.yaml
的檔案,並複製下列內容。 這些變數必須使用您的資訊來更新:注意
請只使用小寫字母和數字。 如需詳細資訊,請參閱 Kubernetes 物件命名文件。
metadata.name
:為您的子磁碟區建立名稱。spec.edgevolume
:這個名稱是使用kubectl get edgevolumes
從上一個步驟擷取的。spec.path
:在掛接路徑下建立您自己的子目錄名稱。 下列範例已經包含範例名稱 (exampleSubDir
)。 如果您變更此路徑名稱,則deploymentExample.yaml
中的第 33 行必須更新為新的路徑名稱。 如果您選擇重新命名路徑,請勿使用前導斜線。spec.container
:儲存體帳戶中的容器名稱。spec.storageaccountendpoint
:在 Azure 入口網站中瀏覽至您的儲存體帳戶。 在 [概觀] 頁面的右上方,選取 [JSON 檢視]。 您可以在 properties.primaryEndpoints.blob 底下找到storageaccountendpoint
連結。 複製整個連結;例如,https://mytest.blob.core.windows.net/
。
apiVersion: "arccontainerstorage.azure.net/v1" kind: EdgeSubvolume metadata: name: <create-a-subvolume-name-here> spec: edgevolume: <your-edge-volume-name-here> path: exampleSubDir # If you change this path, line 33 in deploymentExample.yaml must be updated. Don't use a preceding slash. auth: authType: MANAGED_IDENTITY storageaccountendpoint: "https://<STORAGE ACCOUNT NAME>.blob.core.windows.net/" container: <your-blob-storage-account-container-name> ingestPolicy: edgeingestpolicy-default # Optional: See the following instructions if you want to update the ingestPolicy with your own configuration
若要套用
edgeSubvolume.yaml
,請執行:kubectl apply -f "edgeSubvolume.yaml"
選用:從預設修改 ingestPolicy
如果您想要從預設的
edgeingestpolicy-default
變更ingestPolicy
,請建立名為myedgeingest-policy.yaml
的檔案,其中包含下列內容。 下列變數必須使用您的喜好設定來更新:注意
請只使用小寫字母和數字。 如需詳細資訊,請參閱 Kubernetes 物件命名文件。
metadata.name
:為您的 ingestPolicy 建立名稱。 您必須在edgeSubvolume.yaml
的spec.ingestPolicy
區段中更新和參考此名稱。spec.ingest.order
:上傳已變更檔案的順序。 這是最佳做法,而非保證 (預設為最舊優先)。 順序的選項包括:最舊優先或最新優先。spec.ingest.minDelaySec
:已變更檔案可內嵌之前的秒數下限 (預設值為 60)。 這個數字的範圍可以介於 0 到 31536000 之間。spec.eviction.order
:如何收回檔案 (預設為未排序)。 收回順序的選項為:未排序或永不排序。spec.eviction.minDelaySec
:清除檔案可收回之前的秒數 (預設值為 300)。 這個數字的範圍可以介於 0 到 31536000 之間。
apiVersion: arccontainerstorage.azure.net/v1 kind: EdgeIngestPolicy metadata: name: <create-a-policy-name-here> # This must be updated and referenced in the spec.ingestPolicy section of the edgeSubvolume.yaml spec: ingest: order: <your-ingest-order> minDelaySec: <your-min-delay-sec> eviction: order: <your-eviction-order> minDelaySec: <your-min-delay-sec>
如需這些規格的詳細資訊,請參閱設定內嵌原則。
若要套用
myedgeingest-policy.yaml
,請執行:kubectl apply -f "myedgeingest-policy.yaml"
連結您的應用程式 (Kubernetes 原生應用程式)
若要針對永續性磁碟區宣告 (PVC) 設定一般單一 Pod (Kubernetes 原生應用程式),請建立名為
deploymentExample.yaml
的檔案,其中包含下列內容。 修改containers.name
和volumes.persistentVolumeClaim.claimName
值。 如果您從edgeSubvolume.yaml
更新路徑名稱,則必須使用新的路徑名稱來更新第 33 行上的exampleSubDir
。spec.replicas
參數會決定要建立的複本 Pod 數目。 在此範例中有 2 個,但可以修改以符合您的需求:注意
請只使用小寫字母和數字。 如需詳細資訊,請參閱 Kubernetes 物件命名文件。
apiVersion: apps/v1 kind: Deployment metadata: name: cloudingestedgevol-deployment ### This must be unique for each deployment you choose to create. spec: replicas: 2 selector: matchLabels: name: wyvern-testclientdeployment template: metadata: name: wyvern-testclientdeployment labels: name: wyvern-testclientdeployment spec: affinity: podAntiAffinity: requiredDuringSchedulingIgnoredDuringExecution: - labelSelector: matchExpressions: - key: app operator: In values: - wyvern-testclientdeployment topologyKey: kubernetes.io/hostname containers: ### Specify the container in which to launch the busy box. ### - name: <create-a-container-name-here> image: mcr.microsoft.com/azure-cli:2.57.0@sha256:c7c8a97f2dec87539983f9ded34cd40397986dcbed23ddbb5964a18edae9cd09 command: - "/bin/sh" - "-c" - "dd if=/dev/urandom of=/data/exampleSubDir/acsaingesttestfile count=16 bs=1M && while true; do ls /data &>/dev/null || break; sleep 1; done" volumeMounts: ### This name must match the volumes.name attribute below ### - name: wyvern-volume ### This mountPath is where the PVC is attached to the pod's filesystem ### mountPath: "/data" volumes: ### User-defined 'name' that's used to link the volumeMounts. This name must match volumeMounts.name as previously specified. ### - name: wyvern-volume persistentVolumeClaim: ### This claimName must refer to your PVC metadata.name (Line 5) claimName: <your-pvc-metadata-name-from-line-5-of-pvc-yaml>
若要套用
deploymentExample.yaml
,請執行:kubectl apply -f "deploymentExample.yaml"
使用
kubectl get pods
來尋找 Pod 的名稱。 複製此名稱以在下一個步驟中使用。注意
由於
deploymentExample.yaml
中的spec.replicas
已指定為2
,因此使用kubectl get pods
會出現兩個 Pod。 您可以選擇任一 Pod 名稱以用於下一個步驟。執行下列命令,並將
POD_NAME_HERE
取代為您在最後一個步驟中複製的值:kubectl exec -it POD_NAME_HERE -- sh
將目錄變更為從
deploymentExample.yaml
指定的/data
掛接路徑。您應該會在 [將子磁碟區附加至邊緣磁碟區] 區段的步驟 2 中查看指定為
path
的目錄。 將目錄變更為/YOUR_PATH_NAME_HERE
,並將YOUR_PATH_NAME_HERE
值取代為您的詳細資料。例如,建立名為
file1.txt
的檔案,並使用echo "Hello World" > file1.txt
寫入其中。在 Azure 入口網站中,瀏覽至您的儲存體帳戶,並尋找從 [將子磁碟區附加至邊緣磁碟區] 的步驟 2 中指定的容器。 當您選取容器時,應該會找到已在容器中填入的
file1.txt
。 如果檔案尚未出現,請等候大約 1 分鐘;邊緣磁碟區在上傳前會等候 1 分鐘。
下一步
完成這些步驟之後,您可以使用 Azure 監視器和 Kubernetes 監視功能或使用第三方監視功能搭配 Prometheus 和 Grafana 開始監視部署。