Mounting a copy of a managed disk on AKS

6/4/2018

I am trying to create a pod that uses an existing Managed Disk as the source for the disks that are mounted. I can attach the managed disk directly, but I can't make it work via PV and a PVC.

These are the files I'm using

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

The ultimate goal is to create a Statefulset that will deploy a cluster of Pods with the same Managed disk as the source for them all.

Any pointers would be appreciated!

Updated to add

The above will create a new disk for each instance (pod) that is launched. I am looking to create a new disk using the createOption: fromImage

So I'm looking for the underlying Azure infrastructure to create a copy of the existing managed disk, and then attach that to the pod(s) that are launched.

-- Michael B
azure
azure-aks
kubernetes

2 Answers

6/14/2018

After a conversation with one of the AKS developers, I was told that it is only possible to either attach an existing disk or to create a new, empty disk to AKS. It is unclear whether this will change in future.

-- Michael B
Source: StackOverflow

6/4/2018

Kubernetes provides access mode of 3 types for mounting Persistent Volumes to a Pod:

  • ReadWriteOnce – the volume can be mounted as read-write by a single node
  • ReadOnlyMany – the volume can be mounted read-only by many nodes
  • ReadWriteMany – the volume can be mounted as read-write by many nodes

In your case, if you want to mount one volume to many pods, you need to use accessModes: ReadWriteMany. So, you need to check, it is possible to use this mode for Azure.

For more information, you can go through that link

-- Artem Golenyaev
Source: StackOverflow