Flannel with Docker

   2016-12-01 0
核心提示:Flannel with DockerFlannel 是用于组建容器间通信的网络的工具,用于解决跨主机的docker containers之间的连通性问题。最近在尝试手动部署kubernetes集群,这是这个系列的第一篇。准备工作首先安装vagrant, 用来创建虚拟节点。我们需要两台虚拟机.Vagrantfil

Flannel with Docker

Flannel 是用于组建容器间通信的网络的工具,用于解决跨主机的docker containers之间的连通性问题。最近在尝试手动部署kubernetes集群,这是这个系列的第一篇。

准备工作

首先安装vagrant, 用来创建虚拟节点。我们需要两台虚拟机.

Vagrantfile 如下:

Vagrant.configure(2) do |config|
  config.vm.box = "centos/7"
  config.vm.network "private_network", type: "dhcp"
  vb.memory = "1024"
end

创建一个 centos 目录,把 Vagrantfile 放置其中,运行:

vagrant up
vagrant ssh

进入后,可以先更新一下 yum源,yum makecache, yum update 一下。ip addr 看下本机的ip。

另一台虚拟机的过程类似。

两台ip分别为: 172.28.128.3, 172.28.128.4

关于Flannel原理:

Flannel with Docker

安装 Docker

docker官网有详细的步骤,大致如下:

$ sudo 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

$ sudo yum install docker-engine

$ sudo systemctl enable docker.service

$ sudo systemctl start docker

确认安装完成: sudo docker version , 然后关闭 dockerd, sudo systemctl stop docker.service

安装 golang 编译环境

编译 flannel 会需要,如果你的vagrant 使用了host的共享目录,那么这个步骤只需要在其中一台虚拟机执行就行,第二台虚拟机直接拷贝文件就可以了。 如果你的host机有golang的编译环境,直接在host编译即可,记得使用 GOOS=linux GOARCH=amd64 作为编译时候的环境变量。

如果你选择在虚拟机中编译,那么内存最好设置为 2G.

wget -c https://storage.googleapis.com/golang/go1.7.3.linux-amd64.tar.gz
tar xf go1.7.3.linux-amd64.tar.gz

把解压出来的 go 目录放到合适的位置,并把 go/bin 加入 PATH 环境变量, 并设置 GOPATH 环境变量。

安装 Flannel

$ sudo yum install linux-libc-dev gcc
$ git clone https://github.com/coreos/flannel
$ cd flannel
$ make dist/flanneld

编译完成后的文件在 dist 目录中, 可以拷贝到 /usr/local/bin/ 下

安装 etcd

$ curl -L  https://github.com/coreos/etcd/releases/download/v3.0.15/etcd-v3.0.15-linux-amd64.tar.gz

$ tar xf etcd-v3.0.15-linux-amd64.tar.gz

把 etcd, etcdctl 拷贝到 /usr/local/bin 下

运行

IP: 172.28.128.3

首先运行etcd: $ etcd --listen-client-urls 'http://0.0.0.0:2379,http://0.0.0.0:4001' --advertise-client-urls 'http://172.28.128.3:2379,http://172.28.128.3:4001' >/dev/null 2>&1

设置flannel子网范围:

etcdctl rm /coreos.com/network/ --recursive
etcdctl mk /coreos.com/network/config '{"Network":"11.0.0.0/16"}'

IP: 172.28.128.3, 172.28.128.4 两台机器

ifconfig 查看一下,ip为172.28.128.3 的 interface 的名称,我的情况为 eth1. 运行 flannel. subnet.env 是根据 etcd中的配置自动生成的环境变量,需要导出一下.

sudo flanneld -etcd-endpoints='http://172.28.128.3:2379,http://172.28.128.3:4001' -iface=eth1 &
source /run/flannel/subnet.env

修改docker0 网络的ip, 并开启 dockerd

sudo ifconfig docker0 ${FLANNEL_SUBNET}
sudo dockerd --bip=${FLANNEL_SUBNET} --mtu=${FLANNEL_MTU} &

测试连通性

在两台机器上分别 sudo docker run -it bash

进入bash后,ip addr 查看各自ip,互相 ping 一下对方的ip,应该是可以ping通的。

 
标签: Docker Linux命令
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • 在阿里云主机的Debian操作系统上安装Docker
    因为需要新搭建饭团网站,所以需要在阿里云的主机上跑数据库,java环境。考虑到可扩展性和模块化,所以准备最近流行的docker技术。Docker —— 从入门到实践阿里云主机1核1G,资源不多,所以就装debian了。欢迎捐助 ????## 下面命令都是以root用户执行## 查看
    02-10
  • 中科大debian 9 + docker源设置
    wget https://mirrors.ustc.edu.cn/repogen/conf/debian-http-4-stretch -O sources.listsudo apt-get install \      apt-transport-https \      ca-certificates \      curl \      gnupg2 \      software-properties-commoncu
    02-10
  • 外部访问docker内部容器centos的http服务
    1.创建容器docker run -d -it -h dd -p 5000 --name bbbbb centosdd 是用户名 --name 后面是容器名字2.在我们开始安装Nginx及其他所需软件之前先安装一些前提软yum install python-setuptools yum -y install epel-release yum install python-pip pip instal
    02-10
  • apache ignite docker集群运行试用
    apache ignite docker集群运行试用
    apache ignite 是一个很不错的内存计算平台常见参考使用场景应用缓存加速   数据集成hub   基于容器的集群环境部署环境准备说明为了方便基于静态ip发现的模式进行集群的搭建,关于静态ip配置,核心如下 bean class="org.apache.ignite.spi.discovery.t
    02-10
  • 通过docker创建并使用apache容器
    目标: 制作一个承载apache的镜像,并在一个Linux内启动5个apache容器对外提供服务1、安装apachedocker run -t -i --name=qxy_apache centosyum -y install httpdexit2、制作镜像docker commit qxy_apache qxy_apache:v1.0[root@centos-1 ~]# docker imagesRE
    02-10
  • 使用docker-compose部署nginx docker compose使
     1、新建docker-compose.yml文件,文件的基本模板如下:(由于yml格式比较严格,注意空格缩进)version: '2.0'services:nginx:restart: alwaysimage: nginx:1.11.6-alpineports:- 8080:80- 80:80- 443:443volumes:- ./conf.d:/etc/nginx/conf.d- ./log:/var/
    02-10
  • nginx 代理 registry docker certificate is v
    1.配置SSL证书及nginx反向代理docker registry搭建私有CA,初始化CA环境,在/etc/pki/CA/下建立证书索引数据库文件index.txt和序列号文件serial,并为证书序列号文件提供初始值。# touch /etc/pki/CA/{index.txt,serial}# echo 01/etc/pki/CA/serial2.生成密
    02-10
  • Docker安装配置Nginx docker安装配置caffe
    Docker安装配置Nginx docker安装配置caffe
    docker pull nginx2.启动Nginxdocker run --name nginx -d -p 80:80 nginx3.创建Nginx配置文件目录  mkdir /data/nginx/html docker cp nginx:/etc/nginx/nginx.conf /data/nginx/ docker cp nginx:/etc/nginx/conf.d/ /data/nginx/conf.d/  4.停止并删除n
    02-10
  • docker 制作自定义的nginx镜像
    docker 制作自定义的nginx镜像
    1、启动一个centos基础系统[root@docker ~]# docker run -it --name mynginx centos /bin/bash[root@a8882e2ef0d9 /]#2、安装wget,默认没有的[root@a8882e2ef0d9 /]# yum install -y wget3、安装nginx[root@a8882e2ef0d9 /]# yum install -y nginx4、修改配置
    02-10
  • docker之Dockerfile实践用dockerfile构建nginx环境
    


		
docker之Dockerfile实践
    docker之Dockerfile实践用dockerfile构建nginx
    https://blog.csdn.net/wuapeng/article/details/80974417 上一篇介绍了Dockerfile中使用的指令,现在开始进行指令实践先查看下本地的镜像,选一个作为base image:[root@docker ~]# docker imagesREPOSITORY TAG IMAGE IDCREATED SIZEwadeson/centos_nginx
    02-10
点击排行