在 Kubernetes (k8s) 中,apiserver 的 IIP和 VIP的区别

发布于:2025-04-13 ⋅ 阅读:(32) ⋅ 点赞:(0)

在 Kubernetes (k8s) 中,apiserver 的 IIP(Internal IP) 和 VIP(Virtual IP) 是与集群网络通信和高可用性设计相关的两个重要概念。

  1. IIP(Internal IP)
    定义:
    IIP 是 apiserver 所在节点的内部网络 IP 地址,通常是集群内部网络中用于通信的私有 IP。
    作用:
    集群内的组件(如 kubelet、kube-proxy、controller-manager 等)通过 IIP 与 apiserver 通信。
    在单节点或非高可用场景下,客户端(如 kubectl)也可能直接通过 IIP 访问 apiserver。
    特点:
    通常是静态分配的私有 IP,例如 192.168.x.x 或 10.x.x.x。
    依赖于节点网络配置,节点重启或网络变更可能导致 IIP 变化。
  2. VIP(Virtual IP)
    定义:
    VIP 是一个虚拟的 IP 地址,通常由负载均衡器(如 HAProxy、Keepalived)或云服务提供商的负载均衡服务分配。
    作用:
    在高可用(HA)场景下,多个 apiserver 实例部署在不同的节点上,VIP 提供一个统一的访问入口。
    客户端(如 kubectl、kubelet)通过 VIP 访问 apiserver,负载均衡器将请求转发到可用的 apiserver 实例。
    特点:
    VIP 是动态的,不依赖于某个具体节点的 IIP。
    当某个 apiserver 节点故障时,负载均衡器会自动将流量切换到其他健康节点,确保高可用性。
  3. IIP 与 VIP 的对比
    特性 IIP VIP
    定义 节点内部网络 IP 虚拟 IP,负载均衡器分配
    作用范围 集群内部通信 外部客户端访问、高可用场景
    依赖性 节点网络配置,可能变化 负载均衡器,独立于节点网络
    高可用性 无 有,支持故障切换
    使用场景 单节点、开发测试环境 多节点、生产环境
  4. 实际应用场景
    单节点集群:
    在单节点或非高可用场景下,客户端直接通过节点的 IIP 访问 apiserver。
    多节点高可用集群:
    部署多个 apiserver 实例,每个实例绑定一个唯一的 IIP。
    使用负载均衡器(如 HAProxy + Keepalived)配置一个 VIP。
    客户端通过 VIP 访问 apiserver,负载均衡器实现流量分发和故障切换。
    云环境:
    在云平台(如 AWS、GCP、Azure)上,通常使用云服务提供的负载均衡器(如 ELB、NLB)分配 VIP,客户端通过 VIP 访问 apiserver。
  5. 配置示例
    使用 HAProxy + Keepalived 配置 VIP
    安装 Keepalived:
    配置 Keepalived 管理 VIP,实现故障切换。
vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass yourpassword
    }
    virtual_ipaddress {
        192.168.1.100  # VIP 地址
    }
}

安装 HAProxy:
配置 HAProxy 将流量转发到多个 apiserver 的 IIP。

frontend k8s-api
    bind 192.168.1.100:6443  # 绑定 VIP
    default_backend apiservers
 
backend apiservers
    balance roundrobin
    server node1 192.168.1.101:6443 check
    server node2 192.168.1.102:6443 check

客户端配置:
将 kubectl 的配置指向 VIP:

clusters:
- cluster:
    server: https://192.168.1.100:6443
  name: kubernetes
  1. 总结
    IIP 是节点内部网络 IP,适用于单节点或非高可用场景。
    VIP 是虚拟 IP,通过负载均衡器提供高可用访问,适用于多节点生产环境。
    在高可用集群中,推荐使用 VIP 访问 apiserver,以提高可靠性和可维护性。
    通过合理配置 IIP 和 VIP,可以确保 Kubernetes 集群的稳定运行和高效管理