将 Google Cloud 上的 Knative serving 升级到舰队

按照本指南迁移 Google Cloud 上现有的 Knative serving 安装,以便将舰队与 Cloud Service Mesh 结合使用。

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

升级 Knative serving 安装以使用舰队和 Cloud Service Mesh,不仅可以改进产品升级和管理的独立性,还可以改进各 GKE Enterprise 功能的集成。详细了解新功能和更改

迁移安装有两种路径:

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

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

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

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

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

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

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

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

        您需要在其中:

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

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

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

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

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

以下指南将引导您完成升级现有活跃安装的 Knative serving(包括所有工作负载),以满足 GKE Enterprise 1.8 及更高版本的要求。

准备工作

  • 此升级过程只能对先前安装了 Knative(作为GKE 插件)的 Google Kubernetes Engine 集群执行。

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

    如需检查您安装的 Knative serving 是否为“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 serving 是通过“GKE 插件”安装到 my-addon-cluster 集群中的,“GKE 插件”配置为处理外部流量:
    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 项目中拥有足够的权限,才能满足集群、舰队和 Cloud Service Mesh 的要求:

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

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

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

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

  • 仅支持 Cloud Service Mesh 1.18 版

升级 Knative serving 和迁移工作负载

为协助升级现有 Knative serving 安装并迁移工作负载,您可以运行脚本来自动执行大多数步骤,并在整个过程中提示您输入。

  1. 准备升级和设置环境

  2. 卸载 GKE 插件

  3. 迁移到 Cloud Service Mesh

  4. 安装舰队组件

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

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