You need to enable JavaScript to run this app.
文档中心
容器服务

容器服务

复制全文
下载 pdf
CLB 负载均衡
配置 CLB 负载均衡服务 IP 模式
复制全文
下载 pdf
配置 CLB 负载均衡服务 IP 模式
容器服务支持通过 Annotation 定义 LoadBalancer 类型 Service 的 IP 工作模式,允许在集群内直接转发流量或将流量全部转发至 CLB 实例。本文介绍不同工作模式的原理和配置方式。​
背景信息​
在容器服务集群中,对于type: LoadBalancer类型的 Service,IP 模式(IP-Mode)决定了集群流量(尤其是内部 Pod 访问 Service)的转发路径,主要区别是控制流量是否经过外部的 CLB 实例。不同模式的详细介绍,如下表所示。​
​
IP 模式​
VIP(本地路由模式)​
Proxy(代理模式)​
核心原理​
集群内的 kube-proxy 会默认将 Service 关联的负载均衡器(CLB)IP 地址写入节点转发规则。当集群内部 Pod 访问该 Service IP 时,流量会被 kube-proxy 直接拦截并在集群内转发,无需经过 CLB。​
集群内的 kube-proxy 不会将 CLB IP 写入节点规则,而是将 Service 的 ClusterIP 作为流量入口。所有 Pod 访问 Service 的流量会先发送到 CLB,再由 CLB 按照负载均衡策略转发到后端 Pod。​
优势​
  • 流量路径更短,减少网络延迟和 CLB 的性能开销。​
  • 避免 CLB 处理内部流量导致的带宽浪费。​
  • 防止 CLB 数据包目标 IP 为自身时的网络回环问题。​
  • 支持 CLB 的全部高级特性,例如 TLS 卸载、流量监控、协议转换、源 IP 透传(Proxy-Protocol/TOA)。​
  • 内外网流量路径统一,便于日志审计和流量管控。​
局限性​
由于流量不通过 CLB,因此无法使用 CLB 的高级特性,例如 TLS 终结、协议代理、Proxy-Protocol 透传等。​
  • 流量路径变长,增加了 CLB 转发的网络延迟。​
  • 消耗 CLB 的带宽和并发配额,增加成本。​
​
在集群内部,当 Client 的访问目标为 CLB IP 和端口时,不同 IP 模式的数据转发路径,如下图所示。​
​​​
说明​
更多详情,请参见 社区文档。​
前提条件​
  • 已创建集群,且满足以下条件。详情请参见 创建集群。​
  • 集群 Kubernetes 版本为 v1.30 及以上版本。如集群版本过低,请先升级版本。详情请参见 升级集群。​
  • 集群网络模型为 VPC-CNI,且 Pod 网络接口为 IPVlan,服务转发模式为 eBPF。集群信息查询方式,请参见 集群基本信息。​
  • 已安装 cloud-controller-manager 组件,并升级至 v1.43.0 及以上版本。详情请参见 升级组件。​
使用限制​
当配置 IP 模式为 Proxy 时,客户端 Pod 和服务端 Pod 不能运行在同一个节点上。因为当客户端 Pod 的请求经过 CLB 被转发到同节点的服务端 Pod 时,可能由于 CLB 保留了客户端的源 IP,同时客户端源 IP 在本节点上,导致返回报文直接转发给了客户端,造成流量异常,请求失败。​
操作步骤​
  1. 创建服务的 YAML 文件,并使用 Annotation 指定 IP 模式。示例文件service-demo.yaml代码如下:​
  • ​
    apiVersion: v1​
    kind: Service​
    metadata:​
    name: service-demo # 服务名称​
    annotations:​
    service.beta.kubernetes.io/volcengine-loadbalancer-ip-mode: "Proxy" # 配置负载均衡服务的 IP 模式,取值 VIP、Proxy​
    spec:​
    selector:​
    app: nginx​
    ports:​
    - name: rule​
    protocol: TCP​
    port: 80​
    targetPort: 80​
    type: LoadBalancer​
    ​
  • Annotation 说明如下表所示。​
  • ​
    Key​
    类型​
    是否必须​
    描述​
    是否支持修改​
    service.beta.kubernetes.io/volcengine-loadbalancer-ip-mode​
    String​
    否​
    负载均衡服务的 IP 模式,取值:​
    • VIP:(默认值)在该模式下,kube-proxy 会将目标为 CLB IP 和端口的流量直接重定向到后端 Pod。 ​
    • Proxy:在该模式下,kube-proxy 不会重定向流量,流量会全部经过 CLB 后,再转发至后端 Pod。​
    说明​
    当未配置该 Annotation 时,默认为 VIP 模式。​
    否​
    ​
  1. 执行以下命令,创建服务。​
  • ​
    kubectl apply -f service-demo.yaml​
    ​
结果验证​
配置确认​
配置完成后,您可以查看 Service 的详情,通过status字段确认配置是否生效。其中status.ipMode字段即为该 Service 的 IP 模式。​
​​​
流量验证​
配置完成后,您可以通过查看 CLB 的监控大盘,确认流量转发情况。​
  1. 登录 CLB 控制台。​
  1. 在左侧导航栏中选择 实例管理。并在右侧实例列表中选择 VKE 创建的 CLB 实例(名称一般为k8s-f040f***)。​
  1. 单击实例名称,进入实例详情页面。选择 监控 页签,查看该实例的监控信息。​
  1. 登录集群中的一个容器(注意:该容器不能与 Service 后端 Pod 在相同节点),然后访问 CLB 的地址和端口号。​
  1. 执行以下命令,登录容器。​
  • ​
    kubectl exec -it nginx-7c*** -- /bin/sh​
    ​
  1. 执行以下命令,访问 CLB 的地址和端口号。​
  • ​
    curl 14.***.***.***:80​
    ​
  • 预期结果如下,可以通过 CLB 的 IP 地址和端口号,正确访问到后端服务。​
  • ​
    <!DOCTYPE html>​
    <html>​
    <head>​
    <title>Welcome to nginx!</title>​
    <style>​
    html { color-scheme: light dark; }​
    body { width: 35em; margin: 0 auto;​
    font-family: Tahoma, Verdana, Arial, sans-serif; }​
    </style>​
    </head>​
    <body>​
    <h1>Welcome to nginx!</h1>​
    <p>If you see this page, the nginx web server is successfully installed and​
    working. Further configuration is required.</p>​
    ​
    <p>For online documentation and support please refer to​
    <a href="http://nginx.org/">nginx.org</a>.<br/>​
    Commercial support is available at​
    <a href="http://nginx.com/">nginx.com</a>.</p>​
    ​
    <p><em>Thank you for using nginx.</em></p>​
    </body>​
    </html>​
    ​
  1. 等待一段时间,查看 CLB 的监控数据。​
  • 当 IP 模式为 VIP 时,CLB 监控信息中不会出现新建访问连接,说明访问数据流未经过 CLB。​
  • 当 IP 模式为 Proxy 时, CLB 监控信息中会出现新建访问连接,说明访问数据流经过 CLB 转发,与预期一致。​
  • ​​​
​
​
​
​
​
​
最近更新时间:2026.04.07 11:59:37
这个页面对您有帮助吗?
有用
有用
无用
无用