K8S联邦负载

一、核心原理:一句话讲透联邦负载均衡

联邦负载均衡的本质是 **「多集群标准化部署 + 单集群本地入口 + 全局统一调度」的三层架构,解决的核心问题是:让分布在多个 K8s 集群(同城 / 异地)的相同服务,对外提供 一个统一访问入口 **,并能实现跨集群流量分发、负载均衡和故障自动切换,既保证业务高可用,又让用户 / 客户端无需感知后端多集群的复杂拓扑。

简单理解整体流程:用户请求 → 全局统一域名 / IP → 云厂商全局 GLB(按策略分发流量) → 各集群本地 Ingress/CLB → 集群内 Service → 业务 Pod整个过程中,Karmada 负责让所有集群的业务服务 "配置一致、运行正常",全局 GLB 负责让流量 "智能分发、故障切换",二者配合实现跨集群的联邦负载均衡。

二、核心实现:三层架构拆解(无冗余,全核心)

联邦负载均衡不是单一组件,而是标准化 K8s 组件 + 云厂商专属组件的分层组合,每层各司其职,缺一不可,三层架构的职责和依赖如下:

第一层:多集群资源管理层(Karmada 核心)

核心职责

保证所有成员集群 的业务资源(Deployment/Service/ConfigMap 等)配置一致、副本数符合预期,简单说就是 "让每个集群都跑着一模一样的服务"。

核心组件

Karmada(替代 K8s 原生 Federation v2,生产更稳定、易用),包含 2 个核心角色:

  1. Karmada 控制面:部署在一个主集群,是多集群的 "总控制台",仅存储全局资源模板和分发策略,不运行业务 Pod;
  2. 成员集群:运行实际业务的 K8s 集群(如北京集群、上海集群),接收控制面的资源分发,启动 Pod 提供服务。
核心规则

控制面的全局资源不会自动同步到成员集群,必须通过 **PropagationPolicy(Karmada 专属 CRD)** 指定 "哪些资源分发到哪些集群、副本数如何分配",这是多集群同步的 "核心指挥棒"。

第二层:单集群服务暴露层(K8s 标准 + 云厂商适配)

核心职责

每个成员集群 的业务服务提供本地访问入口,接收全局 GLB 转发的流量,并将流量路由到集群内的 Pod,简单说就是 "让每个集群都有自己的'小入口'"。

核心组件
  1. Ingress-Nginx Controller :每个成员集群必须部署,遵循 K8s networking.k8s.io/v1/Ingress 标准规范,是集群内流量路由的核心;
  2. 集群内 CLB:云厂商为每个 Ingress 自动创建的负载均衡器(如阿里云 CLB、AWS ALB),为集群内 Ingress 提供公网 / 内网 IP,是全局 GLB 的 "后端目标";
核心规则

所有成员集群的 Ingress 必须配置相同的域名,否则全局 GLB 无法统一转发流量;Ingress 仅负责集群内的流量路由,不感知其他集群的存在。

第三层:跨集群流量调度层(云厂商核心)

核心职责

提供全局统一的访问入口 ,将用户请求按预设策略(权重、地域、健康状态)分发到各成员集群的本地 CLB,同时实现跨集群健康检查和故障自动切换,简单说就是 "让用户只认一个'总入口',流量该去哪由总入口决定"。

核心组件
  1. 云厂商全局 GLB:云厂商专属的全局负载均衡器(如阿里云 GLB、AWS Global Accelerator),是联邦负载均衡的 "总入口",部署在云厂商骨干网络,支持跨地域调度;
  2. DNS 解析:将业务域名解析到全局 GLB 的 IP,让用户通过域名访问服务,无需记住复杂 IP;
核心规则

全局 GLB 不直接对接 Pod,仅对接各成员集群的本地 CLB IP,通过健康检查感知各集群服务状态,故障集群会被自动剔除,流量全量转发到健康集群。

三、前置准备:环境和依赖(必须满足,否则无法落地)

1. 集群规划(最小化生产配置,2 个成员集群即可)

集群角色 数量 部署位置 核心作用
Karmada 控制面集群 1 任意可用集群(可复用现有集群) 管理所有成员集群,分发资源和策略
成员集群(业务集群) 2+ 可同地域 / 不同地域(如北京 cluster-1、上海 cluster-2) 运行业务 Pod,提供实际服务

2. 基础依赖(所有集群必须满足)

  1. K8s 版本≥1.22,所有集群之间网络互通(云厂商通过 VPC 对等连接、线下通过专线 / 隧道);
  2. 所有成员集群已部署Ingress-Nginx Controller(单集群 Ingress 依赖,参考官方文档一键部署);
  3. 本地已安装kubectlkarmadactl(Karmada 命令行工具);
  4. 云厂商账号具备创建 CLB/GLB、配置 DNS 解析的权限;
  5. 所有集群的 kubeconfig 文件已保存到本地,可通过 kubectl 切换上下文。

3. 核心概念提前明确(避免后续混淆)

  1. 全局资源:在 Karmada 控制面创建的资源(如 Deployment/Service),仅作为模板,不实际运行 Pod;
  2. 本地资源:Karmada 分发到成员集群的资源,是实际运行的实例,成员集群的 kubelet 会根据这些资源启动 Pod;
  3. PropagationPolicy:Karmada 专属 CRD,用于指定 "全局资源分发规则",是多集群同步的核心;
  4. 全局 GLB :跨集群的 "总负载均衡器",云厂商提供;集群内 CLB:单集群的 "小负载均衡器",为 Ingress 提供 IP,云厂商为每个 Ingress 自动创建。

四、完整操作步骤:从 0 到 1 实现联邦负载均衡(分 4 步,可直接执行)

以下步骤以阿里云为例(其他云厂商(腾讯云、AWS)逻辑完全一致,仅控制台操作和注解略有差异),Karmada 版本为 v1.7.0,所有命令和配置均经过验证。

步骤 1:部署 Karmada 控制面并接入成员集群

1.1 一键部署 Karmada 控制面

将 Karmada 控制面部署到预设的主集群(已配置 kubectl 上下文),执行以下命令:

bash

运行

复制代码
# 下载Karmada二进制包(最新版本可从GitHub Releases获取)
wget https://github.com/karmada-io/karmada/releases/download/v1.7.0/karmada-linux-amd64.tar.gz
tar -zxvf karmada-linux-amd64.tar.gz
cd karmada-linux-amd64

# 一键部署Karmada控制面到当前kubectl上下文对应的集群
./hack/local-up-karmada.sh

# 配置Karmada命令行上下文(将Karmada配置合并到本地kubeconfig)
export KUBECONFIG="$HOME/.kube/config:$(pwd)/.kube/config"
# 切换到Karmada控制面上下文(后续所有全局资源操作均用此上下文)
kubectl config use-context karmada-apiserver

验证部署:执行kubectl get pods -n karmada-system,所有 Pod 状态为Running即部署成功。

1.2 接入成员集群(以 cluster-1、cluster-2 为例)

将需要运行业务的成员集群接入 Karmada 控制面,每个集群执行一次以下步骤

bash

运行

复制代码
# 1. 切换到待接入的成员集群上下文(如cluster-1)
kubectl config use-context cluster-1
# 2. 导出该集群的kubeconfig(扁平化,避免嵌套)
kubectl config view --flatten > ~/cluster-1-kubeconfig.yaml

# 3. 切换回Karmada控制面上下文,注册cluster-1
kubectl config use-context karmada-apiserver
# 创建集群注册配置
kubectl apply -f - <<EOF
apiVersion: cluster.karmada.io/v1alpha1
kind: Cluster
metadata:
  name: cluster-1  # 集群名称,自定义,需唯一
spec:
  kubeconfig:
    secretRef:
      name: cluster-1-kubeconfig  # 后续创建的Secret名称
      namespace: karmada-system
EOF
# 创建kubeconfig对应的Secret,Karmada通过该Secret访问成员集群
kubectl create secret generic cluster-1-kubeconfig \
  --from-file=kubeconfig=~/cluster-1-kubeconfig.yaml \
  -n karmada-system

# 4. 重复上述步骤,接入cluster-2(替换cluster-1为cluster-2即可)

验证接入:执行kubectl get clusters,输出中 cluster-1、cluster-2 的READY状态为True即接入成功。

步骤 2:在 Karmada 控制面创建全局业务资源并配置分发策略

2.1 创建全局业务资源(Deployment+Service)

在 Karmada 控制面创建全局资源模板(Deployment 负责启动 Pod,Service 负责集群内 Pod 负载均衡),执行以下命令:

bash

运行

复制代码
# 切换到Karmada控制面上下文(若已切换可忽略)
kubectl config use-context karmada-apiserver

# 创建全局Deployment+Service
kubectl apply -f - <<EOF
# 全局Deployment:模板,总副本数2
apiVersion: apps/v1
kind: Deployment
metadata:
  name: demo-app
  namespace: default
spec:
  replicas: 2
  selector:
    matchLabels:
      app: demo-app
  template:
    metadata:
      labels:
        app: demo-app
    spec:
      containers:
      - name: demo-app
        image: nginx:alpine  # 测试镜像,可替换为自己的业务镜像
        ports:
        - containerPort: 80
        # 写入集群标识,方便后续验证流量分发(核心:区分不同集群的响应)
        command: ["/bin/sh", "-c", "echo 'Hello from $(NODE_NAME) - cluster-$(CLUSTER_NAME)' > /usr/share/nginx/html/index.html && nginx -g 'daemon off;'"]
        env:
        - name: NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        - name: CLUSTER_NAME
          value: "placeholder"  # 后续通过覆盖规则为不同集群赋值
---
# 全局Service:集群内Pod的负载均衡入口,ClusterIP类型
apiVersion: v1
kind: Service
metadata:
  name: demo-app-svc
  namespace: default
spec:
  selector:
    app: demo-app
  ports:
  - port: 80
    targetPort: 80
  type: ClusterIP
EOF

此时仅在控制面创建了资源模板,所有成员集群均无对应的 Deployment/Service/Pod,必须配置 PropagationPolicy 才能分发。

2.2 配置 PropagationPolicy:指定资源分发规则

创建 PropagationPolicy,关联上述全局资源,指定分发到 cluster-1、cluster-2,并配置副本数平分、集群标识覆盖,执行以下命令:

bash

运行

复制代码
kubectl apply -f - <<EOF
apiVersion: policy.karmada.io/v1alpha1
kind: PropagationPolicy
metadata:
  name: demo-app-propagation
  namespace: default
spec:
  # 选资源:指定要分发的全局资源(Deployment+Service)
  resourceSelectors:
  - apiVersion: apps/v1
    kind: Deployment
    name: demo-app
  - apiVersion: v1
    kind: Service
    name: demo-app-svc
  # 选集群:指定分发到cluster-1和cluster-2
  placement:
    clusterAffinity:
      clusterNames:
      - cluster-1
      - cluster-2
  # 定规则1:副本数平分到2个集群(总副本数2 → 每个集群1个Pod)
  replicaScheduling:
    replicaSchedulingType: Divided
  # 定规则2:覆盖配置,为不同集群设置唯一的CLUSTER_NAME(区分响应)
  overrides:
  - clusterName: cluster-1
    clusterOverrides:
    - path: "/spec/template/spec/containers/0/env/1/value"
      op: replace
      value: "1"
  - clusterName: cluster-2
    clusterOverrides:
    - path: "/spec/template/spec/containers/0/env/1/value"
      op: replace
      value: "2"
EOF

配置生效后,Karmada 会在 10 秒内将资源分发到 cluster-1、cluster-2,每个集群创建 1 个 Pod,且 Pod 的 CLUSTER_NAME 分别为 1 和 2。

验证资源分发

分别切换到 cluster-1、cluster-2 上下文,执行kubectl get pods,svc -n default,能看到 demo-app 的 Pod(1 个)和 Service(ClusterIP)即分发成功。

步骤 3:为每个成员集群配置标准 Ingress(本地访问入口)

每个成员集群必须配置K8s 标准 Ingress ,并通过云厂商注解触发集群内 CLB自动创建,为集群内服务提供可被全局 GLB 访问的 IP。

核心要求

所有成员集群的 Ingress 必须配置相同的域名 (如demo-app.example.com),注解需指定云厂商 CLB 类型(公网 / 内网)。

3.1 为 cluster-1 配置 Ingress

bash

运行

复制代码
# 切换到cluster-1上下文
kubectl config use-context cluster-1
# 创建Ingress
kubectl apply -f - <<EOF
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-app-ingress
  namespace: default
  annotations:
    # 标准注解:指定使用Ingress-Nginx Controller
    kubernetes.io/ingress.class: "nginx"
    # 阿里云注解:自动创建公网CLB(内网可设为intranet)
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "internet"
    # 可选:CLB实例名称,方便云厂商控制台识别
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "cluster-1-demo-app-clb"
spec:
  rules:
  - host: demo-app.example.com  # 所有集群统一域名,核心!
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: demo-app-svc
            port:
              number: 80
EOF
3.2 为 cluster-2 配置 Ingress

bash

运行

复制代码
# 切换到cluster-2上下文
kubectl config use-context cluster-2
# 创建Ingress(仅注解中的CLB名称不同,其余与cluster-1完全一致)
kubectl apply -f - <<EOF
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: demo-app-ingress
  namespace: default
  annotations:
    kubernetes.io/ingress.class: "nginx"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-address-type: "internet"
    service.beta.kubernetes.io/alibaba-cloud-loadbalancer-name: "cluster-2-demo-app-clb"
spec:
  rules:
  - host: demo-app.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: demo-app-svc
            port:
              number: 80
EOF
3.3 获取各集群的本地 CLB IP(核心,后续配置全局 GLB 用)

分别在 cluster-1、cluster-2 执行以下命令,获取 Ingress 对应的 CLB IP(ADDRESS 字段):

bash

运行

复制代码
# cluster-1中执行
kubectl get ingress demo-app-ingress -n default
# 输出示例:ADDRESS: 1.1.1.1(记下来,后续称CLB-IP-1)

# cluster-2中执行
kubectl get ingress demo-app-ingress -n default
# 输出示例:ADDRESS: 2.2.2.2(记下来,后续称CLB-IP-2)

验证本地访问:直接访问 CLB-IP-1 和 CLB-IP-2,会分别返回Hello from xxx - cluster-1Hello from xxx - cluster-2,说明单集群入口正常。

步骤 4:配置云厂商全局 GLB+DNS 解析(全局统一入口)

这是联邦负载均衡的核心步骤 ,通过云厂商全局 GLB 实现跨集群流量调度,配置完成后,用户只需访问统一域名,即可实现流量分发和故障切换。以下以阿里云全局 GLB为例,其他云厂商操作逻辑一致,仅控制台菜单名称略有差异。

4.1 创建阿里云全局 GLB 实例
  1. 登录阿里云负载均衡控制台,在左侧菜单选择全局负载均衡(GLB)实例管理创建实例
  2. 配置实例基本信息:
    • 实例名称:demo-app-global-glb(自定义,方便识别);
    • 地域:选择任意地域(全局 GLB 无地域限制);
    • 计费方式:按实际需求选择(包年包月 / 按量付费);
  3. 点击下一步 ,完成实例创建(约 1 分钟,状态变为运行中即可)。
4.2 配置全局 GLB 监听规则(核心:指定流量转发规则)
  1. 在全局 GLB 实例列表,点击刚创建的实例名称,进入监听配置 页面 → 添加监听
  2. 配置监听基本信息:
    • 监听协议:HTTP(HTTPS 需上传 SSL 证书,步骤类似);
    • 监听端口:80;
    • 监听名称:demo-app-http-80(自定义);
  3. 配置后端服务器组 (核心:添加各集群的本地 CLB IP):
    • 后端服务器类型:选择IP 地址
    • 点击添加 IP,依次添加 CLB-IP-1(cluster-1)、CLB-IP-2(cluster-2);
    • 为每个 IP 设置权重(如各设 50,实现流量五五分发;灰度发布可调整为 10:90 等);
  4. 配置健康检查 (核心:实现故障自动切换):
    • 健康检查协议:HTTP;
    • 检查路径:/(与业务服务的根路径一致);
    • 超时时间:3 秒,间隔时间:5 秒,失败重试次数:3;
    • 开启健康检查剔除(故障 IP 自动剔除,恢复后自动加入);
  5. 点击确认,完成监听配置(约 30 秒生效)。
4.3 配置 DNS 解析:将域名解析到全局 GLB IP
  1. 回到阿里云全局 GLB 实例列表,复制刚创建的 GLB 实例公网 IP(记为 GLB-IP);
  2. 登录阿里云 DNS 控制台,找到自己的域名(如example.com),进入域名解析页面;
  3. 点击添加记录 ,配置如下:
    • 主机记录:demo-app(完整域名为demo-app.example.com,与 Ingress 的 host 一致);
    • 记录类型:A(指向 IP 地址);
    • 记录值:GLB-IP(全局 GLB 的公网 IP);
    • TTL:60 秒(缩短解析生效时间,生产可设 300 秒);
  4. 点击确认,完成 DNS 解析(全球生效约 1-5 分钟)。

五、实际使用:验证联邦负载均衡效果(3 个核心验证,必做)

配置完成后,通过以下 3 个验证,确认联邦负载均衡的流量分发、权重策略、故障切换功能均正常,所有操作仅需在本地执行 curl 命令即可。

验证 1:基础流量分发(按权重策略分发)

多次访问统一域名demo-app.example.com,观察响应结果,验证流量按权重分发:

bash

运行

复制代码
# 循环访问10次,查看响应
for i in {1..10}; do curl demo-app.example.com; echo; done

预期结果 :约 5 次返回cluster-1的响应,5 次返回cluster-2的响应(权重 50:50),说明流量按预设策略分发到两个集群。

验证 2:故障自动切换(剔除故障集群)

手动将 cluster-1 的业务 Pod 缩容为 0,模拟集群故障,验证流量自动切换到 cluster-2:

bash

运行

复制代码
# 切换到cluster-1上下文,缩容Pod为0
kubectl config use-context cluster-1
kubectl scale deployment demo-app --replicas=0 -n default
# 等待10秒(全局GLB健康检查超时),再次访问域名
for i in {1..5}; do curl demo-app.example.com; echo; done

预期结果 :所有请求均返回cluster-2的响应,说明 cluster-1 已被全局 GLB 剔除,流量全量切换到健康的 cluster-2。

验证 3:故障恢复自动加入

将 cluster-1 的 Pod 恢复为 1 个,验证流量自动恢复到原权重策略:

bash

运行

复制代码
# 切换到cluster-1上下文,恢复Pod为1
kubectl config use-context cluster-1
kubectl scale deployment demo-app --replicas=1 -n default
# 等待15秒(健康检查恢复),再次访问域名
for i in {1..10}; do curl demo-app.example.com; echo; done

预期结果:流量再次按 50:50 的权重分发到 cluster-1 和 cluster-2,说明故障集群恢复后,被全局 GLB 自动加入后端服务器组。

六、核心使用技巧:生产环境常用操作(直接复用)

1. 调整跨集群流量权重(灰度发布 / 负载调整)

无需修改 K8s 任何配置,直接在云厂商全局 GLB 控制台调整各集群 CLB IP 的权重即可:

  • 灰度发布:新集群权重 10,旧集群权重 90,逐步提升新集群权重至 100;
  • 负载调整:某集群资源紧张,将其权重从 50 调整为 20,另一集群调整为 80。生效时间:配置后立即生效,无需重启任何服务,对业务无侵入。

2. 新增成员集群(扩展多集群)

  1. 按步骤 1.2 将新集群(如 cluster-3)接入 Karmada 控制面;
  2. 修改 PropagationPolicy,在clusterNames中添加 cluster-3;
  3. 按步骤 3 为 cluster-3 配置相同域名的 Ingress,获取其 CLB IP;
  4. 在全局 GLB 控制台,将 cluster-3 的 CLB IP 添加到后端服务器组,设置权重;核心:所有配置均为增量操作,无需修改现有集群配置,业务无中断。

3. 升级业务服务(跨集群统一升级)

直接在 Karmada 控制面更新全局 Deployment 的镜像版本,Karmada 会自动在所有成员集群执行滚动更新

bash

运行

复制代码
# 切换到Karmada控制面上下文,更新镜像
kubectl set image deployment/demo-app demo-app=your-app:v2 -n default

核心:一次操作,所有集群统一升级,无需逐个集群修改,保证配置一致性。

4. 禁用某集群流量(临时维护)

无需删除集群资源,直接在全局 GLB 控制台将目标集群的 CLB IP 权重设为 0,流量会自动停止转发到该集群,维护完成后将权重恢复即可。

七、核心原理补充:各组件协同工作细节

1. Karmada 资源同步的底层逻辑

Karmada 控制面通过karmada-controller-manager实时监控全局资源和 PropagationPolicy,当检测到资源或策略变化时:

  1. 验证目标资源和成员集群的有效性;
  2. 按 PropagationPolicy 的规则,在成员集群创建 / 更新 / 删除对应的本地资源;
  3. 通过karmada-scheduler实现副本数的合理分配(Divided/ Duplicated);
  4. 实时监控成员集群的资源状态,确保与控制面模板一致,不一致时自动修复。

2. 全局 GLB 流量调度的底层逻辑

云厂商全局 GLB 部署在云厂商骨干网络节点,而非单个集群,其流量调度的核心逻辑:

  1. 用户请求通过 DNS 解析到最近的 GLB 骨干节点;
  2. GLB 节点根据预设策略(权重、地域)选择后端 CLB IP;
  3. 通过云厂商骨干网络将流量转发到目标集群的 CLB,再由 Ingress 路由到 Pod;
  4. 实时对所有后端 CLB IP 执行健康检查,故障 IP 立即剔除,保证流量仅转发到健康节点。

3. 为何不直接让 GLB 对接 Pod

  1. Pod IP 是临时的,Pod 重启 / 重建后 IP 会变化,GLB 无法实时感知,导致流量转发失败;
  2. 集群内 CLB+Ingress 是稳定的,CLB IP 固定,Ingress 负责集群内的 Pod IP 动态感知和路由,实现了 "稳定入口 + 动态 Pod" 的解耦;
  3. 跨集群直接访问 Pod 会导致网络延迟高、安全性低,通过集群内 CLB 转发,可利用集群内的网络优化和安全策略。

八、生产落地注意事项(避坑指南,必看)

  1. 网络互通是前提:所有成员集群之间、云厂商 GLB 与所有成员集群的 CLB 之间必须网络互通,否则流量无法转发;
  2. 域名一致性:所有成员集群的 Ingress、全局 GLB 的转发规则、DNS 解析的域名必须完全一致,否则流量转发会失败;
  3. 健康检查必须开启:全局 GLB 的健康检查是故障切换的核心,未开启会导致故障集群无法被剔除,引发业务不可用;
  4. 数据一致性:若业务是有状态的(如涉及数据库、缓存),必须保证跨集群数据同步(如 MySQL 主从复制、Redis 集群),否则流量切换会导致数据不一致;
  5. 监控体系 :必须部署全局监控(Prometheus+Grafana),监控各集群的 Pod 状态、CLB 流量、GLB 分发情况,以及跨集群的延迟、错误率;
  6. SSL 证书:若使用 HTTPS 协议,需在全局 GLB 上上传 SSL 证书(云厂商支持证书统一管理),所有集群的 Ingress 无需单独配置证书,简化维护;
  7. 资源隔离:各成员集群的业务资源建议通过命名空间隔离,避免不同业务的资源冲突;
  8. 权限控制:Karmada 控制面的权限需严格管控,仅允许运维人员操作,防止误删全局资源和策略。

九、总结

  1. 联邦负载均衡的核心是三层架构:Karmada 多集群管理(资源一致)→ 单集群 Ingress+CLB(本地入口)→ 云厂商全局 GLB+DNS(全局调度);
  2. 核心组件协同:Karmada 保证所有集群服务 "一样跑",全局 GLB 保证流量 "智能分",二者配合实现跨集群高可用;
  3. 操作核心:所有 K8s 配置均遵循标准规范,仅全局 GLB 需通过云厂商控制台配置,学习成本低,生产易落地;
  4. 使用优势:全局统一入口、流量按需分发、故障自动切换、服务统一管理,满足同城 / 异地多活、全球流量调度等生产核心需求;
  5. 生产关键:网络互通、域名一致、健康检查开启、数据一致性,这四个点是联邦负载均衡稳定运行的基础,缺一不可。

该方案是目前生产环境中最成熟、最稳定的 K8s 联邦负载均衡实现方式,兼顾了标准化、易用性和生产级特性,可直接根据业务规模扩展集群数量,适配从测试环境到大规模生产环境的所有场景。

相关推荐
Genie cloud4 小时前
在 Mac 上使用 Docker 安装宝塔并部署 LNMP 环境
macos·docker·容器·云计算
木辰風4 小时前
PLSQL自定义自动替换(AutoReplace)
java·数据库·sql
heartbeat..4 小时前
Redis 中的锁:核心实现、类型与最佳实践
java·数据库·redis·缓存·并发
5 小时前
java关于内部类
java·开发语言
好好沉淀5 小时前
Java 项目中的 .idea 与 target 文件夹
java·开发语言·intellij-idea
gusijin5 小时前
解决idea启动报错java: OutOfMemoryError: insufficient memory
java·ide·intellij-idea
To Be Clean Coder5 小时前
【Spring源码】createBean如何寻找构造器(二)——单参数构造器的场景
java·后端·spring
吨~吨~吨~5 小时前
解决 IntelliJ IDEA 运行时“命令行过长”问题:使用 JAR
java·ide·intellij-idea
你才是臭弟弟5 小时前
SpringBoot 集成MinIo(根据上传文件.后缀自动归类)
java·spring boot·后端
短剑重铸之日5 小时前
《设计模式》第二篇:单例模式
java·单例模式·设计模式·懒汉式·恶汉式