Docker是一个开源的容器引擎,Kubernetes是一个开源的容器调度平台并且已经是容器编排事实上的标准,DevOps是能够加速业务创新,快速交付用户高质量价值的一套方法论和最佳实践,这三者是相互促进,相互影响的。基于Docker和Kubernetes搭建的能够满足资源弹性供给得云计算平台,可以更高效得利用物理资源。Docker将服务运行的环境统一封装为docker镜像,以镜像的方式交付软件产品,从根本上解决了DevOps中的很多问题,可以加速DevOps落地。从目前得技术发展来看,以docker和Kubernetes的云原生应用是未来的发展方向。DevOps涉及软件开发的全生命周期管理,不止是工具层面得工具链建设,还包含很多以敏捷、精益为基础的方法论,如Scrum,看板方法等,持续集成(CI)和持续交付(CD)只是DevOps众多阶段中的一个而已,有了Docker和Kubernetes,企业实施DevOps会更加快捷、高效。
下面列举一下,Docker和Kubernetes在哪些方面让DevOps更有效力:
1、环境一致性问题
在软件开发生命周期中会涉及到很多个环境,如:开发人员开发时的开发环境,开发完成后得测试环境,测试环境又分为SIT环境,UAT环境,性能测试环境,预览环境等等,测试通过后部署到给用户提供服务的生产环境。在每一个环境中,都会遇到各种各样的问题,有些问题是软件本身的问题,但环境本身的差异也是测试阶段困扰开发和测试人员的一个重要因素。基于docker镜像得部署,将环境和服务捆绑在一起,在任何环境中测试,环境的配置都是一样的,能够大大提高测试的效率和质量。
2、测试环境资源供给问题
在软件测试阶段,测试环境得资源利用率是很低的,但为了能随时测试,我们必须要放置一套测试环境做准备,从这点来说,属于资源浪费,而如果此时,团队需要多套测试环境时,还是需要从新申请资源。所以,对于一些企业来说,资源不足就成了问题。另外,如果我们当我们需要一套新得环境时,环境管理人员需要进行各种软件安装,调试,一套可用的环境准备好,往往需要数天得时间,环境的供给缓慢,也是测试阶段耗时较久得关键因素。基于docker的容器部署,能够做到资源的弹性供给,甚至可以做到分钟级供给。
3、软件交付和部署方式问题
没有docker,软件的开发完成后交付的是二进制包,通过脚本得方式部署到物理机或虚机中。在生产环境中运行的服务,如果想要在流量高峰时做扩容,流量低谷时做缩容,如果想对运行时的服务进行全方位的监控,如果想在升级时做滚动升级,做流量控制等,是一件很复杂的事情,现在基于K8s的容器编排平台,能够使得应用服务可自重启、自复制、自缩放,基于docker和Kubernetes本身强大的管理能力,能够使应用软件的交付和部署变的更加方便,更加稳定。
可以这样说,云计算是未来,云计算是应用服务运行的基础设施,随着技术的发展,DevOps会将更多的能力下沉到基础设施层,成为企业软件开发的基础设施,要做到这些,docker和Kubernetes是不可缺少的工具。DevOps是一套软件开发方法和实践,不会限定具体的工具,但好工具是推动DevOps的助推器,Docker和Kubernetes便是其中最重要的工具。
领取专属 10元无门槛券
私享最新 技术干货