这是一项颠覆性技术 - 容器

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 这是一项颠覆性技术 - 容器

我从14年开始关注容器技术,15年开始使用容器技术,这些年看到了容器技术爆发式发展、版本的快速迭代,记得当时Docker版本还是0.7,Kubernetes版本是1.0,到现在Docker CE 18,Kubernetes 11。

一门新技术的产生必定是为解决某些问题而存在的,同样也会带来一定的问题,容器技术是一项颠覆性技术,改变了企业的CI/CD(持续集成/持续交付,部署)环节的方式,开启了一场革命,我们一起看看这场革命怎么实行的!

Docker是什么?

2013年初,Docker横空出世,一个怀揣着改变应用程序部署的革命技术,目前看来,显然它做到了!

Docker是一个开源的应用容器引擎,对应用进程进行封装隔离,并且独立于宿主机与其他进程。Docker理念是将应用及依赖包打包到一个可移植的镜像中,可以运行到任意Docker引擎上。具有快速部署、可移植性、环境隔离等特点。

Kubernetes是什么?

Kubernetes(K8S)是Google开源的容器集群管理系统,其设计源于Google在容器编排方面积累的丰富经验,并结合社区创新的最佳实践。

K8S在Docker容器技术的基础之上,大大地提高了容器化部署应用简单高效。并且具备了完整的集群管理能力,例如服务发现、资源配额、缩容扩容、动态更新、持久化存储、监控、日志等,涵盖项目周期的各个环节。

经过这几年的快速发展,K8S已经成为建设容器云平台的首选方案。

Docker与Kubernetes有什么联系?

说到这里,就涉及到容器云平台核心组成了。

Docker是一个容器引擎,用于运行容器,Kubernetes是一个容器编排系统,不具备容器引擎功能,相比Docker是一个更高级封装,而他们在一起堪称珠联璧合,一起搞大事!如图:

image.png

聊聊日常运维中的工作痛点

1. 多开发语言,多运行环境

公司发展迅速,业务量蹭蹭的往上涨,同时也会开展其他业务线,打造自己的生态圈。多业务线维护给运维也带来一定挑战,例如多项目、多开发语言,例如开发语言有Java、Go、Python、还有PHP,这就意味着运行环境可能非常复杂,还要要维护多个版本,写N个脚本、长期积累还会导致环境臃肿、杂乱、故障率高、不易维护等问题,当迁移业务时,这个不敢动,哪个不敢动!

image.png

A:根据不同环境构建不同的镜像,例如:

  • 基础镜像:基本的运行环境,例如Java、PHP
  • 项目镜像:包含项目,可直接部署
    镜像在镜像仓库中管理及维护,通过版本管理应用环境镜像。

2. 环境不一致引发的争议

开发人员通常在Mac、Windows系统上开发项目,功能上线,合并代码到版本仓库,随后通知测试部门测试,测试通过后发布到生产环境,目前大多数互联网公司都是这种流程。

那么问题来了,项目可能在测试环境或生产环境就运行不起来…,为什么呢?操作系统、软件版本、少依赖包、配置忘记修改了等等?从而出现这些神秘的Bug,神秘的配置。有同学可能说:写一个参考文档。通常还会有遗漏,而且这依赖于文档编写能力和理解能力。

A:容器消除了线上线下的环境差异,保证了应用生命周期的环境一致性和标准化。开发人员使用镜像实现标准开发环境的构建,开发完成后封装项目及依赖环境,测试和运维人员可以直接用这个镜像在任何Docker Engine创建容器进行测试和发布,大大简化了持续集成、测试和发布的过程。Docker的可移植性,保持运行状态一致性,可想而知,是否更容易解决问题呢?

3. 微服务架构带来的问题

微服务架构是当下最流行的一种业务架构开发模式,目的是让臃肿的业务系统拆分成多个微服务,一个微服务完成某个特定的功能,如电商的购物车、支付、用户后台、消息等等。每一个微服务都是微型六角形应用,都有自己的业务逻辑和适配器,微服务部署在多台服务器上,每次项目升级都要java -jar启动服务,维护几十台这样的服务器,简直苦不堪言,感觉要吐血了。

A:

微服务特点:组件化、松耦合、去中心、灵活独立。

容器特点:沙箱机制、隔离性、可移植性、快速部署。

是不是恰到好处呢?容器的特点在微服务下能更好发挥优势,是部署的理想选择。

4. 项目上线周期长

马上就618、双11了,到时业务访问量会很大,得扩容服务器了。

新项目/扩容大致流程:申请资源 -> 资源审批 -> 虚拟机创建 -> 环境部署 -> 代码测试 -> 上线。

多部门协作,这个流程起码得一周吧!流程化提高一定生产力也可能带来一定局限:增加事项落实时间;那如何才能做到业务快速扩展并发能力和缩短上线周期呢?难道这个流程真的不能再优化了嘛?

A:说到弹性伸缩,在云计算领域数AWS做的好了 - AWS Auto Scaling。AWS Auto Scaling 可以监控您的应用程序并自动调整容量,以便以尽可能低的成本来保持稳定、可预测的性能。使用 AWS Auto Scaling,您可以在几分钟内为多项服务中的多个资源轻松设置应用程序扩展,例如EC2(云主机)。

当使用容器技术后,这种弹性伸缩的单元就是物理机/云主机之上的容器了。由于Docker容器快速启动的特性,可以在秒级部署几十个、上百个容器来提供服务,成倍提高并发能力,缩短上线周期。当业务高峰期下去了,动态销毁一部分容器,释放资源,让业务低成本稳定运行。

上述问题你有遇到过吗?在容器技术未出现之前可能很难解决这些问题,但容器技术的出现针对这些痛点交出一份满意的答卷,能帮助企业IT基础架构解决或者改善现状!

如何高效学习Docker/Kubernetes?

学习容器技术最大障碍不是网上资源太少,而是网上资源太多。大多数缺章少节的,很难按照教程跑通,并且Kubernetes具备丰富的功能,相对比较复杂,学习成本自然是有的;再说了,很简单的技术在网上随便找资料就能学会,也就没什么价值了。因此,决定写DockerKubernetes技术文章专栏,目的是让学习Kubernetes的朋友少走些弯路,在企业落地容器云平台提供一些企业实践性指导,希望自己所学所思的东西能够帮助到大家,能够有所启发。

此专栏以最佳实践为讲解导向,确保实用性、实战性。

image.png

专栏地址: 基于Kubernetes企业容器云平台落地与实践

若你在容器运维中,遇到Kubernetes方面的问题,请给我留言。同样,若发现有任何纰漏,还请随时指正,相互学习,共同进步!

记得点进去看看哦。

总结

  1. 首先,我们要明确企业上容器云的目的,容器是为业务服务的,任何技术都是为了更好的服务业务,这是我们的出发点。其次,看看业务特点是不是适合容器化,业务是不是具有版本迭代快、访问波动大、业务量增长快等特点。
  2. 容器平台目的是能为应用带来部署灵活、弹性伸缩、节省资源等优势。这些要求最好具备微服务架构、无状态化等特点,这些优势能更好的发挥。但不适合容器化的应用也不能勉强,否则建设后,不能带来预期的价值,不仅浪费了大量企业投入,还使得容器平台的价值得不到认可,这都不愿意看到的结果。
  3. 企业是一个大团队,要想体现个人价值,管好自己的一亩三分地是不行的,我们需要从一个全局角度看事情,发现其中的痛点去解决它;并且大家要建立一个统一的目标,共同围绕这个方向使劲,向自己的客户或用户交付最大化价值及最高质量的成果;团队以项目为导向,而不是职责!
    这种文化也是DevOps所倡导的,频发的交付带来更迅速的反馈,更高效的CI/CD流程可间接带来效益。
相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
5天前
|
运维 Kubernetes Cloud Native
云原生技术:容器化与微服务架构的完美结合
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术以其灵活性和高效性成为企业的新宠。本文将深入探讨云原生的核心概念,包括容器化技术和微服务架构,以及它们如何共同推动现代应用的发展。我们将通过实际代码示例,展示如何在Kubernetes集群上部署一个简单的微服务,揭示云原生技术的强大能力和未来潜力。
|
7天前
|
运维 持续交付 Docker
深入理解Docker容器化技术
深入理解Docker容器化技术
|
3天前
|
安全 持续交付 云计算
揭秘云计算中的容器化技术及其优势
揭秘云计算中的容器化技术及其优势
9 1
|
4天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。
|
6天前
|
Kubernetes Cloud Native Docker
云原生技术探索:容器化与微服务的实践之道
【10月更文挑战第36天】在云计算的浪潮中,云原生技术以其高效、灵活和可靠的特性成为企业数字化转型的重要推手。本文将深入探讨云原生的两大核心概念——容器化与微服务架构,并通过实际代码示例,揭示如何通过Docker和Kubernetes实现服务的快速部署和管理。我们将从基础概念入手,逐步引导读者理解并实践云原生技术,最终掌握如何构建和维护一个高效、可扩展的云原生应用。
|
7天前
|
Cloud Native 持续交付 Docker
Docker容器化技术:从入门到实践
Docker容器化技术:从入门到实践
|
8天前
|
存储 Kubernetes 调度
基于容器化技术的性能优化实践
基于容器化技术的性能优化实践
19 3
|
18天前
|
存储 持续交付 虚拟化
|
7天前
|
数据中心 开发者 Docker
理解并实践Docker容器化技术
理解并实践Docker容器化技术
|
15天前
|
人工智能 Anolis 开发者