etcd+calico集群的部署
etcd单机模式
设置环境变量
|
1
|
export HostIP="192.168.12.50" |
执行如下命令,打开etcd的客户端连接端口4001和2379、etcd互联端口2380
如果是第一次执行此命令,docker会下载最新的etcd官方镜像
|
1
2
3
4
5
6
7
8
9
10
|
docker run -d -v /usr/share/ca-certificates/:/etc/ssl/certs -p 4001:4001 -p 2380:2380 -p 2379:2379 \ --name etcd quay.io/coreos/etcd \ -name etcd0 \ -advertise-client-urls http://${HostIP}:2379,http://${HostIP}:4001 \ -listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001 \ -initial-advertise-peer-urls http://${HostIP}:2380 \ -listen-peer-urls http://0.0.0.0:2380 \ -initial-cluster-token etcd-cluster-1 \ -initial-cluster etcd0=http://${HostIP}:2380 \ -initial-cluster-state new |
选择上面2个端口中的任意一个,检测一下节点情况:
|
1
|
curl -L http://127.0.0.1:2379/v2/members |
多节点etcd集群
配置多节点etcd集群和单节点类似,最主要的区别是-initial-cluster参数,它表示了各个成员的互联地址(peer url):
节点01执行如下命令:
|
1
2
3
4
5
6
7
8
9
10
11
|
docker run -d -p 4001:4001 -p 2380:2380 -p 2379:2379 \--restart=always \--name etcd quay.io/coreos/etcd \-name etcd01 \-advertise-client-urls http://192.168.73.140:2379,http://192.168.73.140:4001 \-listen-client-urls http://0.0.0.0:2379 \-initial-advertise-peer-urls http://192.168.73.140:2380 \-listen-peer-urls http://0.0.0.0:2380 \-initial-cluster-token etcd-cluster \-initial-cluster-state new |
节点02执行如下命令
|
1
2
3
4
5
6
7
8
9
10
11
|
docker run -d -p 4001:4001 -p 2380:2380 -p 2379:2379 \--restart=always \--name etcd quay.io/coreos/etcd \-name etcd02 \-advertise-client-urls http://192.168.73.137:2379,http://192.168.73.137:4001 \-listen-client-urls http://0.0.0.0:2379 \-initial-advertise-peer-urls http://192.168.73.137:2380 \-listen-peer-urls http://0.0.0.0:2380 \-initial-cluster-token etcd-cluster \-initial-cluster-state new |
检查集群连接情况,分别在各个节点执行如下命令:
|
1
|
curl -L http://127.0.0.1:2379/v2/members |
如果正常,将看到2个节点的信息,且在各个节点看到的结果都应该是一样的:
|
1
|
{"members":[{"id":"2bd5fcc327f74dd5","name":"etcd01","peerURLs":["http://192.168.73.140:2380"],"clientURLs":["http://192.168.73.140:2379","http://192.168.73.140:4001"]},{"id":"c8a9cac165026b12","name":"etcd02","peerURLs":["http://192.168.73.137:2380"],"clientURLs":["http://192.168.73.137:2379","http://192.168.73.137:4001"]}]} |
扩展etcd集群
在集群中的任何一台etcd节点上执行命令,将新节点注册到集群:
|
1
|
curl http://127.0.0.1:2379/v2/members -XPOST -H "Content-Type: application/json" -d '{"peerURLs": ["http://192.168.73.172:2380"]}' |
在新节点上启动etcd容器,注意-initial-cluster-state参数为existing
|
1
2
3
4
5
6
7
8
9
10
11
|
docker run -d -p 4001:4001 -p 2380:2380 -p 2379:2379 \--restart=always \--name etcd quay.io/coreos/etcd \-name etcd03 \-advertise-client-urls http://192.168.73.150:2379,http://192.168.73.150:4001 \-listen-client-urls http://0.0.0.0:2379 \-initial-advertise-peer-urls http://192.168.73.150:2380 \-listen-peer-urls http://0.0.0.0:2380 \-initial-cluster-token etcd-cluster \-initial-cluster "etcd01=http://192.168.73.140:2380,etcd02=http://192.168.73.137:2380,etcd03=http://192.168.73.150:2380" \-initial-cluster-state existing |
任意节点执行健康检查:
|
1
2
3
4
|
[root@docker01 ~]# etcdctl cluster-healthmember 2bd5fcc327f74dd5 is healthy: got healthy result from http://192.168.73.140:2379member c8a9cac165026b12 is healthy: got healthy result from http://192.168.73.137:2379cluster is healthy |
calico部署
现在物理主机下载calicoctl,下载页面:
|
1
|
https://github.com/projectcalico/calico-containers/releases |
并将下载的calicoctl复制到/usr/local/bin下面
在第一台etcd节点上执行如下命令:
|
1
2
3
4
5
6
7
8
9
|
[root@docker01 ~]# calicoctl node #如果是第一次执行该命令,会需要联网下载calico node镜像并启动Running Docker container with the following command:docker run -d --restart=always --net=host --privileged --name=calico-node -e HOSTNAME=docker01 -e IP= -e IP6= -e CALICO_NETWORKING=true -e AS= -e NO_DEFAULT_POOLS= -e ETCD_AUTHORITY=127.0.0.1:2379 -e ETCD_SCHEME=http -v /var/log/calico:/var/log/calico -v /var/run/calico:/var/run/calico calico/node:v0.18.0Calico node is running with id: 60b284221a94b418509f86d3c8d7073e11ab3c2a3ca17e4efd2568e97791ff33Waiting for successful startupNo IP provided. Using detected IP: 192.168.73.140Calico node started successfully |
在第二台etcd节点上执行:
|
1
2
3
4
5
6
7
8
9
|
[root@Docker01 ~]# calicoctl node --如果是第一次执行该命令,会需要联网下载calico node镜像Running Docker container with the following command:docker run -d --restart=always --net=host --privileged --name=calico-node -e HOSTNAME=docker01 -e IP= -e IP6= -e CALICO_NETWORKING=true -e AS= -e NO_DEFAULT_POOLS= -e ETCD_AUTHORITY=127.0.0.1:2379 -e ETCD_SCHEME=http -v /var/log/calico:/var/log/calico -v /var/run/calico:/var/run/calico calico/node:v0.18.0Calico node is running with id: 72e7213852e529a3588249d85f904e38a92d671add3cdfe5493687aab129f5e2Waiting for successful startupNo IP provided. Using detected IP: 192.168.73.137Calico node started successfully |
在任意一台calico节点上执行如下命令,配置地址资源池:
|
1
2
3
|
[root@Docker01 ~]# calicoctl pool remove 192.168.0.0/16 #删除默认资源池[root@Docker01 ~]# calicoctl pool add 10.0.238.0/24 --nat-outgoing --ipip #添加新的IP资源池,支持跨子网的主机上的Docker间网络互通,需要添加--ipip参数;如果要Docker访问外网,需要添加--nat-outgoing参数[root@docker01 ~]# calicoctl pool show #查看配置后的结果 |
在任意calico节点,检查Calico状态:
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
[root@docker01 ~]# calicoctl statuscalico-node container is running. Status: Up 3 hoursRunning felix version 1.4.0rc1IPv4 BGP statusIP: 192.168.73.140 AS Number: 64511 (inherited)+----------------+-------------------+-------+----------+-------------+| Peer address | Peer type | State | Since | Info |+----------------+-------------------+-------+----------+-------------+| 192.168.73.137 | node-to-node mesh | up | 09:18:51 | Established |+----------------+-------------------+-------+----------+-------------+IPv6 BGP statusNo IPv6 address configured. |
配置docker容器网络
分别在2个节点上启动业务一个容器,不加载网络驱动,后面网络让Calico来配置:
|
1
2
|
[root@docker01 ~]# docker run --name test01 -itd --log-driver none --net none daocloud.io/library/centos:6.6 /bin/bash[root@docker02 ~]# docker run --name test02 -itd --log-driver none --net none daocloud.io/library/centos:6.6 /bin/bash |
在任意的calico节点创建Calico profile:
|
1
|
[root@docker01 ~]# calicoctl profile add starboss |
通过Calico手动为容器指定ip,注意此ip需要符合calico pool的ip配置:
|
1
2
3
4
|
[root@docker01 ~]# calicoctl container add test01 10.0.238.10IP 10.0.238.10 added to test01[root@docker02 ~]# calicoctl container add test02 10.0.238.11IP 10.0.238.10 added to test02 |
在各个calico节点上,分别将需要互相访问的节点加入同一个profile:
|
1
2
3
4
|
[root@docker01 ~]# calicoctl container test01 profile set starbossProfile(s) set to starboss.[root@docker02 ~]# calicoctl container test02 profile set starbossProfile(s) set to starboss. |
在任意节点查看Calico节点的配置情况:
|
1
2
3
4
5
6
7
|
[root@docker01 ~]# calicoctl endpoint show --detailed+----------+-----------------+------------------------------------------------------------------+----------------------------------+-----------------+-------------------+----------+--------+| Hostname | Orchestrator ID | Workload ID | Endpoint ID | Addresses | MAC | Profiles | State |+----------+-----------------+------------------------------------------------------------------+----------------------------------+-----------------+-------------------+----------+--------+| docker01 | docker | 8f935b0441739f52334e9f16099a2b52e2c982e3aef3190e02dd7ce67e61a853 | 75b0e79a022211e6975c000c29308ed8 | 192.168.0.10/32 | 1e:14:2d:bf:51:f5 | starboss | active || docker02 | docker | 3d0a8f39753537592f3e38d7604b0b6312039f3bf57cf13d91e953e7e058263e | 8efb263e022211e6a180000c295008af | 192.168.0.11/32 | ee:2b:c2:5e:b6:c5 | starboss | active |+----------+-----------------+------------------------------------------------------------------+----------------------------------+-----------------+-------------------+----------+--------+ |
测试,在一台物理主机中ping另外一台主机中的容器:
|
1
2
3
4
5
6
|
[root@docker01 ~]# docker exec test01 ping 192.168.0.11PING 192.168.0.11 (192.168.0.11) 56(84) bytes of data.64 bytes from 192.168.0.11: icmp_seq=1 ttl=62 time=0.557 ms64 bytes from 192.168.0.11: icmp_seq=2 ttl=62 time=0.603 ms64 bytes from 192.168.0.11: icmp_seq=3 ttl=62 time=0.656 ms
|
etcd+calico集群的部署的更多相关文章
- etcd集群安装部署
1. 集群架构 由于我们只有两个机房,所以选择的是以上图中所示的数据同步方案, 通过做镜像的方式保证两个集群的数据实时同步. 整体架构如上图所示, 整个全局元数据中心包括两套集群,廊坊集群和马驹桥集群 ...
- k8s集群部署之环境介绍与etcd数据库集群部署
角色 IP 组件 配置 master-1 192.168.10.11 kube-apiserver kube-controller-manager kube-scheduler etcd 2c 2g ...
- 高可用Kubernetes集群-5. 部署flannel网络
七.部署flannel网络 kubernetes支持基于vxlan方式的flannel与weave网络,基于BGP路由的Calico网络,本节采用flannel网络. Flannel网络采用etcd等 ...
- Kubernetes集群的部署方式及详细步骤
一.部署环境架构以及方式 第一种部署方式 1.针对于master节点 将API Server.etcd.controller-manager.scheduler各组件进行yum install.编译安 ...
- ProxySQL Cluster 高可用集群环境部署记录
ProxySQL在早期版本若需要做高可用,需要搭建两个实例,进行冗余.但两个ProxySQL实例之间的数据并不能共通,在主实例上配置后,仍需要在备用节点上进行配置,对管理来说非常不方便.但是Proxy ...
- kubernetes学习与实践篇(二) kubernetes1.5 的安装和集群环境部署
kubernetes 1.5 的安装和集群环境部署 文章转载自:http://www.cnblogs.com/tynia/p/k8s-cluster.html 简介: Docker:是一个开源的应用容 ...
- 使用Kubeadm创建k8s集群之部署规划(三十)
前言 上一篇我们讲述了使用Kubectl管理k8s集群,那么接下来,我们将使用kubeadm来启动k8s集群. 部署k8s集群存在一定的挑战,尤其是部署高可用的k8s集群更是颇为复杂(后续会讲).因此 ...
- K8S入门系列之集群二进制部署-->master篇(二)
组件版本和配置策略 组件版本 Kubernetes 1.16.2 Docker 19.03-ce Etcd 3.3.17 https://github.com/etcd-io/etcd/release ...
- K8S集群安装部署
K8S集群安装部署 参考地址:https://www.cnblogs.com/xkops/p/6169034.html 1. 确保系统已经安装epel-release源 # yum -y inst ...
随机推荐
- Java集合类ArrayList循环中删除特定元素
在项目开发中,我们可能往往需要动态的删除ArrayList中的一些元素. 一种错误的方式: <pre name="code" class="java"&g ...
- 树莓派安装 Nginx + PHP7.0 + Pi Dashboard
之前我们介绍过树莓派搭建LNMP环境的方法,以及给树莓派装一个仪表盘来监控树莓派运行状态.近期有用户反馈树莓派最新版的系统已经无法找到 PHP5 的软件包了,这是因为新版本已经用 PHP7 替代了 P ...
- Proxmark3介绍
Proxmark3介绍 Proxmark3是由Jonathan Westhues设计并且开发的开源硬件,其主要用RFID的嗅探.读取以及克隆等的操作. 其官方网站为:Jonathan Westhues ...
- spring autowired还需要在xml中申明bean ?
如果未自动扫描spring管理的类,则需要在xml中申明.如果自动扫描包下的类,则不需要 (如果配置了自动扫描,还是不行还需要进行手动在xml中声明,则就是工程建立的有问题,包的路径等问题)
- 时间记录APP———Time Meter
关注过时间管理的人可能都听过大名鼎鼎的柳比歇夫的时间记录法,在几年前,大多人都推荐纸笔的记录方法,但是纸笔总是会忘,越来越智能的手机可是总不会忘得,所以我始终在寻找一款手机端好用的APP. 不管是时间 ...
- linux下重启oracle的方法
重启监听服务: #su - oracle #lsnrctl stop --关闭监听 #lsnrctl start --启动监听 重启数据库服务: #su - oracle #sqlplus /nolo ...
- 无法加载协定为“JavaWebService.UserInfoDelegate”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。
原因是: 在vs 2008中使用C#,多次添加/删除服务引用后,app.config文件并不会自动修改, 在添加/删除后,会生成多个“endpoint”,手工删除即可. app.config中的内容: ...
- Android调用系统拍照裁剪和选图功能
最近项目中用到修改用户头像的功能,基本上都是模板代码,现在简单记录一下. 调用系统拍照 private fun openCamera() { //调用相机拍照 // 创建File对象,用于存储拍照后的 ...
- windows server 2008 安装Microsoft ActiveSync 6.1提示缺少一个Windows Mobile设备中心所须要的Windows组件
windows server 2008 安装WinCE的同步软件,须要安装Microsoft ActiveSync 6.1版本号的. 而不能安装ActiveSync|Microsoft ActiveS ...
- Linux命令-网络命令:ping
ping 192.168.67.1 ping windows网卡地址,默认会一直ping下去,区别于windows的ping命令ping4次 ping -c 次192. 友情提示:如果您(阅读者)是从 ...