在 AKS 上装载托管磁盘的副本

Mounting a copy of a managed disk on AKS

我正在尝试创建一个 pod,它使用现有的托管磁盘作为已安装磁盘的源。我可以直接附加托管磁盘,但无法通过 PV 和 PVC 使其工作。

这些是我正在使用的文件

pvclaim.yml

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: mongo-pvc
  annotations:
    volume.beta.kubernetes.io/storage-class: default
spec:
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 256Gi
  storageClassName: default

pvdisk.yml

apiVersion: v1
kind: PersistentVolume
metadata:
  name: mongo-pv
spec:
  capacity:
    storage: 256Gi
  storageClassName: default
  azureDisk:
      kind: Managed
      diskName: Mongo-Data-Test01
      fsType: xfs
      diskURI: /subscriptions/<SubId>/resourceGroups/Static-Staging-Disks-Centralus/providers/Microsoft.Compute/disks/Mongo-Data-Test01
  accessModes:
  - ReadWriteOnce
  claimRef:
    name: mongo-pvc
    namespace: default

pvpod.yml

apiVersion: v1
kind: Pod
metadata:
name: adisk
spec:
containers:
  - image: nginx
    name: azure
    volumeMounts:
      - name: azuremount
        mountPath: /mnt/azure
volumes:
  - name: azuremount
    persistentVolumeClaim:
      claimName: mongo-pvc

最终目标是创建一个 Statefulset,它将部署 Pods 的集群,并使用相同的托管磁盘作为所有集群的源。

如有指点,我们将不胜感激!

更新添加

以上将为启动的每个实例(pod)创建一个新磁盘。我希望使用 createOption: fromImage

创建一个新磁盘

所以我正在寻找底层 Azure 基础结构来创建现有托管磁盘的副本,然后将其附加到已启动的 pod。

Kubernetes 提供了 3 种类型的 Persistent Volume 挂载到 Pod 的访问方式:

  • ReadWriteOnce – 卷可以被单个节点挂载为读写
  • ReadOnlyMany – 该卷可以被多个节点以只读方式挂载
  • ReadWriteMany – 卷可以被许多节点挂载为读写

在你的情况下,如果你想将一个卷安装到多个 pods,你需要使用 accessModes: ReadWriteMany。因此,您需要检查,是否可以将此模式用于 Azure。

要了解更多信息,您可以浏览 link

在与一位 AKS 开发人员交谈后,我被告知只能将现有磁盘附加到 AKS 或创建一个新的空磁盘。目前尚不清楚这是否会在未来发生变化。