不知道是因为二进制docker 19.03版本安装后不自动创建docker0网桥,还是其他什么原因,docker的网络模式里面的bridge网桥没有。
害的我装个容器映射端口一直看不到端口,也不报错,定位半天才发现没有这个bridge网桥。
废话不多说。开干!
先看一下当前情况:
由于是生产环境,所以先要把pod给驱逐一下,以免影响业务
首先说下,直接使用docker network create xx的方式是不行的。因为这种方式创建的网桥并没有挂到虚拟机上,所以不工作,可能需要一些其他的额外配置。这里就不去研究了。提一下,免得各位踩坑。
整个过程如下图,清晰可见。为了方便各位看官老爷,我把命令也复制出来。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
[root@dashuaibi-server-103 jpserver] # ip a|grep docker0 [root@dashuaibi-server-103 jpserver] # brctl -h Usage: brctl [commands] commands: addbr <bridge> add bridge delbr <bridge> delete bridge addif <bridge> <device> add interface to bridge delif <bridge> <device> delete interface from bridge hairpin <bridge> <port> {on|off} turn hairpin on /off setageing <bridge> < time > set ageing time setbridgeprio <bridge> <prio> set bridge priority setfd <bridge> < time > set bridge forward delay sethello <bridge> < time > set hello time setmaxage <bridge> < time > set max message age setpathcost <bridge> <port> <cost> set path cost setportprio <bridge> <port> <prio> set port priority show [ <bridge> ] show a list of bridges showmacs <bridge> show a list of mac addrs showstp <bridge> show bridge stp info stp <bridge> {on|off} turn stp on /off [root@dashuaibi-server-103 jpserver] # brctl addbr docker0 [root@dashuaibi-server-103 jpserver] # ip link set docker0 up [root@dashuaibi-server-103 jpserver] # ip addr add 192.168.0.0/16 dev docker0 [root@dashuaibi-server-103 jpserver] # cat /etc/docker/daemon.json { "data-root" : "/docker" , "bridge" : "none" , "registry-mirrors" : [ "http://9b2cd203.m.daocloud.io" ]} [root@dashuaibi-server-103 jpserver] # vim /etc/docker/daemon.json [root@dashuaibi-server-103 jpserver] # cat /etc/docker/daemon.json { "data-root" : "/docker" , "bridge" : "docker0" , "registry-mirrors" : [ "http://9b2cd203.m.daocloud.io" ]} [root@dashuaibi-server-103 jpserver] # systemctl daemon-reload [root@dashuaibi-server-103 jpserver] # systemctl restart docker [root@dashuaibi-server-103 jpserver] # ip a|grep docker0 149: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000 inet 192.168.0.1 /16 brd 192.168.255.255 scope global docker0 [root@dashuaibi-server-103 jpserver] # docker network ls NETWORK ID NAME DRIVER SCOPE edd34bc4e197 bridge bridge local 9560af3573ae host host local 22885d053744 none null local [root@dashuaibi-server-103 jpserver] # |
重启完了以后,重新跑要映射端口的容器,对比如下。之前没有添加网桥就没有端口,添加完网桥以后。端口正常映射
最后就是去除污点,让该节点重新恢复调度。
1
|
kubectl uncordon 10.168.0.103 |
补充:Docker修改默认网桥ip地址172.17.0.1
Docker 服务启动后默认会创建一个 docker0 网桥(其上有一个 docker0 内部接口),它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。
Docker 默认指定了 docker0 接口 的 IP 地址和子网掩码,让主机和容器之间可以通过网桥相互通信,它还给出了 MTU(接口允许接收的最大传输单元),通常是 1500 Bytes,或宿主主机网络路由上支持的默认值。这些值都可以在服务启动的时候进行配置。
可以用编辑/etc/docker/daemon.json文件,添加内容 "bip": "ip/netmask" [ 切勿与宿主机同网段 ]
1
2
3
|
[root@localhost /] # vi /etc/docker/daemon.json { "bip" : "192.168.100.1/24" } systemctl restart docker |
注意:很懂朋友这么修改是不成功的,又用brctl 删除网桥,其实只是你没有配置对。
有些daemon.json文件里面是有内容的例如:
{"registry-mirrors": ["http://f1361db2.m.daocloud.io"]}这是个docker的私有源
1
2
|
{ "registry-mirrors" : [ "http://f1361db2.m.daocloud.io" ]} { "bip" : "172.16.0.1/24" } |
这样改是不会生效的
1
2
|
{ "registry-mirrors" : [ "http://f1361db2.m.daocloud.io" ], "bip" : "172.16.0.1/24" } |
这才是正确的修改方法。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/qq_35889860/article/details/105282985