十一、容器集群的管理(k8S、Swarm)

Swarm
Docker公司自研发的集群管理系统。
Kubernetes
Google开源的一个容器集群管理系统,用于自动化部署、扩展和管理容器应用。也称为K8S
Mesos
Mesos是一个集群资源调度系统,对集群中的资源进行分配和管理。Marathon是运行在Mesos之上的一个服务管理框架,可管 理容器生命周期。

Swarm、Kubernetes和Mesos简单比较:
复杂性:
Swarm使用标准Docker接口,集成于Docker Engine,内置Overlay网络、服务发现、负载均衡,很容易上手,学习成本低。 K8S成熟且复杂,自己的管理体系,服务发现,负载均衡等功能,学习成本高。
Mesos是一个成熟分布式资源管理框架,一个通用的集群管理系统。
功能:
Swarm支持Docker Compose v3来实现服务编排。
K8S强大的功能,有着一套整体容器解决方案,使用起来更轻松。
社区活跃度:
K8S社区相比Swarm和Mesos活跃度都高。

一、容器集群管理之Swarm
1. Swarm介绍
2. 集群部署及节点管理
3. 服务管理
4. 使用原生Overlay网络
5. 数据持久化
6. 服务发现与负载均衡
7. 高可用性
8. 配置文件存储
9. 应用实战
《 手动创建和服务编排部署LNMP网站平台》

A.swarm介绍
Swarm是什么?

Swarm是Docker公司自研发的容器集群管理系统,Swarm在早期是作为一个独立服务存在,在Docker Engine v1.12中集成了 Swarm的集群管理和编排功能。可以通过初始化Swarm或加入现有Swarm来启用Docker引擎的Swarm模式。
Docker Engine CLI和API包括了管理Swarm节点命令,比如添加、删除节点,以及在Swarm中部署和编排服务。
也增加了服务栈(Stack)、服务(Service)、任务(Task)概念。

Swarm两种角色:

Manager:接收客户端服务定义,将任务发送到worker节点;维护集群期望状态和集群管理功能及Leader选举。默认情况下 manager节点也会运行任务,也可以配置只做管理任务。
Worker:接收并执行从管理节点分配的任务,并报告任务当前状态,以便管理节点维护每个服务期望状态。

Swarm特点:
1. Docker Engine集成集群管理
使用Docker Engine CLI 创建一个Docker Engine的Swarm模式,在集群中部署应用程序服务。
2. 去中心化设计
Swarm角色分为Manager和Worker节点,Manager节点故障不影响应用使用。
3. 扩容缩容
可以声明每个服务运行的容器数量,通过添加或删除容器数自动调整期望的状态。
4. 期望状态协调
Swarm Manager节点不断监视集群状态,并调整当前状态与期望状态之间的差异。例如,设置一个服务运行10个副本容器,如果两个副本的服 务器节点崩溃,Manager将创建两个新的副本替代崩溃的副本。并将新的副本分配到可用的worker节点。
5. 多主机网络
可以为服务指定overlay网络。当初始化或更新应用程序时,Swarm manager会自动为overlay网络上的容器分配IP地址。
6. 服务发现
Swarm manager节点为集群中的每个服务分配唯一的DNS记录和负载均衡VIP。可以通过Swarm内置的DNS服务器查询集群中每个运行的容器。
7. 负载均衡
实现服务副本负载均衡,提供入口访问。也可以将服务入口暴露给外部负载均衡器再次负载均衡。
8. 安全传输
Swarm中的每个节点使用TLS相互验证和加密,确保安全的其他节点通信。
9. 滚动更新
升级时,逐步将应用服务更新到节点,如果出现问题,可以将任务回滚到先前版本。

集群部署及节点管理
使用swarm前提:
Docker版本1.12+
集群节点之间保证TCP 2377、TCP/UDP 7946和UDP 4789端口通信
节点规划:
操作系统:Centos7.2
管理节点:192.168.101.200
工作节点:192.168.101.201

管理节点初始化swarm: 
docker swarm init --advertise-addr 192.168.101.200
工作节点加入swarm: 
docker swarm join --token 集群产生的key值 192.168.101.200:2377
# 创建服务 
docker service create --replicas 1 --name hello busybox # 显示服务详细信息 
docker service inspect --pretty hello  # 易于阅读显示 docker service inspect hello  # json格式返回
# 扩展服务实例数 
docker service scale hello=3
# 查看服务任务 
docker service ls 
docker service ps hello 
docker service ps -f 'desired-state=running' hello 
# 滚动更新服务 
docker service create \
--replicas 3 \
--name redis \
--update-delay 10s \ 
redis:3.0.6 
docker service update --image redis:3.0.7 redis
# 创建服务时设定更新策略 
docker service create \
--name my_web \
--replicas 10 \
--update-delay 10s \
--update-parallelism 2 \
--update-failure-action continue \ 
nginx:1.12
# 创建服务时设定回滚策略 
docker service create \
--name my_web \
--replicas 10 \
--rollback-parallelism 2 \
--rollback-monitor 20s \
--rollback-max-failure-ratio .2 \ 
nginx:1.12
# 服务更新 
docker service update --image nginx:1.13 my_web # 手动回滚 
docker service update --rollback my_web
使用原生网络
# 创建overlay网络 
docker network create --driver overlay my-network # 创建新服务并使用overlay网络 
docker service create \
--replicas 3 \
--network my-network \
--name my-web \ 
nginx
# 将现有服务连接到overlay网络 
docker service update --network-add my-network my-web # 删除正在运行的服务网络连接 
docker service update --network-rm my-network my-web
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值