我正在通过Airflow中的KubernetesPodOperator
创建一个广告连播。该Pod应该使用/mnt/bucket
将Google云端存储安装到gcsfuse
。为此,必须使用securityContext
参数来启动Pod,以使其可以成为“特权”。
通过Airflow传递securityContext参数是currently not possible。有另一种方法可以解决此问题?也许通过在Pod启动之前设置“默认” securityContext?我已经考虑过创建PodSecurityPolicy
,但是还没有找到解决方法。
答案 0 :(得分:2)
一个变异入场控制器将允许您执行以下操作:https://kubernetes.io/docs/reference/access-authn-authz/admission-controllers/#mutatingadmissionwebhook
ibm-cloud团队对此发表了一篇文章,但是我从未尝试编写过这样的文章:https://medium.com/ibm-cloud/diving-into-kubernetes-mutatingadmissionwebhook-6ef3c5695f74,而GiantSwarm的人们使用他们的脾气暴躁的准入控制器有一个端到端的示例:{{3 }}
我将使用标签,注释或图像,来标识由Airflow发射的Pod,然后仅对其进行突变以将securityContext:
设置为Pod即可。 >
答案 1 :(得分:2)
与Mutation Admission Controller分开,还可以将DaemonSet部署到将/mnt/bucket
安装到主机文件系统上的群集中,并且Airflow Pod将使用{"name": "bucket", "hostPath": {"path": "/mnt/bucket"}}
作为其{{1} }(假设它可以正常工作)将减少 loadload 的输入,并且也不会招致Mutation Admission Controller破坏您的集群并使Pod神秘地变异的严重风险