你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:配置本地共享边缘卷

本教程将介绍如何配置本地共享边缘卷。 此卷类型位于 Kubernetes 群集本地,支持多次读写存储器。 这种共享存储类型独立于云基础结构,因此成了临时空间、临时存储和不适合云目标的本地持久数据的理想选择。 对于要在边缘积极处理、更改或处理的数据,此卷类型也是理想的目标位置。

本教程涵盖以下任务:

  • 创建本地共享边缘卷 PVC
  • 创建示例部署
  • 连接到 Pod
  • 编写示例文件

先决条件

创建本地共享边缘卷 PVC

本部分为本地共享卷创建持久卷声明 (PVC)。 指定要为此卷配置的空间。

创建包含以下内容的名为 localSharedPVC.yaml 的文件。 使用永久性卷声明的名称修改 metadata.name 值。 然后,在第 8 行中指定与预期使用的 Pod 匹配的命名空间。 metadata.name 值将在下一步中 deploymentExample.yaml 的最后一行引用。 spec.resources.requests.storage 参数可确定永久性卷的大小。 它在此示例中为 2 GB,但可以修改它以满足你的需求:

注意

只使用小写字母和短划线。 有关详细信息,请参阅 Kubernetes 对象命名文档

kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  ### Create a name for your PVC ###
  name: <create-a-pvc-name-here>
  ### Use a namespace that matches your intended consuming pod, or "default" ###
  namespace: <intended-consuming-pod-or-default-here>
spec:
  accessModes:
    - ReadWriteMany
  resources:
    requests:
      storage: 2Gi
  storageClassName: unbacked-sc

然后,运行以下命令以应用 YAML 文件并创建 PVC:

kubectl apply -f "localSharedPVC.yaml"

创建示例部署或使用自己的部署

如果已有要部署的应用程序,可在此处使用。 为了简单起见并便于入手,我们在此处包含了一个示例部署。 若要使用我们的示例配置创建部署,请创建一个名为 deploymentExample.yaml 的文件,其中包含以下内容。 为 containers.namevolumes.persistentVolumeClaim.claimName 添加值。 spec.replicas 参数可确定要创建的副本 Pod 数。 它在此示例中为 2,但可以修改它以满足你的需求:

注意

只使用小写字母和短划线。 有关详细信息,请参阅 Kubernetes 对象命名文档

apiVersion: apps/v1 
kind: Deployment 
metadata: 
  name: localsharededgevol-deployment ### This will need to be unique for every volume 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/mirror/docker/library/busybox:1.35' 
          command: 
            - "/bin/sh" 
            - "-c" 
            - "dd if=/dev/urandom of=/data/acsalocalsharedtestfile count=16 bs=1M && while true; do ls /data &>/dev/null || break; sleep 1; done" 
          volumeMounts: 

            ### This name must match the following volumes::name attribute ### 
            - name: wyvern-volume 

              ### This mountPath is where the PVC will be attached to the pod's filesystem ### 
              mountPath: /data 
      volumes: 

        ### User-defined name that is 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 from lsevPVC.yaml. 
            claimName: <your-pvc-metadata-name-from-line-5-of-pvc-yaml>

然后,运行以下命令以应用 YAML 文件并创建部署:

kubectl apply -f "deploymentExample.yaml"

连接到 Pod

运行 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 装载路径。

写入示例文件

现在,你已连接到 pod 并处于装载路径中,你在此处写入的任何文件都会出现在卷中。

例如,创建一个名为 file1.txt 的文件并使用 echo "Hello World" > file1.txt 写入它。

现在,你可以看到自己编写的文件位于目录中。

后续步骤

完成这些步骤后,开始使用 Azure Monitor 和 Kubernetes 监视功能来监视部署,或者使用 Prometheus 和 Grafana 进行第三方监视。