云安全
云安全概述
阿里云概述
亚马逊AWS概述
云计算导论
云计算概述
云计算的关键技术
虚拟化
分布式文件系统
云存储
数据处理
并行计算
OpenStack
容器
Kubernetes概述
Serverless
Hadoop
云原生
云数据中心
微服务
对象存储OSS
云存储
对象存储
对象文件(Object)
存储桶(存储空间)
通过外网访问OSS
存储桶漏洞
STS访问OSS
权限与访问控制
访问控制
Bucket&RAM Policy
预签名
Docker
01docker概述
02docker安装
03目录结构
04基础操作
05底层原理【理论】
06底层原理【实践】
07DockerFile
08容器反查Dockerfile
09Docker 逃逸
-
+
首页
云原生
 云原生(Cloud-Native)并非单一技术,而是一套基于云计算架构理念设计的技术体系与最佳实践,核心目标是让应用能充分利用云计算的弹性、可扩展性和资源效率,实现 “快速开发、持续部署、动态运维”,最终应对业务的快速变化。它是云计算的 “进阶形态”—— 传统应用迁移到云(“云化”)是 “搬应用上云”,而云原生是 “为云而生的应用架构”。 ## 定义 云原生的概念最早由互联网企业(如 Google、Netflix)在实践中提出,后由权威组织CNCF(Cloud Native Computing Foundation,云原生计算基金会,2015 年由 Linux 基金会发起) 标准化,成为行业共识。 CNCF 对云原生的定义随技术演进不断迭代,当前最权威的表述是: “云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、声明式 API 和不可变基础设施。” 关键解读: - 不是 “绑定特定云厂商”:支持公有云(AWS、阿里云)、私有云(OpenStack)、混合云,具备 “云无关性”。 - 核心目标:弹性扩展(应对流量波动)、动态适应(环境变化不影响应用)、高效交付(缩短从代码到上线的周期)。 > 云原生与传统架构的区别 传统应用(如基于物理机 / 虚拟机的单体应用)与云原生应用的核心差异,体现在 “对云资源的利用方式” 和 “架构设计理念” 上: | 维度 | 传统架构(非云原生) | 云原生架构 | | -------- | ----------------------------------------- | ------------------------------------------- | | 部署单元 | 虚拟机(VM),体积大(GB 级) | 容器(Container),轻量(MB 级) | | 应用架构 | 单体应用(所有功能打包为一个程序) | 微服务(按业务拆分为独立小服务) | | 资源调度 | 静态分配(预先分配 CPU / 内存,利用率低) | 动态调度(按需分配,利用率高) | | 故障处理 | 人工排查 + 重启,容错性差 | 自动发现 + 自愈(如 K8s 重启故障容器) | | 发布方式 | 全量发布(停机更新,风险高) | 灰度发布 / 滚动更新(无感知升级) | | 运维模式 | 人工运维(脚本化,效率低) | 声明式运维(定义 “目标状态”,系统自动实现) | ## 五大关键组件 云原生的核心技术支柱:五大关键组件。 云原生不是单一技术,而是由 “基础设施层 - 编排层 - 应用架构层 - 可观测性层” 构成的技术栈,其中五大技术是核心支柱: ### 容器 容器是云原生的基础设施基石,它是一种 “轻量级虚拟化技术”,将应用及其依赖(代码、库、配置文件)打包成一个独立的 “可移植单元”,确保应用在任何环境(开发机、测试环境、生产云)中都能 “一次构建,到处运行”(Build Once, Run Anywhere)。 | 特性 | 容器(如 Docker) | 虚拟机(如 VMware) | | -------------------- | ---------------------------------- | ---------------------------------- | | 启动时间 | 秒级(如 1-3 秒) | 分钟级(如 1-5 分钟) | | 资源占用 | 轻量(MB 级,共享宿主机内核) | 重量级(GB 级,独立内核 + OS) | | 隔离级别 | 进程级隔离(共享内核,隔离性中等) | 硬件级隔离(独立内核,隔离性高) | | 可移植性 | 极高(打包依赖,跨环境一致) | 较低(依赖 VM 镜像格式,跨平台难) | | 密度(单宿主机数量) | 数百个(资源利用率高) | 数十个(资源利用率低) | > 主流容器技术 Docker:2013 年推出,是最流行的容器引擎,简化了容器的 “构建、打包、运行” 流程,让容器技术普及。但随着生态发展,Docker 的 “容器运行时” 功能被拆分到 Containerd(CNCF 毕业项目)中,目前 Kubernetes(K8s)已默认使用 Containerd 作为容器运行时。 Containerd:更轻量、更稳定的容器运行时,专注于 “容器生命周期管理”(创建、启动、停止、删除),是云原生生产环境的首选。 ### Kubernetes 如果说容器是 “应用的打包盒”,那么 Kubernetes(简称 K8s)就是 “管理这些盒子的操作系统”—— 它是云原生的核心编排平台,负责容器的 “部署、调度、伸缩、自愈、负载均衡”,解决了 “大量容器如何高效管理” 的问题。 > K8s 的核心功能 K8s 的设计理念是 “声明式 API + 自愈能力”,核心功能包括: - 服务发现与负载均衡:自动为容器分配 IP 地址,并通过 “Service” 组件实现流量分发(如多副本容器的请求负载均衡)。 - 弹性伸缩(HPA):基于 CPU 利用率、内存使用率或自定义指标(如 QPS),自动增加 / 减少容器副本数量(如流量高峰时从 3 个副本扩到 10 个,低谷时缩到 1 个)。 - 自愈能力:实时监控容器状态,若容器崩溃、节点故障,自动在其他节点重启容器;若容器资源超标(如内存溢出),自动杀死并重建。 - 滚动更新与回滚:支持 “灰度发布”(逐步替换旧容器为新容器,避免服务中断),若新版本出现问题,可一键回滚到旧版本。 - 存储编排:通过 “PersistentVolume(PV)” 和 “PersistentVolumeClaim(PVC)” 抽象存储资源,支持对接云厂商存储(如阿里云 OSS、AWS S3)或本地存储。 > K8s 的架构 K8s 的架构:主从(Master/Worker)模式。 K8s 集群由两类节点组成,分工明确: 控制平面(Control Plane,Master 节点):集群的 “大脑”,负责决策和管理,核心组件包括: - kube-apiserver:所有操作的统一入口(如创建容器、查看状态),提供声明式 API。 - etcd:分布式键值数据库,存储集群的所有配置信息(如容器部署状态、资源信息),是 K8s 的 “数据中心”。 - kube-scheduler:负责容器的 “调度”(根据资源需求、节点负载,决定将容器部署到哪个 Worker 节点)。 - kube-controller-manager:运行各种控制器(如节点控制器、副本控制器),确保集群状态与 “目标状态” 一致(如副本数不足时自动扩容)。 工作节点(Worker Node):负责运行容器,核心组件包括: - kubelet:与控制平面通信,执行容器的启动、停止等操作,确保容器按配置运行。 - kube-proxy:维护节点的网络规则,实现 Service 的负载均衡和服务发现。 - 容器运行时(如 Containerd):实际运行容器的组件。 ### 微服务 微服务(Microservices):云原生的 “应用架构范式”。 微服务是云原生的应用设计理念,它将传统的 “单体应用” 按 “业务领域” 拆分为多个独立的 “小服务”(如电商系统拆分为 “用户服务”“订单服务”“支付服务”“商品服务”),每个服务独立开发、部署、扩展,通过 API(如 REST、gRPC)通信。 > 核心优势 微服务的核心优势:适配云原生的弹性。 独立扩展:不同服务可按需伸缩(如 “订单服务” 流量高峰时扩容,“用户服务” 流量稳定时不扩容),资源利用率更高。 技术栈灵活:每个服务可选择适合自身的技术栈(如 “支付服务” 用 Java 保证稳定性,“推荐服务” 用 Python 做数据分析)。 故障隔离:单个服务故障(如 “商品服务” 崩溃)不会影响整个系统(其他服务仍可正常运行),容错性更强。 迭代高效:小团队负责单个服务,开发、测试、上线周期短(如 “用户服务” 更新只需发布自身,无需停整个系统)。 ### 服务网格 服务网格(Service Mesh):微服务的 “网络治理层”。 随着微服务数量增多(如数百个服务),服务间的网络通信变得复杂(如流量控制、监控、加密、熔断),这些 “网络治理逻辑” 若嵌入业务代码,会导致代码冗余、维护困难。 服务网格(Service Mesh)应运而生,它是微服务的 “专用网络基础设施”,将 “网络治理逻辑” 从业务代码中剥离,实现 “业务与网络解耦”。 > 核心架构 服务网格的典型代表是 Istio(CNCF 孵化项目),其架构分为两层: 数据面(Data Plane):由 “Sidecar 代理”(如 Envoy)组成,每个微服务容器旁都会部署一个 Sidecar 代理,所有服务间的流量都通过 Sidecar 转发。 - 核心功能:流量路由(如 A/B 测试、灰度发布)、流量控制(限流、熔断)、TLS 加密(服务间通信加密)、监控(采集流量 metrics)。 控制面(Control Plane):由 Istio 的核心组件(Pilot、Citadel、Galley)组成,负责管理数据面的 Sidecar 代理。 - 核心功能:向 Sidecar 下发配置(如路由规则、限流策略)、证书管理(生成 TLS 证书)、配置校验。 > 价值 开发人员只需关注业务逻辑,网络治理需求(如 “让 10% 的流量走新版本服务”“服务调用超时 3 秒则熔断”)通过服务网格的控制面配置即可实现,无需修改业务代码,大幅降低维护成本。 ### 声明式 API 与不可变基础设施 这两个是云原生的核心运维理念,支撑 K8s、服务网格等技术的实现,确保系统的稳定性和可预测性。 > 声明式 API - 传统 “命令式 API”:需手动执行每一步操作(如 “先创建容器,再配置网络,最后绑定存储”),步骤繁琐且易出错。 - 声明式 API:只需定义 “目标状态”(如 “我需要 3 个 nginx 容器,每个容器 2GB 内存”),系统(如 K8s)自动对比 “当前状态” 与 “目标状态”,并执行必要操作(如当前只有 2 个容器,自动创建 1 个)。 - 优势:简化运维、减少人为错误、支持自动化。 > 不可变基础设施 - 传统 “可变基础设施”:服务器 / 容器启动后,可手动修改配置(如登录容器改配置文件、升级软件),导致环境不一致(“开发环境好的,生产环境坏的”)。 - 不可变基础设施:基础设施(容器、虚拟机)一旦创建,就不再修改;若需更新,直接销毁旧实例,创建新实例(如容器配置变更,直接重建容器而非修改)。 - 优势:环境一致性(新实例与旧实例配置完全一致)、可追溯(每个实例的版本可记录)、易回滚(销毁新实例,重启旧实例)。 ## 四大关键能力 基于上述技术支柱,云原生应用具备四大核心特性,这些特性是衡量应用是否 “云原生” 的关键标准: > 弹性伸缩(Elasticity) 能根据业务流量自动调整资源(如 CPU、内存、容器副本数),无需人工干预。例如: - 电商 “618” 大促:订单服务的 QPS 从 1000 飙升到 10000,K8s 自动将容器副本从 5 个扩到 50 个; - 大促结束后:QPS 降至 500,自动缩为 3 个副本,释放资源。 > 可观测性(Observability) 能实时监控应用的运行状态,快速定位故障,核心包括三大支柱: - 日志(Logs):记录应用的事件(如错误日志、业务日志),工具如 ELK Stack(Elasticsearch+Logstash+Kibana)、Loki; - 指标(Metrics):采集系统 / 应用的数值型数据(如 CPU 利用率、接口响应时间),工具如 Prometheus+Grafana; - 追踪(Tracing):跟踪跨服务的请求链路(如 “用户下单” 从 “前端→订单服务→支付服务→库存服务” 的全链路耗时),工具如 Jaeger、Zipkin。 > 容错性(Fault Tolerance) 系统能自动应对故障,不影响业务可用性,核心机制包括: - 自愈:K8s 重启故障容器、迁移故障节点上的服务; - 熔断:服务调用失败次数超过阈值时,自动 “熔断”(停止调用),避免级联故障(如 “支付服务” 故障,“订单服务” 不再调用它,而是返回 “支付暂时不可用”); - 限流:限制接口的请求量(如每秒最多 1000 次),避免流量高峰压垮服务。 > 持续交付(Continuous Delivery, CD) 能快速、安全地将代码部署到生产环境,核心流程包括: - 代码提交:开发人员提交代码到 Git 仓库(如 GitHub、GitLab); - 自动构建:CI 工具(如 Jenkins、GitLab CI)自动构建代码、打包容器镜像; - 自动测试:执行单元测试、集成测试,确保代码质量; - 自动部署:CD 工具(如 ArgoCD、Flux)将容器镜像部署到 K8s 集群,支持滚动更新、灰度发布。 ## 生态系统 云原生生态极其丰富,CNCF 是生态的核心组织者,通过 “毕业项目(Graduated)”“孵化项目(Incubating)”“沙箱项目(Sandbox)” 推动技术标准化。CNCF 生态已有超过 150 个项目,覆盖 “容器、编排、微服务、可观测性、安全” 等全领域。 > CNCF 核心毕业项目(生产级成熟度) | 项目名称 | 核心功能 | 定位 | | ------------- | ------------------ | ---------------------------------------- | | Kubernetes | 容器编排平台 | 云原生 “操作系统” | | Containerd | 容器运行时 | 生产级容器生命周期管理 | | Prometheus | 时序指标监控系统 | 可观测性核心工具 | | Elasticsearch | 分布式搜索引擎 | 日志 / 数据存储与检索 | | Fluentd | 日志收集与转发工具 | 日志流水线核心 | | Jaeger | 分布式追踪系统 | 微服务链路追踪 | | Helm | K8s 包管理工具 | 简化 K8s 应用部署(如 “一键安装 nginx”) | > 云原生厂商生态 除了开源项目,主流云厂商也推出了基于云原生的托管服务,降低企业运维成本: - 公有云厂商:阿里云 ACK(容器服务 K8s 版)、AWS EKS(Elastic Kubernetes Service)、Google GKE(Google Kubernetes Engine); - 开源厂商:Red Hat OpenShift(基于 K8s 的企业级容器平台)、SUSE Rancher(K8s 集群管理平台)。 ## 应用场景 云原生几乎适用于所有需要 “高弹性、高可用、快速迭代” 的业务场景,典型包括: 互联网业务:电商(如淘宝、京东)、社交(如微信、抖音)、直播,需应对流量波动(如大促、热门事件); 金融科技:支付、理财、证券交易,需高可用(零停机)、低延迟(毫秒级响应)、可追溯(合规要求); 企业级应用:CRM(客户关系管理)、ERP(企业资源计划),需支持多部门协作、灵活扩展(如业务扩张时增加用户); AI 与大数据:机器学习训练(需弹性调度 GPU 资源)、实时数据分析(如用户行为分析,需低延迟计算)。 ## 核心优势 降本增效:动态资源调度提升服务器利用率(从传统的 20%-30% 提升到 60%-80%),减少硬件成本;自动化运维减少人工成本。 业务敏捷:从 “代码提交到上线” 的周期从 “周级” 缩短到 “小时级”,快速响应市场需求(如电商快速上线新活动)。 高可用性:自愈、容错机制确保服务可用性达 99.99%(每年 downtime 仅 52 分钟),远高于传统架构。 可扩展性:支持从 “数十个容器” 扩展到 “数万个容器”,轻松应对业务增长(如用户从 10 万增长到 1 亿)。 ## 未来发展趋势 Serverless 普及:Serverless(无服务器架构)是云原生的 “终极形态” 之一,开发者无需管理服务器 / 容器,只需编写函数(如 AWS Lambda、阿里云 FC),按调用次数付费,进一步降低运维成本。K8s 生态也在推动 Serverless 化(如 Knative,CNCF 毕业项目)。 云原生 AI 融合:将 AI 训练 / 推理任务(如 TensorFlow/PyTorch 模型)部署到 K8s 集群,利用 K8s 的弹性调度能力分配 GPU 资源,实现 “AI 任务的云原生化”(如阿里云 PAI、Google AI Platform)。 边缘云原生:将云原生技术(如轻量级 K8s:K3s、MicroK8s)部署到边缘节点(如工厂设备、物联网终端),实现 “边缘计算与云端协同”(如工业物联网的实时数据处理)。 安全左移(Shift Left Security):将安全融入云原生的全生命周期(从代码开发、镜像构建到部署运行),而非 “事后补救”,工具如 Sigstore(镜像签名验证)、Falco(运行时安全监控)。 ## 总结 云原生不是 “技术名词”,而是一套 “架构理念 + 技术体系 + 最佳实践” 的集合—— 它以 “容器化” 为基础,以 “K8s 编排” 为核心,以 “微服务” 为架构,以 “服务网格” 为治理,最终实现 “业务敏捷、弹性扩展、高可用、低成本” 的目标。 对于企业而言,云原生不是 “选择题” 而是 “必答题”—— 在数字化转型的背景下,只有采用云原生架构,才能快速响应市场变化,应对海量用户和数据的挑战。尽管云原生存在运维复杂、迁移成本高等挑战,但随着生态的成熟(如托管 K8s 服务、低代码平台),这些挑战正逐步被解决,云原生已成为企业数字化的 “基础设施”。
毛林
2025年10月27日 20:43
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
PDF文档(打印)
分享
链接
类型
密码
更新密码