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

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

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

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):云提供商提供容器化服务,简化企业内部对容器的管理和运维

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

二叉搜索树在线OJ题讲解

二叉树创建字符串 我们首先进行题目的解读: 大概意思就是用()把每个节点的值给括起来,然后再经过一系列的省略的来得到最后的结果 大家仔细观察题目给出的列子就可以发现,其实这个题目可以大致分为三种情况&#xff1…

Vue 环境安装以及项目创建

环境安装 nodejs 安装 下载地址:https://nodejs.org/dist/v18.16.1/ 根据系统类型选择对应安装包,选择安装路径那个后一直下一步即可安装完成。 配置npm 代理镜像,设置为淘宝的镜像地址(后面按照依赖可以加速下载安装包) npm c…

★【递归】【链表】Leetcode 21. 合并两个有序链表

★【递归】【链表】Leetcode 21. 合并两个有序链表 解法1 :递归链表 简直是好题啊好题多做做 ---------------🎈🎈题目链接🎈🎈------------------- 解法1 :递归链表 简直是好题啊好题多做做 >>>…

搭建LNMP环境并配置个人博客系统

LNMP是Linux(操作系统)、Nginx(Web服务器)、MySQL(数据库)和PHP(脚本解释器)的组合,常用于部署高性能的动态网站,如WordPress等博客平台 一、安装Linux操作系…

Vue 2 的核心模块和历史遗留问题以及vue3新特性

从下图你能看到,Vue 2 是一个响应式驱动的、内置虚拟 DOM、组件 化、用在浏览器开发,并且有一个运行时把这些模块很好地管理起来的框架。 vue 2 能把上面所说的这些模块很好地管理起来,看起来已经足够好了。不过事实真的如 此么?…

《最新出炉》系列初窥篇-Python+Playwright自动化测试-33-处理https 安全问题或者非信任站点-上篇

1.简介 这一篇宏哥主要介绍playwright如何在IE、Chrome和Firefox三个浏览器上处理不信任证书的情况,我们知道,有些网站打开是弹窗,SSL证书不可信任,但是你可以点击高级选项,继续打开不安全的链接。举例来说&#xff0c…

计算机网络-网络互连和互联网(四)

1.TCP协议: 传输控制协议,面向字节流按顺序连接,可靠,全双工,可变滑动窗口,缓冲累积传送。协议号为6。下面是TCP段(段头),TCP头(传输头)&#xf…

【重要公告】BSV区块链协会全新推出“网络访问规则NAR”

​​发表时间:2024年2月15日 BSV区块链协会正式宣布已为BSV区块链推出一套全新的网络访问规则(Network Access Rules,以下简称“NAR”)。 NAR是一整套规则,用于规范BSV协会与BSV网络节点之间的关系。它基于比特币最初…

【LeetCode】每日一题:使二叉树所有路径值相等的最小代价

该题采用自底向上的思路的话,很容易想到使用贪心的思想,但是如何进行具体操作却有些难度。 这里补充一个重要的结论:二叉树的数组形式中,第i个节点的父节点是i/2;接下来只需要让自底向上让每个路径上的代价保持最低限…

为什么会造成服务器丢包?

随着云服务器市场的发展和网络安全问题,服务器丢包问题成为了一个普遍存在的现象。服务器丢包是指在网络传输过程中,数据包由于各种原因未能到达目标服务器,导致数据传输中断或延迟。那么,为什么会造成服务器丢包呢?下…

2024年2月深度学习的论文推荐

我们这篇文章将推荐2月份发布的10篇深度学习的论文 Beyond A*: Better Planning with Transformers via Search Dynamics Bootstrapping. https://arxiv.org/abs/2402.14083 Searchformer是一个基于Transformer架构的人工智能模型,经过训练可以模拟A星寻路算法&a…

代码随想录算法刷题训练营day27:LeetCode(39)组合总和、LeetCode(40)组合总和 II、LeetCode(131)分割回文串

代码随想录算法刷题训练营day27:LeetCode(39)组合总和、LeetCode(40)组合总和 II、LeetCode(131)分割回文串 LeetCode(39)组合总和 题目 代码 import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; import java.util.List;clas…

【论文笔记】Attention Is All You Need

【论文笔记】Attention Is All You Need 文章目录 【论文笔记】Attention Is All You NeedAbstract1 Introduction2 Background补充知识:软注意力 soft attention 和硬注意力 hard attention?补充知识:加法注意力机制和点乘注意力机制Extende…

11.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-接管游戏接收网络数据包的操作

内容参考于:易道云信息技术研究院VIP课 上一个内容:接管游戏发送数据的操作 码云地址(master 分支):https://gitee.com/dye_your_fingers/titan 码云版本号:8256eb53e8c16281bc1a29cb8d26d352bb5bbf4c 代…

在Windows中安装PyTorch

文章目录 1. 创建虚拟环境2. 检查显卡版本和CUDA3. 下载链接4. 下载5. 等待6. 检测 1. 创建虚拟环境 具体查看我之前写的 《在Windows中利用Python的venv和virtualenv创建虚拟环境》 2. 检查显卡版本和CUDA 这种情况是需要电脑上有单独的英伟达的显卡、或者英伟达的显卡和集显…

NoSQL数据库介绍

目录 一、发展历史 二、什么是NoSQL? 三、为什么使用NoSQL? 四、NoSQL vs. RDBMS 五、NoSQL的四种类型 键值存储 文档存储 列式存储 图形存储 六、NoSQL的优缺点 七、NoSQL的特点 灵活的可扩展性 灵活的数据模型 与云计算紧密融合 大数据量…

【Java程序设计】【C00324】基于Springboot的高校疫情防控管理系统(有论文)

基于Springboot的高校疫情防控管理系统(有论文) 项目简介项目获取开发环境项目技术运行截图 项目简介 这是一个基于Springboot的高校疫情防控系统,本系统有管理员、学校管理员、学院管理员、教师以及学生五种角色; 管理员&#x…

MySQL 的数据库操作,利用Spring Boot实现MySQL数据库的自动创建

执行 show databases; 命令可以查看当前数据库的所有数据库。 注意在 MySQL 客户端执行 SQL 语句的时候要带上分号 ; 并按下 enter 键,不然 MySQL 会认为你还没有输入完,会换一行继续等待你输入。 OK,像上面截图中的 information_schema、mys…

第二周opencv

一、边缘检测算子 边缘检测算子是用于检测图像中物体边界的工具。边缘通常表示图像中灰度值或颜色发生显著变化的地方。边缘检测有助于识别图像中的物体形状、轮廓和结构。这些算子通过分析图像的灰度或颜色梯度来确定图像中的边缘。 1、Roberts 算子 通过局部差分计算检测边缘…

(PWM呼吸灯)合泰开发板HT66F2390-----点灯大师

前言 上一篇文章相信大家已经成为了点灯高手了,那么进阶就是成为点灯大师 实现PWM呼吸灯 接下来就是直接的代码讲解了,不再讲PWM原理的 这里部分内容参考了另一个博主的文章 合泰杯——合泰单片机工程7之PWM输出 如果有小伙伴不理解引脚设置和delay函数…