Docker和Kubernetes如何让DevOps更具效力

Stella981
• 阅读 544

缩短time-to-makrt对于任何一家企业都至关重要,这直接决定了客户满意度、市场竞争力乃至盈利能力。但在部署应用时,大多数企业内的IT团队都或多或少会遇到Dev和Ops之间的问题,这两个部门围绕着同一个应用工作,但工作方式却截然不同。

很多管理者都在思考如何能让Dev和Ops能够在没有任何“误解”的情况下共同努力缩短time-to-market,也就是DevOps。

下面我们将谈一谈,Docker和Kubernetes如何帮助DevOps发挥更大效力。

传统的DevOps

在传统的DevOps方法中,开发人员编写代码并将其提交给Git存储库,然后检查它在本地和开发环境中的工作方式。

我们会使用像Jenkins这样的CI工具启动代码的构建过程,该工具也在构建期间运行功能测试。如果测试成功通过,我们将更改合并到发布分支中。

运维会使用一些工具为应用程序部署生产准备脚本,并最终将更改投入生产环境(更新版本)。

传统DevOps的问题

第一个问题是运维和开发者使用不同的工具。例如,大多数开发人员不一定知道如何使用脚本工具,而准备发布的任务落在运维身上,但运维通常又不了解应用如何工作。

第二个问题是开发环境通常手动更新而没有自动化。结果导致开发环境非常不稳定,一个开发人员所做的更改可能会中断另一个开发者的更改,而解决这样的冲突问题通常需要花费很多时间,time-to-market变长也就不足为奇了。

第三个问题是开发环境可能与staging环境、生产环境有很大不同。这可能会导致开发人员准备的发行版可能无法在暂存环境中正常工作,或即使测试在暂存环境中成功通过,生产中也可能会出现一些问题,生产中的回滚过程也并非易事。

第四个问题是编写脚本非常耗时,而且容易出错。

利用Docker优化DevOps

Docker之于DevOps的主要优点是开发人员和运维都使用相同的工具——Docker。开发人员在开发阶段,在本地计算机上从Dockerfiles创建Docker镜像并在开发环境中运行。

运维使用相同的Docker镜像,使用Docker对staging和生产环境进行更新。需要注意的是,在更新到软件的新版本时,我们不是要对Docker容器进行patch,换句话说软件的新版本采用一个新的Docker映像和Docker容器的新副本,而不是对旧的Docker容器进行修补。

基于以上,我们可以创建不可变的开发、staging和生产环境。

使用这种方法有几个好处:首先,对所有更改都有很高的控制权,因为使用不可变的Docker镜像和容器进行更改,我们您可以随时回滚到以前的版本;与脚本工具相比,开发、staging和生产环境变得更加相似;使用Docker,我们可以保证如果某个功能在开发环境中有效,它也可以在staging和生产中使用,这也就是我们常说的一致性。

那么,Docker和Kubernetes如何让DevOps变得更具效力

  • 使用Docker创建包含多个相互连接组件的应用拓扑的过程变得更容易理解
  • 由于内置的service和ingress概念,负载均衡配置的过程大大简化
  • 由于Kubernetes的Deployments、StatefulSets、ReplicaSets等功能特性,滚动更新或是蓝绿部署的过程变得非常简单
  • 更多强大的CI/CD工具可用
  • Kubernetes通过Service Mesh工具提供开箱即用的多云部署场景

关于Rainbond

Rainbond(云帮)是"以应用为中心”的开源PaaS, 深度整合基于Kubernetes的容器管理、ServiceMesh微服务架构最佳实践、多类型CI/CD应用构建与交付、多数据中心资源管理等技术, 为用户提供云原生应用全生命周期解决方案,构建应用与基础设施、应用与应用、基础设施与基础设施之间互联互通的生态体系, 满足支撑业务高速发展所需的敏捷开发、高效运维和精益管理需求。

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
2年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
待兔 待兔
2个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Jacquelyn38 Jacquelyn38
3年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Easter79 Easter79
2年前
Twitter的分布式自增ID算法snowflake (Java版)
概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移
Stella981 Stella981
2年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
8个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这