Kubernetes - 尝试部署时“挂载卷失败”

Posted

技术标签:

【中文标题】Kubernetes - 尝试部署时“挂载卷失败”【英文标题】:Kubernetes - "Mount Volume Failed" when trying to deploy 【发布时间】:2021-02-04 00:51:13 【问题描述】:

我部署了我的第一个容器,我得到了信息:

deployment.apps/frontarena-ads-deployment created

但后来我看到我的容器创建卡在等待状态。 然后我看到了使用kubectl describe pod frontarena-ads-deployment-5b475667dd-gzmlp 的日志并看到了 MountVolume 错误,我不知道为什么会抛出它:

警告 FailedMount 9m24s kubelet MountVolume.SetUp 卷“ads-filesharevolume”失败:挂载失败:退出状态 32 挂载命令: systemd-run 挂载参数:--description=Kubernetes 瞬态 安装为 /var/lib/kubelet/pods/85aa3bfa-341a-4da1-b3de-fb1979420028/volumes/kubernetes.io~azure-file/ads-filesharevolume --scope -- mount -t cifs -o username=frontarenastorage,password=mypassword,file_mode=0777,dir_mode=0777,vers=3.0 //frontarenastorage.file.core.windows.net/azurecontainershare /var/lib/kubelet/pods/85aa3bfa-341a-4da1-b3de-fb1979420028/volumes/kubernetes.io~azure-file/ads-filesharevolume 输出:以单位运行范围 运行-rf54d5b5f84854777956ae0e25810bb94.scope。安装错误(115): 操作正在进行中 请参阅 mount.cifs(8) 手册页(例如 man mount.cifs)

在运行部署之前,我使用已在 YAML 中引用的已创建的 azure 文件共享在 Azure 中创建了一个机密。

$AKS_PERS_STORAGE_ACCOUNT_NAME="frontarenastorage"
$STORAGE_KEY="mypassword"
kubectl create secret generic fa-fileshare-secret --from-literal=azurestorageaccountname=$AKS_PERS_STORAGE_ACCOUNT_NAME --from-literal=azurestorageaccountkey=$STORAGE_KEY

在该文件共享中,我有需要挂载的文件夹和文件,我在 YAML 中引用了 azurecontainershare

我的 YAML 如下所示:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: frontarena-ads-deployment
  labels:
    app: frontarena-ads-deployment
spec:
  replicas: 1
  template:
    metadata:
      name: frontarena-ads-aks-test
      labels:
        app: frontarena-ads-aks-test
    spec:
      containers:
      - name: frontarena-ads-aks-test
        image: faselect-docker.dev/frontarena/ads:test1
        imagePullPolicy: Always
        ports:
          - containerPort: 9000
        volumeMounts:
          - name: ads-filesharevolume
            mountPath: /opt/front/arena/host
      volumes:
      - name: ads-filesharevolume
        azureFile:
          secretName: fa-fileshare-secret
          shareName: azurecontainershare
          readOnly: false
      imagePullSecrets:
        - name: fa-repo-secret
  selector:
    matchLabels:
      app: frontarena-ads-aks-test

【问题讨论】:

存储帐户是否与 AKS 群集位于同一区域? 哇! AKS 群集是美国西部 2 存储帐户是美国东部 2 这是一个问题吗?你有这个链接或网址吗?你能详细解释一下吗? @CharlesXu 如果他们搞砸了这个区域混合,我想向他们发送一些官方信息/文档,如果这真的是一个问题...... 这只是一个猜测。实际上,存储帐户区域无关紧要。我已经测试过了。而且您的 YAML 文件似乎没有问题。 是否有更多关于错误的详细信息? 【参考方案1】:

问题是因为部署了 AKS 群集和 Azure 文件共享的不同 Azure 区域。如果他们在同一个地区,你就不会遇到这个问题。

【讨论】:

以上是关于Kubernetes - 尝试部署时“挂载卷失败”的主要内容,如果未能解决你的问题,请参考以下文章

从远程机器上部署的 kubernetes 仪表板服务访问本地笔记本电脑时无法访问站点问题

kubernetes部署springboot项目使用configmap尝试

在Kubernetes上部署Redis集群

Kubernetes 不允许将文件挂载到容器

kubernetes部署springboot项目使用configmap尝试

进行 Kubernetes 部署相关操作时的语法差异