【问题标题】:How to update gcloud on Google Cloud Composer worker nodes?如何在 Google Cloud Composer 工作节点上更新 gcloud?
【发布时间】:2021-01-05 22:45:19
【问题描述】:

这里有一个类似的问题,但从 2018 年开始,解决方案需要更改工作人员的基本映像。另一个建议是 ssh 进入每个节点并在那里进行 apt-get install。这似乎没什么用,因为当自动缩放产生新节点时,您需要一次又一次地这样做。

不管怎样,在 2020 年末升级基础 gcloud 有合理的方法吗?

【问题讨论】:

  • 更改基础镜像有什么问题?您能否详细说明您使用的是什么图片以及类似的问题是什么?
  • 搞乱基本映像的问题在于,我必须创建和管理该映像,这与使用托管服务所提供的相反。
  • 所以你的意思是修改(现有的)而不是改变(对于不同的图像)。没有更新版本的图片符合您的需求?
  • @yedpodtrzitko Composer 支持自己的镜像版本,它会自动管理环境的 Kubernetes 集群中的镜像。为这些集群中的服务手动更改映像被视为“超出保修范围”,通常不建议这样做。
  • 感谢您的回复。这就是我认为 GCP 上的托管服务的情况,因此我倾向于不走这条路线。

标签: python google-cloud-platform airflow gcloud google-cloud-composer


【解决方案1】:

由于任务实例在共享执行环境中运行,因此通常不建议在 Composer Airflow 任务中使用 gcloud CLI,尽可能避免状态或版本冲突。例如,如果您有多个用户使用同一个 Cloud Composer 环境,并且其中一个用户更改了 gcloud 使用的活动凭据,那么他们可能会在不知不觉中破坏另一个人的工作流程。

相反,请考虑使用 Cloud SDK Python 库以编程方式执行您需要执行的操作,或使用 airflow.providers.google.cloud 运算符,它可能已经包含您需要的内容。

如果您真的需要使用 gcloud CLI 并且不共享环境,那么您可以使用带有安装/升级脚本的 BashOperator 为任何需要的任务创建先决条件使用 CLI。或者,您可以构建一个安装了 gcloud 的自定义 Docker 映像,并使用 GKEPodOperatorKubernetesPodOperator 运行 Kubernetes pod 以运行 CLI 命令。这会比每次都验证依赖关系更慢,但更可靠。

【讨论】:

  • 感谢您的回答。我已经将 Python SDK 广泛用于许多 GCP 服务。不幸的是,似乎还没有适用于 Google Cloud Run 的 SDK。具体来说,我想从 Composer 做的是更新 Cloud Run 修订版以向其添加自定义标签(这样我就可以访问修订版而不会增加流量)。 1.10.6-composer 中的 gcloud 版本是 Google Cloud SDK 300.0.0, beta 2020.07.06, core 2020.07.06,该功能显然不可用。
  • 在有一个更自然的选择之前,我一直在使用它:我按照您的建议进行操作,然后运行 ​​bash 命令将 gcloud 升级为我的 DAG 中的一项任务。对此并不特别自豪,但它正在完成工作。我考虑过让我的 DAG 的那一部分触发 Google Cloud Build 构建,但在我们的案例中,100% 保持在 Composer 中会更干净。
猜你喜欢
  • 2021-08-24
  • 2020-01-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-19
  • 2018-10-12
相关资源
最近更新 更多