升级环境

本页面介绍如何升级您的环境运行的 Airflow 版本或 Cloud Composer 版本。

在升级期间,Cloud Composer 会执行以下操作:

  • 在一个新的 Kubernetes 命名空间中重新部署 Airflow 调度器和工作器 pod。升级完成后,Airflow 将使用新的 Cloud SQL 数据库;数据库名称与 Kubernetes 命名空间匹配。系统会保留 DAG 运行历史记录。

  • 更新 Airflow airflow_db 连接,使其指向新的 Cloud SQL 数据库。

这些更改会影响您访问 pod 的方式以及连接到 Cloud SQL 数据库的方式。

  • 如需在升级后访问 GKE 集群中的 pod,您需要使用命名空间感知 kubectl 命令。例如,如需列出集群中的 pod,请使用 kubectl get pods -A。如需对 pod 执行命令,请使用 kubectl exec -n <NAMESPACE> ...
  • 如果您使用直接引用 SQL 代理的 Airflow 连接和工作负载,请将默认命名空间添加到主机名中,如下所示:airflow-sqlproxy-service.default(而非 airflow-sqlproxy-service)。

升级 Cloud Composer 不会改变您连接环境资源的方式,例如 Google Kubernetes Engine 节点虚拟机 IP 地址、Cloud SQL 实例 IP 地址、Cloud Storage 存储分区或 Airflow Web 服务器域名。

准备工作

  • 升级环境的功能目前处于预览版阶段。在生产环境中,请谨慎使用此功能。

  • 您必须具有可以触发环境升级操作的角色。此外,环境的服务帐号必须具有拥有足够权限来执行升级操作的角色。如需了解详情,请参阅访问权限控制

  • 在升级前,暂停所有 DAG 并等待进行中的任务完成。

  • 您可以分别升级 Cloud Composer 和 Airflow 版本,也可以同时升级它们。

  • 要升级到的一组目标 Cloud Composer 和 Airflow 版本必须是已发布的版本

    • 如需了解可用的升级,请参阅查看可用的升级。要获取最新功能和修复,请考虑升级到最新的 Cloud Composer 版本。
    • 如需查看受支持版本所含的 PyPI 软件包和自定义设置的列表,请参阅 Cloud Composer 版本列表

      在升级之前,请确保您已经了解当前 Airflow 和 Cloud Composer 版本与要升级到的目标版本之间的差异。不兼容的更改可能会导致 DAG 中断。

限制

  • 您不能降级到早期 Cloud Composer 或 Airflow 版本。
  • Cloud Composer 支持手动将 DAG 和配置从 Airflow 1.10.* 环境转移到 Airflow 2 环境。对于使用 Airflow 1.10.* 的环境,无法就地升级为 Airflow 2。
  • 您只能升级到同一主要版本中的最新 Cloud Composer 版本,例如从 composer-1.12.4-airflow-1.10.10 升级到 composer-1.13.0-airflow-1.10.10。不允许从 composer-1.4.0-airflow-1.10.0 升级到 composer-2.0.0-airflow-1.10.0,因为 Cloud Composer 主要版本从 1 变成了 2
  • 要升级到的目标映像版本必须支持您的环境的当前 Python 版本。
  • 如果 Airflow 数据库包含的数据超过 16 GB,则无法升级环境。升级期间,如果 Airflow 数据库大小超过 16 GB,则会显示警告。在这种情况下,请执行数据库维护以减小数据库大小。
  • 您无法从 Cloud Composer 1 升级到 Cloud Composer 2

    如果您想要开始使用 Cloud Composer 2,则需要创建新的 Cloud Composer 2 环境。

    • 如果您想要从 Airflow 1 迁移到 Airflow 2,请参阅迁移指南,其中提供了将 DAG 和任务执行历史记录从使用 Airflow 1 的 Cloud Composer 1 环境转移到使用 Airflow 2 的 Cloud Composer 2 环境的说明。

弃用消息

环境映像接近其支持终止日期时,Cloud Composer 会显示警告。您可以利用这些警告使您的环境始终保持在完全支持期限内。

弃用消息

Cloud Composer 会跟踪您的环境所基于的 Cloud Composer 映像版本。当映像接近其支持终止日期时,您会在环境列表和环境详情页面上看到警告。

要检查环境映像是否为最新版本,请执行以下操作:

  1. 打开 Google Cloud Console 中的环境页面。

    打开“环境”页面

  2. 点击环境名称以查看其详细信息。

  3. 环境配置下,找到映像版本字段。

  4. 映像版本字段中会显示以下消息之一:

    • 最新可用版本。环境映像受到完全支持。

    • 有新版本。环境映像受到完全支持,您可以将其升级到更高版本。

    • 对此映像版本的支持将于...结束 环境映像接近完全支持终止日期。

    • 从...起,此版本将不再受支持环境已超出完全支持期限。

查看可用的升级

如需查看您可以升级到的目标 Cloud Composer 版本,请执行以下操作:

控制台

  1. 打开 Google Cloud 中的环境页面。

    打开“环境”页面

  2. 点击相应环境名称

  3. 环境配置标签页中,点击升级映像版本

  4. 点击 Cloud Composer 映像版本下拉菜单以获取可用版本。

gcloud

gcloud beta composer environments list-upgrades ENVIRONMENT_NAME \
    --location LOCATION 

其中:

  • ENVIRONMENT_NAME 是环境的名称。
  • LOCATION 是环境所在的 Compute Engine 区域。

例如:

gcloud beta composer environments list-upgrades test-environment \
    --location us-central1
┌─────────────────────────────────────────────────────────────────────────────┐
│                              AVAILABLE UPGRADES                             │
├──────────────────────────────┬──────────────────┬───────────────────────────┤
│        IMAGE VERSION         │ COMPOSER DEFAULT │ SUPPORTED PYTHON VERSIONS │
├──────────────────────────────┼──────────────────┼───────────────────────────┤
│ composer-1.4.0-airflow-1.9.0 │ True             │ 2,3                       │
└──────────────────────────────┴──────────────────┴───────────────────────────┘

API

如需使用 Cloud Composer REST API 查看可用版本,请构建 imageVersions.list API 请求,并以 projects/{projectId}/locations/{locationId} 格式提供项目和位置。

例如:

GET https://composer.googleapis.com/v1/projects/test-project-id/locations/us-central1/imageVersions

{
  "imageVersions": [
    {
      "imageVersionId": "composer-1.4.2-airflow-1.10.0",
      "supportedPythonVersions": [
        "2",
        "3"
      ]
    },
    {
      "imageVersionId": "composer-1.4.2-airflow-1.9.0",
      "isDefault": true,
      "supportedPythonVersions": [
        "2",
        "3"
      ]
    }
  ]
} 

在升级之前检查是否存在 PyPI 软件包冲突

您可以检查环境中安装的 PyPI 软件包是否与新 Cloud Composer 映像中预安装的软件包发生冲突。

成功的检查意味着当前版本和指定版本之间没有 PyPI 软件包依赖项冲突。请注意,升级操作仍然可能由于其他原因而不成功。

控制台

如需为您的环境运行升级检查,请执行以下操作:

  1. 在 Google Cloud Console 中,转到环境页面。

    转到“环境”

  2. 选择您的环境。

  3. 转到环境配置标签页,找到印象版本条目后,点击升级

  4. 环境版本升级对话框的新版本下拉列表中,选择您要升级到的 Cloud Composer 版本。

  5. PyPI 软件包兼容性 (PyPI packages compatibility) 部分,点击检查是否存在冲突 (Check for conflicts)。

  6. 等待检查完成。如果存在 PyPI 软件包依赖项冲突,则显示的错误消息包含有关冲突软件版包和软件包版本的详细信息。

gcloud

如需为您的环境运行升级检查,请使用您要升级到的 Cloud Composer 映像版本运行 environments check-upgrade 命令。

gcloud beta composer environments check-upgrade ENVIRONMENT_NAME \
    --location LOCATION \
    --image-version COMPOSER_IMAGE

您需要将其中的:

  • ENVIRONMENT_NAME 替换为环境名称。
  • LOCATION 替换为环境所在的 Compute Engine 区域。
  • COMPOSER_IMAGE 替换为要升级到的 Cloud Composer 映像版本

例如:

gcloud beta composer environments check-upgrade example-environment \
  --location us-central1 \
  --image-version composer-1.16.6-airflow-1.10.15

输出示例:

Waiting for [projects/example-project/locations/us-central1/environments/
example-environment] to be checked for PyPI package conflicts when upgrading
to composer-1.16.6-airflow-
1.10.15. Operation [projects/example-project/locations/us-central1/operations
/04d0e8b2-...]...done.
...

Response:
'@type': type.googleapis.com/
google.cloud.orchestration.airflow.service.v1beta1.CheckUpgradeResponse
buildLogUri: https://console.cloud.google.com/cloud-build/builds/79738aa7-...
containsPypiModulesConflict: CONFLICT
pypiConflictBuildLogExtract: |-
The Cloud Build image build failed: Build failed; check build logs for
details. Full log can be found at https://console.cloud.google.com/
cloud-build/builds/79738aa7-...
Error details: tensorboard 2.2.2 has requirement
setuptools>=41.0.0, but you have setuptools 40.3.0.

或者,您也可以异步运行升级检查。使用 --async 参数进行异步调用,然后使用 gcloud composer operations describe 命令检查结果。

API

构建 environments.checkUpgrade API 请求。

imageVersion 字段中指定映像版本:

{
  "imageVersion": "COMPOSER_IMAGE"
}

COMPOSER_IMAGE 替换为要升级到的 Cloud Composer 映像版本

升级 Cloud Composer 版本

如需升级您的环境运行的 Cloud Composer 版本,请执行以下操作:

控制台

  1. 打开 Google Cloud 中的环境页面。

    打开“环境”页面

  2. 点击要修改的环境的名称

  3. 环境配置标签页中,点击升级映像版本

  4. 点击 Cloud Composer 映像版本下拉菜单,然后选择一个版本。

  5. 点击提交

gcloud

gcloud beta composer environments update ENVIRONMENT_NAME \
    --location LOCATION --image-version VERSION

其中:

  • ENVIRONMENT_NAME 是环境的名称。
  • LOCATION 是环境所在的 Compute Engine 区域。
  • VERSION 是要在您的环境中使用的 Cloud Composer 版本和 Airflow 版本,格式为 composer-a.b.c-airflow-x.y.zcomposer-a.b.c-airflow-x.y。如果您未指定 Airflow 补丁程序,那么系统将使用可用于给定主要和次要版本的最高补丁程序版本。

例如:

gcloud beta composer environments update test-environment \
    --location us-central1 --image-version composer-latest-airflow-1.10.1 

API

如需使用 Cloud Composer REST API 进行升级,请构建 environments.patch API 请求。以 composer-a.b.c-airflow-x.y.z 格式提供版本

例如:

PATCH https://composer.googleapis.com/v1beta1/projects/test-project/locations/us-central1/environments/test-environment?updateMask=config.software_config.image_version

请求正文包含 imageVersion

{
  "config": {
    "softwareConfig": {
      "imageVersion": "composer-1.6.0-airflow-1.10.1"
    }
  }
}

升级 Airflow 版本

gcloud beta composer environments update ENVIRONMENT_NAME \
--location LOCATION --airflow-version VERSION

其中:

  • ENVIRONMENT_NAME 是环境的名称。
  • LOCATION 是环境所在的 Compute Engine 区域。
  • VERSION 是要在您的环境中使用的 Airflow 版本,格式为 x.y.zx.y

例如:

gcloud beta composer environments update test-environment \
--location us-central1 --airflow-version=1.10.1