你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本教程将介绍如何配置本地共享边缘卷。 此卷类型位于 Kubernetes 群集本地,支持多次读写存储器。 这种共享存储类型独立于云基础结构,因此成了临时空间、临时存储和不适合云目标的本地持久数据的理想选择。 对于要在边缘积极处理、更改或处理的数据,此卷类型也是理想的目标位置。
本教程涵盖以下任务:
- 创建本地共享边缘卷 PVC
- 创建示例部署
- 连接到 Pod
- 编写示例文件
先决条件
- 本教程假设你已经有一个与 Arc 连接的 Kubernetes 集群。 若要将现有 Kubernetes 群集连接到 Azure Arc,请参阅将现有 Kubernetes 群集连接到 Azure Arc。
- 你应该已安装 Azure 容器存储扩展。 如果尚未安装,请参阅安装边缘卷。
创建本地共享边缘卷 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.name
和 volumes.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 进行第三方监视。