将 Google Cloud 上的 Knative 服务升级到舰队

根据本指南迁移 Google Cloud 上现有的 Knative 服务安装,以将舰队与 Anthos Service Mesh 搭配使用。

Knative 服务之前的“免费试用”版本(也称为“GKE 插件”)包含内置精简版 Istio 1.4,从 Anthos 1.8 开始将不再受支持。

升级 Knative 服务安装以使用舰队,Anthos Service Mesh 可提高产品升级和管理的独立性,并改进 GKE Enterprise 功能的集成。详细了解新功能和更改

迁移安装有两种路径:

  • 推荐流程是将您的工作负载从安装了旧版 Knative 服务的集群(以下简称“GKE 插件”)迁移到您已安装并配置了新的 Knative 服务舰队的新集群。虽然此过程较为简单且理想,但如果工作负载处理流量,则迁移到新创建的集群会导致停机。如需执行此迁移路径,请在新集群中执行以下操作:

    1. 安装 Knative 作为舰队组件
    2. 将服务部署到新安装。

      例如,您可以按照部署现有服务的修订版本中的说明,单独下载每项服务的 YAML 配置文件,然后将每个 YAML 文件部署到 Knative 服务舰队中的新集群:

      1. 旧安装中,您可以运行以下命令来下载 YAML 配置文件,例如 service.yaml

        gcloud run services describe SERVICE --format export > service.yaml

        SERVICE 替换为 Knative 服务服务的名称。

      2. 舰队组件安装中,您可以运行以下命令来部署相同的 service.yaml

        gcloud run deploy service.yaml --cluster CLUSTER_NAME --cluster-location CLUSTER_LOCATION --project PROJECT_ID

        您需要在其中:

        • CLUSTER_NAME 替换为 Knative 服务的新舰队组件安装中的集群名称。

        • CLUSTER_LOCATION 替换为 Knative 服务的新舰队组件安装中集群的可用区或区域

        • PROJECT_ID 替换为 Knative 服务的新舰队组件安装所在的 Google Cloud 项目的 ID。

  • 替代方案:对于无法创建新集群且必须迁移其活跃安装的 Knative 服务的用户,您可以按照本指南中的步骤执行以下操作:

    • 移除旧的“GKE 插件”和 Istio 资源。
    • 安装新的舰队资源。
    • 迁移到 Anthos Service Mesh,然后迁移流量。
    • 清理所有过时和未使用的资源。

以下指南介绍了升级现有和活跃的 Knative 服务安装(包括所有工作负载)以满足 GKE Enterprise 1.8 及更高版本要求的替代过程。

准备工作

  • 此升级过程只能在之前安装作为GKE 插件”的 Knative 的 Google Kubernetes Engine 集群中执行。

    检查是否安装了“GKE 插件”。

    如需检查您安装的 Knative 服务是否为“GKE 插件”,请运行以下命令:

    gcloud container clusters describe \
    CLUSTER_NAME \
    --region CLUSTER_LOCATION \
    --project PROJECT_ID --format='get(addonsConfig.cloudRunConfig)'
    

    您需要将:

    • CLUSTER_NAME 替换为您的集群名称。
    • CLUSTER_LOCATION 替换为集群所在的位置
    • PROJECT_ID 替换为您的 Google Cloud 项目的 ID。

    结果:

    • 未安装“GKE 插件
      • 如果从未安装该插件,则不会向终端返回任何内容。
      • 如果之前卸载了该插件,则返回 disabled=true
    • 安装了“GKE 插件:如果集群中安装了该插件,则返回该插件的配置详细信息。示例:loadBalancerType=LOAD_BALANCER_TYPE_EXTERNAL
    示例:
    以下示例演示了 Knative 服务是通过配置为处理外部流量的 GKE 插件my-addon-cluster 集群中安装的:
    gcloud container clusters describe my-addon-cluster \
    --region us-central1-c --project my-gcp-project \
    --format='get(addonsConfig.cloudRunConfig)'
    

    响应:

    loadBalancerType=LOAD_BALANCER_TYPE_EXTERNAL
    

  • 您必须在 Google Cloud 项目中拥有足够的权限,以满足您的集群、舰队和 Anthos Service Mesh 的要求:

    • 如果您拥有 Google Cloud 项目的 Owner 角色,则拥有创建集群、安装和配置 Knative 服务所需的权限。

    • 请注意,Anthos Service Mesh 权限要求也满足安装和配置 Knative 服务的所有权限要求。

    • 使用其他角色和最低要求:

      根据您的组织,您还可以通过组合以下预定义角色来满足权限要求:

  • 仅支持 Anthos Service Mesh 版本 1.18

升级 Knative 服务和迁移工作负载

为帮助您升级现有安装的 Knative 服务和迁移工作负载,您需要运行一个脚本,该脚本会自动完成大多数步骤并在整个过程中提示您输入。

  1. 准备升级和设置环境

  2. 卸载 GKE 插件

  3. 迁移到 Anthos Service Mesh

  4. 安装舰队组件

  5. 将工作负载流量迁移到 Anthos Service Mesh

  6. 完成升级并执行清理任务