You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes新手迁移:如何用Istio实现VIP轮询负载均衡?

嘿,很高兴看到你已经迈出了从VM迁移到K8s+Istio的第一步!从你描述的VM VIP轮询负载均衡模式,转到Istio其实非常契合,我来给你梳理下具体怎么实现类似的功能:

核心概念对应先搞清楚

先把你熟悉的VM架构和Istio组件做个对应,帮你快速理解:

  • VM里的VIP → Istio里的Gateway(对外暴露的统一入口)
  • VIP的轮询负载逻辑 → Istio的DestinationRule(配置后端服务的负载均衡策略)
  • 后端服务节点池 → K8s的Deployment/StatefulSet(你的可缩放服务)
具体实现步骤(基于你已有的minikube+可缩放服务)

假设你已经部署了名为my-service的服务(有多个Pod副本),接下来只需要三步配置Istio规则:

1. 部署Istio Gateway(对应VM的VIP入口)

Gateway相当于对外的统一访问入口,就像你VM里的VIP地址,所有客户端流量先打到这里。创建一个gateway.yaml文件:

apiVersion: networking.istio.io/v1alpha3
kind: Gateway
metadata:
  name: my-service-gateway
spec:
  selector:
    istio: ingressgateway # 用Istio默认的 ingressgateway 组件
  servers:
  - port:
      number: 80
      name: http
      protocol: HTTP
    hosts:
    - "*" # 允许所有域名访问,你也可以改成具体域名比如my-service.example.com

执行命令部署:

kubectl apply -f gateway.yaml

2. 创建VirtualService(路由流量到后端服务)

VirtualService负责把Gateway进来的流量转发到你的my-service,相当于VIP的转发规则:

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: my-service-vs
spec:
  hosts:
  - "*" # 和Gateway的hosts对应
  gateways:
  - my-service-gateway # 关联刚才创建的Gateway
  http:
  - route:
    - destination:
        host: my-service # 你的服务名称(K8s Service的名称)
        port:
          number: 80 # 服务暴露的端口

部署命令:

kubectl apply -f virtualservice.yaml

3. 配置DestinationRule(启用轮询负载均衡)

Istio默认的负载均衡策略就是轮询(ROUND_ROBIN),但咱们明确配置一下更稳妥,确保和你VM里的逻辑完全一致:

apiVersion: networking.istio.io/v1alpha3
kind: DestinationRule
metadata:
  name: my-service-dr
spec:
  host: my-service # 目标服务名称
  trafficPolicy:
    loadBalancer:
      simple: ROUND_ROBIN # 指定轮询策略

部署命令:

kubectl apply -f destinationrule.yaml
验证功能是否生效

现在你可以测试轮询效果了:

  1. 先获取Istio IngressGateway的地址(minikube环境下用这个命令):
minikube service istio-ingressgateway --url
  1. 多次用curl访问这个地址,比如:
for i in {1..5}; do curl <INGRESS_GATEWAY_URL>; echo; done
  1. 查看my-service的Pod日志,或者让服务返回自身的Pod名称,你会看到请求被均匀轮询到不同的Pod上,和你之前VM里VIP的效果一模一样!
额外实用提示
  • 当你缩放my-service的Pod副本数时,Istio会自动识别新的Pod,不需要手动更新负载均衡规则,就像你在VM里添加新节点到VIP池一样方便。
  • 如果之后需要更复杂的负载策略(比如按权重分配、最少连接数),只需要修改DestinationRule里的loadBalancer.simple字段即可,Istio支持多种策略。

内容的提问来源于stack exchange,提问作者user1578872

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:32:15