3. k8s集群搭建之网络处理
问题
k8s多个node上的docker ip问题
- 不同node上的docker容器ip互不通
- 不同node上会存在重复的ip容器
即问题在于解决不同node上的pod之间通信 [见权威指南 333页]
解决方案
直接路由~ 未测试通过
各节点添加其它所有节点的路由
- route add -net 172.17.0.0 netmask 255.255.255.0 gw 10.254.0.67
172.17.0.0为另一node的docker ip网段,10.254.0.67为该node节点ip
flannel
- 安装etcd
- node节点上安装flannel
- 下载flannel https://github.com/coreos/flannel/releases 中的flannel-v0.10.0-linux-amd64.tar.gz
- 复制flanneld和mk-docker-opts.sh到/usr/bin下
- 配置flannel
- 编辑systemctl文件
vi /usr/lib/systemd/system/flanneld.service [Unit] Description=flanneld overlay address etcd agent After=network.target Before=docker.service [Service] Type=notify EnvironmentFile=/etc/sysconfig/flanneld ExecStart=/usr/bin/flanneld -etcd-endpoints=${FLANNEL_ETCD} $FLANNEL_OPTIONS [Install] RequiredBy=docker.service WantedBy=multi-user.target
- 修改etcd启动参数
vi /usr/lib/systemd/system/etcd.service ExecStart=/usr/bin/etcd --listen-client-urls=http://0.0.0.0:2379 --advertise-client-urls=http://0.0.0.0:2379 --listen-peer-urls=http://0.0.0.0:2380 或: ExecStart=/usr/bin/etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379
- 编辑文件/etc/sysconfig/flannel,设置etcd的url地址
FLANNEL_ETCD="http://10.254.0.56:2379" FLANNEL_ETCD_KEY="/coreos.com/network"
- 在启动flanneld服务前,在etcd中添加一条网络配置记录,该配置用于flanneld分配给每个docker的虚拟ip地址段
etcdctl set /coreos.com/network/config '{"Network":"172.17.0.0/16"}'
在操作前,需关闭docker
- 启动flanneld服务
systemctl restart flanneld
systemctl enable flanneld
- 设置docker0网桥IP地址
* mk-docker-opts.sh -i
* source /run/flannel/subnet.env
* ifconfig docker0 ${FLANNEL_SUBNET}
完成后确认网络接口docker0的ip地址属于flannel0的子网
ip addr
- 重启docker 服务
systemctl restart docker
- 重启kubelet服务