idk*_*idk 3 kubernetes airflow kubernetespodoperator
我正在尝试使用 Airflow kubernetes pod 操作符创建并运行 pod。下面的命令经过尝试并确认有效,我正在尝试在本地使用 kubernetes pod 操作员复制相同的命令
kubectl run sparkairflow -n test-namespace --image=some-docker-repo.com:hello-world --serviceaccount=airflow --restart=Never -- spark-submit --deploy-mode cluster --master k8s://kubernetes.default.cluster.local:123 \
--name sparkairflow \
--conf spark.kubernetes.namespace=test-namespace \
--conf spark.kubernetes.container.image=some-docker-repo.com:hello-world \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=airflow \
...
Run Code Online (Sandbox Code Playgroud)
在这里遇到了麻烦,因为似乎没有办法使用气流传递 --serviceaccount 标志,而这是我的实现所必需的,这会在我这边引发错误。
线程“main”中出现异常 io.fabric8.kubernetes.client.KubernetesClientException:pods“sparkairflow-155252344-driver”被禁止:用户“system:serviceaccount:test-namespace:default”无法观看 API 组“”中的资源“pods”在命名空间“test-namespace”中:访问被拒绝
到目前为止,我找到的解决方案主要侧重于将默认用户添加到命名空间角色,但这对于我的情况来说是不可能的。
有什么方法可以将 serviceaccount 标志传递给气流 kubernetes 操作员吗?
谢谢!
KubernetesPodOperator 包含一个参数service_account_name,您可以使用该参数指定 K8s 服务帐户。它适用于 Airflow v2 和 v1.10,只是后者没有记录。
示例调用(主要取自https://airflow.apache.org/docs/apache-airflow-providers-cncf-kubernetes/stable/operators.html):
quay_k8s = KubernetesPodOperator(
namespace='default',
image='quay.io/apache/bash',
service_account_name="my_k8s_svc_acct",
cmds=["bash", "-cx"],
name="airflow-private-image-pod",
task_id="task-two",
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6476 次 |
| 最近记录: |