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 ...
随机推荐
- iOS:CoreData数据库的使用四(数据库和UITableViewController以及NSFetchedResultsController一起使用)
CoreData数据库虽然可以和tableview或者UITableViewController一起使用将数据显示在表格上,但是在准备数据的时候,这种方式需要用一个可变数组来装从数据库一次性取出来的所 ...
- SWIG 快速入门
SWIG 安装 本文使用了 SWIG 版本 2.0.4(参见 参考资料 获取下载站点的链接).要构建和安装 SWIG,可按照典型的开源安装流程,在命令提示符下输入以下命令: 请注意,为前缀提供的路径必 ...
- kali开启ssh服务,实现win远程登录
本人问题:想通过windows7中的putty直接ssh到kali系统,而默认情况下,kali系统ssh服务没有开启. 具体按如下操作进行设置: 照以下步骤进行配置和操作: 1.修改sshd_conf ...
- C++构造函数、析构函数、虚析构函数
1.构造函数 C++中的构造函数是用于初始化类的各种变量以及分配资源等.主要的注意事项是: (1)在继承关系中先初始化父类对象后初始化子类对象. (2)在一个类中按照变量的声明顺序,对类中的变量进行初 ...
- [AngularJS] Angular 1.3 $submitted for Form in Angular
AngularJS 1.3 add $submitted for form, so you can use $submitted to track whether the submit event ...
- mysql安装错误总结
1.若在启动mysql服务时出现如下错误,可查看错误日志找出错误原因. Error:Starting MySQL.The server quit without updating PID file ( ...
- Android之GPS定位详解
一.LocationManager LocationMangager,位置管理器.要想操作定位相关设备,必须先定义个LocationManager.我们可以通过如下代码创建LocationManger ...
- double转成string时,不以科学计数法表示
用gson解析json串的时候,经常会自动把我想用string表示的内容转换成double,并且还是科学计数法,这一点也不科学,写个方法,格式化一下. public static String par ...
- CKEditor与CKFinder学习--CKFinder源代码改动自己定义上传文件名称
CKFinder的系列文章到眼下应该说基本能够满足开发需求了,只是另一个小细节,CKFinder默认上传的文件名称和源文件名称一致,假设文件名称反复会自己主动加入编号"(1)"&q ...
- 解构赋值 和 symbol
1.数组解构 let [a,b,c,d] = ['aa','bb',77,88] 嵌套数组解构 let [a,b,[c,d],e] = ['aa','bb',[33,44],55] 空缺变量 let ...