【问题标题】:How to run docker image with --privileged in KubernetesPodOperator on airflow如何在气流的 KubernetesPodOperator 中使用 --privileged 运行 docker 映像
【发布时间】:2021-09-15 21:49:45
【问题描述】:

我如何在 GCP 中使用 --privileged docker run 来自 Container Registry 的私有映像 在本地运行它可以正常工作:

docker run -it --privileged --entrypoint /bin/bash ${GKE_APP}

我关注了this,但错误仍然存​​在。

这是我的 DAG:

def process_backup_data(data_to_backup):

    secret_file = Secret('volume', '/etc/secrets', 'my-secret')

    task_env_vars = {'GOOGLE_APPLICATION_CREDENTIALS': "/etc/secrets/my-sa.json}
    

    security_context = {
                        'privileged': True,
                        'allow_privilege_escalation': True,
                        'capabilities': {'add': ['SYS_ADMIN']}
                       }

    return KubernetesPodOperator(image="asia.gcr.io/my-image:latest",
                         env_vars=task_env_vars,
                         cmds=["sh", "run-vpn-script.sh"],
                         arguments=[data_to_backup],
                         labels={"project": "my-project"},
                         name="my-project-backup-datasets",
                         task_id=f"backup_{task_id}",
                         dag=dag,
                         secrets=[secret_file],
                         image_pull_policy='Always',
                         security_context=security_context # HERE
                         )

【问题讨论】:

    标签: docker kubernetes airflow kubernetes-pod kubernetespodoperator


    【解决方案1】:

    您是否检查过您是否缺少某种能力?

    我在您发布的示例中看到他们还将其添加到 security_context

    'capabilities': {'add': ['SYS_ADMIN']}
    

    【讨论】:

    • 我添加了capabilities 并且仍然重复
    • 您是否收到任何错误消息?
    • 您需要将功能添加到特定容器的安全上下文中,而不是在 pod 级别!
    • @meaningqo 我该如何指定?
    • @JorrickSleijster 好吧,我检查了 GKE 生成的 yaml,securityContext 似乎是空的。我希望它将privileged 值设置为TrueKubernetesPodOperator 似乎没有捕捉到我添加的配置..
    【解决方案2】:

    我认为安全上下文是好的方向。我相信您可以通过指定 pod_template_file 来自定义 Pod 的各个方面——包括 securityContext

    这需要 - 我认为使用 Airflow 2(我衷心推荐)或使用 cncf.kubernetes 反向端口提供程序。请注意,backport 已经很老了(我们在 4 个月前停止发布它们),并且 airflow 1.10 于 6 月 17 日结束生命,因此它甚至不会收到来自社区的安全修复,推荐使用 Airflow 2 路线

    【讨论】:

    • 我明白了,在这种情况下,我的 Airflow 不兼容,因为它是 1.10。需要尽快升级。谢谢
    猜你喜欢
    • 1970-01-01
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-16
    • 1970-01-01
    • 2020-11-28
    相关资源
    最近更新 更多