说个核心判断:部署Overlay网络,说白了就是给容器们搭一个“虚拟专线”——让它们在不同宿主机上也能像在同一个局域网里一样通信。下面这套通用步骤,以Docker和Kubernetes为例,基本覆盖了从环境准备到验证的完整流程,照着操作就能跑通。
Overlay网络部署通用步骤(以Docker/Kubernetes为例)
1. 准备基础环境
- 系统与软件方面:所有参与节点(物理机或虚拟机)得是支持的操作系统,比如CentOS 7.x及以上、Ubuntu 20.04及以上。Docker版本要求1.9以上,Kubernetes集群则可以通过kubeadm、Minikube等工具部署。另外,建议关闭SELinux(临时用
setenforce 0)或者把策略改成permissive,避免权限问题来捣乱。 - 网络连通性方面:节点之间IP网络要能通,最好配个SSH免密登录,方便远程操作。防火墙也得开放必要端口,比如Docker默认的2375/tcp、2376/tcp,Kubernetes集群节点间的10250/tcp、10255/tcp等。
2. 配置节点以支持Overlay网络
- Docker环境:编辑Docker守护进程的配置文件
/etc/docker/daemon.json,把Overlay网络必需的参数加进去:
保存后重启Docker服务:{ "storage-driver": "overlay2", // 推荐用overlay2存储驱动 "exec-opts": ["native.cgroupdriver=systemd"], // 容器cgroup驱动设为systemd "log-driver": "json-file", "log-opts": {"max-size": "100m"} // 日志大小限制 }sudo systemctl restart docker。 - Kubernetes环境:需要部署CNI(容器网络接口)插件来支持Overlay网络,常用插件有Calico、Flannel。以Calico为例,执行:
验证插件状态:kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yamlkubectl get pods -n kube-system | grep calico,所有Pod应该都是Running状态。
3. 创建Overlay网络
- Docker方式:用
docker network create命令创建Overlay网络,指定子网、网关等参数:
参数说明:docker network create --driver overlay --subnet=10.0.0.0/24 --gateway=10.0.0.1 my-overlay-network--driver overlay指定Overlay驱动,--subnet是Overlay网络子网,--gateway是网关。 - Kubernetes方式:CNI插件会自动管理Overlay网络,无需手动创建。只要Pod配置正确(比如用
ClusterIP类型的Service),Kubernetes会自动给Pod分配Overlay网络IP。
4. 部署应用到Overlay网络
- Docker方式:启动容器时通过
--network参数连接到Overlay网络:
如果容器已经在运行,可以用docker run -d --name container1 --network my-overlay-network nginx docker run -d --name container2 --network my-overlay-network nginxdocker network connect命令添加:docker network connect my-overlay-network container2 - Kubernetes方式:在Pod或Deployment配置中指定
namespace(默认用default),Kubernetes会自动将Pod连接到Overlay网络。示例Deployment配置:
部署后,Pod会自动获取Overlay网络IP。apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:latest ports: - containerPort: 80
5. 验证Overlay网络连通性
- Docker环境:进入一个容器,尝试ping另一个容器的IP地址:
能ping通,说明Overlay网络工作正常。docker exec -it container1 ping $(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container2) - Kubernetes环境:进入Pod,ping其他Pod的IP地址:
能ping通,说明配置成功。kubectl exec -it-- /bin/sh ping
6. 配置跨主机通信(可选,多节点场景)
- Docker环境:确保所有节点的Docker守护进程配置了相同的
cluster-store(比如Consul、Etcd)和cluster-advertise参数。编辑/etc/docker/daemon.json:
重启Docker服务:{ "cluster-store": "consul://:8500", "cluster-advertise": " :2376" } sudo systemctl restart docker。 - Kubernetes环境:CNI插件(比如Calico)会自动处理跨主机通信,只要节点间网络可达,无需额外配置。
注意事项
- Overlay技术选择:主流是VXLAN,支持1600万+网络隔离,兼容现有IP网络,但需确保节点设备支持UDP封装。
- 性能优化:建议调整MTU为1450,避免UDP封装导致分片;同时启用ARP袋里来减少广播流量。
- 安全管理:可以配置加密(比如IPSec)保护Overlay网络数据传输,并用网络策略(如Calico的NetworkPolicy)限制Pod间访问。

