setenforce 0
)或调整其策略为permissive
,避免权限问题。/etc/docker/daemon.json
),添加Overlay网络必需参数:{
"storage-driver": "overlay2", // 使用overlay2存储驱动(推荐)
"exec-opts": ["native.cgroupdriver=systemd"], // 容器cgroup驱动设置为systemd
"log-driver": "json-file", // 日志驱动
"log-opts": {"max-size": "100m"} // 日志大小限制
}
保存后重启Docker服务:sudo systemctl restart docker
。kubectl apply -f https://docs.projectcalico.org/v3.25/manifests/calico.yaml
验证插件状态:kubectl get pods -n kube-system | grep calico
(所有Pod应为Running
状态)。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
(Overlay网络网关)。ClusterIP
类型的Service),Kubernetes会自动为Pod分配Overlay网络IP。--network
参数将其连接到Overlay网络:docker run -d --name container1 --network my-overlay-network nginx
docker run -d --name container2 --network my-overlay-network nginx
若容器已在运行,可使用docker network connect
命令添加:docker network connect my-overlay-network container2
namespace
(默认使用default
命名空间),Kubernetes会自动将Pod连接到Overlay网络。示例Deployment配置: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
部署后,Pod会自动获取Overlay网络IP。docker exec -it container1 ping $(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container2)
若能ping通,说明Overlay网络工作正常。kubectl exec -it <pod-name> -- /bin/sh
ping <other-pod-ip>
若能ping通,说明Overlay网络配置成功。cluster-store
(如Consul、Etcd)和cluster-advertise
参数(用于节点间通信)。编辑/etc/docker/daemon.json
:{
"cluster-store": "consul://<consul-host>:8500",
"cluster-advertise": "<node-ip>:2376"
}
重启Docker服务:sudo systemctl restart docker
。