云原生架构技术揭秘:探索容器技术的奥秘

云原生的概念和演进都是围绕云计算的核心价值展开的,比如弹性、自动化、韧性,所以云原生所涵盖的技术领域非常丰富。

随着云计算技术的不断发展,云原生架构已经成为了新一代软件开发的重要趋势。本文将为您介绍云原生架构的相关技术,帮助您更好地理解和应用这些技术,提升您的后端开发、系统架构和解决方案架构的能力。

Docker 容器基于操作系统虚拟化技术,具有共享操作系统内核、轻量、无资源损耗、秒级启动等优势,极大地提升了系统的应用部署密度和弹性。同时,Docker 提出了创新的应用打包规范(Docker 镜像),实现了应用与运行环境的解耦,使应用可以在不同计算环境间一致、可靠地运行。

容器技术呈现出了一个优雅的抽象场景,即开发所需要的灵活性和开放性、运维所关注的标准化和自动化达成行对平衡,容器镜像已经成为应用分发的工业标准。

随后,Kubernetes 开源,凭借优秀的开放性、可扩展性以及活跃的开发者社区,在容器编排中脱颖而出,成为分布式资源调度和自动化运维的事实标准。Kubernetes 屏蔽了底层架构的差异,以优良的可移植性,帮助应用在包括数据中心、云端、边缘计算等不同环境中运行时保证一致性。

部署方式的演变:

1、容器技术的核心价值

  • 敏捷:容器技术在提升企业架构敏捷性的同时,使业务迭代变得更加快速,为创新探索提供了坚实的技术保障
  • 弹性:互联网时代企业系统经常需要面对促销活动、突发事件等各种预期之外的爆发性流量增长。通过容器技术,可以充分发挥云计算的弹性优势,降低运维成本
  • 可移植性:容器已经成为应用分发和交付的标准技术,可实现应用与底层运行环境的解耦,K8S 可以屏蔽 IaaS 层架构的差异性,帮助应用平滑地运行在不同的基础设施上,CNCF 推出了 K8S 一致性认证,进一步保障不同 K8S 实现的兼容性,使企业更愿意采用容器技术来构建云时代应用的基础设施

2、典型的容器技术

典型的容器技术有很多,我会主要介绍容器编排、安全容器、边缘容器三种。

容器编排

所谓容器编排是指管理和自动化容器化应用程序的部署、扩展和管理的过程。 K8S 成为了资源调度和容器编排的事实标准,已经广泛应用于自动部署、扩展和管理容器化应用中,它提供了一种高效的方式来管理容器的生命周期,包括部署、扩展和自我修复。K8S 可以自动化地处理容器的放置、调整、负载均衡和服务发现等功能。

分布式应用管理的核心能力
  • 资源调度:根据应用请求的资源量,比如 CPU、内存或 GPU 等设备资源,在集群中选择合适的节点来运行应用
  • 应用部署和管理:支持应用的自动发布和回滚,以及与应用相关的配置管理,可以自动化编排,让存储与容器应用的生命周期相关联
  • 自动修复:K8S 可以监测集群中所有的宿主机,当出现故障时,节点健康检查会自动迁移应用,还支持应用的自愈,从而极大地简化运维管理的复杂度
  • 服务发现和负载均衡:通过 Service 资源发现各种应用服务,结合 DNS 和多种负载均衡机制,支持容器化应用之间的相互通信
  • 弹性伸缩:K8S 可用于监测业务上所承担的负载,如果过高或者响应时间过长,就会自动扩容该业务
K8S 控制平面的组件和架构

K8S 的控制平面包含了四个主要的组件:API Server(API 服务器)、Cotroller Manager(控制器管理服务器)、Schedule(调度器)、Etcd,请看示意图:

K8S 在容器编排中的关键设计理念
  • 声明式 API:开发人员只需要关注应用本身,不需要关注非系统执行的细节,比如 Deployment(无状态应用)、StatefulSet(有状态应用)、Job(任务类应用)等,它们都提供了对不同类型工作负载的抽象。对于 K8S 实现而言,相比于边缘触发方式,基于声明式 API 的条件触发的实现方式可以提供更加健壮和稳定的分布式系统实现
  • 可扩展性架构:所有 K8S 组件都基于一致的、开放的 API 实现交互,第三方开发者也可以通过 CRD(Custom Resource Definition,自定义资源类型)或者 Operator 等方法提供领域相关的扩展实现。容器的可扩展能力极大提升了 K8S 的能力
  • 可移植性:K8S 可以通过一系列的抽象,比如 Loadbalance Service(负载均衡服务)、CNI(Container Network Interface,容器网络接口)、CSI(Container Storage Interface,容器存储接口),帮助业务应用屏蔽底层基础设施的实现差异,实现容器的灵活迁移

安全容器

随着越来越多的企业选择云原生技术进行应用交付和资源调度,使得对容器安全的要求也越来越高。安全容器是一种提供更高级别安全隔离的容器技术,安全容器通过提供更严格的访问控制和隔离机制,帮助防止潜在的安全威胁。比如 Docker 的 RunC 容器共享宿主机内核,仅仅是通过 Namespaces 和 Cgroups 实现隔离,在实际生产环境中,尤其是在多租户的场景下,安全性受到了极大的挑战。

现阶段结合隔离技术实现的安全容器方案,主要包括三大类:

用户态内核

这种方案下的典型代表是 Google 的 gVisor,是一种进程虚拟化增强的容器,通过实现独立的用户态内核,捕获和代理应用的所有系统调用,隔离非安全的系统调用,从而间接达到安全的目的。

因为系统调用的代理和过滤机制,导致 gVisor 的应用兼容性和系统调用方面的性能相较于普通 RunC 容器要差一些,且不支持 virt-io 等虚拟框架,因此扩展性较差,不支持设备热插拔。

LibOS

基于 LibOS 技术的安全容器运行时,以 UniKernel、Nabla-Container 为代表,本质上是针对应用内核的一个深度裁剪和定制,因此需要与应用编译打包在一起,兼容性比较差,应用与 LibOS 的捆绑编译和部署会增加 DevOps 实现的难度。

MicroVM

当前虚拟化技术已经非常成熟,轻量虚拟化技术是对传统虚拟化技术的裁剪,有非常优秀的扩展能力,比较有代表性的是 Kata-Containers 和 Firecracker。VM GuestOS 可以对内核等组件进行自由定制,它具备完整的 OS 和内核,因此 VM GuestOS 的兼容性非常好,安全漏洞的防扩散能力也能突出,但相对 RunC 容器,运行时产生的系统开销会稍大,启动速度也相对慢一点。

边缘容器

随着互联网智能终端设备数量的不断增加,以及 5G 和万物互联时代的到来,传统云计算中心集中存储计算的模式已经无法满足终端设备对于时效、容量和算力等的需求,主要体现:

  • 向边缘下沉,并通过中心进行统一交付、运维和管控已经成为云计算的重要发展趋势
  • 以 K8S 为代表的云原生技术是云计算领域发展最快的技术方向之一,基于 K8S 构建的边缘容器,通用“云管边”架构,极大提升了云计算向边缘拓展的效率,并降低了边缘计算的成本。

鉴于边缘设备以及业务场景的特殊性,边缘应用对容器技术提出了新的需求:

  • 资源协同:边缘计算需要提供云-边-端的资源协同管理,在云端统一管理边和端的节点和设备
  • 应用协同:边云协同的方式,可以将这些编排部署能力延伸到边侧,以满足边缘侧日益复杂的业务和高可用性的要求
  • 智能协同:边缘侧与中心云的智能协同是目前边缘计算项目中一个非常重要的协同场景
  • 数据协同:服务之间的协同要求更高的数据协同
  • 轻量化:边缘设备资源受限,部署在边缘侧的容器平台不可能是完整的 K8S 平台,必须精简

各云平台和开源社区均有对应的云产品项目上架,以阿里云 OpenYurt 为例:

OpenYurt 主打云边一体化的理念,基于原生 K8S 强大的容器编排和调度能力,通过众多边缘计算应用场景的锤炼,实现了一整套对原生 K8S 零侵入的边缘云原生方案,可以提供边缘自治、高效运维通道、边缘单元化管理、边缘流量拓扑管理、安全容器、边缘 Serverless 和 FaaS、异构资源支持等能力。能够帮助用户解决在海量边、端资源上完成大规模应用交付、运维和管控的问题,并提供中心服务下沉通道,实现与边缘计算应用的无缝对接。

OpenYurt 沿用了目前业界非常流行的中心管控、边缘自治的边缘应用管理架构,将云边端一体化协同作为目标,让云原生能力向边缘端拓展。在技术实现上,贯彻了“Extending Your Native Kubernetes to Edge”的核心设计理念,技术方案特点如下:

  • 对原生 K8S 零侵入:对原生 K8S API 的完全兼容,不改动 K8S 核心组件
  • 无缝转换:提供了可用于将原生 K8S 一键式转换成支持边缘计算能力的 K8S 集群的工具
  • 系统开销低:参考了大量边缘计算场景的实际需求,在保证功能和可靠性的基础上,本着最小化、最简化的设计理念,严格限制新增组件的资源诉求

3、容器技术总结

综上所述,我们到现在对容器技术是什么、有什么应该是有概念了,这部分我们再整体总结以下。

容器是一种封装应用程序代码以及依赖项的技术,它可以确保应用程序在任何环境下都能以相同的方式运行,容器化的应用程序与底层技术设施可以隔离开,使得它们可以在不依赖于特定硬件或操作系统配置的情况下运行。

容器技术的核心组件

容器技术的实现依赖于以下三个核心组件:

  1. 容器引擎:比如我们现在常规使用的 Docker,容器引擎是用于创建、运行和管理容器的底层软件。
  2. 容器镜像:包含应用程序以及所有依赖项的模版,用于创建容器事例。
  3. 容器编排:管理一组容器的生命周期,包括部署、扩展和自我修复,比如现在常规使用的 Kubernetes、Docker Swarm。

容器技术的优势

容器技术对应企业应用级研发来说,优势主要集中在以下:

  1. 环境一致性:容器内的应用程序运行环节与生产环境保持一致,减少很多程序员:在我机器上没问题啊
  2. 资源隔离:每一个容器实例都是在自己的隔离空间中运行,同时提高了安全可靠性
  3. 快速部署和扩展:容器的启动非常快,很多几秒内就能完成,而且基于容器技术可以根据负载情况进行快速的伸缩
  4. 持续集成和持续部署(CI/CD):容器化技术把应用程序作为容器镜像进行版本控制和自动化部署,让 CI/CD 流程更加高效

容器技术的挑战

任何一个技术组件或者领域,它既然存在我们选择它的优势,同时也是存在一些不足和挑战的,容器技术的挑战主要来自:

  1. 安全性:容器需要适当合理的安全措施来防止潜在的安全威胁
  2. 存储和网络配置:容器的持久化存储和网络配置需要仔细规划和管理
  3. 状态管理:有状态应用程序在容器技术中的管理比无状态应用程序复杂的多

容器技术的发展趋势

随着技术的发展,以及容器技术本身存在的挑战,容器技术也是在持续往前发展的,我认为会有以下三个方向:

  1. 服务网格:通用服务网格技术提供流量管理、监控和安全功能,增强架构的能力
  2. 安全容器:容器技术提供更强的安全隔离,来保障容器的安全性
  3. 容器即服务(CaaS):云提供商提供容器化服务,简化企业内部对容器的管理和运维

容器技术是云原生架构的重要组成部分,它通过提供一种轻量级、可移植的额应用程序封装方式,极大地改变了软件开发和运维的方式,随着技术的不断发展和成熟,可以预见容器技术在为了的云原生领域还是会扮演着更加关键重要的角色。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/417898.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

单片机精进之路-9ds18b20温度传感器

ds18b20复位时序图,先将b20的数据引脚拉低至少480us,然后再将数据引脚拉高15-60us,再去将测传感器的数据引脚是不是变低电平并保持60-240us,如果是,则说明检测到温度传感器,并正常工作。需要在240us后才能检…

鸿蒙真有前景吗?是真是假?

直到“纯血鸿蒙”发布,才看清华为真正的布局,这一招实在是高明! “纯血鸿蒙”发布之前,国内大批人唱衰华为,唱衰鸿蒙系统的生态,认为大概率会走诺基亚和微软的老路,没想到“纯血鸿蒙”一经推出…

高质 智能 绿色低碳棒线材轧制 智能测径仪等亦起关键作用

第十一届棒线材会议围绕推动轧钢装备数字化、智能化、绿色化转型升级,实现高质量发展,高质量、智能化、绿色低碳主题,将于4月22-24日在贵州省六盘水市召开。这也是轧钢生产近几年的发展趋势。 在线棒材生产中,蓝鹏测控可提供三种类…

每天十条linux知识点-24-0226(1)

文章目录 1.在哪下载linux内核源码?2.linux文件夹都有哪些文件?arch:包含和硬件体系结构相关的代码,每种平台占一个相应的目录,如i386、arm、arm64、powerpc、mips等。block:块设备驱动程序I/O调度。certs&…

又降价啦!2024年腾讯云服务器优惠价格表,不看后悔!

腾讯云服务器多少钱一年?62元一年起,2核2G3M配置,腾讯云2核4G5M轻量应用服务器218元一年、756元3年,4核16G12M服务器32元1个月、312元一年,8核32G22M服务器115元1个月、345元3个月,腾讯云服务器网txyfwq.co…

高级语言期末2010级B卷(软件学院)

1.编写程序根据如下公式计算X的值&#xff08;精确到1e-5&#xff09;。 #include <stdio.h>int main(){int i1;double flag1.0/(2*i-1)*2.0*i/(2*i-1);double sum0;while(flag>1e-5){sumflag;i;flag1.0/(2*i-1)*2.0*i/(2*i-1);}printf("%lf",sum);return 0…

千兆单口(百兆双口)小体积 24PIN 网络变压器 H82409S 特点

Hqst华轩盛(石门盈盛)电子导读&#xff1a;千兆单口&#xff08;百兆双口&#xff09;小体积 24PIN 网络变压器 H82409S 特点 大家好&#xff0c;石门盈盛电子科技有限公司工程盛先生&#xff0c;今天向大家介绍石门盈盛电子科技有限公司的一款优势产品 - 千兆单口&#xff08;…

Docker(第四部分)

Docker微服务实战 通过IDEA新建一个普通微服务模块 把包放到linux机器里 pwd 通过dockerfile发布微服务部署到docker容器 dockerfile的内容 防火墙 Docker网络 网络主机 是什么&#xff1f; 网桥virbr0 常用基本命令 能干嘛 网络模式 最后都和u3一样了 结论&#xff1a;doc…

【Java程序设计】【C00329】基于Springboot的高校实习管理系统(有论文)

基于Springboot的高校实习管理系统&#xff08;有论文&#xff09; 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的高校实习管理系统&#xff0c;本系统有管理员、公司、老师和学生四种角色&#xff1b; 管理员&#xff1a;个人中心、公司管理、…

故障排除:Failed to load SQL Modules into database Cluster

PostgreSQL 安装和故障排除 重新安装前的准备工作 在重新安装 PostgreSQL 之前&#xff0c;确保完成以下步骤&#xff1a; 重新卸载 PostgreSQL 并重启电脑。 删除以下目录&#xff1a; C:\Program Files\PostgreSQL\13C:\Users\admin\AppData\Roaming\pgadmin 重启安装过…

CentOS7——主机动态地址修改为静态地址

目录 1、查看本机的网络配置&#xff08;vmnet8网关&#xff09; 2、修改虚拟机主机网络信息配置文件 3、重启network服务使生效 4、测试 1、查看本机的网络配置&#xff08;vmnet8网关&#xff09; windows&#xff1a;“网络图标”——>“属性”——>“网络和共享中…

认识内部类

成员内部类 静态内部类 局部内部类 匿名内部类&#xff01;&#xff01;&#xff01;&#xff08;重点&#xff09; 匿名内部类在开发中常见的使用场景&#xff1a;通常作为一个参数传输给方法。

推荐系统经典模型YouTubeDNN代码

文章目录 前言数据预处理部分模型训练预测部分总结与问答 前言 上一篇讲到过YouTubeDNN论文部分内容&#xff0c;但是没有代码部分。最近网上教学视频里看到一段关于YouTubeDNN召回算法的代码&#xff0c;现在我分享一下给大家参考看一下&#xff0c;并附上一些我对代码的理解…

微信小程序真机调试:连接局域网失败ws://********:8001/失败,已切换回广域网模式的解决方式

这个问题大多数是由于系统上安装了虚拟网卡造成&#xff0c;只要禁用虚拟网卡即可查询方式&#xff1a;windx - 选择设备管理器 - 查看网络适配器&#xff0c;找到虚拟网卡禁用 重新勾选局域网模式进行调试即可

Go 互斥锁的实现原理?

Go sync包提供了两种锁类型&#xff1a;互斥锁sync.Mutex 和 读写互斥锁sync.RWMutex&#xff0c;都属于悲观锁。 概念 Mutex是互斥锁&#xff0c;当一个 goroutine 获得了锁后&#xff0c;其他 goroutine 不能获取锁&#xff08;只能存在一个写者或读者&#xff0c;不能同时…

Parallels Desktop安装虚拟机要执行此操作,您必须输入主机操作系统管理员认证凭据;执行该操作失败

弹窗1️⃣&#xff1a;执行此操作&#xff0c;您必须输入主机操作系统管理员认证凭据 桌面顶部点击《操作》点击《配置》 很多小伙伴在这一步又退回去重装了&#xff0c;其实不用&#xff0c;在配置里面设置就好了 弹窗2️⃣&#xff1a;执行该操作失败 设置如图&#xff1…

我写了个ImageWindow应用

文章目录 0 引言1 应用简介2 主要功能和特点2.1 多图像同/异步像素级对比2.2 支持多达30种图像格式2.3 高效率的图像处理性能 3 简明使用教程3.1 软件下载安装与更新3.1.1 软件下载与安装3.1.2 软件更新 3.2 多视窗添加并自动最优排列3.3 多样化图像导入方式3.4 自动切换显示模…

tinymce在vue3中的用法以及文本流式输出

一、版本 "tinymce/tinymce-vue": "4.0.5", "tinymce": "5.10.2", 二、步骤 具体步骤可以参考tinymce在vue2中的用法中的步骤 三、在项目index.html-body中引入tinymcejs <script src"tinymce/tinymce.min.js">&…

PyTorch概述(七)---Optim

torch.optim是一个实现多种优化算法的包;很多常用的方法已经被支持;接口丰富;容易整合更为复杂的算法; 如何使用一个优化器 为了使用torch.optim包功能;用户必须构建一个优化器对象;该优化器将保持当前的参数状态且基于计算的梯度更新参数; 构建优化器 要构建一个优化器;必…

【一个上下拉且松手回弹的自定义ScrollView】

文章目录 UserDefineScrollView举例使用activity_main.xmlMainActivity.java文件运行效果下拉前下拉后上拉 普通的scrollView下拉到顶部时就不动了&#xff0c;而如qq设置界面中的布局&#xff0c;下拉到顶端时还能下拉一段距离。本文介绍一个自定义scrollView就可以实现这样的…