记录 k8s 的学习过程 (flannel网络)

安装完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通
















猜你喜欢

转载自www.cnblogs.com/ruiruiblog/p/12418813.html