由于 volumeMount 配置,Azure 容器应用无法启动

由于 volumeMount 配置,Azure 容器应用无法启动

我在尝试为 Azure 云中的容器应用设置持久文件存储时遇到了一个问题。我遵循了本教程:https://learn.microsoft.com/en-us/azure/container-apps/storage-mounts-azure-files?tabs=bash

我的问题出现在“创建存储挂载”第 9 点:我更新了 app.yaml,然后运行命令来创建新的修订版本。它在终端中成功了,但在 Azure 页面的修订列表中,新修订版本无法启动。它的执行状态为“故障”,但没有提供任何有关失败的详细信息。只有在系统日志中,我才收到一条错误消息,没有错误代码,只是说存储挂载失败了——没有给出原因。

这是我编辑的 app.yml 的部分:

...
  template:
    containers:
    - image: nginx
      name: trendy-app
      resources:
        cpu: 0.5
        ephemeralStorage: 2Gi
        memory: 1Gi
      volumeMounts:
      - volumeName: trendy-file-volume
        mountPath: /var/log/nginx
    initContainers: null
    revisionSuffix: ''
    scale:
      maxReplicas: 1
      minReplicas: 1
      rules: null
    serviceBinds: null
    terminationGracePeriodSeconds: null
    volumes:
    - name: trendy-file-volume
      storageName: trendystoragemount
      storageType: AzureFile
    - name: trendy-app
      storageType: EmptyDir
  workloadProfileName: Consumption
...

当我删除 volumeMounts 的配置行时,容器按预期启动 - 只是显然没有挂载的存储。当我添加它但使用不存在的名称时,命令az containerapp update会失败并出现有意义的错误,即挂载不存在。使用配置,命令运行,但容器启动失败。所以是的,存储卷的配置有问题,但我不知道如何找出问题所在。

我检查了名称并尝试重新运行教程中的命令,但没有发现我的错误。此时我陷入困境,需要帮助来调试它。

谢谢你,Dahie

答案1

我认为您的 app.yml 不正确,请检查日志,但它应该看起来像这样(例如)。

name: nginx-azure-app
location: eastus
resourceGroup: myResourceGroup
containerName: nginx-container
cpu: 0.5
memory: 0.5Gi
instanceCount: 1

services:
- name: nginx-service
  image: nginx
  ports:
    - protocol: TCP
      port: 80
  volumeMounts:
    - name: nginx-volume
      mountPath: /usr/share/nginx/html
    - name: nginx-logs
      mountPath: /var/log/nginx

volumes:
- name: nginx-volume
  storageName: mystorageshare
  storageType: AzureFile
  shareName: myshare
  readOnly: false
  secretName: mystoragesecret
  secretMountPath: /mnt/azure

- name: nginx-logs
  storageName: mystorageshare
  storageType: AzureFile
  shareName: myshare
  readOnly: false
  secretName: mystoragesecret
  secretMountPath: /mnt/azure-logs

secrets:
- name: mystoragesecret
  storageAccount: mystorageaccount
  shareName: myshare
  accessKey: mystorageaccesskey

相关内容