我想通过持久的卷为所有Kubernetes气流吊舱(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
在图表稳定/气流中,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来塞住dags /:
command: ["sh", "-c", "chown -R 1000:1000 /dags"]
除{@ 3}}中建议的那样,该代码对除工人之外的所有工人都有效(因为它们是由花朵制成的?)
我也看到了fsGroup等的讨论-例如https://serverfault.com/a/907160/464205
我试图避免编辑气流图(这似乎需要对至少两个部署-*。yaml文件以及其他文件进行破解),但这也许是不可避免的。
流水线:
通过持久卷向具有正确权限的Kubernetes上运行的所有气流吊舱提供DAG的最简单方法是什么?
另请参阅:
Kubernetes NFS persistent volumes permission denied
Persistent volume atached to k8s pod group [对我来说不清楚如何将其与气流舵图表结合起来
Kubernetes NFS persistent volumes permission denied [非详细,非特定气流]
答案 0 :(得分:0)
我认为您确实需要编辑气流图,方法是在deployments-web.yaml
下的deployments-scheduler.yaml
和spec.template.spec
中添加以下代码段:
kind: Deployment
spec:
template:
spec:
securityContext:
runAsUser: 1000
runAsGroup: 1000
fsGroup: 1000
fsUser: 1000
这可以让人们使用例如
kubectl cp my_dag.py my_namespace/airflow-worker-0:/usr/local/airflow/dags/