Docker容器跨主机通信

  默认情况下Docker容器需要跨主机通信两个主机节点都需要在同一个网段下,这时只要两个Docker容器的宿主机能相互通信并且该容器使用net网络模式,改实现方式为网桥模式通信;
  除此之外我们还可以通过使用第三方工具为不同主机间创建一个覆盖网络,使之能够跨节点通信,这里将使用Flanneld实现;

安装etcd

创建 cat /etc/etcd/etcd.conf文件

 # [member]
 ETCD_NAME=infra1
 ETCD_DATA_DIR="/var/lib/etcd"
 ETCD_LISTEN_PEER_URLS="http://192.168.2.150:2380"
 ETCD_LISTEN_CLIENT_URLS="http://192.168.2.150:2379"

 #[cluster]
 ETCD_INITIAL_ADVERTISE_PEER_URLS="http://192.168.2.150:2380"
 ETCD_INITIAL_CLUSTER_TOKEN="etcd-cluster"
 ETCD_ADVERTISE_CLIENT_URLS="http://192.168.2.150:2379"

创建/etc/systemd/system/etcd.service文件

[Unit]
Description=Etcd Server
After=network.target
After=network-online.target
Wants=network-online.target
Documentation=https://github.com/coreos

[Service]
Type=notify
WorkingDirectory=/var/lib/etcd/
EnvironmentFile=-/etc/etcd/etcd.conf
ExecStart=/usr/local/bin/etcd \
  --name ${ETCD_NAME} \
  --initial-advertise-peer-urls ${ETCD_INITIAL_ADVERTISE_PEER_URLS} \
  --listen-peer-urls ${ETCD_LISTEN_PEER_URLS} \
  --listen-client-urls ${ETCD_LISTEN_CLIENT_URLS},http://127.0.0.1:2379 \
  --advertise-client-urls ${ETCD_ADVERTISE_CLIENT_URLS} \
  --initial-cluster-token ${ETCD_INITIAL_CLUSTER_TOKEN} \
  --initial-cluster infra1=http://192.168.2.150:2380,infra2=http://192.168.2.151:2380 \
  --initial-cluster-state new \
  --data-dir=${ETCD_DATA_DIR}
Restart=on-failure
RestartSec=5
LimitNOFILE=65536

[Install]
WantedBy=multi-user.target

启动systemctl start etcd

在etcd中创建目录:etcdctl --endpoints=http://192.168.2.150:2379,http://192.168.5.151:2379 

mkdir /kube-centos/network

创建config节点并写入网络配置信息:

 etcdctl --endpoints=http://172.20.0.113:2379,http://172.20.0.114:2379
 mk /kube-centos/network/config '{"Network":"192.167.0.0/16","SubnetLen":24,"Backend":{"Type":"vxlan"}}'

Flanneld

创建 /etc/sysconfig/flanneld文件

# Flanneld configuration options  
# etcd url location.  Point this to the server where etcd runs
FLANNEL_ETCD_ENDPOINTS="http://127.0.0.1:2379"

# etcd config key.  This is the configuration key that flannel queries
# For address range assignment
# FLANNEL_ETCD_PREFIX="/kube-centos/network"
FLANNEL_ETCD_PREFIX="/coreos.com/network"
# Any additional options that you want to pass
FLANNEL_OPTIONS="-iface=eth0"

创建/usr/lib/systemd/system/flanneld.service文件

[Unit]
Description=Flanneld overlay address etcd agent
After=network.target
After=network-online.target
Wants=network-online.target
After=etcd.service
Before=docker.service

[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/flanneld
EnvironmentFile=-/etc/sysconfig/docker-network
#ExecStart=/usr/bin/flanneld-start  $FLANNEL_OPTIONS
ExecStart=/usr/bin/flanneld-start -etcd-endpoints=http://192.168.2.150:2379,http://192.168.2.151:2379 -    iface=ens33
#ExecStart=/usr/bin/flanneld-start -etcd-endpoints=http://192.168.2.150:2379,http://192.168.2.151:2379  -etcd-    prefix=/kube-centos/network
ExecStartPost=/usr/libexec/flannel/mk-docker-opts.sh -k DOCKER_NETWORK_OPTIONS -d /run/flannel/docker
Restart=on-failure

[Install]
WantedBy=multi-user.target
RequiredBy=docker.service

启动systemctl start flanneld

flannled启动后会生产/run/flannel/subnet.env文件

修改docker启动参数配置加上:

EnvironmentFile=/run/flannel/subnet.env
--bip=${FLANNEL_SUBNET} --ip-masq=${FLANNEL_IPMASQ}  --mtu=${FLANNEL_MTU}

enter image description here

重启docker,此时docker将使用flanneld配置的网段为container分配ip;

在两个节点分别启动容器:docker run -it –rm busybox sh

查看其中一个主机节点的容器IP,ping另一个主机节点IP

enter image description here

查看其中一个主机节点的容器IP,ping另一个主机节点IP

enter image description here

此时已可联通;

注意iptables配置是否正确;

数说海南——简单分析海南各市县近六年人口吸引力情况

  这里列出了海南近十个市县的户籍人口与常住人口情况并对每个市县进行非专业简单的分析,人口的净流入肯定和当地的经济发展有着莫大的联系,这里就简单说说一些愚见;
  毫无疑问和人们所了解的一样海南就只有海口、三亚市有人口净流入的,其他市县全部都是人口净流出(这里没有给出所有市县,我就想当然这么认为了);我觉得通过对比每个地方近几年的净流入人口还是可以粗略看得出某地这几年经济发展得怎样的,当然这个数据是不包含候鸟的,如果加入了候鸟我想三亚就会跑到第一了,琼海就会出现人口净流入了,不过我觉得候鸟不列入常住人口是正确的,这里也没有给出同比上年的增长率,也就进行一下瞎评论了;
  当地没有产业人们外出打工自然就会出现人口净流出,这本身倒也不是多大问题,对经济不好的地方来说外出还会有机会,赖在家里就完全没机会;

  enter image description here

  海口,从上图我们可以看出海口除了2012年净流入人口比2011年多了5W外,其他年份净流入人口均没有达到5W,2015年比2014年多了不到3W,2016年甚至还出现了负增长的情况,从常住人口来看海口的吸引力这几年并不是有多大增强;
  对比其他发达省份省会海口的吸引力还差得太远,广州去年一年新增的常住人口就超过了海口净流入人口的90%;

  enter image description here

  三亚毫无疑问海南第二个存在人口净流入的城市,三亚名声在外远超过海口但是论除旅游业外的其他产业三亚和海口比还差得远;从常住人口这个数据看其实三亚的吸引力这几年变化还是不算很大,2016比2011多了5W人,如果看候鸟数据我想三亚的吸引力就会非常好看,不过我觉得候鸟对海南的贡献是非常有限的;

  enter image description here

  定安中部市县的老大,但由于整个中部都是贫困地区,定安的这个数据也不好看,近几年都是年均5W左右的人口净流出,由于户籍人口本身基数就不大这个5W人的净流出人口比例已经是很高的了;

  enter image description here

  文昌海南省内经济强市之一,从上图来看近几年是逐年的净流出人口在减少虽然每年减少的幅度很小,但如果对比几年的数据看,2016年已经比2011年少了1.5W人左右着算是很大的进步了,说明文昌本地人在逐步的回流;

  enter image description here

  琼海也是海南经济强市之一,从数据上看琼海的人口净流出人数最少,这也比较符合经济情况;不过我觉得主要有两个方面的原因:一方面是因为琼海经济发展得较好吸引了不少外地人口,还有一个是据我了解的情况来看琼海人比较“恋家”,愿意留在本地人还是比较多的;从上面的图也可以看出这六年其实琼海净流出人口变化不大;

  enter image description here

  澄迈,澄迈这几年从GDP上看是排在省里老三老四的位置,但是澄迈经济发展各地区其实很不平衡,除了金江和老城其他地方我觉得都不是很好,如果不是老城的人口流入填了不少人口我觉得澄迈的人口净流出数字会更大,当然我觉得还有一个原因澄迈人相对比较喜欢走出去!

  enter image description here

  东方,对东方了解不多,如果只从总量看东方的净流出人口总数是除了琼海外最少的,但是有地地方需要注意的是2015年净流出人口减少2W的同时2015年东方的户籍人口也比2014年少了差不多2W,所有是不是这两年因为经济原因导致人口回流这个还不好判断;

  enter image description here

  万宁,不太了解但从数据上看这两年的数字可以说很好看了,2015年比2014年回流了1W,2016年竟然比2015年回流了2W,达到了仅六年人口净流出的最低水平;从2011年到2014年逐年的净流出增加到2015年的急速转弯,或许说明的万宁这两年变化很大?

  各个市县的户籍人口其实都没多大变化有增有减,整体来说都很平稳;净流出人口有增加有减少但真题来说还是趋向于人口回流的;单单对比一年数字应该看不出多大变化,这里也没给出年增长率,有时间再说了;

数据来源:以上户籍人口、常住人口数据来源于海南历年统计年鉴