DevOps和容器分享Devops的理念•为什么需要devopsDevops的理念上云能力80%预计到2020年,全球80%的应用都将实现云端部署(公有云/私有云)DevOps作业能力分布式环境管理能力46%2016年,46%的企业在寻求采用分布式的微服务架构进行应用架构改造44%2016年,44%的企业都在寻求DevOps解决方案,实现快速高质量的应用交付基础设施和技术资源的全面云化,以服务的形式按需开通自动化持续交付流水线,自动化运维平台,开发运维一体化微服务架构下,每个业务单元可以独立运行与管理Devops的理念基本原则需求应用需求提出需求分析应用设计应用开发应用上线需求验证上线使用反馈优化项目不停、需求不断持续迭代、持续交付Devops的理念云的经典三层架构IaaSPaaSSaaS云架构下的敏捷开发思想微服务架构开发运维一体化DevOps持续开发持续集成CICD敏捷基础设施产品线应用管理:devopsAPI管理:微服务全生命周期平台资源管理:PaaSOS基础资源管理:IaaSOS组织变革生态系统IPSAMCEDOP+C+DI+AP+S+M+C+D+OP+M+C+D+O+E公共服务:UtilityServiceC+D+E大数据平台:OpenDataP+C+DDevops的流程及组件立项PMO团队需求/产品团队研发团队测试团队运营团队项目管理需求管理Bug追踪代码仓库代码检查编译/构建打包Devops的流程及组件部署(开发测试环境)自动化测试监控发布应用中心生产环境Devops的流程及组件Devops的流程及组件平台服务架构产品CloudOSIAASOSK8S容器集群部署VM集群资源引擎部署引擎监控引擎开发工具套件构建引擎容器仓库构建产物库APIManagerDevOps开发测试云…运维中心CMDB平台服务架构部署环节为何用容器?由于容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker对系统资源的利用率更高。无论是应用执行速度、内存损耗或者文件存储速度,都要比传统虚拟机技术更高效。因此,相比虚拟机技术,一个相同配置的主机,往往可以运行更多数量的应用。部署环节为何用容器?Docker为基于Linux容器的开源项目,其利用Linux内核中的各项功能——例如命名空间与控制组——以在操作系统之上创建容器。容器概念并不是什么新鲜事物;谷歌公司多年来一直在使用自己开发的容器技术。其它Linux容器技术方案还包括SolarisZones、BSDjails以及LXC,且其都已经拥有多年的发展历史。那么为什么Docker的出现会快速吸引到技术业界的注意?•易用性:Docker能够为潜在受众带来出色的易用性——开发者、系统管理员以及架构师等等——从而帮助其充分利用容器技术优势以快速构建并测试可移植应用程序。每个人都可以在自己的笔记本上打包应用程序,并将其直接运行在任何公有云、私有云甚至是裸机之上。其座右铭是:一次构建,随处运行。•速度:Docker容器具备轻量化与高速特性。由于容器本身属于运行在内核之上的沙箱环境,因为其对资源的需求量极低。大家可以在数秒钟内完成容器的创建与运行,而虚拟机则由于需要引导完整的虚拟操作系统而耗费更多时间。•DockerHub:Docker用户还能够享受由DockerHub带来的丰富生态系统支持,我们可以将其理解成“Docker镜像的应用商店”。DockerHub提供成千上万由社区开发的公共镜像,且可立即加以使用。我们可以轻松根据需要搜索到合适的镜像,将其提取并稍加修改即加以使用。•模块性与可扩展性:Docker允许我们轻松将应用程序的功能拆分成多个独立容器。举例来说,我们可以将自己的Postgres数据库运行在一套容器当中,并将Redis服务器运行在另一容器内,而Node.js也拥有自己的容器系统。在Docker的帮助上,大家能够轻松将这些容器对接起来以创建完整的应用程序,这就让未来的规模伸缩或者组件更新得以通过相互独立的方式完成。部署环节为何用容器?新概念整合容器基本概念容器编排工具:•ApacheMesos•DockerSwarm•Kubernetes容器基本概念•镜像仓库:DockerRegistry•Dockerimage:镜像属于只读模板,大家可以借此配合Dockerfile中的编写指令集进行容器构建。镜像定义了打包的应用程序以及其相关依赖。这些依赖就好像是其启动时需要运行的进程。•Dockerfile:Dockerfile是我们编写指令以构建Docker镜像的载体。LinuxOS容器编排工具k8s容器实例/servicepod副本副本FROMdocker.yihecloud.com/base/tomcat:2.3.1MAINTAINERremotingremoting@qq.comCOPYtarget/*.war/data/webapps/ROOT.war代码/二进制文件DockerRegistryDockerfileDockerimageBuild&pushpulldeployK8s集群网络1计算节点1计算节点2计算节点3集群外主机podIP端口1端口2podpodpodpod10.34.1.5集群内pod都有一个ip192.168.34.2192.168.34.1service计算节点4K8s集群网络2计算节点1计算节点2计算节点3集群外主机podpodpodpodpod10.34.1.5集群内pod都有一个ip192.168.34.2192.168.34.1service:80:8080K8s集群存储LinuxOSk8s容器实例/servicepod副本副本磁盘LinuxOSk8s容器实例/servicepod副本副本磁盘Linux系统数据;K8s运行数据;Image数据;容器日志;云硬盘Nfs服务分布式存储对象存储容器部署应用的优势•敏捷•副本•伸缩•灰度发布厂商的动态•灵雀云微软背景技术团队;17年底过亿B轮,腾讯领投;18年5月因特尔领投B+;•时速云18年初近亿融资•数人云厂商的动态-腾讯云厂商的动态-阿里云厂商的动态-金山云物理机、云主机、容器物理机高性能利用率低计算复杂、压力大如:AI、大数据云主机稳定、经济技术成熟生产环境容器敏捷、灵活、资源利用率高开发测试、互联网Devops适用的用户及场景——小众市场•客户必须是有研发团队的,不适合政企项目招标开发的形式;•金融行业开始尝试,从边缘业务开始,有一定市场;•研发团队实力强,devops可自建(更符合实际需要),自主可控;•Devops不仅是技术变革,而且是组织变革;适合于有一定研发实力、中小企业、形成内部研发标准Devops厂商的挑战及产品动向•新技术发展层出不穷,需要不断的创新、推新概念;•AIOps•微服务架构:API网关、springcloud、服务网格•容器我们目前对容器的实现程度•K8s集群搭建我们在容器产品的迭代思路CI/CD代码、构建业务部署测试发布微服务项目管理负载均衡弹性伸缩灰度发布K8s集群打包K8s-存储K8s-网络镜像仓库应用场景devops能力底层资源我们在容器产品的迭代思路K8s集群K8s-存储K8s-网络镜像仓库业务部署负载均衡弹性伸缩灰度发布打包二进制包+dockerfile