Airflow:无法使用 KubernetesExecutor 和 PV 获取持久日志(官方 helm 图表)

D. *_*uis 3 kubernetes airflow kubernetes-helm airflow-scheduler

我感觉有点像个白痴,但在使用 KubernetesExecutor 和新发布的官方 Helm 图表时,我似乎无法在持久卷上进行日志记录。

手动创建简单的PVPVC后,我在values.yaml文件的底部更改了以下内容:

logs:
  persistence:
    # Enable persistent volume for storing logs
    enabled: true
    # Volume size for logs
    size: 100Gi
    # If using a custom storageClass, pass name here
    storageClassName:
    ## the name of an existing PVC to use
    existingClaim: airflow-logs
Run Code Online (Sandbox Code Playgroud)

Helm 官方文档中部分描述了此过程。尽管如此,气流调度程序 Pod 由于权限错误而崩溃,因为我无法在已安装的日志文件夹中写入:此处的日志

当持久日志记录关闭时,除了任务日志记录之外,所有内容都正常工作,因为这些日志记录会在删除worker-pod时被删除。

任何对解决方案的帮助将不胜感激!

D. *_*uis 6

我认为使用标准持久卷方法是最简单的(我仍然是 k8s 新手),但我没想到使用 azure-file-storage-class (SC) 设置一个方法会如此简单。这些挂载可以使用 SC yaml 文件中的 777 权限进行设置,不确定这是否是唯一的解决方法,因为我还在 SC 挂载选项中设置了 uid/gid。不管怎样,一切似乎都很顺利。

作为其他人的参考,我的 azure-file-sc.yaml :

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: airflow-logs
provisioner: kubernetes.io/azure-file
mountOptions:
  - dir_mode=0777
  - file_mode=0777
  - uid=50000
  - gid=0
  - mfsymlinks
  - cache=strict
  - actimeo=30
parameters:
  skuName: Standard_LRS
Run Code Online (Sandbox Code Playgroud)

我的 azure-file-pvc.yaml:

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: airflow-logs
  namespace: airflow
  labels:
    app: airflow-logs
spec:
  accessModes:
    - ReadWriteMany
  storageClassName: airflow-logs
  resources:
    requests:
      storage: 20Gi
Run Code Online (Sandbox Code Playgroud)

value.yaml 未更改。

这样,持久日志记录就像 Azure Kubernetes 服务 (AKS) 中的魅力一样。

希望这对其他人有帮助!丹尼斯