本帖最后由 eagle1032231418 于 2017-12-25 10:31 编辑
Kubernetes 1.8 + Flannel 网络一步一步构建
环境说明:
操作系统:CentOS7
Kubernetes版本:v1.8.4
Docker版本:v17.06-ce Flannel 版本: flannel-v0.9.1
Ntp 服务器配置: #时间同步很重要 [iyunv@node1 ~]# yum install ntp-server -y [iyunv@node1 ~]# systemctl start ntpd && systemctl enable ntpd # yum install ntpdate -y #重要:时间同步 (每个节点都要操作否则会有意想不到的惊喜) # echo “*/5 * * * * /usr/sbin/ntpdate 192.168.31.221 > /dev/null 2>&1 &” >>/etc/crontab # /usr/sbin/ntpdate 192.168.31.221 #手动同步一次 Flannel概述: Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址。但在默认的Docker配置中,每个节点上的Docker服务会分别负责所在节点容器的IP分配。这样导致的一个问题是,不同节点上容器可能获得相同的内外IP地址。并使这些容器之间能够之间通过IP地址相互找到,也就是相互ping通。
Flannel的设计目的就是为集群中的所有节点重新规划IP地址的使用规则,从而使得不同节点上的容器能够获得“同属一个内网”且”不重复的”IP地址,并让属于不同节点上的容器能够直接通过内网IP通信。 Flannel实质上是一种“覆盖网络(overlay network)”,也就是将TCP数据包装在另一种网络包里面进行路由转发和通信,目前已经支持UDP、VxLAN、AWS VPC和GCE路由等数据转发方式。
一.安装docker
1.设置yum 仓库tee /etc/yum.repos.d/docker.repo <<-'EOF' [dockerrepo] name=Docker Repository baseurl=https://yum.dockerproject.org/repo/main/centos/7/ enabled=1 gpgcheck=1 gpgkey=https://yum.dockerproject.org/gpg EOF 2.执行安装#yum -y install docker-engine 3.设置开机启动 # systemctl start docker && systemctl enable docker 4.添加Docker Hub国内镜像# 如果没有此文件,则新建一个 vi /etc/docker/daemon.json { "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"] } 5.重启docker# systemctl restart docker #重启docker 6.设置hosts及hostname[iyunv@node1 ~]# vi /etc/hosts 192.168.31.221 node1 node1.example.com 192.168.31.222 node2 node2.example.com 192.168.31.223 node3 node3.example.com [iyunv@node1 ~]# hostnamectl set-hostname node1.example.com [iyunv@node2~]# hostnamectl set-hostname node2.example.com [iyunv@node3 ~]# hostnamectl set-hostname node3.example.com
二.给docker 配置 Flannel 网络 1.Master 节点etcd配置 Etcd 安装配置 (这里做的单节点ETCD只在Master 节点安装) [iyunv@node1 ~]# yum install etcd -y [iyunv@node1 ~]# vi /etc/default/etcd ETCD_DATA_DIR="/var/lib/etcd/default" ETCD_LISTEN_CLIENT_URLS="http://0.0.0.0:2379" ETCD_ADVERTISE_CLIENT_URLS=http://0.0.0.0:2379 [iyunv@node1 ~]# sed -i 's/localhost/0.0.0.0/g' /etc/etcd/etcd.conf [iyunv@node1 k8s]# systemctl start etcd && systemctl enable etcd etcd 创建 Flannel网络 set /coreos.com/network/config '{"NetWork":"10.0.0.0/16"}' 2.安装 flannel 软件并设置docker参数(其他node节点flannel 网络也照着这样配置) 使用软件包: flannel-v0.9.1.tar.gz (本文档会附带) [iyunv@node1 ~]# tar -zxvf flannel-v0.9.1.tar.gz [iyunv@node1 ~]# cd flannel-v0.9.1 [iyunv@node1 flannel-v0.9.1]# cp flanneld mk-docker-opts.sh /usr/local/bin/ [iyunv@node1 flannel-v0.9.1]# cd conf/ [iyunv@node1 conf]# cp *.service /usr/lib/systemd/system #覆盖docker 的启动脚本 [iyunv@node1 conf]# cp flanneld /etc/sysconfig/ [iyunv@node1 conf]# vi /etc/sysconfig/flanneld #修改 自己的etcd 服务器地址 # Flanneld configuration options # etcd url location. Point this to the server where etcd runs FLANNEL_ETCD_ENDPOINTS="http://192.168.31.221:2379" # etcd config key. This is the configuration key that flannel queries # For address range assignment FLANNEL_ETCD_KEY="/coreos.com/network" FLANNEL_OPTIONS="--etcd-endpoints=http://192.168.31.221:2379 --ip-masq=true" # Any additional options that you want to pass #FLANNEL_OPTIONS="" 最后重启 flannel 和 docker systemctl daemon-reload systemctl start flanneld && systemctl enable flanneld systemctl restart docker 成功状态 # ifconfig docker0 |grep inet && ifconfig flannel0 |grep inet 更加详尽的文档,请看附件
最新更新: 镜像仓库 UI 配置
附带,文档使用的所有容器镜像,及yaml 文件,文档是各方学习,总结出来的,有问题可以,反馈给我,谢谢
|