{T}

微服务混合云部署实践

在 [[31]] 中我们讨论了微服务多机房部署的实践与挑战——无论是出于高可用性的跨机房容灾,还是出于流量分摊的就近接入,多机房部署已经成为中大型业务的基础架构标配。然而随着业务进一步发展,一个更深层的需求浮出水面:弹性。内部私有云的资源总是有限的,而热点事件、大促活动带来的突发流量可能是日常峰值的数倍,按峰值预留资源意味着大量闲置浪费。公有云的海量弹性资源天然适配这一场景,于是混合云(Hybrid Cloud)——既在企业内部私有云部署服务,又使用外部公有云部署服务的模式——成为微服务架构演进的必然选择。

但混合云部署远不止"在云上多开几台机器"那么简单。它需要系统性地解决三大核心问题:

  • 跨云服务如何实现流量调度与负载均衡?
  • 跨云服务如何实现数据同步与一致性?
  • 跨云服务如何实现统一容器运维与治理?

2025-2026 年的混合云技术栈已经与原文写作时期发生了质的变化:Kubernetes 成为跨云统一调度层,边缘计算从概念走向生产,零信任安全模型替代了传统的 VPN 边界防护,GitOps 成了多集群配置分发的标准范式。本文将从架构原理、技术选型、实战方案三个维度,系统性地为你拆解微服务混合云部署的最新实践。


一、跨云流量调度与负载均衡

1.1 从 DNS 分流到智能流量调度

传统混合云流量调度依赖 DNS 层的权重解析:将用户请求按比例路由到私有云机房和公有云机房,各机房内部再由 VIP/SLB + Nginx 完成四层和七层负载均衡。这种方式简单直接,但存在两个固有缺陷:

  • DNS 缓存导致的流量不均:客户端和本地 DNS 会缓存解析结果,切换流量后实际效果往往滞后数分钟甚至更长。
  • 缺乏应用层感知:DNS 层无法感知后端服务的健康状态和容量水位,可能出现将流量打到已过载节点的情况。
图表渲染中…

2025 年的方案在两个层面做了升级:

全局流量管理(GSLB)替代简单 DNS 分流。无论是 AWS Route 53 的流量策略、阿里云全局流量管理(GTM),还是独立方案如 NS1、CoreDNS + Kubernetes Multi-Cluster Service(MCS),都能基于延迟、健康检查、权重等多维度策略实现更精细的跨云流量调度,并将切换延迟从分钟级缩短到秒级。

Ingress Gateway + Service Mesh 替代 VIP/SLB + Nginx。基于 Istio 或 Gateway API 的 Ingress Gateway 统一了跨云的七层流量管理,配合 Service Mesh 的 Sidecar 代理,实现了服务级别的流量路由、熔断、重试、可观测性,不再依赖各机房独立的 Nginx 配置同步。

1.2 多集群服务发现与路由

Kubernetes 原生的 Service 发现机制是集群内的,跨云多集群场景下需要额外的服务发现层。当前主流方案有三类:

方案核心机制适用场景代表项目
Multi-Cluster Service (MCS)标准化 ServiceExport/ServiceImport API同构 K8s 集群间的服务发现Kubernetes MCS 规范
Service Mesh 多集群控制面互联,跨集群服务注册需要精细流量治理的场景Istio Multi-Primary、Linkerd Multicluster
DNS-based 联邦全局 DNS 记录实现服务跨集群可达异构环境、轻量级需求ExternalDNS + CoreDNS

Kubernetes MCS 规范(KEP-1645)在 2024 年进入 Beta,2025 年已成为跨集群服务发现的事实标准。其核心思路是:每个集群通过 ServiceExport 将本地 Service 暴露出去,其他集群通过 ServiceImport 导入该服务,底层由 Submariner 或 Skupper 等网络互联方案打通集群间通信。

yaml
# K3s 1.31+ / 标准 Kubernetes MCS 示例
# 集群 A:导出服务
apiVersion: multicluster.x-k8s.io/v1alpha1
kind: ServiceExport
metadata:
  name: feed-service
  namespace: production
---
# 集群 B:自动生成 ServiceImport(由 MCS 控制器创建)
apiVersion: multicluster.x-k8s.io/v1alpha1
kind: ServiceImport
metadata:
  name: feed-service
  namespace: production
spec:
  type: ClusterSetIP
  ports:
  - port: 8080
    protocol: TCP
  ips:
  - 240.0.0.1  # 集群集 IP,由 MCS 分配

Istio Multi-Primary 模式下,多个集群的 Istiod 控制面共享配置,各集群的 Sidecar 可以直接访问远程集群的 Endpoint,实现了透明的跨集群服务调用。这种方案的优势是流量治理能力最强(支持跨集群的流量拆分、故障注入等),但运维复杂度也最高。

1.3 跨云流量调度策略

混合云场景下的流量调度不仅仅是"按比例分配"这么简单,需要考虑多种策略的组合:

图表渲染中…

实际生产中,微博这类业务的典型策略是私有云优先 + 公有云弹性溢出:日常流量全部由私有云承载,热点事件触发时在秒级将溢出流量调度到公有云。这一策略的实现依赖三个能力:

  1. 实时容量感知:通过 Prometheus + Thanos 跨集群监控,实时计算各集群剩余容量。
  2. 自动弹性触发:基于 HPA/VPA 指标或自定义指标,触发公有云集群的自动扩容。
  3. 流量无缝切换:Ingress Gateway 层的流量权重调整,结合服务网格的预热机制避免冷启动。

二、跨云数据同步与一致性

2.1 混合云网络互联

跨云数据同步的前提是网络互联。原文提到的 VPN/专线方案至今仍是主流,但技术层面有了显著进化:

图表渲染中…

专线方案依然是高性能场景的首选,双专线冗余保证高可用。但 2025 年的专线方案有几个新变化:

  • SD-WAN 智能选路:不再静态分配流量到两条专线,而是基于延迟、丢包率、带宽利用率等指标动态选路,自动规避劣化链路。
  • 专线 + Submariner 混合:Submariner(CNCF Sandbox 项目)可以在专线之上建立 K8s 集群间的 Overlay 网络,统一跨集群的 Pod 到 Pod 通信。当专线故障时自动切换到 IPSec/WireGuard 隧道,实现了网络层的高可用。
  • Skupper L7 互联:对于不需要 Pod 全互联的场景,Skupper(CNCF Sandbox 项目)通过 HTTP/AMQP 等应用层协议代理实现跨集群服务通信,无需打通底层网络,安全性更高但性能稍逊。
网络方案互通层级性能安全性运维复杂度适用场景
专线L2/L3极高高(物理隔离)大规模数据同步、低延迟要求
VPN + IPSecL3中小规模、非实时数据同步
SubmarinerL3 (Pod-to-Pod)高(IPSec/WireGuard)同构 K8s 集群互联
SkupperL7 (HTTP/gRPC)高(应用层加密)服务级别互联、安全优先
Cilium ClusterMeshL3/L4 (eBPF)极高高(eBPF 策略)已使用 Cilium CNI 的集群

2.2 数据库跨云策略:上云 vs 不上云

原文中微博的方案是公有云只部署缓存、不部署数据库,核心考虑是数据安全。2025 年这个问题的答案更加 nuanced:

不上云(缓存方案) 依然是许多企业的首选,尤其对于金融、医疗等强监管行业。其架构模式是:公有云仅部署缓存层(Redis Cluster),缓存穿透时通过专线回源私有云数据库。关键优化点在于:

  • 多级缓存:本地缓存(Caffeine)→ 分布式缓存(Redis)→ 回源数据库,尽量减少跨云回源。
  • 缓存预热:通过消息队列(如 Kafka 跨集群 MirrorMaker)将写事件同步到公有云,主动更新缓存,降低穿透率。
  • 降级策略:专线故障时切换到本地缓存 + 降级数据,保证基本可用。

上云(数据库跨云同步) 在以下场景可行:非核心数据(如日志、行为数据)、使用云厂商托管数据库(如 RDS、Cloud SQL)且接受其安全模型、或者采用了强加密方案。2025 年的数据库跨云同步方案主要有:

图表渲染中…

方案一:主从复制最简单,私有云为主库、公有云为只读副本,适合"读多写少"的弹性场景。MySQL 的 Binlog Replication、PostgreSQL 的 Logical Replication 都是成熟方案。但需要注意专线延迟对复制的影响,通常跨云延迟在 1-5ms 之间可以接受半同步复制,超过 10ms 建议异步复制。

方案二:双向同步最复杂,需要解决写冲突。CockroachDB、YugabyteDB 这类 NewSQL 数据库原生支持多活写入,但改造成本高。对于 MySQL/PostgreSQL,可以使用 PingCAP TiDB 的 TiCDC 或 Otter 等工具,但需要精心设计冲突解决策略。

方案三:CDC 事件流最灵活,通过 Debezium 捕获数据库变更事件,经 Kafka 跨云同步后由消费者更新目标数据库或缓存。这种方案解耦了源端和目标端,可以灵活选择同步粒度,是 2025 年最主流的跨云数据同步范式。

yaml
# Debezium MySQL CDC Connector 配置示例 (Debezium 2.7+)
apiVersion: kafka.strimzi.io/v1beta2
kind: KafkaConnector
metadata:
  name: mysql-cdc-connector
  namespace: data-sync
spec:
  class: io.debezium.connector.mysql.MySqlConnector
  config:
    database.hostname: mysql-primary.private-cloud.svc
    database.port: 3306
    database.user: debezium
    database.password: ${DB_PASSWORD}
    database.server.id: 184054
    database.server.name: feed_db
    database.include.list: feed_service
    table.include.list: feed_service.posts,feed_service.comments
    database.history.kafka.bootstrap.servers: kafka.data-sync.svc:9092
    database.history.kafka.topic: schema-changes.feed_db
    # 增量快照,避免全量锁表 (Debezium 2.0+ 特性)
    incremental.snapshot.enabled: true
    # 信号数据采集模式
    signal.data.collection: feed_service.debezium_signal

2.3 缓存跨云同步实战

以微博 Feed 服务为例,混合云缓存同步的完整流程如下:

图表渲染中…

关键设计决策:

  1. Kafka MirrorMaker 2.0 跨集群复制:替代原文中的 WMB 消息总线,MirrorMaker 2.0 支持 Active-Active 和 Active-Passive 模式,自动检测和修复数据不一致。
  2. 缓存选择性部署:公有云不部署全量缓存,仅部署核心服务的热点数据缓存,将穿透率控制在 5% 以下。
  3. 专线带宽保护:设置跨云回源的 QPS 限流,避免缓存雪崩时打满专线。降级策略为返回本地降级数据而非回源。

三、跨云容器运维与治理

3.1 混合云管理平台演进

原文中微博自研的 DCP(容器运维平台)代表了 2018 年的实践——基于"主机-服务池-集群"模型管理跨云资源。2025 年,Kubernetes 已经成为跨云统一调度层,混合云管理平台的核心能力发生了根本性变化:

能力维度2018 方案 (DCP)2025 方案
资源模型主机-服务池-集群Namespace-Cluster-ClusterSet
调度单元容器 (Docker)Pod / Deployment / Kustomization
配置分发自研脚本GitOps (ArgoCD / Flux)
服务发现nginx-upsync / Config ServiceKubernetes MCS / Service Mesh
弹性扩容手动/脚本触发HPA + KEDA + Cluster Autoscaler
网络互联专线 + VPNSubmariner / Cilium ClusterMesh
安全策略网络隔离 + ACL零信任 + SPIFFE/SPIRE
可观测性独立监控OpenTelemetry + Thanos/Cortex

当前主流的混合云管理平台分三类:

云厂商托管平台:Google Anthos(原 GKE Enterprise)、Azure Arc、AWS EKS Anywhere。三者都提供统一控制面管理跨云 K8s 集群,但各有侧重:

平台最新版本核心能力控制面位置适用生态
Anthos1.16+ (2025)Anthos Config Management + Fleet + Service MeshGCP 托管GCP 优先
Azure Arc持续更新Arc Kubernetes + GitOps + Azure PolicyAzure 托管Azure 优先
EKS Anywherev0.21+ (2025)EKS-D 本地集群 + GitOps + Flux本地/CloudAWS 优先

开源多集群管理:Karmada(CNCF Incubating)、Rancher Fleet。Karmada 提供了 Kubernetes 风格的多集群联邦 API,支持跨集群的 PropagationPolicy(工作负载分发策略)和 OverridePolicy(集群级差异化配置),是目前最活跃的开源多集群编排项目。

yaml
# Karmada PropagationPolicy 示例 (Karmada 1.12+)
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
  name: feed-service-propagation
  namespace: production
spec:
  resourceSelectors:
  - apiVersion: apps/v1
    kind: Deployment
    name: feed-service
  placement:
    clusterAffinity:
      clusterNames:
      - private-cloud-bj    # 私有云北京集群
      - private-cloud-sh    # 私有云上海集群
      - public-cloud-ali    # 阿里云集群
    clusterTolerations:
    - key: cluster.karmada.io/not-ready
      operator: Exists
      effect: NoExecute
      tolerationSeconds: 30
    replicaScheduling:
      replicaDivisionPreference: Weighted
      replicaSchedulingType: Divided
      weightPreference:
        staticWeightList:
        - targetCluster:
            clusterNames:
            - private-cloud-bj
          weight: 4
        - targetCluster:
            clusterNames:
            - private-cloud-sh
          weight: 3
        - targetCluster:
            clusterNames:
            - public-cloud-ali
          weight: 3

3.2 边缘计算:混合云的自然延伸

混合云的下一个演进方向是边缘计算——将计算能力从中心云下沉到离用户更近的边缘节点。2025 年,边缘 K8s 发行版已经成熟:

发行版最新版本单二进制大小适用场景核心特性
K3sv1.31+ (2025)~60MB通用边缘、IoT、CI去除 legacy 代码、内置 SQLite、自动 TLS
MicroK8sv1.31+ (2025)~200MB开发测试、小型边缘Snap 包管理、自动更新、低运维
OpenYurtv1.5+ (2025)依赖 K8s云边协同、大规模边缘边缘自治、YurtHub 代理、Pool 管理
KubeEdgev1.17+ (2025)CloudCore + EdgeCore超大规模 IoT、弱网环境CloudHub/EdgeHub、Device MQTT、离线自治

K3s 是最轻量的 CNCF 认证 K8s 发行版,由 Rancher(SUSE)维护。它删除了所有非必需的 Alpha 特性和 cloud-provider 代码,用 SQLite 替换 etcd 作为默认存储,用 containerd 替换 Docker,用 Traefik 替换默认 Ingress Controller。单节点只需一条命令即可启动:

bash
# K3s 1.31+ 安装(边缘节点)
curl -sfL https://get.k3s.io | sh -s - server \
  --cluster-init \
  --tls-san=edge-node-1.internal \
  --disable=traefik \
  --kube-apiserver-arg=--enable-bootstrap-token-auth=true

# 查看节点状态
kubectl get nodes
# NAME             STATUS   ROLES                       AGE   VERSION
# edge-node-1      Ready    control-plane,master        1m    v1.31.5+k3s1

OpenYurt 是阿里开源的云边协同项目,核心设计理念是"边缘自治"——当云边网络断开时,边缘节点上的业务不受影响。其架构如下:

图表渲染中…

OpenYurt 1.5+ 的关键特性:

  • YurtHub:边缘节点上的代理组件,缓存云端 API 响应。网络正常时代理请求到云端,网络断开时从本地缓存响应,保证边缘 Pod 的生命周期管理不受影响。
  • NodePool:将边缘节点按地域/机房组织为节点池,支持池级别的统一管理和部署策略。
  • YurtAppSet/YurtAppDaemon:针对边缘场景的工作负载类型,支持按 NodePool 差异化配置。

3.3 GitOps 统一配置分发

2025 年,GitOps 已经成为混合云配置分发的标准范式。核心思路是:将所有集群的期望状态声明在 Git 仓库中,通过 ArgoCD 或 Flux 自动将配置同步到各集群,实现声明式、可审计、可回滚的多集群配置管理。

图表渲染中…

ArgoCD ApplicationSet 是多集群 GitOps 的核心组件,它可以根据集群列表自动生成 ArgoCD Application:

yaml
# ArgoCD ApplicationSet 多集群分发 (ArgoCD 2.12+)
apiVersion: argoproj.io/v1alpha1
kind: ApplicationSet
metadata:
  name: feed-service
  namespace: argocd
spec:
  generators:
  - clusters:
      selector:
        matchLabels:
          app: feed-service    # 只分发到带此标签的集群
  template:
    metadata:
      name: '{{name}}-feed-service'
    spec:
      project: production
      source:
        repoURL: https://git.internal.com/platform/manifests.git
        targetRevision: main
        path: apps/feed-service/overlays/{{name}}   # 每个集群的差异化配置
      destination:
        server: '{{server}}'
        namespace: production
      syncPolicy:
        automated:
          prune: true
          selfHeal: true
        syncOptions:
        - CreateNamespace=true
        - ServerSideApply=true

Kustomize 的 Overlay 机制让"Base + 差异"的配置模式成为可能:Base 定义通用配置,各集群的 Overlay 覆盖副本数、环境变量、资源限制等差异化参数。

3.4 跨云弹性扩容

混合云弹性扩容在 2025 年有了更自动化的方案:

场景一:集群内弹性(HPA + KEDA)

KEDA(Kubernetes Event-Driven Autoscaler)扩展了 HPA 的指标来源,支持从 Kafka lag、Redis list length、Prometheus 查询等事件源触发扩容,不再局限于 CPU/内存指标:

yaml
# KEDA ScaledObject 示例 (KEDA 2.15+)
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata:
  name: feed-service-scaler
  namespace: production
spec:
  scaleTargetRef:
    name: feed-service
  minReplicaCount: 3
  maxReplicaCount: 100
  cooldownPeriod: 60
  triggers:
  - type: prometheus
    metadata:
      serverAddress: http://thanos-query.monitoring.svc:9090
      metricName: feed_request_rate
      threshold: "1000"
      query: >
        sum(rate(http_requests_total{app="feed-service"}[1m]))

场景二:跨集群弹性(Karmada + Cluster Autoscaler)

当单集群容量不足时,Karmada 可以将工作负载调度到其他集群,同时触发目标集群的 Cluster Autoscaler 扩容节点:

图表渲染中…

场景三:基于优先级的弹性调度

混合云中不同服务的优先级不同。核心服务(如 Feed、User)优先使用私有云资源,非核心服务(如推荐、搜索)在资源紧张时可以被驱逐到公有云。这可以通过 Kubernetes 的 PriorityClass + Karmada 的 ReplicaSchedulingPolicy 实现:

yaml
# 优先级定义
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: critical-service
value: 1000000
globalDefault: false
description: "核心业务服务,优先占用私有云资源"
---
apiVersion: scheduling.k8s.io/v1
kind: PriorityClass
metadata:
  name: elastic-service
value: 500000
globalDefault: false
description: "弹性业务服务,可被驱逐到公有云"

四、混合云安全:从边界防护到零信任

4.1 传统安全模型的局限

原文中的安全模型以网络隔离为核心——通过 VPN/专线打通私有云与公有云,通过 ACL 和防火墙控制访问。这种"城堡与护城河"模型有一个根本性假设:内部网络是可信的。但在混合云环境下,这个假设不再成立:

  • 跨云通信链路经过公网,存在中间人攻击风险。
  • 公有云的共享基础设施中,其他租户可能成为攻击面。
  • 微服务间的东西向流量激增,边界防火墙无法有效管控。
  • 临时弹性扩容的节点缺乏完整的信任链建立机制。

4.2 零信任架构与 SPIFFE/SPIRE

零信任的核心原则是**"永不信任,始终验证"**——不在网络位置上做信任假设,每个服务调用都必须经过身份认证和授权。SPIFFE(Secure Production Identity Framework for Everyone)和 SPIRE(SPIFFE Runtime Environment)是 CNCF 毕业项目,为云原生环境提供了标准化的服务身份框架:

图表渲染中…

SPIFFE 的核心概念是 SVID(SPIFFE Verifiable Identity Document),它为每个工作负载提供了一个加密可验证的身份标识,格式为 spiffe://trust-domain/workload-identifier。SVID 可以是 X.509 证书或 JWT Token,用于服务间的 mTLS 认证或 JWT 授权。

SPIRE 的部署模式适配混合云场景:

yaml
# SPIRE Server 部署在私有云 (SPIRE 1.10+)
apiVersion: spire.spiffe.io/v1alpha1
kind: SpireServer
metadata:
  name: spire-server
  namespace: spire-system
spec:
  trustDomain: hybrid-cloud.example.com
  plugins:
    DataStore:
      sql:
        database_type: postgres
        connection_string: "postgres://spire:password@postgres.spire-system.svc:5432/spire?sslmode=verify-full"
    KeyManager:
      disk:
        directory: /run/spire/data/keys
    NodeAttestor:
      k8sPsat:
        # 允许私有云和公有云集群的节点认证
        allowedNodeLabelKeys:
        - kubernetes.io/os
        serviceAccountAllowList:
        - "spire-system:spire-agent"
    BundlePublisher:
      # 将 Trust Bundle 发布到公网端点,供公有云/边缘节点拉取
      https:
        address: 0.0.0.0:8443

在混合云中,SPIRE Server 部署在私有云(或独立信任域),公有云和边缘节点的 SPIRE Agent 通过 HTTPS 拉取 Trust Bundle 并向 Server 注册工作负载身份。Service Mesh(Istio/Linkerd)可以集成 SPIRE 作为证书提供者,替代自签 CA,实现跨云统一的 mTLS 信任链。

4.3 混合云安全纵深防御

零信任不是单一技术,而是一个纵深防御体系:

安全层传统方案零信任方案实现技术
身份服务账号 + Secret服务身份 SVIDSPIFFE/SPIRE
传输VPN + TLS 终止mTLS 全链路加密Istio/Linkerd + SPIRE
授权网络 ACL服务级 RBAC/ABACOPA/Gatekeeper + Kyverno
审计网络日志全链路追踪 + 审计OpenTelemetry + Falco
运行时宿主机安全容器运行时安全Falco + eBPF

关键实践

  1. 最小权限原则:每个微服务只声明自己需要访问的下游服务,通过 NetworkPolicy + Service Mesh AuthorizationPolicy 双重限制。
  2. 信任域划分:私有云和公有云可以使用不同的信任域(Trust Domain),通过 Trust Bundle Federation 建立跨域信任。
  3. 持续验证:SVID 有短期有效期(默认 1 小时),SPIRE Agent 自动轮换,即使密钥泄露影响窗口也很小。

五、技术演进时间线

图表渲染中…

六、架构决策指南

不同规模和阶段的企业,混合云方案的选择差异巨大。以下决策指南基于业务规模、技术成熟度和团队能力三个维度给出建议:

6.1 按业务规模选择

业务规模推荐方案控制面网络互联数据同步安全模型
小型(<50 服务)K3s + ArgoCD单集群多命名空间VPN + Ingress主从复制TLS + NetworkPolicy
中型(50-200 服务)Karmada + ArgoCD多集群联邦Submariner / 专线CDC 事件流Service Mesh mTLS
大型(200-1000 服务)Anthos/Arc + Karmada多集群联邦 + 托管专线 + SubmarinerCDC + 缓存预热零信任 SPIRE + mTLS
超大型(>1000 服务)定制平台 + 开源组件多层联邦 + 平台工程专线 + eBPF + SD-WAN多模同步 + 自研零信任 + 合规即代码

6.2 按核心诉求选择

图表渲染中…

6.3 关键技术选型对比

多集群编排

维度KarmadaRancher FleetAnthos FleetAzure Arc
开源/商业开源 (CNCF)开源 (SUSE)商业 (GCP)商业 (Azure)
多云支持任意 K8s任意 K8sGCP + 有限多云Azure + 有限多云
调度策略PropagationPolicyGitRepo + BundleFleet PackageGitOps + Policy
差异化配置OverridePolicyBundle OverlayConfig SyncGitOps Overlay
社区活跃度高 (CNCF Incubating)商业支持商业支持

边缘 K8s 发行版

维度K3sMicroK8sOpenYurtKubeEdge
架构独立 K8s独立 K8sK8s 增强层云边分离架构
边缘自治有限有限强(YurtHub)强(MetaServer)
设备管理无(通过扩展)强(Device CRD)
弱网适应一般一般极强
学习曲线中高
最小资源512MB RAM2GB RAM依赖宿主 K8s128MB EdgeCore

七、小结

混合云部署是微服务架构从单云走向多云的必经之路。从 2018 年的自研运维平台到 2025 年的 Kubernetes 原生多集群联邦,技术栈发生了质的变化,但核心问题始终是三个:

  1. 跨云流量调度:从 DNS 权重分流到 GSLB + Ingress Gateway + Service Mesh,实现了应用层感知的智能调度。
  2. 跨云数据同步:从自研消息总线到 CDC 事件流 + 缓存预热,兼顾了实时性和可靠性。数据库是否上云取决于数据敏感度和合规要求,"缓存上云 + 数据留私"仍是主流。
  3. 跨云容器运维:从"主机-服务池-集群"到 Karmada 多集群联邦 + GitOps 配置分发 + KEDA 事件驱动弹性,实现了声明式、自动化的混合云运维。

安全层面,零信任架构替代了传统的边界防护,SPIFFE/SPIRE 为跨云服务提供了统一的身份框架,Service Mesh 的 mTLS 实现了全链路加密,OPA/Kyverno 实现了策略即代码。

边缘计算作为混合云的自然延伸,K3s/OpenYurt/KubeEdge 已经在大量生产环境中验证。边缘自治、弱网适应、设备管理是选择边缘发行版的关键考量。

最后,混合云没有银弹。选择 Anthos 还是 Karmada、选择 Submariner 还是 Skupper、选择缓存上云还是数据库上云——这些决策都必须基于你的业务规模、合规要求、团队能力和成本预算来综合权衡。本文的架构决策指南提供了一个系统化的决策框架,但最终的方案一定是你自己业务场景下的最佳权衡。


思考题

  1. 在零信任架构下,如果 SPIRE Server 所在的私有云机房完全不可用,公有云的服务间 mTLS 通信能否继续维持?如何设计 SPIRE 的高可用方案?
  2. Karmada 的 PropagationPolicy 将一个 Deployment 以 4:3:3 的权重分发到三个集群,如果其中一个集群完全不可用,Karmada 会如何处理?副本数是否会自动重新分配?