更新时间:2026-02-11 GMT+08:00
分享

CCI 实例高可用部署(多AZ容灾)

应用场景

在生产环境中,高可用性(High Availability) 是核心诉求。

  • 单实例风险:若工作负载仅部署单实例(Replicas=1),当该实例所在的底层节点发生故障、升级或网络波动时,业务将直接中断。
  • 单 AZ 风险:即使部署了多实例,若所有实例都集中在同一个可用区(Availability Zone, AZ),当该 AZ 发生电力或网络故障时,服务依然会面临全量瘫痪的风险。

建议配置 多实例(Replicas > 1) 结合 多可用区(Multi-AZ) 部署。利用 Kubernetes 的调度策略,将 Pod 分散调度到不同的物理区域,实现“同城容灾”。

获取可用区信息

在配置调度策略前,您需要确认当前区域(Region)下 CCI 服务支持的可用区列表(AZ ID),该 ID 将作为 YAML 文件中 values 的参数。您可以通过控制台区域实时查看,也可以参考下表(注:支持的 Region 和 AZ 可能会随业务发展新增,以控制台实际显示为准)。

Region

AZ

华南-广州/cn-south-1

cn-south-1e

cn-south-1f

cn-south-1g

华北-北京四/cn-north-4

cn-north-4a

cn-north-4b

cn-north-4g

华东-上海一/cn-east-3

cn-east-3a

cn-east-3b

cn-east-3c

cn-east-3d

华东-芜湖/cn-east-4

cn-east-4a

西南-贵阳一/cn-southwest-2

cn-southwest-2d

华北三/cn-north-12

cn-north-12a

华南-广州-友好用户环境/cn-south-4

cn-south-4a

配置多 AZ 高可用调度(推荐)

通过配置 Pod 反亲和性(PodAntiAffinity),让调度器自动将 Pod 分散到不同 AZ。

CCI配置示例:

Key: failure-domain.beta.kubernetes.io/zone
apiVersion: apps/v1
kind: Deployment
metadata:
  name: app-ha-cci1
spec:
  replicas: 3
  template:
    metadata:
      labels:
        app: myapp
    spec:
      affinity:
        podAntiAffinity:
          # 软策略:尽量分散到不同 AZ,无法满足时仍可调度
          preferredDuringSchedulingIgnoredDuringExecution:
          - weight: 100
            podAffinityTerm:
              labelSelector:
                matchExpressions:
                - key: app
                  operator: In
                  values:
                  - myapp
              topologyKey: failure-domain.beta.kubernetes.io/zone

配置指定AZ调度

若需将 Pod 强制部署在特定 AZ(例如配合特定 AZ 的云硬盘使用),可使用节点亲和性(NodeAffinity)

CCI指定AZ示例:
apiVersion: v1
kind: Pod
metadata:
  name: nginx-pinned-cci1
spec:
  affinity:
    nodeAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
        nodeSelectorTerms:
        - matchExpressions:
          - key: failure-domain.beta.kubernetes.io/zone
            operator: In
            values:
            - cn-north-4a # 替换为实际 AZ 名称
  containers:
  - name: nginx
    image: nginx:latest

相关文档