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

在 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 集群的稳定运行和高效管理
相关推荐
艾伦_耶格宇6 小时前
【DOCKER容器实战】-5 Docker容器镜像的构建
运维·docker·容器
分布式存储与RustFS7 小时前
RustFS 该跟 stable 还是 nightly?两条版本线的分工、风险与回退,一张表说清
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
ggaofeng9 小时前
k8s中的dns
云原生·容器·kubernetes
我不会起名字32219 小时前
K8s Ingress 返回 502 但后端日志正常:4 类上游断连与排查链
kubernetes·k8s·ingress·502·keepalive
姜鱼问生1 天前
每次开机手动检查 6 样东西?我写了个 2 秒自检脚本
运维·网络·nginx·docker·容器
wangqiaowq1 天前
PostgresSQL server Docker 安装部署
运维·docker·容器
程序员阿明1 天前
docker搭建视频流服务go2rtc,webRTC
docker·容器·webrtc
JavaPub-rodert1 天前
Docker 容器为什么 stop 半天停不下来?讲透 PID 1、SIGTERM、SIGKILL、僵尸进程与 tini
运维·docker·容器
我不会起名字3221 天前
Pod 一直 Pending:调度器 5 类失败原因与 kubectl describe 的正确读法
云原生·kubernetes·调度·排查
我不会起名字3221 天前
K8s 服务 DNS 解析偶发 5 秒超时:conntrack 与 ndots 的 3 个坑
kubernetes·k8s·dns·conntrack·coredns