【问题标题】:Privileged / capabilities in a Dataflow containerDataflow 容器中的特权/功能
【发布时间】:2021-11-17 18:07:31
【问题描述】:

我正在尝试运行一个 Dataflow 应用程序,以便运行它的容器具有特权,或者至少具有某些功能(例如 CAP_SYS_PTRACE)。

以top_wikipedia_sessions.py为例,我可以用Apache Beam这样运行它:

python3 -m apache_beam.examples.complete.top_wikipedia_sessions \
  --region us-central1 \
  --runner DataflowRunner \
  --project my_project \
  --temp_location gs://my-cloud-storage-bucket/temp/ \
  --output gs://my-cloud-storage-bucket/output/

如果我通过 SSH 连接到创建的实例,我可以通过 docker ps 看到启动的容器没有特权并且没有保留任何功能(在其 CapAdd 中没有任何功能)。我在 Apache Beam 中找不到任何方法来控制它。我想我可以通过 SSH 连接到实例并更新它们的 Docker 设置,但我想知道是否有办法绕过它,不需要手动修改 Dataflow 为我启动的实例。也许这是我需要在 GCP 的集群设置中更新的设置?

【问题讨论】:

  • 如果我理解您的问题,您希望使用docker run --cap-add=SYS_PTRACE 之类的内容启动容器。对吗?
  • 是的,没错;只是我不是自己启动容器 - 它是由 Dataflow (IIUC) 启动的。我的问题是如何让 Dataflow 做相当于--cap-add=SYS_PTRACE :)

标签: google-cloud-dataflow


【解决方案1】:

目前无法直接修改 docker 容器在 Dataflow 工作器上的启动。

但是,jobs with GPUs enabled 确实以特权模式运行他们的容器。这会产生成本影响,但可能是一种通过实验确认该功能满足您需求的方法。如果您可以分享更多关于特定用例的信息,或许将这个功能推广到非 GPU 作业是有意义的。

【讨论】:

  • 谢谢!在我的用例中,我正在尝试使用 py-spy 分析我的 Python 应用程序,这需要 SYS_PTRACE。
【解决方案2】:

由于您的目标是使用 py-spy 分析您的工作,您是否考虑并使用了 Dataflow 的分析功能?

【讨论】:

  • 嗯。我会试一试。但是,如果无论如何都可以使用 py-spy,我会更喜欢,因为我们对它很熟悉。我将继续研究其他选项(例如,从 Dataflow 主机作为特权容器运行 py-spy)
猜你喜欢
  • 2016-07-25
  • 2017-05-28
  • 2015-02-13
  • 1970-01-01
  • 2020-05-13
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
相关资源
最近更新 更多