CentOS Overlay网络配置技巧
配置Overlay网络前需确保系统满足核心要求:内核支持Overlay模块(CentOS 7及以上默认支持),安装必要工具包(docker
、bridge-utils
、iproute
等)。可通过modprobe overlay
验证模块是否加载,若未加载则手动加载或添加至/etc/modules-load.d/overlay.conf
实现开机自启。
CentOS 7及以上Docker默认使用overlay2
(更高效的Overlay存储驱动),无需额外配置即可启用。若需强制指定,可编辑/etc/docker/daemon.json
添加:{"storage-driver": "overlay2"}
,重启Docker服务使配置生效。
使用docker network create
命令创建Overlay网络时,合理规划子网(如10.0.0.0/24
)和网关(如10.0.0.1
),避免与其他网络冲突。可通过--opt
参数调整网络选项,例如设置com.docker.network.bridge.name=my-overlay-br
自定义桥接接口名称,提升网络可管理性。
跨主机Overlay网络需依赖VXLAN隧道。确保所有主机配置相同的Overlay网络,并通过docker network inspect
命令验证VXLAN隧道是否正常创建(查看Containers
字段是否有跨主机容器的映射)。若使用Kubernetes,需部署Flannel、Calico等CNI插件,自动处理跨主机隧道配置。
Kubernetes需通过CNI插件实现Overlay网络,常用插件包括Calico(支持BGP路由,性能优)、Flannel(简单易用,支持VXLAN)。以Calico为例,可通过kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml
一键部署,部署后检查kube-system
命名空间下Calico Pod是否处于Running
状态。
利用Kubernetes NetworkPolicy限制Overlay网络中的Pod通信,提升安全性。例如,禁止某命名空间下的Pod访问另一个命名空间的数据库Pod:
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: deny-db-access
namespace: default
spec:
podSelector:
matchLabels:
app: db
policyTypes:
- Ingress
ingress:
- from:
- namespaceSelector:
matchLabels:
env: dev
- podSelector:
matchLabels:
app: frontend
此配置仅允许dev
命名空间下的frontend
Pod访问default
命名空间下的db
Pod。
Overlay网络依赖VXLAN(UDP 4789)或GRE协议,需配置Firewalld允许相关流量。例如,允许VXLAN流量通过:
sudo firewall-cmd --permanent --zone=trusted --add-port=4789/udp
sudo firewall-cmd --reload
若使用桥接接口,将桥接接口(如br-overlay
)添加至trusted
区域,简化规则管理。
为Docker Overlay网络启用TLS加密,保护控制平面通信。生成证书后,编辑/etc/docker/daemon.json
添加:
{
"tls": true,
"tlscert": "/path/to/server.crt",
"tlskey": "/path/to/server.key",
"tlscacert": "/path/to/ca.crt"
}
重启Docker服务后,客户端连接时需指定证书路径,确保通信安全。
精简镜像层数(如合并多个RUN
命令),减少OverlayFS的层数(每层会增加读写开销);使用noatime
挂载选项(避免更新访问时间戳),提升文件访问性能;调整内核参数fs.overlay.max_layers
(默认128,可根据需求增加,但过高会影响性能)。
使用SSD作为底层存储设备,提升Overlay网络中镜像和容器的读写速度;若使用机械硬盘,可开启datawriteback
选项(牺牲部分数据一致性换取写性能,适用于对性能要求高但对数据一致性要求低的场景)。