大火的云原生是什么?从docker到Devops搞懂它

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 大火的云原生是什么?从docker到Devops搞懂它

Devops开发模式的诞生

下图展示了开发模式的演变:

网络异常,图片无法展示
|

早期,互联网行业用户关注产品的功能,能解决什么问题。因此产品的需求在开发时基本确定,不会频繁变更,此时一般是采用瀑布式开发模式。

但是现在,互联网行业快速发展,用户不仅关注产品功能,并且关注产品是否好用好看,为了快速获得现金流,产品就需要快速交付市场,及时获得市场反馈,同时做出调整。也就是说,在产品开发前期,需求是不明确的,需要在获得市场反馈过程中不断补充完善,这就造成需求频繁更改,也要求快速开发。敏捷开发模式就是在用户需求快速增加和产品迭代周期不断压缩的背景下产生的。

虽然敏捷开发使得开发人员提高软件开发效率和版本更新速度,但是,由于每次产品上线都需要运维进行部署,频繁的更新对于运维人员来说是比较痛苦的。为了实现持续迭代和运维自动化,便有了Devops的概念。

Docker

Docker类似于一个轻量的虚拟机。在以前,我们测试时,经常需要虚拟机模拟多个浏览器环境,这就需要我们在自己的电脑上安装虚拟机软件,再在虚拟机里创建虚拟的操作系统。这些虚拟的操作系统不仅占容量,启动也慢。但是Docker确没有这些问题。它不需要虚拟出整个操作系统,并且启动快,所占空间小。

关于Docker有三个核心概念:

  • 镜像(Image)
  • 仓库(Repository)
  • 容器(Container)

网络异常,图片无法展示
|
举个🌰:

假设我建了一个房子,此时我需要搬家,这就意味着房子里的装修、家具等都需要再重新布置一遍。此时我就可以将我的房子复制一份,做成一个“镜像”,然后放进我的背包里带走,到了新的地方再拿出“镜像”,复制出新的房子。仓库就相当于这里的背包,而容器具相当于新建好的房子。

Tips:仓库提供一个集中的存储、分发镜像的服务。一个仓库会包含同一个软件不同版本的镜像。镜像(tag)就常对应软件的不同版本。

kubernetes(K8S)

K8S:基于容器的集群管理平台,负责对Docker镜像进行管理,编排、管理和调度

下面给出了K8S的设计架构图:

网络异常,图片无法展示
|

首先,一个K8S系统就是一个K8S集群。集群通常由两个核心部分组成:一个Master节点和一群Node节点。Master主节点主要负责集群管理和控制Node节点,Node节点是物理机或虚拟机的主机节点,每个Node节点提供Pod运行的必要服务。

集群中的基本对象

  • Pod:基本对象
  • Service:解决如何访问Pod内部服务问题
  • Volunme:存储卷
  • Namespace:命名空间

Master节点

Master主节点提供了4个部分:

  • API Server:负责处理用户的请求,对外提供RESTful接口,包括集群状态的查改请求。是唯一一个与etcd集群通信的组件
  • Controller Manager:所有资源的自动化管理控制中心。在主节点上运行控制器的组件,从逻辑上讲,每个控制器都是独立的进程,但是为了降低复杂性,它们都被编译到同一个可执行文件,并在一个进程中运行
  • Scheduler:负责Pod在各个Node节点上的分配和调度,并提供多种Pod调度策略(预选和优选策略)
  • etcd:负责存储持久性状态,保存集群所有数据

Node节点

  • Pod:K8S部署的最小对象,内含1~n个容器和存储卷,所有容器都是一个业务。(重点:Pod是短暂的,不是持续性实体;同一个Pod的容器在一个命名空间里)
  • kubelet:负责管理Pod的生命周期以及Pod的容器、镜像等。并根据从数据库获取的信息来管理容器,上报pod运行状态
  • kube-proxy:负责讲访问到某个服务的请求具体分配给工作节点上同一类标签的pod。提供pod之间的网络代理通讯和负载均衡。
  • Docker:容器应用引擎
  • Fluentd:负责日志收集、存储与查询
  • Container Runtime:负责镜像管理以及Pod和容器的真正运行。

CI/CD

持续集成和持续部署 (CI/CD) 通过 Docker 加速应用管道自动化和应用部署。CI/CD 就是 DevOps 的重要实践成果。

最老牌最成熟的CI/CD平台自然是Jenkins。

云原生

Pivotal官网对云原生概括为4个要点:DevOps+持续交付+微服务+容器

网络异常,图片无法展示
|
符合云原生架构的应用程序应该是:采用开源堆栈(K8S+Docker)进行容器化,基于微服务架构提高灵活性和可维护性,借助敏捷方法、DevOps支持持续迭代和运维自动化,利用云平台设施实现弹性伸缩、动态调度、优化资源利用率。

相关链接:

10分钟看懂Docker和K8S

强推!2019年最火的容器、K8S和DevOps入门都在这了DevOps和CI/CD

最详细的 K8S 学习笔记总结(2021最新版)

什么是云原生?这回终于有人讲明白了

2021年DevOps工程师的必备技能

如何基于 K8s 构建下一代 DevOps 平台?

CICD之DevOps简介

CICD DevOps 绝对会让你看懂,教育面试官。他俩的 区别



相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
2月前
|
JavaScript 前端开发 数据安全/隐私保护
阿里云云效操作报错合集之流水线中获取不到CI_COMMIT_REF_NAME变量,导致docker镜像打包失败,什么原因
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
1天前
|
运维 Java Devops
阿里云云效操作报错合集之部署docker时遇到报错,该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
1天前
|
弹性计算 Java Maven
阿里云云效操作报错合集之在构建Docker镜像时提示拉取次数达到限制,该怎么解决
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
26天前
|
Web App开发 Cloud Native 测试技术
云原生之使用Docker部署Firefox浏览器
【7月更文挑战第21天】云原生之使用Docker部署Firefox浏览器
51 3
|
2月前
|
敏捷开发 API 持续交付
阿里云云效产品使用问题之流水线编译docker时,如何把已经定义好的token传入编译参数
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
阿里云云效产品使用问题之流水线编译docker时,如何把已经定义好的token传入编译参数
|
1月前
|
Kubernetes Cloud Native 持续交付
云原生架构的核心组成部分通常包括容器化(如Docker)、容器编排(如Kubernetes)、微服务架构、服务网格、持续集成/持续部署(CI/CD)、自动化运维(如Prometheus监控和Grafana可视化)等。
云原生架构的核心组成部分通常包括容器化(如Docker)、容器编排(如Kubernetes)、微服务架构、服务网格、持续集成/持续部署(CI/CD)、自动化运维(如Prometheus监控和Grafana可视化)等。
|
2月前
|
持续交付 开发工具 git
阿里云云效产品使用问题之在云效代码域中gitlab使用docker安装的,迁移时遇到“获取企业信息失败”,是什么原因
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1月前
|
运维 Ubuntu Shell
阿里云云效操作报错合集之流水线构建Docker镜像时,遇到报错:“error: failed to solve: rpc error: code”,该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
1月前
|
弹性计算 运维 Kubernetes
阿里云云效操作报错合集之构建流程中遇到 "origin_value 类型错误,取不到DOCKER_URL" 这样的错误,该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
2月前
|
缓存 运维 Devops
阿里云云效操作报错合集之在构建过程中,Docker尝试从缓存中获取某个文件(或计算缓存键)时遇到了问题,该如何处理
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。