【发布时间】:2023-04-06 11:17:02
【问题描述】:
我想通过持久卷向所有 Kubernetes 气流 pod(Web、调度程序、工作人员)提供 DAG,
kubectl create -f pv-claim.yaml
pv-claim.yaml 包含:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: airflow-pv-claim
annotations:
pv.beta.kubernetes.io/gid: "1000"
pv.beta.kubernetes.io/uid: "1000"
spec:
storageClassName: standard
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
那么部署命令是:
helm install --namespace my_name --name "airflow" stable/airflow --values ~my_name/airflow/charts/airflow/values.yaml
在图表 stable/airflow 中,values.yaml 还允许指定持久性:
persistence:
enabled: true
existingClaim: airflow-pv-claim
accessMode: ReadWriteMany
size: 1Gi
如果我这样做了
kubectl exec -it airflow-worker-0 -- /bin/bash
touch dags/hello.txt
我收到权限被拒绝错误。
我尝试破解气流图来设置一个 initContainer 来 chown dags/:
command: ["sh", "-c", "chown -R 1000:1000 /dags"]
这对除了工人之外的所有人都有效(因为它们是由花创造的?),正如 https://serverfault.com/a/907160/464205 所建议的那样
我还看到了 fsGroup 等的讨论 - 参见例如Kubernetes NFS persistent volumes permission denied
我试图避免编辑气流图表(这似乎需要对至少两个部署-*.yaml 文件以及另一个文件进行破解),但这也许是不可避免的。
妙语:
通过持久卷将 DAG 配置到 Kubernetes 上运行的所有气流 pod 并具有正确权限的最简单方法是什么?
另见:
Persistent volume atached to k8s pod group
Kubernetes NFS persistent volumes permission denied [我不清楚如何将其与气流舵图集成]
Kubernetes - setting custom permissions/file ownership per volume (and not per pod) [非详细,非特定气流]
【问题讨论】:
标签: kubernetes airflow