`
m635674608
  • 浏览: 4929378 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

CentOS7安装etcd和flannel

 
阅读更多

开始

在搭建Kubernetes的环境的时候,你可能会遇到一些问题,不!你会遇到很多问题。比如,首先你要实现跨物理机的容器访问——是不同物理内的容器能够互相访问,而不是你平常所看到的乱七八糟的端口映射。方案有很多,比如OVS、flannel、socketplane什么的,下面是我搭建etcd和flannel的过程,希望对需要这样的环境的人有所帮助,少走弯路。再说一次:跨物理机的容器之间能直接访问

架构

实验的架构非常简单,三台机器,为了简化,我只设置了一台etcd,没有做集群,三台机器安装flannel和Docker。

  • 172.16.164.5 //etcd、flannel、docker
  • 172.16.164.6 //flannel、docker
  • 172.16.164.7 //flannel、docker

安装etcd

  • 172.16.164.5
    etcd的安装是尤其简单的——如果你有的话,下载二进制直接运行就是了,在这里我设置成了一个新的集群。
    #也许你需要,github使用的是amazon的s3存储
    wget https://github.com/coreos/etcd/releases/download/v2.3.2/etcd-v2.3.2-linux-amd64.tar.gz
    tar xvf etcd-v2.3.2-linux-amd64.tar.gz 
    cd etcd-v2.3.2-linux-amd64
    mv etcd* /usr/bin
    二进制的程序可以直接启动,为了方便,我们将其加入Systemd管理,并且为了以后扩展,我还设置了集群,大家可以不必添加集群设置。
    cat /usr/lib/systemd/system/etcd.service
    [Unit]
    Description=etcd
    [Service]
    Environment=ETCD_NAME=kubernetes
    Environment=ETCD_DATA_DIR=/var/lib/etcd
    Environment=ETCD_LISTEN_CLIENT_URLS=http://172.16.164.5:4001,http://localhost:4001
    Environment=ETCD_LISTEN_PEER_URLS=http://172.16.164.5:7001,http://localhost:7001
    Environment=ETCD_INITIAL_ADVERTISE_PEER_URLS=http://172.16.164.5:7001,http://localhost:7001
    Environment=ETCD_ADVERTISE_CLIENT_URLS=http://172.16.164.5:4001,http://localhost:4001
    Environment=ETCD_INITIAL_CLUSTER_STATE=new
    Environment=ETCD_INITIAL_CLUSTER_TOKEN=Kubernetes
    Environment=ETCD_INITIAL_CLUSTER=kubernetes=http://172.16.164.5:7001,kubernetes=http://localhost:7001
    ExecStart=/usr/bin/etcd
    [Install]
    WantedBy=multi-user.target
    添加后执行systemctl start etcd启动etcd,可以通过etcdctl ls /或者etcdctl mkdir /test测试etcd可用性。
    添加网段
    确定etcd可以使用之后,我们需要设置分配给docker网络的网段
    etcdctl mk /coreos.com/network/config '{"Network":"172.17.0.0/16", "SubnetMin": "172.17.1.0", "SubnetMax": "172.17.254.0"}'

    安装flannel

    以下是旧内容,更新请看下一篇博文

  • 172.16.164.5
  • 172.16.164.6
  • 172.16.164.7
    三台主机都要执行
    其实flannel也是和etcd一样,不用安装的,直接从官方下载二进制执行文件就可以了,当然,你也可以自己编译。
    wget https://github.com/coreos/flannel/releases/download/v0.5.5/flannel-0.5.5-linux-amd64.tar.gz
    tar xvf flannel-0.5.5-linux-amd64.tar.gz
    mv flannel-0.5.5-linux-amd64 /opt/flannel
    同样,我们添加一个flannel服务的System单元,简单的就可以。
    cat /usr/lib/systemd/system/flanneld.service 
    [Unit]
    Description=flannel
    [Service]
    ExecStart=/opt/flannel/flanneld \
    -etcd-endpoints=http://172.16.164.5:4001
    [Install]
    WantedBy=multi-user.target
    通过systemctl start flanneld启动服务,正常情况下,你执行ip a已经可以看到flannel0桥接网卡了,etcd上执行etcdctl ls /coreos.com/network/subnets也能够看到flannel申请的网段。
    修改Docker参数
    要像使docker使用flannel的网络传递数据,要修改一些启动参数。
    cd /opt/flannel/
    ./mk-docker-opts.sh -i
    通过mk-docker-opts.sh --help可一直到这个脚本会生成一些docker参数,放到/run/docker_opts.env文件中,我们只需要将这些参数,加入到docker的启动参数
    cat /etc/sysconfig/docker | grep OPT
    OPTIONS='--selinux-enabled --bip=172.17.64.1/24 --ip-masq=true --mtu=1472'

Paste_Image.png


配置完毕后,便可以启动docker了。

sytemctl stop docker
ifconfig down docker0
systemctl start docker
ip a s docker0
#可以看到docker0已经获取了flannel网段的地址

Paste_Image.png

最后

三台机器都配置好了之后,我们在三台机器上分别开启一个docker容器,测试它们的网络是不是通的。

docker run -ti centos bash
#一次查看容器IP
cat /etc/hosts
172.17.97.2     334cec104721
#测试连通性,都成功就OK了
#到跨物理机容器
ping -c 1 172.16.164.7
ping -c 1 172.17.67.1
#到宿主机
ping -c 1 172.16.164.7
#到别的物理机
ping -c 1 172.16.164.6

Paste_Image.png

很多东西还需要继续学(zhe)习(teng),本文就到此结束了,如果你什么建议或者意见,可以评论留言,如果对你能产生帮助,欢迎打赏●v●



文/岦_(简书作者)
原文链接:http://www.jianshu.com/p/a2039a8855ec
著作权归作者所有,转载请联系作者获得授权,并标注“简书作者”。
 
http://www.iyunv.com/thread-58817-1-1.html
http://blog.liuker.cn/index.php/docker/30.html
 
http://www.cnblogs.com/xuxinkun/p/5696031.html
 
http://www.dataguru.cn/thread-581573-1-1.html
分享到:
评论

相关推荐

    一键安装部署k8s,博客里部署操作

    1、系统环境: centos 7 纯净系统; 2、只适用部署1台master + 2台node ; 3、在脚本 install-etcd-flannel-k8s.sh 中设置 3台的IP; 4、做好master到两台node的免密登陆; 5、将安装包放在master上,直接执行bash ...

    基于centos, ubuntu的linux版Flannel-v0.12.0-linux-amd64.tar.gz.zip下载

    这次的分享内容将从Flannel的介绍、工作原理及安装和配置三方面来介绍这个工具的使用方法。 Flannel通过给每台宿主机分配一个子网的方式为容器提供虚拟网络,它基于Linux TUN/TAP,使用UDP封装IP包来创建overlay网络...

    CentOS7安装k8s-v1.14.1.docx

    第七部分 CoreDNS和Dashboard部署 37 第八部分 部署traefik Ingress 39 第一部分 环境初始化 1、环境规划: k8s-master1 10.3.8.101 HA/etcd/kube-apiserver/kube-controller-manager/kube-scheduler k8s-master2 ...

    k8s(docker)单机版的安装文档

    Kubernetes 是goole开源的大规模容器集群管理系统,使用centos7 自带的Kubernetes 组件、分布式键值存储系统etcd 以及flannel 实现Docker容器中跨容器访问

    centos7.5分布式平台搭建.docx

    4.1. 查看SSH是否安装,需要客户端与服务都安装,centos7自带ssh服务,一般可以跳过安装步骤 27 4.2. 安装命令 27 4.3. service sshd restart 启动、重启SSH服务; 27 4.4. 开机启动。 27 4.5. 退出SSH命令 27 4.6. ...

    利用Docker在不同宿主机上做CentOS系统容器

    三、Docker的安装四、Docker容器在不同宿主机间通信4.1、不同宿主机间容器通信原理图4.2、不同宿主机间容器通信安装部署4.2.1、宿主机环境准备4.2.2、安装Etcd4.2.3、安装Flannel4.2.4、配置docker0虚拟网桥4.2.5、...

    Kubernets安装部署.md

    Kubernetes安装详细部署 一、环境说明 二、创建TLS证书和密钥 三、创建kubeconfig文件 四、创建高可用etcd集群...六、安装flannel网络插件 七、部署node节点 八、安装CoreDNS 九、安装dashboard 十、安装metrics-server

    docker kubernetes dashboard安装部署详细介绍

    注: 本次实验服务器环境均采用centos 7. 服务安装均采用yum install. 192.168.3.7 master 192.168.3.16 node 2).使用的软件包: master: docker kubernetes-master etcd flannel nodes: docker kubernetes-node ...

    百度地图毕业设计源码-k8s1.10.3:unixhot拷贝的

    v1.10.3版本(支持TLS双向认证、RBAC授权、Flannel网络、ETCD集群、Kuber-Proxy使用LVS等)。 版本明细:Release-v1.10.3 测试通过系统:CentOS 7.4 salt-ssh: 2017.7.4 Kubernetes: v1.10.3 Etcd: v3.3.1 Docker: ...

    salt-kubebin:SaltStack使用二进制方式自动化部署Kubernetes(版本v1.10.3)

    SaltStack自动化部署Kubernetes SaltStack自动化部署Kubernetes v1.10.3版本(支持TLS双向认证,RBAC授权,Flannel网络,ETCD迁移,Kuber-Proxy使用LVS等)。版本明细:Release-v1.10.3测试通过系统:CentOS 7.4 ...

    学习工具:用于学习新技术的工具和文件的集合

    CentOS原子主机 领事分布式键值存储 CoreOS Linux Debian GNU / Linux 码头工人 etcd分布式键值存储 虚拟机 LXC和LXD 网络操作系统(JunOS,EOS,Cumulus等) OpenStack的 打开vSwitch(OVS)和打开虚拟网络...

    Kubernetes Management Design Patterns(Apress,2017)

    CoreOS Linux is used in the majority of the chapters and other platforms discussed are CentOS with OpenShift, Debian 8 (jessie) on AWS, and Debian 7 for Google Container Engine. CoreOS is the main ...

    Kubernetes Management Design Patterns: With Docker, CoreOS Linux, and Other

    CoreOS Linux is used in the majority of the chapters and other platforms discussed are CentOS with OpenShift, Debian 8 (jessie) on AWS, and Debian 7 for Google Container Engine. CoreOS is the main ...

    Kubernetes.Management.Design.Patterns.With.Docker.pdf

    Provides Cloud-Config for declaratively configuring for OS items such as network configuration (flannel), storage (etcd), and user accounts Provides a production-level infrastructure for containerized...

Global site tag (gtag.js) - Google Analytics