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

简介: 大火的云原生是什么?从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 绝对会让你看懂,教育面试官。他俩的 区别



相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
724 2
|
8月前
|
Java Linux 虚拟化
【Docker】(1)Docker的概述与架构,手把手带你安装Docker,云原生路上不可缺少的一门技术!
1. Docker简介 1.1 Docker是什么 为什么docker会出现? 假定您在开发一款平台项目,您的开发环境具有特定的配置。其他开发人员身处的环境配置也各有不同。 您正在开发的应用依赖于您当前的配置且还要依赖于某些配置文件。 您的企业还拥有标准化的测试和生产环境,且具有自身的配置和一系列支持文件。 **要求:**希望尽可能多在本地模拟这些环境而不产生重新创建服务器环境的开销 问题: 要如何确保应用能够在这些环境中运行和通过质量检测? 在部署过程中不出现令人头疼的版本、配置问题 无需重新编写代码和进行故障修复
694 2
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
Kubernetes Cloud Native 云计算
云原生入门:从Docker到Kubernetes的旅程
【10月更文挑战第2天】本文将带你走进云原生的世界,从基础的Docker容器技术开始,逐步深入到Kubernetes集群管理。我们将通过实际代码示例,探索如何利用这些工具构建、部署和管理现代云应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供宝贵的知识和技能,让你在云原生领域迈出坚实的一步。
486 5
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
826 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
安全 Cloud Native Shell
云上攻防:云原生篇&Docker容器逃逸
本文介绍了Docker的基本概念及其对渗透测试的影响,重点讲解了容器逃逸的方法。Docker是一种轻量级的容器技术,与虚拟机相比,具有更高的便携性和资源利用率。然而,这也带来了安全风险,特别是容器逃逸问题。文章详细描述了三种常见的容器逃逸方法:不安全的配置、相关程序漏洞和内核漏洞,并提供了具体的检测和利用方法。此外,还介绍了几种特定的漏洞(如CVE-2019-5736和CVE-2020-15257)及其复现步骤,帮助读者更好地理解和应对这些安全威胁。
1502 3
云上攻防:云原生篇&Docker容器逃逸
|
运维 Cloud Native 云计算
云原生之旅:Docker容器化实战
本文将带你走进云原生的世界,深入理解Docker技术如何改变应用部署与运维。我们将通过实际案例,展示如何利用Docker简化开发流程,提升应用的可移植性和伸缩性。文章不仅介绍基础概念,还提供操作指南和最佳实践,帮助你快速上手Docker,开启云原生的第一步。
|
运维 Kubernetes Cloud Native
云原生技术入门:Kubernetes和Docker的协同工作
【10月更文挑战第43天】在云计算时代,云原生技术成为推动现代软件部署和运行的关键力量。本篇文章将带你了解云原生的基本概念,重点探讨Kubernetes和Docker如何协同工作以支持容器化应用的生命周期管理。通过实际代码示例,我们将展示如何在Kubernetes集群中部署和管理Docker容器,从而为初学者提供一条清晰的学习路径。
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
367 3
|
Kubernetes Cloud Native 开发者
探秘云原生计算:Kubernetes与Docker的协同进化
在这个快节奏的数字时代,云原生技术以其灵活性和可扩展性成为了开发者们的新宠。本文将带你深入了解Kubernetes和Docker如何共同塑造现代云计算的架构,以及它们如何帮助企业构建更加敏捷和高效的IT基础设施。