本指南介绍如何在 Google Cloud 上的 GKE 集群上将 Anthos Service Mesh 从 1.6.14 降级为 1.5.10。
重新部署 Anthos Service Mesh 控制层面组件大约需要 5 到 10 分钟才能完成。此外,您需要在所有工作负载中注入新的 Sidecar 代理,以便这些 Sidecar 代理通过当前 Anthos Service Mesh 版本进行更新。更新 Sidecar 代理所需的时间取决于多种因素,例如 Pod 数量、节点数量、部署扩缩设置、Pod 中断预算和其他配置设置。更新 Sidecar 代理所需的时间估计约为每分钟 100 个 Pod。
降级概览
本部分概述了降级 Anthos Service Mesh 所需执行的步骤。
准备
查看支持的功能和本指南,熟悉这些功能和降级流程。
如果您在安装以前版本的 Anthos Service Mesh 时启用了可选功能,则需要在降级时启用相同的功能。如需启用可选功能,您可以添加
--set values
标志,或在运行istioctl install
命令时通过 YAML 文件指定-f
标志。如果要在专用集群上降级 Anthos Service Mesh,则若要使用自动 Sidecar 注入,您必须添加防火墙规则以打开端口 15017。如果您未添加防火墙规则并启用了自动 Sidecar 注入,则在部署工作负载时会收到错误。如需详细了解如何添加防火墙规则,请参阅针对特定用例添加防火墙规则。
降级
按照本指南中的步骤准备 Anthos Service Mesh 降级。
测试您的应用,验证工作负载是否正常工作。
设置您的环境
如需在 Google Kubernetes Engine 上进行安装,您可以使用 Cloud Shell、Google Cloud 资源的浏览器内置命令行界面或您自己运行 Linux 或 macOS 的计算机,按照安装指南操作。
选项 A:使用 Cloud Shell
Cloud Shell 预配一个运行基于 Debian 的 Linux 操作系统的 g1-small Compute Engine 虚拟机 (VM)。使用 Cloud Shell 的优势如下:
Cloud Shell 包含您需要的
gcloud
、kubectl
和helm
命令行工具。您的 Cloud Shell $HOME 目录具有 5GB 永久性存储空间。
您可以选择文本编辑器:
代码编辑器,可通过点击 Cloud Shell 窗口顶部的 来访问。
Emac、Vim 或 Nano,可从 Cloud Shell 中的命令行访问。
如需使用 Cloud Shell,请执行以下操作:
- 前往 Google Cloud 控制台。
- 选择您的 Google Cloud 项目。
点击 Google Cloud 控制台窗口顶部的激活 Cloud Shell 按钮。
一个 Cloud Shell 会话随即会在 Google Cloud 控制台底部的新框内打开,并显示命令行提示符。
更新组件:
gcloud components update
该命令会以如下所示的输出作为响应:
ERROR: (gcloud.components.update) You cannot perform this action because the gcloud CLI component manager is disabled for this installation. You can run the following command to achieve the same result for this installation: sudo apt-get update && sudo apt-get --only-upgrade install ...
复制并粘贴长命令以更新组件。
请确保 Git 位于您的路径中,以便
kpt
能够找到它。
选项 B:在本地使用命令行工具
在本地机器上,安装并初始化 gcloud CLI。
如果您已安装 gcloud CLI,请执行以下操作:
使用 gcloud CLI 进行身份验证:
gcloud auth login
更新组件:
gcloud components update
安装
kubectl
:gcloud components install kubectl
安装
kpt
:gcloud components install kpt
请确保 Git 位于您的路径中,以便
kpt
能够找到它。
设置环境变量
获取创建集群的项目的 ID 和队列宿主项目的编号。
gcloud
运行以下命令:
gcloud projects list
控制台
前往 Google Cloud 控制台中的信息中心页面。
点击页面顶部的从以下列表中选择:下拉列表。在随即显示的从以下列表中选择:窗口中,选择您的项目。
项目 ID 会显示在项目信息中心的项目信息卡片上。
为在其中创建集群的项目的 ID 创建环境变量:
export PROJECT_ID=YOUR_PROJECT_ID
为队列宿主项目的项目编号创建环境变量:
export FLEET_PROJECT_NUMBER=YOUR_FLEET_PROJECT_NUMBER
创建以下环境变量:
设置集群名称:
export CLUSTER_NAME=YOUR_CLUSTER_NAME
将
CLUSTER_LOCATION
设置为您的集群区域或集群地区:export CLUSTER_LOCATION=YOUR_ZONE_OR_REGION
设置凭据和权限
获取身份验证凭据以便与集群进行交互:
gcloud container clusters get-credentials ${CLUSTER_NAME} \ --project=${PROJECT_ID}
向当前用户授予集群管理员权限。您需要这些权限,以便为 Anthos Service Mesh 创建必要的基于角色的访问权限控制 (RBAC) 规则:
kubectl create clusterrolebinding cluster-admin-binding \ --clusterrole=cluster-admin \ --user="$(gcloud config get-value core/account)"
如果看到 "cluster-admin-binding" already exists
错误,您可以放心地忽略该错误并继续采用现有集群管理员绑定。
下载安装文件
-
将 Anthos Service Mesh 安装文件下载到当前工作目录中:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.10-asm.2-linux.tar.gz
-
下载签名文件并使用
openssl
验证签名:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.10-asm.2-linux.tar.gz.1.sig openssl dgst -verify /dev/stdin -signature istio-1.5.10-asm.2-linux.tar.gz.1.sig istio-1.5.10-asm.2-linux.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
预期输出为
Verified OK
-
将文件内容提取到文件系统上的任意位置。例如,如需将内容提取到当前工作目录,请运行以下命令:
tar xzf istio-1.5.10-asm.2-linux.tar.gz
该命令会在当前工作目录中创建一个名为
istio-1.5.10-asm.2
的安装目录,其中包含:samples
目录中的示例应用。- 用于安装 Anthos Service Mesh 的
istioctl
命令行工具位于bin
目录中。 - Anthos Service Mesh 配置文件位于
manifests/profiles
目录中。
-
将 Anthos Service Mesh 安装文件下载到当前工作目录中:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.10-asm.2-osx.tar.gz
-
下载签名文件并使用
openssl
验证签名:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.10-asm.2-osx.tar.gz.1.sig openssl dgst -sha256 -verify /dev/stdin -signature istio-1.5.10-asm.2-osx.tar.gz.1.sig istio-1.5.10-asm.2-osx.tar.gz <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
预期输出为
Verified OK
-
将文件内容提取到文件系统上的任意位置。例如,如需将内容提取到当前工作目录,请运行以下命令:
tar xzf istio-1.5.10-asm.2-osx.tar.gz
该命令会在当前工作目录中创建一个名为
istio-1.5.10-asm.2
的安装目录,其中包含:samples
目录中的示例应用。- 用于安装 Anthos Service Mesh 的
istioctl
命令行工具位于bin
目录中。 - Anthos Service Mesh 配置文件位于
manifests/profiles
目录中。
-
将 Anthos Service Mesh 安装文件下载到当前工作目录中:
curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.10-asm.2-win.zip
-
下载签名文件并使用
openssl
验证签名:curl -LO https://storage.googleapis.com/gke-release/asm/istio-1.5.10-asm.2-win.zip.1.sig openssl dgst -verify - -signature istio-1.5.10-asm.2-win.zip.1.sig istio-1.5.10-asm.2-win.zip <<'EOF' -----BEGIN PUBLIC KEY----- MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEWZrGCUaJJr1H8a36sG4UUoXvlXvZ wQfk16sxprI2gOJ2vFFggdq3ixF2h4qNBt0kI7ciDhgpwS8t+/960IsIgw== -----END PUBLIC KEY----- EOF
预期输出为
Verified OK
-
将文件内容提取到文件系统上的任意位置。例如,如需将内容提取到当前工作目录,请运行以下命令:
tar xzf istio-1.5.10-asm.2-win.zip
该命令会在当前工作目录中创建一个名为
istio-1.5.10-asm.2
的安装目录,其中包含:samples
目录中的示例应用。- 用于安装 Anthos Service Mesh 的
istioctl
命令行工具位于bin
目录中。 - Anthos Service Mesh 配置文件位于
manifests/profiles
目录中。
-
确保您位于 Anthos Service Mesh 安装的根目录。
cd istio-1.5.10-asm.2
-
为方便起见,请将
/bin
目录中的工具添加到 PATH:export PATH=$PWD/bin:$PATH
Linux
Mac OS
Windows
准备资源配置文件
运行 istioctl install
命令时,请在命令行中指定 -f istio-operator.yaml
。此文件包含 Anthos Service Mesh 所需的项目和集群的相关信息。您需要下载包含 istio-operator.yaml
和其他资源配置文件的软件包,以便设置项目和集群信息。
首先,根据您要使用的证书授权机构 (CA) 选择要下载的软件包:
asm
:thumb_up_alt此软件包可启用 Mesh CA(建议用于新安装)。asm-citadel
:您可以选择启用 Citadel 作为 CA。在选择此软件包之前,请参阅选择证书授权机构以了解详情。
如需准备资源配置文件,请执行以下操作:
为 Anthos Service Mesh 软件包资源配置文件创建一个新目录。我们建议您使用集群名称作为目录名称。
切换到您要在其中下载 Anthos Service Mesh 软件包的目录。
下载
asm
软件包:kpt pkg get \ https://github.com/GoogleCloudPlatform/anthos-service-mesh-packages.git/asm@release-1.5-asm asm
为在其中创建集群的项目设置项目 ID:
kpt cfg set asm gcloud.core.project ${PROJECT_ID}
设置集群名称:
kpt cfg set asm gcloud.container.cluster ${CLUSTER_NAME}
设置默认区域或地区:
kpt cfg set asm gcloud.compute.location ${CLUSTER_LOCATION}
降级 Anthos Service Mesh
如需降级 Anthos Service Mesh,请执行以下操作:
istioctl install \ -f asm/cluster/istio-operator.yaml \ --set profile=asm-gcp
检查控制层面组件
降级需要重新安装控制层面组件,此过程大约需要 5 到 10 分钟才能完成。旧的控制层面组件会被终止,然后在安装新组件时被删除。您可以通过查看工作负载的 AGE
列中的值来检查进度。
kubectl get pod -n istio-system
输出示例:
NAME READY STATUS RESTARTS AGE istio-ingressgateway-5bfdf7c586-v6wxx 2/2 Terminating 0 25m istio-ingressgateway-7b598c5557-b88md 2/2 Running 0 5m44s istiod-78cdbbbdb-d7tps 1/1 Running 0 5m16s promsd-576b8db4d6-lqf64 2/2 Running 1 5m26s
在此示例中,有两个 istio-ingressgateway
实例。系统正在终止 AGE
列中具有 25m
的实例。所有其他组件均为新安装组件。
更新边车代理
降级之前在集群上运行的任何工作负载都需要重新注入边车代理,以使其具有当前 Anthos Service Mesh 版本。
借助自动 Sidecar 注入,您可以通过 pod 重启来更新现有 pod 的 Sidecar。如何重启 pod 取决于 pod 是否在 Deployment 中创建。
如果您使用了 Deployment,请重启 Deployment,这会重启所有安装了 Sidecar 的 Pod:
kubectl rollout restart deployment -n YOUR_NAMESPACE
如果您未使用 Deployment,请删除 Pod,系统会自动重新创建 Pod 及其 Sidecar:
kubectl delete pod -n YOUR_NAMESPACE --all
检查命名空间中的所有 Pod 是否都已注入 Sidecar:
kubectl get pod -n YOUR_NAMESPACE
在上一个命令的以下示例输出中,注意
READY
列表示每个工作负载均有两个容器:主容器和边车代理的容器。NAME READY STATUS RESTARTS AGE YOUR_WORKLOAD 2/2 Running 0 20s ...