法兰绒是参股了阵营里标准的网络插件,在没有严格的网络的要求下,它通常作为kubernetes集群里网络互联比较常用的方案,当然还有其他网络方案,比如棉布,编织,mxvlan等等,这里主要使用到法兰绒作为kubernetes的网络方案;
1部署准备
kubernetes要求集群内各节点(包括主节点)能通过舱网段互联互通.flannel使用vxlan技术为各节点创建一个可以互通的豆荚网络,使用的端口为UDP 8472(需要开放该端口,如公有云AWS等)。
flanneld第一次启动时,从etcd获取配置的豆荚网段信息,为本节点分配一个未使用的地址段,然后创建flannedl。1网络接口(也可能是其它名称,如flannel1等)。
法兰绒将分配给自己的豆荚网段信息写入/运行/法兰绒/码头工人文件,码头工人后续使用这个文件中的环境变量设置docker0网桥,从而从这个地址段为本节点的所有舱容器分配IP。
环境变量定义h5> <代码类=" language-shell "> # # # # # # # # # # # # # # # # # # # #变量参数设置# # # # # # # # # # # # # # # # # # # # # #
FLANNEL_INSTALL_PATH=/数据/应用程序/美丽/网络/法兰绒
软件=/根/软件
VERSION=v0.11.0
包=法兰绒- {VERSION} -linux-amd64.tar.gz美元
DOWNLOAD_URL=https://github.com/devops-apps/download/raw/master/network/美元包
ETCD_ENPOINTS=https://10.10.10.22:2379, https://10.10.10.23:2379, https://10.10.10.24:2379
FLANNEL_ETCD_PREFIX=/美丽/网络
CA_DIR=/etc/美丽/ssl
NETWORK_SUBNET=172.16.0.0/20
IFACE=eth0 代码>
1.2下载和分发kubernetes二进制文件
登陆devops机器,访问法兰绒github官方地址下载稳定的缴款包至本机;
<代码类=" language-shell "> wget DOWNLOAD_URL - p美元软件代码>
将法兰绒软件包分发到集群所有节点服务器;
<代码类=" language-shell "> sudo ansible master_k8s_vgs - m副本——“src=https://www.yisu.com/zixun/{软件}/美元包dest=${软件}/? b sudo ansible worker_k8s_vgs - m副本——“src=https://www.yisu.com/zixun/{软件}/美元包dest=${软件}/? b 代码>
2安装法兰绒网络插件
2.1安装法兰绒二进制文件
<代码类=" language-shell "> # # # 1。检查是否安装目录中存在。 如果[!- d $ FLANNEL_INSTALL_PATH/bin);然后 mkdir - p FLANNEL_INSTALL_PATH美元/bin fi # # # 2。安装二进制的法兰绒。 如果[!- f”软件/法兰绒- {VERSION} -linux-amd64.tar美元。广州”);然后 ,wget DOWNLOAD_URL - p软件比美元的在/tmp/安装。日志2祝辞,1 fi cd $软件,,焦油-xzf法兰绒- {VERSION} -linux-amd64.tar美元。广州- c。/cp fp ${软件}/{flanneld mk-docker-opts。sh} $ {FLANNEL_INSTALL_PATH}/bin ln科幻$ {FLANNEL_INSTALL_PATH}/bin/{flanneld mk-docker-opts。sh}/usr/local/bin chmod - r 755美元FLANNEL_INSTALL_PATH 代码>
2.3分发证书文件
<代码类=" language-shell "> cd $ {CA_DIR} sudo ansible master_k8s_vgs - m副本——“src=https://www.yisu.com/zixun/ca.pem dest=$ {CA_DIR}/? b sudo ansible master_k8s_vgs - m副本——“src=https://www.yisu.com/zixun/flannel.pem dest=$ {CA_DIR}/? b sudo ansible master_k8s_vgs - m副本——“src=https://www.yisu.com/zixun/flannel-key.pem dest=$ {CA_DIR}/? b 代码>
-
<李>法兰绒开启了HTTPS访问所以需要证书支持,李>
<李>法兰绒不需要访问apiserver,因此不需kubeconfig文件认证;李>
2.4向etcd写入集群Pod网段信息h5> <代码类=" language-shell "> # # #创建网络子网的法兰绒。=$ ETCD_ENPOINTS \ etcdctl——端点
——ca-file=$ {CA_DIR}/ca。pem \
——cert-file=$ {CA_DIR}/etcd。pem \
——密钥文件=$ {CA_DIR}/etcd-key。pem \
mkdir FLANNEL_ETCD_PREFIX美元=$ ETCD_ENPOINTS \ etcdctl——端点
——ca-file=$ {CA_DIR}/ca。pem \
——cert-file=$ {CA_DIR}/etcd。pem \
——密钥文件=$ {CA_DIR}/etcd-key。pem \
可$ {FLANNEL_ETCD_PREFIX}/config \
“{”网络”:“$ {NETWORK_SUBNET}”,“SubnetLen”: 24日“后端”:{“类型”:“类型”美元}}”代码>
<李> flanneld当前版本(v0.11.0)不支持etcd v3,故使用etcd v2 API写入配置关键和网段数据,李>
<李>写入的豆荚网段$ {CLUSTER_CIDR}地址段(如/16)必须小于SubnetLen,必须与kube-controller-manager的——cluster-cidr参数值一致,李>
2.5创建法兰绒启动服务h5> <代码>猫在/usr/lib/systemd/系统/flanneld.service<& lt; EOF
(单位)
描述=Flanneld覆盖地址etcd代理=network.target后=network-online.target后
希望=network-online.target=etcd.service后=docker.service之前
(服务)
类型=通知
ExecStart=$ {FLANNEL_INSTALL_PATH}/bin/flanneld \ \
-etcd-cafile=$ {CA_DIR}/ca。pem \ \
-etcd-certfile=$ {CA_DIR}/法兰绒。pem \ \
-etcd-keyfile=$ {CA_DIR}/flannel-key。pem \ \
-etcd-endpoints=$ {ETCD_ENPOINTS} \ \
-etcd-prefix=$ {FLANNEL_ETCD_PREFIX} \ \
IFACE=$ {IFACE} \ \
-ip-masq
ExecStartPost=$ {FLANNEL_INSTALL_PATH}/bin/mk-docker-opts。上海\ \
- k DOCKER_NETWORK_OPTIONS - d/跑步/法兰绒/码头工人
重启=总
RestartSec=5
StartLimitInterval=0
(安装)
WantedBy=multi-user.target
RequiredBy=docker.service
EOF kubernetes集群安装指南:法兰绒网络插件部署
<代码>猫在/usr/lib/systemd/系统/flanneld.service<& lt; EOF (单位) 描述=Flanneld覆盖地址etcd代理=network.target后=network-online.target后 希望=network-online.target=etcd.service后=docker.service之前 (服务) 类型=通知 ExecStart=$ {FLANNEL_INSTALL_PATH}/bin/flanneld \ \ -etcd-cafile=$ {CA_DIR}/ca。pem \ \ -etcd-certfile=$ {CA_DIR}/法兰绒。pem \ \ -etcd-keyfile=$ {CA_DIR}/flannel-key。pem \ \ -etcd-endpoints=$ {ETCD_ENPOINTS} \ \ -etcd-prefix=$ {FLANNEL_ETCD_PREFIX} \ \ IFACE=$ {IFACE} \ \ -ip-masq ExecStartPost=$ {FLANNEL_INSTALL_PATH}/bin/mk-docker-opts。上海\ \ - k DOCKER_NETWORK_OPTIONS - d/跑步/法兰绒/码头工人 重启=总 RestartSec=5 StartLimitInterval=0 (安装) WantedBy=multi-user.target RequiredBy=docker.service EOFkubernetes集群安装指南:法兰绒网络插件部署