一个带有共享 Azure Disk 的 Pod

Deployment 自动部署一个带有共享 Azure Disk 的 Pod ,并启用 StorageClass 动态创建 Azure Disk


🧱 场景说明

你将得到:

  1. ✅ 一个 StorageClass(动态创建 Azure Disk)
  2. ✅ 一个 PersistentVolumeClaim(申请磁盘)
  3. ✅ 一个 Deployment,包含一个 Pod,里面有两个容器,共享挂载 Azure Disk

✅ 第一步:创建 StorageClass(自动创建 Azure Disk)

yaml 复制代码
yaml
CopyEdit
# storageclass.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
  name: managed-csi
provisioner: disk.csi.azure.com
parameters:
  skuName: Standard_LRS  # 可选值:StandardSSD_LRS / Premium_LRS 等
  kind: managed
reclaimPolicy: Delete
volumeBindingMode: WaitForFirstConsumer

💡 说明:

  • provisioner 是 Azure CSI 驱动(AKS 现在推荐用 CSI)
  • volumeBindingMode: WaitForFirstConsumer 确保磁盘只会在 Pod 确定调度节点后才绑定
  • 这个 StorageClass 是动态创建 Azure Disk 的关键

✅ 第二步:创建 PVC(自动触发创建 Azure Disk)

yaml 复制代码
yaml
CopyEdit
# pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: azure-disk-pvc
spec:
  accessModes:
    - ReadWriteOnce  # 只允许一个节点挂载,但 Pod 内多个容器没问题
  storageClassName: managed-csi
  resources:
    requests:
      storage: 5Gi

✅ 第三步:创建 Deployment(两个容器共享挂载 Azure Disk)

yaml 复制代码
yaml
CopyEdit
# deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: azure-disk-demo
spec:
  replicas: 1
  selector:
    matchLabels:
      app: azure-disk-demo
  template:
    metadata:
      labels:
        app: azure-disk-demo
    spec:
      containers:
        - name: writer
          image: busybox
          command: ["sh", "-c", "echo written-by-writer > /mnt/data/data.txt; sleep 3600"]
          volumeMounts:
            - name: azure-disk
              mountPath: /mnt/data
        - name: reader
          image: busybox
          command: ["sh", "-c", "cat /mnt/data/data.txt; sleep 3600"]
          volumeMounts:
            - name: azure-disk
              mountPath: /mnt/data
      volumes:
        - name: azure-disk
          persistentVolumeClaim:
            claimName: azure-disk-pvc

✅ 使用方法

复制代码
bash
CopyEdit
kubectl apply -f storageclass.yaml
kubectl apply -f pvc.yaml
kubectl apply -f deployment.yaml

然后执行:

bash 复制代码
bash
CopyEdit
kubectl get pod
kubectl exec -it <pod-name> -c reader -- cat /mnt/data/data.txt

你会看到 written-by-writer,说明两个容器确实共享了 Azure Disk 的内容 ✅

相关推荐
苍何8 小时前
保姆级教程,Codex 接入 DeepSeek V4 Pro 和 Grok 4.6,6 种方法全整理
后端
苍何8 小时前
全球首款原生全模态交互式世界模型来了,AI 视频终于能“玩”了
后端
一只叫煤球的猫8 小时前
Spring AI 2.0 源码解析(一):一次 ChatClient 调用到底经历了什么?
后端·面试·ai编程
andongni2038 小时前
后端参数校验
spring boot·后端·mybatis
颜进强8 小时前
06 - OpenSpec change 从模糊想法到完整契约:new change / explore / propose 三连
前端·后端·ai编程
Cache技术分享8 小时前
499. Java 反射 - 获取类型上的注解
前端·后端
用户69371750013848 小时前
9531 款 AI 工具流量真相:当 90% 的访问涌向 100 个平台,普通创业者还有机会吗?
前端·后端
颜进强8 小时前
07 - OpenSpec change 修正带与照单施工:update 修订 + apply 实现
前端·后端·ai编程
Scene2168 小时前
线程调度与 Schedulers:Project Reactor 并发模型的核心引擎
后端