云安全攻防(四)之 云原生技术

news2024/12/27 12:25:31

云原生技术

容器技术

容器与虚拟化

虚拟化(Virtualization)和容器(Container)都是系统虚拟化的实现技术,可实现系统资源的”一虚多“共享。容器技术可以理解成一种”轻量的虚拟化“方式,此处的”轻量“主要是相比于虚拟化技术而言的。列如:虚拟化通常在Hypervisor 层实现对硬件资源的虚拟化,Hypervisor为虚拟机提供了虚拟的运行平台,管理虚拟机的操作系统的运行,每个虚拟机都有自己的操作系统、系统库以及应用。而容器并没有Hypervisor 层,每个容器是与主机共享硬件资源和操作系统的。

容器技术在操作系统层面实现了对计算机系统资源的虚拟化,在操作系统中,通过对CPU、内存和文件系统等资源的隔离、划分和控制,实现进程之间的透明的资源使用。

在这里插入图片描述

容器镜像

镜像是容器运行的基础,容器引擎服务可使用不同的镜像启动相应的容器。在容器出错后,它能通过迅速删除容器、启动新的容器来恢复服务,这都需要以容器镜像作为支撑技术的。与虚拟机所用的系统镜像不同,容器镜像不仅没有Linux 系统内核,同时在格式也有很大的区别。虚拟机镜像是将一个完整的系统封装成一个镜像文件,而容器镜像不是一个镜像文件,容器镜像是分层存储的文件系统。需要注意的是,当需要修改镜像内的某个文件时,只会对最上方的读写层进行改动,不会覆盖下层已有文件系统的内容。

容器存储

镜像元数据

在Liunx 系统中Docker的数据默认存放在 /var/lib/docker 中 ,基于不同的系统又有不同的存储驱动和不同的目录结构。我们以OCI标准格式来了解镜像存储的内容,如图所示:

在这里插入图片描述

镜像每一层的 ID是该文件内容的散列校验值,作为该层的唯一标识。获取镜像后,会使用以下方式索引镜像: 首先读取镜像的 manifests 文件,根据 manifests 文件中 config 的 sha256 码,得到镜像 config 文件,遍历 manifests 文件里面的所有层(layer),根据其 sha256 码在本地查找,拼出完整的镜像。

存储驱动

在理想情况下,我们使用挂载卷来存储高读写的目录,很少将数据直接写入容器的可写层。但是,总有一些需要直接写入容器可写层的特殊需求,这时候就需要存储驱动来作为容器和宿主机之间的媒介。Docker 依靠驱动技术来管理镜像与运行它们的容器间的存储和交互。

目前, Docker 支持 overaly2、aufs、fuse-overlayfs、devicemapper、btrfs、zfs、vfs等存储驱动。没有单一的存储驱动可适用所用的应用场景,要根据不同的场景选择合适的存储驱动,这样才能有效提高 Docker 性能

数据卷

通常,有状态的容器都有数据持久化存储的需求。前一节提到过,文件系统的改动都是发生在最上面的可读 写层。在容器的生命周期内,它是持续的,包括容器被停止后。但是,当容器被删除后,该数据层也随之被删除了。因此,Docker 采用数据卷(Volume)的形式向容器提供持久化存储。数据卷是 Docker 容器数据持久化存储 的首选机制。绑定挂载(Bind Mounts)依赖于主机的目录结构,但数据卷是由 Docker 管理。

与绑定挂载相比, 数据卷有以下几个优点:

  • 与绑定挂载相比,数据卷更容易备份或迁移
  • 可以使用 Docker CLI命令或 Docker API 管理数据卷
  • 数据卷在 Linux和 Windows 上均可使用
  • 数据卷可以在多个容器之间更安全地共享
  • 数据卷驱动程序允许在远程主机或云上存储数据卷、加密卷的内容或添加其它功能
  • 新数据卷的内容可以由容器预填充
  • 另外,与使用容器的读写层保存数据相比,数据卷通常是更好的选择。因为使用数据卷存储不会增加容器的大小,并且数据卷是持久化的,不会依赖于容器的生命周期。

容器网络

单从云计算的发展来看,业界普遍的共识是计算虚拟化和存储虚拟化已经不断突破和成熟,但网络虚拟化的发展仍相对滞后,成为制约云计算发展的一大瓶颈。网络虚拟化、多租户、混合云等特性均不同程度地给云网络地安全建设提出全新的挑战。

容器技术提供了轻量级虚拟化的能力,使实列资源占有大幅降低,提升了分布式计算系统的性能,但分布式容器系统的网络仍是较为复杂的部分。目前容器网络可以简单分为主机网络和集群网络,其中主机网络以 Docker 为列主要分为 None 网络模式、Bridge 网络模式、Host 网络模式和 Container 网络模式。集群网络以 Kubernetes 为列,由于Pod 作为 Kubernetes 应用运行的基本单元,每个Pod 中包含一个或多个相关的容器,这些容器都会运行在同一个主机中,并且共享相同的网络命名空间和相同的Linux 协议栈。因而集群网络基于Pod 主要涉及以下三个通信:同一个Pod内,容器和容器之间的通信;同一个主机内不同Pod之间的通信;跨主机Pod之间的通信。

容器运行时

容器运行时负责管理容器运行的整个生命周期,包括但不限于指定容器镜像格式、构建镜像、上传和拉取镜像、管理镜像、管理容器实例、运行容器等。在容器技术发展早期,Docker 作为容器运行时的标准被广为使用,而后Google、CoreOS、Docker等公司在2015年联合创建了开放容器标准(Open Container Inititiative,OCI),用于推进容器标准化,其主要包含两个标准,分别为容器运行时的标准和容器镜像标准,OCI的容器运行时主要包括runC、Rocket、Kata Containers、gVisor等。再后来随着容器编排技术的不断发展,处于行业翘楚的Kubernetes推出了容器运行时接口(Container Runtime Interface,CRI),用于与容器运行时进行通信,进而操作容器化的应用程序,当前支持的CRI运行时包括Docker、Contained、CRI-O。

容器编排

集群化、弹性和敏捷是容器应用的显著特点,如何有效地对容器集群进行管理,是容器技术落地应用地一个重要方面。集群管理工具(编排工具)能够帮助用户以集群的方式在主机上启动容器,并能够实现相应的网络互联,同时提供负载均衡、可扩展、容错和高可用等保障。目前来看,使用率和关注度比较高的几种容器编排平台主要包括Kubernetes、Apache Mesos、Docker Swarm、OpenShift、Rancher等、目前来看,Kubernetes在容器编排领域占据较大优势。许多公有云厂商也推出了各自的Kubernetes托管云平台,国外公有云厂商主要以Google、Amazon、Microsoft Azure 为主,国内则以阿里、腾讯、华为为主。

微服务

2014年,Matrin Fowler 撰写的 Microservices 使得许多国内的先行者接触到微服务这个概念并将其引入国内,Matrin Fowler对微服务的概念的定义如下:微服务就是将一个完整应用中所有的模块拆分为多个不同的服务,其中每个服务都可以部署、维护和发展,服务之间通常通过RESTful API 通信,这些服务围绕业务能力构建,且每个服务均可使用不同的编程语言和不同的数据存储技术。

2015年,越来越多的人通过各种渠道了解到微服务的概念并有人开始在生产环境中落地,2016年—2017年,微服务被越来越多的人所认可,一大批公司以微服务和容器为核心开始了技术架构的全面革新,于是微服务架构应运而生。

至今为止,微服务发展已经经历了两代,第一代是Dubbo、Spring Cloud 为代表的微服务治理框架,该类框架在微服务发展的前几年一度独领风骚、甚至在部分人群中成为微服务的代名词,但事实上该类框架并不能友好地解决微服务自身带来地一些问题,如微服务地调用依赖、版本迭代、安全性、可观测性等;第二代微服务治理框架为服务网格,他的出现解决了大部分开发人员在使用Spring Cloud 时遇到地不足和痛点。

服务网格

2017年年底,服务网格(Service Mesh)依托其非侵入式特性在微服务技术中崭新头角,作为微服务间通信地基础设施层。服务网格通常通过一些轻量级网络代理实现,这些代理与应用程序一起部署,而无需感知应用程序本身。

在这里插入图片描述

可以看到 Sidecar 运行在服务旁,对服务透明。由于所有通过服务地流量均会经过 Sidecar ,因此 Sidecar 可实现流量控制功能,如服务发现、负载均衡、智能路由、故障注入、熔断器、TLS终止等。服务网格的出现将微服务治理从自身中抽离出来,这种方式极大降低了代码的耦合度,使得微服务治理不在复杂。

Serverless

随着云原生技术的不断发展,应用的部署模式逐渐趋向于“业务逻辑实现与基础设施分离”的设计原则,Serverless(无服务器架构)指的是由开发者实现的服务端逻辑运行在无状态的计算容器中,它由事件触发, 完全被第三方管理,其业务层面的状态则被开发者使用的数据库和存储资源所记录。Serverless使得开发者无需直接处理服务器(无论是物理机,虚拟机,容器等)。无主机的优势会让使用者在服务器维护方面的操作开销大大减少,无需为升级服务器而忧心,无主机还意味着在应用程序中需要监控的度量指标也会不同。这是因为使用的大多数底层服务不会再发布 CPU、内存、磁盘大小等传统度量指标了。这让不再需要再特别关心架构的底层操作细节。Serverless使开发者避免了基础设施管理,如集群配置、漏洞修补、系统维护等。

Serverless通常可分为两种实现方式,即BaaS(Backend as a Service,后端即服务)和FaaS(Functions as a Service,函数即服务),其中 FaaS是Serverless的主要实现方式。简而言之FaaS即开发者编写的一段代码并定义何时以及如何调用该函数,随后该函数在云厂商提供的服务端运行,在此过程中开发者只需要编写并维护一段功能代码。

此外,FaaS本质上是一种事件驱动并由消息触发的服务,事件类型可能是一个HTTP请求,也可能是一次上传或保存操作,事件源与函数的关系如图所示:

在这里插入图片描述

FaaS的典型代表为AWS Lambda,为便于理解,下述为一个简单的Lambda Python处理函数:

import json

def lambda_handler(event, context):
return {
	'statusCode': 200,
	'body': json.dumps('Hello from Lambda!')
}

可以看出,以上代码导入了JSON Python库并定义了一个lambda_handler函数,该函数需接收两个参数,分别为event和context,其中event参数包含此函数收到的事件源信息,参数类型通常是Python的dict类型,也可以是list、str、int、float等类型,而context参数包含此函数相关的运行时上下文信息。

在这里插入图片描述

上图大致展示了传统的服务端应用部署和FaaS应用部署,当应用程序部署在物理机、虚拟机、容器中时,它实际上是一个应用进程,并且由许多不同的函数构成,这些函数之间有着相互关联的操作,一般需要长时间在操作系统中运行;而FaaS通过抽离虚拟机实例、操作系统和应用程序进程改变了传统的部署模式,使开发者只需关注单个函数操作,剩余基础设施管理均由第三方托管平台提供,当有事件触发时函数被执行,开发者为使用的资源付费。

DevOps

开发运营一体化(DevOps)全称为 Development&Operations ,其代表的并非一种具体的实现技术,而是一种方法论,在2009年被提出。DevOps的出现主要是为了打破开发人员与运维人员之间的壁垒和鸿沟,高效地组织团队通过自动化工具相互协作已完成软件生命周期管理,从而更快且频繁地交付高质量、稳定的软件。

云原生倡导敏捷、容错、自动化的特点,使得DevOps 成为云原生基础不可或缺地一环,究其根本原因,我们可以将其分为以下几点:

云原生提供DevOps基础设施

容器与编排技术提供了云原生的标准运行环境及基础架构。DevOps的和核心点在于软件的持续集成、持续交付,而容器作为云原生应用的标准发布,促进了DevOps在云原生环境下的流行,与此同时,基于容器的PaaS平台,如 Kubernetes ,可进一步为DevOps 的落地提供土壤。

微服务架构加速DevOps的应用

微服务架构实现了云原生应用固有的特点,即无状态性、弹性扩展、高内聚、低耦合。在此此架构下,试想在生产环境中,由于一个庞大的应用被拆分为几十个上百个服务,每个服务的开发、构建、部署过程必然遵循快速发布的原则,因而在敏捷性、自动化工具链上对流程提出了较高的要求。在此基础上,DevOps 的自动化、协作、敏捷的文化将会在很大程度上加速微服务的开发效率、降低沟通成本、提升部署效率。

DevOps 赋能服务网格

服务网格是一套微服务治理框架,主要实现各个微服务间的网络通信,虽然服务网格技术本身与DevOps关系不大,但由于其建立在微服务架构下,因而也须与 DevOps 相融合,这样才能实现微服务的持续集成和交付。

DevOps 加速 Serverless 应用迁移

Serverless 为云原生应用的最终形态,即服务端托管云厂商,开发者只需要维护好一段函数代码即可,这一新型云计算模式背后秉承的理念实际与DevOps是相互契合的。DevOps 遵循消除 开发者与运维人员之间的壁垒,而Serverless 架构的责任划分原则使得开发者人员和运维人员不在有界限。

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

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

相关文章

工业机器人运动学与Matlab正逆解算法学习笔记(用心总结一文全会)(四)——雅可比矩阵

文章目录 建立DH模型机器人正运动学机器人逆运动学机器人雅可比矩阵△ 机器人速度雅可比矩阵○ 雅可比矩阵相关概念○ 以二连杆平面机器人举例说明雅可比矩阵 △ 机器人雅克比矩阵与速度分析△ 雅克比矩阵的奇异性○ 机器人的奇异位形(奇异形位、奇异点)…

Docker中容器数据卷

容器数据卷 一.什么是容器数据卷二.使用数据卷方式一:直接使用命令来挂载 -v 三.具名和匿名挂载 一.什么是容器数据卷 docker理念 将应用和环境打包成一个镜像! 数据?如果数据都在容器中,那么我们的容器删除,数据就会…

一文吃透UML图(海贼版)

先来简单的说一说什么是UML? UML是统一建模语言,是用来设计软件的可视化建模语言,它的特点是简单、统一、图形化、能表达软件设计中的动态与静态信息,UML从目标系统的不同角度出发,定义了用例图、类图、对象图、状态图…

spring boot 服务健康检测返回OUT_OF_SERVICE,导致服务无法成功注册到consul

一、背景 健康检测接口返回OUT_OF_SERVICE curl -X GET http://192.168.5.53:8085/mgm/health{"status":"OUT_OF_SERVICE"}从日志启动看,没有任何报错信息;而且jvm进程也启动成功。 关键的一点信息是,服务的swagger地…

docker 资源限制

目录 1、CPU使用率 2、CPU共享比例 3、CPU周期限制 4、CPU核心限制 5、CPU 配额控制参数的混合案例 6、内存限制 7、Block IO 的限制 8、限制bps 和iops docker资源限制 Docker容器技术底层是通过Cgroup(Control Group 控制组)实现容器对物理资…

iOS多线程——pthread、NSThread

pthread NSThread 多线程的常见方案pthreadpthread 简介pthread 使用方法pthread 其他相关方法 NSThread创建、启动线程线程相关用法线程状态控制方法线程之间的通信NSThread 线程安全和线程同步NSThread 非线程安全NSThread 线程安全 多线程的常见方案 技术方案特点使用语言线…

[企业权限管理项目](二)环境搭建

数据库与表结构 oracle Oracle 为每个项目创建单独user,oracle数据表存放在表空间下,每个用户有独立表空间 创建用户及密码 语法[创建用户]: create user 用户名 identified by 口令[即密码]; 例子: create user tes…

bigemap在草原行业的应用案例

一.为什么选择Bigemap 1.使用软件一般都用于套坐标以及空间规划图,方便于项目选址和居民建房报建 2.在卫星图上找到用地范围,然后打点,导出点位范围的2000坐标,用于汇报出图 3.CGCS2000坐标系通过矢量转换转成地方坐标系

Noah-MP陆面过程模型建模方法与站点、区域模拟教程

详情点击链接:Noah-MP陆面过程模型建模方法与站点、区域模拟教程 陆面过程的内容(陆表能量平衡、水循环、碳循环等),陆面过程研究的重要性。 图 1 陆面过程主要研究内容 陆面过程模型的发展、基本原理、常用陆面过程模型等。 图…

VR虚拟仿真技术在道路桥梁中有哪些具体应用?

虚拟现实(VR)是一种新兴的技术,可以为桥梁工程提供许多应用场景。以下是一些可能的应用场景: 1.桥梁设计和模拟 VR元宇宙可以用于桥梁的设计和模拟。工程师可以使用VR技术来创建桥梁的三维模型,并对其进行测试和优化。这可以帮助工程师更好地…

C# Blazor 学习笔记(7):组件嵌套开发

文章目录 前言相关资料组件嵌套组件模板RenderFragment 意义传统前端样式组件化css 前言 我们在组件化一共有三个目的。 不用写CSS不用写html不用写交互逻辑 简单来说就是Java常说的约定大于配置。我们只需要必须的参数即可,其它的都按照默认配置。我们不需要关系…

intel advisor安装与使用

前言 没有搜到相关教程,所以自己写一篇,如有不足请指正 安装 建议直接安装完整工具包 Intel oneAPI Base Toolkit 注意先安这个 https://www.intel.com/content/www/us/en/developer/tools/oneapi/base-toolkit-download.html linux指令 wget http…

让这些ai绘画神器为你打开创作灵感的大门

在一个小镇上,住着一位名为奥斯卡的艺术家。他的画作仿佛有生命般跃动,每一幅都散发着神秘的魔力。然而,奥斯卡却感到自己的创造力有些枯竭。他渴望找到一种新的灵感源泉,以挑战自己的创作瓶颈。这时,他听说了ai绘画生…

大数据与okcc呼叫中心融合的几种方式

在实际的生产实践中,为提高营销效率,避免骚扰大众,很多呼叫中心业务会与大数据平台进行合作,进行精准营销。 买卖数据是非法的,大数据平台方并不会提供直接的数据,一般情况下,提供的数据都是脱…

马上解锁 StarRocks 存算分离,降本增效无需等!

StarRocks 于 4 月底正式发布了 3.0 版本,该里程碑版本带来了大家期盼已久的新特性--存算分离。此新功能一推出,立即受到社区热情追捧,用户纷纷开始在自己的业务中评估和测试存算分离效果。从芒果TV、聚水潭、网易邮箱、浪潮、天道金科等数十…

【技巧】学术Poster的制作要点,详细!

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 内容零零散散均收集自网上,有点杂忘了引用。 内容技巧 https://posts.careerengine.us/p/5dac3e628c131b0541dd9171 展示内容包括(将信息分块) 可选择性删减,注意…

分享可以免费使用的5款好用小工具

​ 最近后台收到好多小伙伴的私信,今天继续推荐五款小工具,都是免费使用的,大家可以去试试看。 剪贴板管理器——ClipX ​ ClipX是一款微型剪贴板管理器,可以记录你复制的文本和图像,并让你随时通过快捷键或鼠标菜单…

git面试题

文章目录 git经常用哪些指令git出现代码冲突怎么解决你们团队是怎么管理git分支的如何实现Git的免密操作 git经常用哪些指令 产生代码库 新建一个git代码库 git init下载远程项目和它的整个代码历史 git clone 远程仓库地址配置 显示配置 git config --list [--global]编辑配置…

Python爬虫 从小白到高手 各种最新案例! request scrapy

Python爬虫 从小白到高手 各种最新案例! Urllib Xpath JsonPath BeautifulSoup requests 1.基本使用 1.官方文档: http://cn.python‐requests.org/zh_CN/latest/ 快速上手 http://cn.python‐requests.org/zh_CN/latest/user/quickstart.html 2.安装 pi…

数字运营、协同高效,为园区高质量发展插上“数字化”翅膀

园区,是产业集群的枢纽,是城市发展的基本要素。近年来,以大数据、人工智能、云计算等为代表的数字技术与城市的千行百业融合“发酵”,正在加速城市主体的智能升级。智慧园区作为数字化转型升级的一个缩影,上承智慧城市…