一、AWS EC2上踩过的坑
在AWS EC2上之前搭建过Docker Swarm集群,由于项目还没有正式上生产,所以胆大什么技术都刚上去尝试。Docker Swarm上手很快,很容易建立一个集群。实际中,Docker Swarm发布Service,公布对外端口。发现客户端连接,首次有短暂超时现象,访问速率不及直接用Docker独立部署镜像,暴露端口对外提供服务。查阅了不少资料,都无法解决,Docker Swarm发布Service,客户端访问速率慢的问题,所以决定放弃Docker Swarm。再之前搭建过Kubernetes,后发现搭建Kubernetes 高可用,多Master方式,在EC2搭建不成功,各种问题和坑,网上也没有查到好的解决方案。唯一办法购买AWS Kubernetes服务。
从成本出发,决定用其他方式来搭建Docker集群。搭建Docker集群,首先也要解决的是跨主机,容器间的网络访问问题。在尝试利用calico方案,来解决Docker 容器跨主机的访问问题。calico在AWS EC2上,也遇到棘手问题。虽然,calico借助ETCD集群,执行calicoctl node status,可以看到calico貌似搭建成功。实际在测试,利用calico作为Docker的网络的时候,发现calico在本机和跨主机的时候,都不能连通。真是崩溃,由于对calico不熟悉,查找网上各种解决方案,都未能解决在AWS EC2上,calico网络连通问题。
网上给的成功例子,可能都不是在公用云上执行的。由于在公有云上执行,本身公有云有他们自己的产品,可能有诸多限制,导致在物理机上可以搭建成功,在公有云上却不能搭建成功。在遭遇各种坑之后,决定尝试在AWS EC2上搭建flannel网络,结果非常顺利搭建成功,也解决了Docker容器在跨主机网络问题。
二、准备机器
这里我准备了三台机器,三台机器如下:
IP地址 主机名称 安装服务
172.31.72.142 master1 Etcd、Maser节点、Docker、Flanne
172.31.82.187 master2 Etcd、Node节点、Docker、Flanne
172.31.11.86 master3 Etcd、Node节点、Docker、Flanne
三、搭建ETCD集群
由于篇幅的关系,这里不在阐述。参见我写的搭建ETCD集群文章,
链接地址:https://blog.youkuaiyun.com/QFYJ_TL/article/details/81395543
四、搭建Flannel集群
1、安装Flannel,Docker,在所有EC2上安装Flannel,Docker
yum install flannel -y
docker-ce centos参考官网安装:https://docs.docker.com/install/linux/docker-ce/centos/#os-requireme