如何在 AKS 集群的工作节点中启用 Blob 驱动程序?

问题描述 投票:0回答:1

我尝试为我的 AKS 集群使用 Azure Blob 存储。首先,我通过在 Azure 云 shell 中运行以下命令来启用集群中的 Blob CSI 驱动程序:

az aks update --enable-blob-driver -n mycluster -g mygp

然后我通过运行检查了它:

kubectl get sc

结果如下:

NAME                     PROVISIONER          RECLAIMPOLICY   VOLUMEBINDINGMODE      ALLOWVOLUMEEXPANSION   AGE
azureblob-fuse-premium   blob.csi.azure.com   Delete          Immediate              true                   39m
azureblob-nfs-premium    blob.csi.azure.com   Delete          Immediate              true                   39m

然后我应用此 .yaml 创建了一个持久卷声明 (PVC):

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: azure-blob-storage
spec:
  accessModes:
  - ReadWriteMany
  storageClassName: azureblob-nfs-premium
  resources:
    requests:
      storage: 1Gi

PVC创建成功,命令

kubectl get pvc
显示:

NAME                 STATUS   VOLUME                                     CAPACITY   ACCESS MODES   STORAGECLASS            AGE
azure-blob-storage   Bound    pvc-7156b751-644c-4d21-829e-037ddf7528c4   1Gi        RWX            azureblob-nfs-premium   24m

然后我使用这个 .yaml 将 PVC 安装到我的 Pod:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: mongo2-deployment
  labels:
    app: mongo2
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mongo2
  template:
    metadata:
      labels:
        app: mongo2
    spec:
      volumes:
        - name: volume
          persistentVolumeClaim:
            claimName: azure-blob-storage
      containers:
      - name: mongo2db
        image: mongo:latest
        ports:
        - containerPort: 27017
        env:
        - name: MONGO_INITDB_ROOT_USERNAME
          valueFrom:
            secretKeyRef:
              name: mongo2-secret
              key: mongo-user
        - name: MONGO_INITDB_ROOT_PASSWORD
          valueFrom:
            secretKeyRef:
              name: mongo2-secret
              key: mongo-password
        - name: MONGO_INITDB_DATABASE
          valueFrom:
            configMapKeyRef:
              name: mongo2-config
              key: mongo-dbase
        volumeMounts:
          - mountPath: "/data/db"
            name: volume
            readOnly: false

但是当我应用上面的 .yaml 时,pod 停留在“Creating”状态。当我运行命令

kubectl describe pod/<pod_name>
时,显示以下消息:

Events:
  Type     Reason       Age                From               Message
  ----     ------       ----               ----               -------
  Normal   Scheduled    95s                default-scheduler  Successfully assigned default/mongo2-deployment-7b9ddbf54b-6p2wr to aks-userpool-13168364-vmss00000j
  Warning  FailedMount  32s (x8 over 95s)  kubelet            MountVolume.MountDevice failed for volume "pvc-527cc87f-b369-41c5-a571-ed2c57fd4c3f" : kubernetes.io/csi: attacher.MountDevice failed to create newCsiDriverClient: driver name blob.csi.azure.com not found in the list of registered CSI drivers

然后我尝试查看节点是否有 Blob 驱动程序,我通过运行

kubectl describe csinodes aks-agentpool-13168364-vmss00000c
:

发现了这一点
Spec:
  Drivers:
    disk.csi.azure.com:
      Node ID:  aks-agentpool-13168364-vmss00000c
      Allocatables:
        Count:        4
      Topology Keys:  [topology.disk.csi.azure.com/zone topology.kubernetes.io/zone]
    file.csi.azure.com:
      Node ID:  aks-agentpool-13168364-vmss00000c
    blob.csi.azure.com:
      Node ID:  aks-agentpool-13168364-vmss00000c

但是当我运行

kubectl describe csinodes aks-userpool-13168364-vmss00000j
时,我发现blob.csi.azure.com不在用户节点池中:

Spec:
  Drivers:
    disk.csi.azure.com:
      Node ID:  aks-userpool-13168364-vmss00000j
      Allocatables:
        Count:        4
      Topology Keys:  [topology.disk.csi.azure.com/zone topology.kubernetes.io/zone]
    file.csi.azure.com:
      Node ID:  aks-userpool-13168364-vmss00000j

我相信这就是我的 Pod 无法启动的原因。但是如何将 blob.csi.azure.com 注册到用户节点池中呢?

附注我的 AKS 集群是 Linux 集群,既用于代理节点池,又用于用户节点池。

azure-blob-storage azure-aks
1个回答
0
投票

事实证明,Blob Driver 还没有出现在用户节点池中(但至少在我启用驱动程序后大约半小时内没有出现,这可以证明,因为 pvc 存在了 24 分钟,如问题所示)显示)。我停止了集群并在第二天重新启动它,然后 Blob 驱动程序出现,如

kubectl describe csinodes aks-userpool-13168364-vmss00000j
命令的输出所示:

Spec:
  Drivers:
    disk.csi.azure.com:
      Node ID:  aks-userpool-13168364-vmss00000k
      Allocatables:
        Count:        4
      Topology Keys:  [topology.disk.csi.azure.com/zone topology.kubernetes.io/zone]
    file.csi.azure.com:
      Node ID:  aks-userpool-13168364-vmss00000k
    blob.csi.azure.com:
      Node ID:  aks-userpool-13168364-vmss00000k
Events:         <none>

MongoDB Pod 重新启动后即可工作。

© www.soinside.com 2019 - 2024. All rights reserved.