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