Docker Swarm
- docker compose用来管理项目和服务,但是不能实现集群,docker的集群部署可以通过docker swarm实现
- swarm是docker内置的服务,所以不需要再次下载
- swarm分为工作节点和管理节点,都可以部署集群,但管理节点只能有一个leader
创建简单的swarm集群环境
- 启动三台服务器(虚拟机),例如ip如下
192.168.154.121 192.168.154.122 192.168.154.123
- 案例演示将192.168.154.121机器设置为管理节点,只在管理节点上执行以下指令
docker swarm init --advertise-addr 192.168.154.121
- 执行后会生成一下一个指令,随机生成的,将这个指令copy到另外两台机器
# 随机生成的 docker swarm join --token SWMTKN-1-65r8j68xwf5u1301nun5iowjzmqf6g1t24shsomo4tfqevemym-apgt591r9zuoogkxijxfzotf8 192.168.154.121:2377 # 在工作节点执行成功后会有以下提示 This node joined a swarm as a worker.
- 在管理节点上查看集群
docker node ls # 执行结果示例 48lip1pz3jfrznnuerwxixbdn chongba-docker Ready Active 19.03.13 m0085v45735bx6k7qc3eiisj8 * chongba-docker Ready Active Leader 19.03.13 roujeh9roofnheu9cg3ew6188 chongba-docker Ready Active 19.03.13
- 设置主机名部分
1.# 根据规划设置主机名,每台机器上执行 hostnamectl set-hostname <hostname> 2.# 在master添加hosts,每台机器上执行 cat >> /etc/hosts << EOF 192.168.200.150 node1 192.168.200.151 node2 192.168.200.152 node3 EOF 3.# 将桥接的IPv4流量传递到iptables的链,在每台机器上执行 cat > /etc/sysctl.d/k8s.conf << EOF net.bridge.bridge-nf-call-ip6tables = 1 net.bridge.bridge-nf-call-iptables = 1 EOF sysctl --system # 使其生效 4.# 时间同步,并验证 yum install ntpdate -y ntpdate time.windows.com date
- 再次查看服务列表会发现节点名称已经更改,这个时候已经部署了一个最小的swarm集群,包含一个管理节点和两个工作节点
docker node ls m0085v45735bx6k7qc3eiisj8 * note1 Ready Active Leader 19.03.13 roujeh9roofnheu9cg3ew6188 note2 Ready Active 19.03.13 48lip1pz3jfrznnuerwxixbdn note3 Ready Active