根据本指南迁移 Google Cloud 上现有的 Knative 服务安装,以将舰队与 Anthos Service Mesh 搭配使用。
Knative 服务之前的“免费试用”版本(也称为“GKE 插件”)包含内置精简版 Istio 1.4,从 Anthos 1.8 开始将不再受支持。
升级 Knative 服务安装以使用舰队,Anthos Service Mesh 可提高产品升级和管理的独立性,并改进 GKE Enterprise 功能的集成。详细了解新功能和更改。
迁移安装有两种路径:
推荐流程是将您的工作负载从安装了旧版 Knative 服务的集群(以下简称“GKE 插件”)迁移到您已安装并配置了新的 Knative 服务舰队的新集群。虽然此过程较为简单且理想,但如果工作负载处理流量,则迁移到新创建的集群会导致停机。如需执行此迁移路径,请在新集群中执行以下操作:
- 安装 Knative 作为舰队组件。
将服务部署到新安装。
例如,您可以按照部署现有服务的修订版本中的说明,单独下载每项服务的 YAML 配置文件,然后将每个 YAML 文件部署到 Knative 服务舰队中的新集群:
在旧安装中,您可以运行以下命令来下载 YAML 配置文件,例如
service.yaml
gcloud run services describe SERVICE --format export > service.yaml
将 SERVICE 替换为 Knative 服务服务的名称。
在新舰队组件安装中,您可以运行以下命令来部署相同的
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 服务的所有权限要求。
使用其他角色和最低要求:
根据您的组织,您还可以通过组合以下预定义角色来满足权限要求:
Google Cloud 项目权限:基本 Editor 角色
舰队权限:GKE Hub Admin 或包含以下权限的角色:
gkehub.features.create
gkehub.features.update
集群权限:一个 Kubernetes Engine Admin 角色:
- Kubernetes Engine Admin
- Kubernetes Engine Cluster Admin
仅支持 Anthos Service Mesh 版本 1.18。
Anthos Service Mesh 要求集群使用至少具有 4 个 vCPU 的机器类型,例如
e2-standard-4
。如需详细了解要求,请参阅 Anthos Service Mesh 安装指南。如果您需要更改现有集群的机器类型,请参阅将工作负载迁移到不同的机器类型。建议使用 Cloud Shell 作为此过程中运行命令和迁移脚本的环境。请注意,Anthos Service Mesh 安装脚本仅支持 Linux 或 Cloud Shell。
如果您当前安装的 Knative 服务使用的是 Istio on GKE 插件,则必须迁移到 Anthos Service Mesh 代管式控制平面。目前不支持从 Istio on GKE 插件迁移到 Anthos Service Mesh 集群内控制平面。
升级 Knative 服务和迁移工作负载
为帮助您升级现有安装的 Knative 服务和迁移工作负载,您需要运行一个脚本,该脚本会自动完成大多数步骤并在整个过程中提示您输入。