1. 下载包
wget https://github.com/coreos/flannel/releases/download/v0.11.0/flannel-v0.11.0-linux-amd64.tar.gz
2. 把解压出来的可执行文件放到 /opt/k8s/bin 下
3. 创建 /opt/k8s/cfg/flanneld.conf 文件,内容如下:
FLANNEL_OPTIONS="--etcd-endpoints=https://192.168.137.81:2379,https://192.168.137.82:2379,https://192.168.137.83:2379 -etcd-cafile=/opt/k8s/ssl/ca.pem -etcd-certfile=/opt/k8s/ssl/server.pem -etcd-keyfile=/opt/k8s/ssl/server-key.pem"
4. 创建 /usr/lib/systemd/system/flanneld.service, 内容如下:
[Unit] Descrition=Flanneld overlay address etcd agent After=network-online.target network.target Before=docker.service [Service] Type=notify EnvironmentFile=/opt/k8s/cfg/flanneld.conf ExecStart=/opt/k8s/bin/flanneld --ip-masq $FLANNEL_OPTIONS ExecStartPost=/opt/k8s/bin/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/subnet.env Restart=on-failure [Install] WantedBy=multi-user.target
5. 运行
../bin/etcdctl --ca-file=ca.pem --cert-file=server.pem --key-file=server-key.pem --endpoints="https://192.168.137.81:2379,https://192.168.137.82:2379,https://192.168.137.83:2379" set /coreos.com/network/config '{"Network": "172.17.0.0/16", "Backend": {"Type": "vxlan"}}'
6. 启动 flannel
systemctl start flanneld
7. 查看网络配置: ifconfig 可以看到 docker 和 flannel 不在同一个网段
8. 查看生成的文件: cat /run/flannel/subnet.env
9. 修改 /usr/lib/systemd/system/docker.service (安装 docker 后会有此文件,需要改两处地方)
10. 执行下面的命令
systemctl daemon-reload
systemctl restart docker
11. 再查看网络的话,会看到 docker 和 flannel 在同一个网段了
12. 在另外一台机器上做以上相同的操作后,其网络如下:
13. 我们在这台机器上就可以 ping 通另外那台机器上的 docker 的网关了: