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

本地共享边缘卷

本文介绍了适用于本地共享边缘卷(高度可用的持久本地存储)的配置。

什么是本地共享边缘卷?

本地共享边缘卷功能可提供位于 Kubernetes 群集的本地,高度可用且支持故障转移的存储。 这种共享存储类型与云基础结构无关,因此非常适合暂存空间、临时存储和可能不适合于云目标的本地持久性数据。

创建本地共享边缘卷永久性卷声明 (PVC),并针对 PVC 配置 Pod

  1. 创建包含以下内容的名为 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
    
  2. 创建包含以下内容的名为 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>
    
  3. 要应用这些 YAML 文件,请运行:

    kubectl apply -f "localSharedPVC.yaml"
    kubectl apply -f "deploymentExample.yaml"
    
  4. 运行 kubectl get pods 以查找 Pod 的名称。 复制此名称,因为下一步需要使用它。

    注意

    由于已将 deploymentExample.yamlspec::replicas 指定为 2,因此会出现两个使用 kubectl get pods 的 Pod。 可以选择任一 Pod 名称用于下一步。

  5. 运行以下命令,并将 POD_NAME_HERE 替换为上一步复制的值:

    kubectl exec -it pod_name_here -- sh
    
  6. 将目录更改为 deploymentExample.yaml 中指定的 /data 装载路径。

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

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

后续步骤

监视部署