代管式数据平面

本页面介绍了如何管理托管式 Cloud Service Mesh 的数据平面。

如果您使用的是托管式 Cloud Service Mesh,Google 可完全管理代理的升级。

启用托管式数据平面功能后,通过重启工作负载来重新注入新版代理,边车代理和注入的网关会与托管式控制平面一起主动且自动更新。此操作在控制平面升级后开始,通常在开始后 2 周内完成。

请注意,托管式数据平面依赖于 GKE 版本渠道。如果您在启用托管式数据平面时更改 GKE 发布渠道,则托管式 Cloud Service Mesh 将更新所有现有工作负载(例如托管式数据平面发布)的代理。

如果停用了托管式数据平面,代理管理会被动执行,由集群中的 Pod 的自然生命周期驱动,并且必须由用户手动触发以控制更新速率。

托管式数据平面通过逐出运行早期版本的代理的 Pod 来升级代理。逐出是逐渐完成的,遵循 Pod 中断预算并控制更改速率。

部署新版本的 Cloud Service Mesh 数据平面时

代管式数据平面 触发新的 Cloud Service Mesh 数据平面部署的事件
Cloud Service Mesh
会在有新版本可用时主动更新。1
创建新 Pod
当您或 Pod 横向自动扩缩部署新的工作负载时
GKE 维护窗口
在 GKE 维护窗口期间替换节点时
已启用
已停用

1 Cloud Service Mesh 主动更新会自动替换工作负载中的 Pods,但 StatefulSetsJobsDaemonSets 和手动注入的 Pods 除外。Cloud Service Mesh 主动更新会遵循 Pod 中断预算。

  • 低优先级主动更新与 GKE 维护窗口同时进行。
  • 高优先级主动更新可在 Cloud Service Mesh 将其提供给集群后立即进行,而无需考虑 GKE 维护窗口。高优先级主动更新通常至少有一个关联的 CVE。

如果您不想自行管理 Cloud Service Mesh 数据平面的生命周期,并且您的工作负载可以容忍随时替换 Pod,请启用托管式数据平面。

如果您希望完全控制所有 Cloud Service Mesh 数据平面更新的时间,请停用托管式数据平面。

默认情况下,系统不会发送维护通知。如需了解详情,请参阅本文档中的为托管式数据平面启用维护通知

限制

代管式数据平面不会代管以下各项:

  • 未注入的 Pod
  • 手动注入的 Pod
  • 作业
  • StatefulSet
  • DaemonSets

如果您在旧集群上预配了托管式 Cloud Service Mesh,则可以为整个集群启用数据平面管理功能:

kubectl annotate --overwrite controlplanerevision -n istio-system \
REVISION_LABEL \
mesh.cloud.google.com/proxy='{"managed":"true"}'

或者,您可以为特定命名空间或 Pod 选择性地启用代管式数据平面,只需为其添加相同的注解即可。如果您选择性地控制各个组件,则优先顺序依次为控制平面修订版本、命名空间、Pod。

服务最多可能需要 10 分钟才能准备好管理集群中的代理。运行以下命令来检查状态:

gcloud container fleet mesh describe --project FLEET_PROJECT_ID

预期输出

membershipStates:
  projects/PROJECT_NUMBER/locations/global/memberships/CLUSTER_NAME:
    servicemesh:
      dataPlaneManagement:
        details:
        - code: OK
          details: Service is running.
        state: ACTIVE
    state:
      code: OK
      description: 'Revision(s) ready for use: asm-managed-rapid.'

如果服务未在十分钟内准备就绪,请参阅代管式数据平面状态,了解后续步骤。

停用托管式数据平面(可选)

如果您要在新集群上预配托管式 Cloud Service Mesh,则可以完全停用托管式数据平面,也可以为单个命名空间或 Pod 停用托管式数据平面。对于默认或手动在其中停用托管式数据平面的现有集群,托管式数据平面将继续处于停用状态。

如需在集群级层停用代管式数据平面并还原为自行管理边车代理,请找到每个控制平面修订版本,然后更改每个注解。

  1. 查找所有控制平面修订版本:

    kubectl get controlplanerevisions -n istio-system
    
  2. 更改注解:

    kubectl annotate --overwrite controlplanerevision CONTROL_PLANE_REVISION_NAME -n istio-system mesh.cloud.google.com/proxy='{"managed":"false"}'
    

    针对每个控制平面修订版本重复执行此步骤。

    CONTROL_PLANE_REVISION_NAME 替换为上一个命令的输出。

    如需为命名空间停用托管式数据平面,请运行以下命令:

    kubectl annotate --overwrite namespace NAMESPACE \
     mesh.cloud.google.com/proxy='{"managed":"false"}'
    

    如需为 Pod 停用托管式数据平面,请运行以下命令:

    kubectl annotate --overwrite pod POD_NAME \
     mesh.cloud.google.com/proxy='{"managed":"false"}'
    

为托管式数据平面启用维护窗口

如果您配置了 GKE 维护窗口,则主动升级将在下一个可用维护窗口启动时开始,并且在所有托管式 Pod 更新完成(通常 12 小时)之前不会暂停。CVE 相关发布不遵循维护窗口。

Cloud Service Mesh 使用 GKE 维护窗口来与 GKE 保持一致。

为托管式数据平面启用维护通知

您可以请求在安排维护前一周收到有关即将进行的安排在维护窗口内的托管式数据平面维护的通知。默认情况下,系统不会发送维护通知。您还必须配置 GKE 维护窗口才能接收通知。启用维护通知后,系统会在升级操作前至少提前两天发送通知。

如需选择接收代管式数据平面维护通知,请执行以下操作:

  1. 进入通信页面。

    转到“通信”页面

  2. Cloud Service Mesh 升级行中的电子邮件列下,选择单选按钮以开启维护通知。

每个希望接收通知的用户必须单独选择启用通知。如果您要为这些通知设置电子邮件过滤条件,则主题行为:

Upcoming upgrade for your Cloud Service Mesh cluster "CLUSTER_LOCATION/CLUSTER_NAME"

以下示例展示了典型的代管式数据平面维护通知:

主题行:您的 Cloud Service Mesh 集群“<location/cluster-name>”即将升级

尊敬的 Cloud Service Mesh 用户,

您的集群 ${instance_id} (https://console.cloud.google.com/kubernetes/clusters/details/${instance_id}/details?project=${project_id}) 中的 Cloud Service Mesh 组件计划将于 ${scheduled_date_human_readable} ${scheduled_time_human_readable} 进行升级。

如需了解新的更新,请查看版本说明 (https://cloud.google.com/service-mesh/docs/release-notes)。

如果此维护被取消,系统会再向您发送一封电子邮件。

此致

Cloud Service Mesh 团队敬上

(c) 2023 Google LLC 1600 Amphitheater Parkway, Mountain View, CA 94043 我们向您发送此通告,目的是让您了解有关 Google Cloud Platform 或您的账号的最新重要变化。您可以通过修改您的用户偏好设置来停止接收维护窗口通知: https://console.cloud.google.com/user-preferences/communication?project=${project_id}