多台linux服务器的集中统一批量布署管理,用什么工具最好?

YYY


现在最流行什么?当然是docker容器啊。那么怎么管理和编排呢?当然是k8s啊。

如果服务器超过三台的话,建议把所有服务器高可用部署成一套k8s集群,然后每个节点外挂一块共享盘(nfs或者glusterfs),用来挂载给容器存档数据,这样由k8s统一管理,当容器当机,k8s会自动重新部署容器,并且由于共享盘的存在,无论我们的服务容器运行到哪个节点,都可以正常读取数据。真正实现无干预 无感知的服务高可用。

简单介绍下k8s的使用。

k8s统一由yaml或者json来描述任务,个人更喜欢yaml。直接通过kubectl命令行工具来管理k8s作业。

想要对外暴露容器内部服务,我用的比较多的是ingress+service的方式,k8s也提供loadblance等。可自行研究。

对于docker镜像,我们统一由harbor进行管理,保证了我们制作的最新的镜像,在任何节点都可以拉取。





牙牙的生活日志


这个问题其实分为几个层次来解答:

1. 基础设施资源管理

2. runtime以及中间件管理

3. 应用自动化管理

基础设施资源管理主要分为计算[cpu,mem],存储,网络等。那么怎么管理基础设施资源呢?

1. 将底层硬件资源云化整合成资源池,然后通过容器来做资源的切分给上层的中间件以及应用使用。资源的抽象整合可以使用的工具容器三大调度工具,swarm,k8s,mesos。当然随着调度工具的发展,原生调度工具swarm,mesos都已经落寞了。谷歌主导的k8s新一代数据中心云操作系统已经成为了事实标准。不过个人感觉如果公司较小没有专业的k8s管理者,可以使用swarm简单而且易用。

对于中间件以及runtime的自动化管理, 这其实是个paas的概念。那么小公司如何去实践使用呢?

1. 如果使用swarm作为调度工具的话,可以使用docker compose编排文件去定义中间件的部署yaml文件。比如:redis-ha集群。

2. 如果使用k8s作为平台调度工具,建议使用helm应用包管理器,进行打包和发布应用。helm每次发布会依据charts模板生成一个release,应用可以根据release回退到特定的版本。管理十分方便。我一般都是通过这种方式管理mq,redis等集群。

应用的自动化管理,对于应用管理来说,其实绕不开这几个话题,发布部署,高可用,负载均衡,弹性伸缩,监控告警,日志收集。那么可以拆开来说:

1. 应用部署阶段可以采用jenkins k8s helm的方式,来构建自动化的发布流程。这个方案有兴趣的可以关注我私聊我,我可以指导下。

2. 高可用和负载均衡的方案其实可以通过k8s自身带有的功能去实现。这里面其实也涉及到了应用的health check的问题。

3. 弹性伸缩的问题其实分为两个问题,基础设施的弹性伸缩已经应用的弹性伸缩。基础设施的弹性伸缩这个只能依靠自己写程序去干,比如pxe等。应用弹性伸缩,可用k8s的hpa方式去做,对于弹性伸缩策略,可以cpu和mem。也可以基于其他方案策略,不做细说。

4. 监控可以采用prometheus -operator全家桶,爽的不要不要的。

5. 日志收集建议采用efk方案。

笔者是以为从事多年云计算的老司机,喜欢和大家一起分享云计算的技术和解决方案。


云计算搬瓦工


必须ansible,因为你docker安装之前做不了批量部署,k8s未配置前,也做不了批量部署,唯一能做到的目前只有ansible


wishpeeer


PXE+Kickstart批量无人值守部署


王杰187195527


ANSIble saltstack


HomelessMan


做运维和程序一样 关键是思路 有思路用shell一样自动化 虽然最近在转用ansible和docker 仅仅是为了用而用 不想被淘汰跟上时代 不然面试被鄙视


奈何不明卿


ansible每月之一,你可以去看各种云厂商软件,必然都是选择的这个,独一无二


编码大棚


docker+k8s


分享到:


相關文章: