通过设置命令行环境、创建环境变量以及下载迁移脚本,为升级以前的 Knative serving 安装和迁移工作负载做好准备。
准备工作
在升级之前,您必须先查看并确保满足要求。
默认情况下,Cloud Shell 包含最新版本的
gcloud
和kubectl
命令。如果您选择使用本地机器的命令行环境,则必须确保满足以下最低要求:gcloud
版本 346.0.0 或更高版本kubectl
客户端版本 1.21 或更高版本
本页面中的准备步骤是整个升级和迁移过程所必需的。
重要提示:此过程中使用的所有命令都依赖于您在下面设置的环境变量。例如,如果您关闭 Cloud Shell 或会话超时,则必须确保重置所需的环境变量。
设置环境
如需使用 Cloud Shell,请在 Google Cloud 控制台中打开 Cloud Shell:
重要提示:Cloud Shell 具有用量限额,并且可能会超时。如果会话超时,您必须确保重置所需的环境变量。
创建以下必需的环境变量:
为您的 Google Cloud 项目和集群详细信息设置变量:
export PROJECT_ID=PROJECT_ID export CLUSTER_NAME=CLUSTER_NAME export CLUSTER_LOCATION=CLUSTER_LOCATION
替换以下内容:
- 将 PROJECT_ID 替换为您的 Google Cloud 项目的 ID。
- 将 CLUSTER_NAME 替换为集群的 ID 或集群的完全限定标识符。
- 将 CLUSTER_LOCATION 替换为您的集群所在的区域或可用区。
根据您的配置,您必须确定正在处理集群中流量的入站网关。请务必确定实际配置并正在处理流量的 Istio 版本。
如果您使用捆绑版 Istio,请验证入站流量服务名称为
gke-system
命名空间中的istio-ingress
:kubectl get svc istio-ingress -n gke-system
结果:返回配置的详细信息。
如果您安装了“Istio 插件”,则必须确定已配置且正在处理流量的入站流量网关,具体方法是获取服务的 IP 地址并确定您的网域配置了哪个服务。
获取每个入站流量服务的
EXTERNAL-IP
地址:运行以下命令,获取“捆绑版 Istio”(
istio-ingress
) 和“Istio 插件 (istio-ingressgateway
)”入站流量服务的配置详细信息:kubectl get svc istio-ingress -n gke-system kubectl get svc istio-ingressgateway -n istio-system
输出示例:
记下每个服务的
EXTERNAL-IP
值。NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingress LoadBalancer 11.11.1.111 12.345.678.910 15020:31265/TCP,80:30059/TCP,443:32004/TCP 8d NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE istio-ingressgateway LoadBalancer 22.22.2.222 10.987.654.321 15021:32747/TCP,80:30695/TCP,443:32695/TCP,15012:32369/TCP,15443:30909/TCP 88d
通过自定义网域的 DNS 记录确定哪个外部 IP 地址被配置为处理流量:
前往 Knative serving 网域映射页面:
点击服务右侧的三点状垂直省略号图标,然后点击 DNS 记录以显示所有 DNS 记录:
根据上面的示例,如果 DNS 记录配置设置为
istio-ingressgateway
服务 的10.987.654.321
IP 地址,则表示正在使用 Istio 插件入站流量网关处理流量。
为处理集群流量的入站流量服务的名称和命名空间设置变量:
export INGRESS_NAME=INGRESS_NAME export INGRESS_NAMESPACE=INGRESS_NAMESPACE
替换以下内容:
将 INGRESS_NAME 替换为您在上一步中确定的入站流量服务的名称。
将 INGRESS_NAMESPACE 替换为您在上一步中确定的入站流量服务的命名空间。
配置 Google Cloud CLI:
gcloud config set project ${PROJECT_ID} gcloud container clusters get-credentials ${CLUSTER_NAME} --region ${CLUSTER_LOCATION}
对于专用集群:
如果您已经可以从将运行迁移脚本的客户端访问专用集群,则可以跳到下一步。
如果专用集群启用了
master-authorized-network
,您可以通过将客户端 IP 地址添加到master-authorized-networks
许可名单来启用从将运行迁移脚本的客户端访问专用集群的权限:gcloud container clusters update ${CLUSTER_NAME} \ --region=${CLUSTER_LOCATION} \ --enable-master-authorized-networks \ --master-authorized-networks $(curl ifconfig.me)/32
下载 Knative serving 迁移脚本:
TMP_DIR=$(mktemp -d) gcloud storage cp gs://crfa-to-hub-upgrade/migration-addon.sh $TMP_DIR cd $TMP_DIR chmod +x ./migration-addon.sh
运行以下命令以停用“缩减至零”;否则,当主节点更新时,扩缩将失败并导致错误:
kubectl patch cm config-autoscaler -n knative-serving -p '{"data":{"enable-scale-to-zero": "false"}}'
请注意,此升级和迁移过程的最后一步是重新启用“缩减至零”。