安装完docker后会发现多了一个叫docker0的虚拟网卡
node1 ~]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:b9:dd:83:6a txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisio
node2 ~]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:fdff:fee4:5e6e prefixlen 64 scopeid 0x20<link>
ether 02:42:fd:e4:5e:6e txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3 bytes 266 (266.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
可以发现无论node1还是node2,他们的网段都是172.17.0段的,这样在多个节点创建容器时会导致ip冲突
通过使用flannel可以统一分配ip,这样跨节点容器通信也不会出现ip冲突,如:
节点A :10.0.1.0/24
节点B :10.0.2.0/24
节点C :10.0.3.0/24
下面开始安装flannel ,flannel只有一个二进制文件,之前我们已经拷贝到了/opt/kubernetes/bin/ 中了,下面我们要编辑它的配置文件
node1 ~]# cd /root/k8s/kubernetes/cluster/centos/node/scripts/
node1 scripts]# ./flannel.sh http://192.168.56.11:2379 10.2.0.0/16 #第一个参数etcd的地址,第二个flannel分配的网段
node1 scripts]# systemctl start flannel
node1 scripts]# systemctl enable flannel
node1 scripts]# systemctl status flannel
此时在使用ifconfig,发现之前的docker0的虚拟网卡不见了,取而代之的是
flannel0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1472
inet 10.2.97.0 netmask 255.255.0.0 destination 10.2.97.0
inet6 fe80::c2fc:4865:61b0:c3e3 prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
下面到node2上执行下刚刚从操作
node2 bin]# cd /root/k8s/kubernetes/cluster/centos/node/scripts/
node2 scripts]# ./flannel.sh http://192.168.56.11:2379 10.2.0.0/16
node2 scripts]# systemctl start flannel
node2 scripts]# systemctl enable flannel
node2 scripts]# systemctl status flannel
下面切换回node1
配置docker以使用flannel,此步操作后将删除docker中的所有镜像(如果想保留之前的镜像可以在下面的docker.sh的23行中删除 -s overlay,因为指定了新引擎,所以会删除所有的镜像)
node1 scripts]# pwd
/root/k8s/kubernetes/cluster/centos/node/scripts
node1 scripts]# ./docker.sh
此时再执行ifconfig 会发现发生了变化
node1 scripts]# ifconfig
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 10.2.97.1 netmask 255.255.255.0 broadcast 10.2.97.255
ether 02:42:26:c4:e8:7e txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.56.11 netmask 255.255.255.0 broadcast 192.168.56.255
ether 00:0c:29:9d:bc:bd txqueuelen 1000 (Ethernet)
RX packets 1146990 bytes 1440229898 (1.3 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 462288 bytes 438550627 (418.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
flannel0: flags=4305<UP,POINTOPOINT,RUNNING,NOARP,MULTICAST> mtu 1472
inet 10.2.97.0 netmask 255.255.0.0 destination 10.2.97.0
inet6 fe80::c2fc:4865:61b0:c3e3 prefixlen 64 scopeid 0x20<link>
unspec 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 txqueuelen 500 (UNSPEC)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3 bytes 144 (144.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
下面到node2上重复下刚才的操作
node2 scripts]# ./docker.sh
切换回node1
此时可以发现 docker启动时增加一个 --bip的参数
node1 ~]# ps aux | grep docker
root 15245 0.5 1.5 384280 31300 ? Ssl 11:03 0:02 /opt/kubernetes/bin/dockerd --bip=10.2.97.1/24 --mtu=1472 -H tcp://127.0.0.1:4243 -H fd:// --containerd=/run/containerd/containerd.sock -s overlay --selinux-enabled=false
如果上面执行./docker 起不来,可以执行 ln -s /usr/bin/dockerd /opt/kubernetes/bin/dockerd 将原生的dockerd软连接过来
但前提是要先删除/opt/kubernetes/bin/dockerd中的dockerd
目前的网络架构是 flannel使用 10.2.0.0 service使用10.1.0.0
还有就是etcd很重要,只要etcd挂掉,整个k8s就挂了
导入之前导入的镜像
node1 k8s]# docker load < kubernetes-dashboard-amd64-v1.5.1.tar
node1 k8s]# docker load < pause-amd64-3.0.tar
在node1和node2上都pull一下busybox镜像,创建2台容器
# docker pull busybox
# docker run --rm -it --name test1 busybox
发现可以互相ping通
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)