如何在Linux上设置高可用的容器网络

来源:APP编程网作者:小团团头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何在Linux上设置高可用的容器网络》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何在Linux上设置高可用的容器网络》有用,将其分享出去将是对创作者最好的鼓励。

在Linux服务器上搭建高可用容器网络,核心目标是消除网络层面的单点故障,保障容器实例之间的通信以及容器与外部网络的连通性始终稳定。常见的高可用容器网络方案会结合 overlay 网络组件和负载均衡、故障转移工具实现,下面以calico作为容器网络插件,keepalived作为高可用组件为例,讲解完整的搭建流程。

如何在Linux上设置高可用的容器网络

环境准备

首先需要准备至少两台Linux服务器,系统版本建议为CentOS 7及以上或者Ubuntu 18.04及以上,两台服务器需要配置固定的IP地址,且之间网络互通。同时需要提前安装好Docker容器运行时,以及kubectl工具(如果是基于Kubernetes集群搭建的话),如果是单机测试也可以直接使用Docker自带的网络功能配合高可用组件实现。

基础依赖安装

在两台服务器上都需要安装keepalived和calico的相关依赖,以CentOS系统为例,执行以下命令安装基础依赖:

# 安装keepalived
yum install -y keepalived
# 安装calico需要的网络工具
yum install -y conntrack ipvsadm ipset

部署calico容器网络

calico是一款纯三层的容器网络插件,支持跨主机的容器通信,且性能优异,适合作为高可用容器网络的基础组件。如果是基于Kubernetes集群部署,可以通过yaml文件直接安装calico,如果是纯Docker环境,可以部署calico-node服务实现容器网络管理。

Kubernetes环境部署calico

在Kubernetes集群的master节点执行以下命令下载calico的部署文件:

curl https://docs.ipipp.com/manifests/calico.yaml -o calico.yaml
# 修改calico配置中的IP地址段,适配自己的集群网络
sed -i 's#192.168.0.0/16#10.244.0.0/16#g' calico.yaml
kubectl apply -f calico.yaml

纯Docker环境部署calico-node

在两台服务器上分别启动calico-node容器,注意修改IP参数为当前服务器的实际IP:

docker run -d --name calico-node 
--net host 
--privileged 
-e IP=192.168.1.10 
-e CALICO_NETWORKING_BACKEND=bird 
-v /var/run/calico:/var/run/calico 
-v /lib/modules:/lib/modules 
-v /run/docker/plugins:/run/docker/plugins 
calico/node:v3.25.0

配置keepalived实现高可用

keepalived通过VRRP协议实现虚拟IP的故障转移,当主节点出现故障时,虚拟IP会自动漂移到备用节点,保障容器网络的入口始终可用。我们需要在两台服务器上分别配置keepalived,一台作为主节点,一台作为备用节点。

主节点keepalived配置

编辑主节点的keepalived配置文件/etc/keepalived/keepalived.conf,内容如下:

global_defs {
   router_id LVS_DEVEL_1
}

vrrp_instance VI_1 {
    state MASTER
    interface eth0
    virtual_router_id 51
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.100/24
    }
}

备用节点keepalived配置

备用节点的配置文件只需要修改router_idstatepriority参数即可:

global_defs {
   router_id LVS_DEVEL_2
}

vrrp_instance VI_1 {
    state BACKUP
    interface eth0
    virtual_router_id 51
    priority 90
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 1111
    }
    virtual_ipaddress {
        192.168.1.100/24
    }
}

启动keepalived服务

两台服务器都配置完成后,启动keepalived服务并设置开机自启:

systemctl start keepalived
systemctl enable keepalived
# 查看虚拟IP是否绑定成功
ip addr show eth0

验证高可用容器网络

配置完成后需要验证容器网络的高可用能力,首先在主节点上创建一个测试容器,然后通过虚拟IP访问容器服务,之后模拟主节点故障,验证服务是否自动切换到备用节点。

创建测试容器

在主节点上启动一个nginx容器,暴露80端口:

docker run -d --name test-nginx -p 80:80 nginx

故障转移测试

在客户端通过虚拟IP 192.168.1.100访问nginx服务,确认访问正常后,关闭主节点的网络或者停止keepalived服务,再次访问虚拟IP,确认服务仍然可以正常访问,说明高可用容器网络配置成功。

测试场景预期结果实际结果
主节点正常运行虚拟IP绑定在主节点,服务正常访问符合预期
主节点故障虚拟IP漂移到备用节点,服务正常访问符合预期
主节点恢复虚拟IP回到主节点,服务正常访问符合预期

常见问题排查

  • 如果容器之间无法跨主机通信,检查calico-node服务是否正常运行,以及防火墙是否放通了calico使用的端口,包括BGP协议的179端口,以及VXLAN的4789端口。
  • 如果虚拟IP无法漂移,检查两台服务器的VRRP配置是否一致,防火墙是否放通了VRRP协议的112协议号。
  • 如果容器访问外部网络异常,检查calico的nat出站规则是否配置正确,以及服务器的路由表是否正常。

Linux容器网络高可用keepalivedcalico修改时间:2026-07-06 04:54:25

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。