0

I'm testing the new Azure Container Service. The documentation mentions that the service orchestrates volumes using microservice-based storage controllers and emphasizes the benefits of using the service compared to the classic CSI. However, it seems that it's still utilizing CSI drivers.

kubectl get csidrivers.storage.k8s.io                                                    
NAME                             ATTACHREQUIRED   PODINFOONMOUNT   STORAGECAPACITY   TOKENREQUESTS   REQUIRESREPUBLISH   MODES                  AGE
containerstorage.csi.azure.com   true             false            false             <unset>         false               Persistent             44h
disk.csi.azure.com               true             false            false             <unset>         false               Persistent             47h
file.csi.azure.com               false            true             false             <unset>         false               Persistent,Ephemeral   47h
san.csi.azure.com                true             false            false             <unset>         true                Persistent,Ephemeral   44h

Additionally, after I installed the extension and deployed a StoragePool resource using AzureDisk, I observed that it internally creates an OpenEBS DiskPool as well as a custom DiskPool resource. The DiskPool utilizes a pod with a specific image to manage its capacity.

$ kubectl get dsp -A                                                                                  
NAMESPACE   NAME        NODE                                STATUS   CAPACITY       USED        AVAILABLE      RESERVED
acstor      csi-zvpkp   aks-agentpool-25098983-vmss000003   Online   107321753600   782135296   106539618304   782135296

$  kubectl describe dsp -n acstor csi-zvpkp                                             
Name:         csi-zvpkp
Namespace:    acstor
Labels:       acstor.azure.com/diskpool=azuredisk-diskpool-dfjxv
              acstor.azure.com/managedby=capacity-provisioner
              acstor.azure.com/storagepool=azuredisk
              acstor.azure.com/worker=diskpool-worker-lnhsc
Annotations:  <none>
API Version:  openebs.io/v1alpha1
Kind:         DiskPool
Metadata:
  ...
  Owner References:
    API Version:           containerstorage.azure.com/v1alpha1
    Block Owner Deletion:  true
    Controller:            true
    Kind:                  DiskPool
    Name:                  azuredisk-diskpool-dfjxv
    UID:                   c82a20df-32ac-432b-b70a-f6a4bb9d30f3
  Resource Version:        994518
  UID:                     7032bf2a-5c38-4680-bbe0-65c984e00359
Spec:
  Disks:
    /dev/sdc
  Node:  aks-agentpool-25098983-vmss000003
...

Can you explain the relationships between these components and describe the general workflow? Moreover, since this service still utilizes CSI, what are the benefits of enabling the traditional CSI drivers in the cluster with the following command?

az aks update -n myAKSCluster -g myResourceGroup --enable-disk-driver --enable-file-driver --enable-blob-driver --enable-snapshot-controller
GTRekter
  • 905
  • 11
  • 21

0 Answers0