一文带你理解云原生

本文全面介绍了云原生的概念、关键技术和生态系统,重点关注Docker和Kubernetes。从微服务、容器到服务网格,详细阐述了云原生中的Docker容器技术,包括namespace、cgroups和Union File System。接着,深入探讨了Kubernetes的架构、核心组件和网络技术,如Service Mesh、Overlay网络和Underlay网络。文章不仅提供了理论知识,还涉及实际应用和案例,是理解云原生不可多得的参考资料。
摘要由CSDN通过智能技术生成

作者:William 孟祥龙,腾讯 CDG 系统架构师,从事云原生技术赋能金融科技。

本文是一篇云原生的关键知识科普,希望给大家提供一扇云原生的“窗户”,传达三个目标:1、透过窗户看到一棵大树代表:云原生的蓝图全貌;2、树上会有很多核心树干代表:云原生的关键技术;3、希望树干上能摘到果实代表:云原生对我的启发

开始阅读文章前,请角色切换:设想你作为一位中小型 IT 公司 CTO,面对云原生技术决策,你需要回答两个问题:

1、为什么需要上云?

2、上云有何弊端?

作为一家公司的技术决策者,必须理解上云的利与弊,并结合公司各阶段发展目标给出最适合的技术方案

1 云原生-概述

1.1 云原生-定义

云原生的定义,业界也是“百家争鸣”各持观点,从技术视角理解云原生会相对清晰。云原生的关键技术包括:

微服务架构:服务与服务之间通过高内聚低耦合的方式交互;

容器:作为微服务的最佳载体,提供了一个自包含的打包方式;

容器编排:解决了微服务在生产环境的部署问题;

服务网络:作为基础设施,解决了服务之间的通信;

不可变基础:设施提升发布效率,方便快速扩展;

声明式 API:让系统更加健壮;

  • 命令式 API:可以直接发出让服务器执行的命令,例如:“运行容器”、”停止容器”等;

  • 声明式 API:可以声明期望的状态,系统将不断地调整实际状态,直到与期望状态保持一致。

DevOps:缩短研发周期,增加部署频率,更安全地方便:

  • Culture :达成共识

  • Automation:基础设施自动化

  • Measurement:可度量

  • Sharing:你中有我,我中有你

【私人观点】

  • 云原生的定义:应用因云而生,即云原生

  • 应用原生被设计为在云上以最佳方式运行,充分发挥云的优势,是上云的最短路径

1.2 云原生-技术生态
1.3 云原生-关键技术

云原生关键技术包括:微服务,容器,容器编排,服务网络,不可变基础,声明式 API

1.3.1 微服务

微服务是一种用于构建应用的架构方案

将一个复杂的应用拆分成多个独立自治的服务,服务与服务间通过“高内聚低耦合”的形式交互。

微服务典型架构包括:

  • 服务重构:单体改造成符合业务的微服务架构;

  • 服务注册与发现:微服务模块间的服务生命周期管理;

  • 服务网关:身份认证、路由服务、限流防刷、日志统计;

  • 服务通信:通信技术方案如,RPC vs REST vs 异步消息;

  • 可靠性:服务优雅降级,容灾,熔断,多副本。

1.3.2 容器

容器是一种打包应用的方式,可以打包应用中的所有软件和软件所依赖的环境,并可实现跨平台部署。

容器关键技术:namespac 视图隔离,cgroups 资源隔离 ,Union File System 联合文件系统。

容器优势

  • 更高效的利用资源;

  • 更快速的启动时间;

  • 一致性的运行环境。

1.3.3 容器编排

容器编排包括:自动化管理和协调容器的系统,专注于容器的生命周期管理和调度。

核心功能

  1. 容器调度:依据策略完成容器与母机绑定;

  2. 资源管理:CPU、MEM、GPU、Ports、Device;

  3. 服务管理:负载均衡、健康检查。

1.3.4 服务网格

服务网格(Service Mesh)是致力于解决服务间通讯的基础设施层

  • Service Mesh 应对云原生应用的复杂服务拓扑,提供可靠的通信传递;

  • 通过一组轻量级网络代理(Sidecar proxy),与应用程序代码部署在一起来实现,且对应用程序透明。

Service Mesh 特点

  1. 应用程序间通讯的中间层;

  2. 轻量级网络代理,应用程序无感知;

  3. 解耦应用的重试、监控、追踪、服务发现。

Service Mesh 主流组件:Istio、MOSN(Modular Open Smart Network)Linkerd。

1.3.5 不可变基础设施

不可变基础设施(Immutable Infrastructure)(宠物 VS 牲畜)

  • 任何基础设施实例(服务器、容器等各种软硬件)一旦创建之后便成为一种只读状态,不可对其进行任何更改;

  • 如果需要修改或升级实例,唯一方式是创建一批新实例以替换。

不可变基础设施的优势

  1. 提升发布应用效率;

  2. 没有雪花服务器;

  3. 快速水平扩展。

1.3.6 声明式 API
  • 命令式 API:可直接发出让服务器执行的命令,例如:“运行容器”、“停止容器”等;

  • 声明式 API:可声明期望的状态,系统将不断地调整实际状态,直到与期望状态保持一致。

为什么声明式使系统更加健壮?

可以类比理解成自动化工程学的闭环自适应模型

1.3.7 DevOps

DevOps 目标 :缩短开发周期,增加部署频率,更可靠地发布

  • 从历史上开发和运维相对孤立到开发和运维之间建立合作,可以增加信任,更快速地发布新版本。

DevOps 是一组过程,方法和系统的统称包括:

Culture

文化是 DevOps 中的第一成功要素

  • 由于目标不同,开发和运维形成一堵墙,DevOps 通过建立开发和运维之间合作和沟通的文化来消除墙。

Automation

  • 自动化软件的开发和交付,通常包含持续集成,持续交付和持续部署,云原生时代还包括基础架构的自动化,即 IaC(Infrastructureas code)。

Measurement

  • 度量尤其重要,通过客观的测量来确定正在发生的事情的真实性,验证是否按预期进行改变。并为不同职能部门达成一致建立客观基础。

Sharing

  • 开发和运维团队之间长期存在摩擦的主要原因是缺乏共同的基础。

  • 开发参与运维值班,参与软件的部署和发布,运维参与架构设计。

2 容器-Docker

2.1 Docker 概述

为什么学习容器技术?

云时代从业者:Docke

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值