
容器化是一种轻量级虚拟化技术,它将应用程序与其运行时环境打包在一起,作为独立的、可移植的软件单元。容器化数据库服务器提供了许多好处,包括:
- 隔离:容器隔离应用程序及其依赖项,从而减少冲突和安全风险。
- 可移植性:容器可以在不同的平台和云环境中轻松部署,提高了应用程序的灵活性。
- 资源优化:容器比虚拟机更轻量级,可以更有效地利用服务器资源。
- 开发效率:容器化使团队能够更快、更轻松地开发和部署数据库应用程序。
数据库服务器和应用程序编排
容器编排工具可用于管理和编排Kubernetes等容器化数据库服务器。这些工具使您能够自动化容器部署、扩展和生命周期管理任务。
最佳实践
以下是容器化数据库服务器的一些最佳实践:
- 使用经过测试和维护良好的容器镜像。
- 优化容器资源限制,以提高性能和稳定性。
- 实现持久的存储卷,以保护数据。
- 自动化容器更新和修补。
- 监控容器运行状况和性能。
结论
数据库服务器容器化是隔离、可移植和高效运行数据库的强大方法。通过采用容器化,组织可以提高开发效率、优化资源利用并降低安全风险。
什么是数据库管理系统?
数据库管理系统:
数据库管理系统是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。
数据库管理系统的功能简介:
1 .主要是对数据库进行统一的管理和控制,以保证数据库的安全性和完整性。
用户通过DBMS访问数据库中的数据,数据库管理员也通过dbms进行数据库的维护工作。
它可使多个应用程序和用户用不同的方法在同时或不同时刻去建立,修改和询问数据库。
大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。
2. 数据库管理系统是数据库系统的核心,是管理数据库的软件。
数据库管理系统就是实现把用户意义下抽象的逻辑数据处理,转换成为计算机中具体的物理数据处理的软件。
有了数据库管理系统,用户就可以在抽象意义下处理数据,而不必顾及这些数据在计算机中的布局和物理位置。
数据库管理系统主要功能说明:
1.数据定义:DBMS提供数据定义语言DDL(Data Definition Language),供用户定义数据库的三级模式结构、两级映像以及完整性约束和保密限制等约束。
DDL主要用于建立、修改数据库的库结构。
DDL所描述的库结构仅仅给出了数据库的框架,数据库的框架信息被存放在数据字典(Data Dictionary)中。
2.数据操作:DBMS提供数据操作语言DML(Data Manipulation Language),供用户实现对数据的追加、删除、更新、查询等操作。
3.数据库的运行管理:数据库的运行管理功能是DBMS的运行控制、管理功能,包括多用户环境下的并发控制、安全性检查和存取限制控制、完整性检查和执行、运行日志的组织管理、事务的管理和自动恢复,即保证事务的原子性。
这些功能保证了数据库系统的正常运行。
4.数据组织、存储与管理:DBMS要分类组织、存储和管理各种数据,包括数据字典、用户数据、存取路径等,需确定以何种文件结构和存取方式在存储级上组织这些数据,如何实现数据之间的联系。
数据组织和存储的基本目标是提高存储空间利用率,选择合适的存取方法提高存取效率。
5.数据库的保护:数据库中的数据是信息社会的战略资源,所以数据的保护至关重要。
DBMS对数据库的保护通过4个方面来实现:数据库的恢复、数据库的并发控制、数据库的完整性控制、数据库安全性控制。
DBMS的其他保护功能还有系统缓冲区的管理以及数据存储的某些自适应调节机制等。
6.数据库的维护:这一部分包括数据库的数据载入、转换、转储、数据库的重组合重构以及性能监控等功能,这些功能分别由各个使用程序来完成。
7.通信:DBMS具有与操作系统的联机处理、分时系统及远程作业输入的相关接口,负责处理数据的传送。
对网络环境下的数据库系统,还应该包括DBMS与网络中其他软件系统的通信功能以及数据库之间的互操作功能。
数据库管理系统的组成:
根据其功能和应用需求,数据库管理系统通常由以下几部分组成。
1.数据库语言
数据库语言是给用户提供的语言,包括两个子语言:数据定义子语言和数据操纵子语言。
SQL语言就是一个集数据定义和数据操纵子语言为一体的典型数据库语言。
几乎出现的关系数据库系统产品都提供SQL语言作为标准数据库语言。
(1)数据定义子语言(Data Definition Language,DDL)
数据定义语言包括数据库模式定义和数据库存储结构与存取方法定义两方面。
数据库模式定义处理程序接收用数据定义语言表示的数据库外模式、模式、存储模式及它们之间的映射的定义,通过各种模式翻译程序负责将它们翻译成相应的内部表示形式,存储到数据库系统中称为数据字典的特殊文件中,作为数据库管理系统存取和管理数据的基本依据;而数据库存储结构和存取方法定义处理程序接收用数据定义语言表示的数据库存储结构和存取方法定义,在存储设备上创建相关的数据库文件,建立起相应物理数据库。
(2)数据操纵子语言(Data Manipulation Language,DML)
数据操纵语言用来表示用户对数据库的操作请求,是用户与DBMS之间的接口。
一般对数据库的主要操作包括:查询数据库中的信息、向数据库插入新的信息、从数据库删除信息以及修改数据库中的某些信息等。
数据操纵子语言通常又分为两类:一类是嵌入主语言,由于这种语言本身不能独立使用,故称为宿主型的语言;另一类是交互式命令语言,由于这种语言本身能独立使用,故又称为自主型或自含型的语言。
2.例行程序
数据库管理例行程序随系统不同而各异,一般包括以下几部分:
(1)语言翻译处理程序
语言翻译处理程序包括DLL翻译程序、DML处理程序、终端查询语言解释程序和数据库控制语言的翻译程序等。
(2)系统运行控制程序
系统运行控制程序包括系统的初启程序、文件读写与维护程序、存取路径管理程序、缓冲区管理程序、安全性控制程序、完整性检查程序、并发控制程序事务管理、程序运行日志管理程序和通信控制程序等。
(3)公用程序
公用程序包括定义公用程序和维护公用程序。
定义公用程序包括信息格式定义、概念模式定义、外模式定义和保密定义公用程序等;维护公用程序包括数据装入、数据库更新、重组、重构、恢复、统计分析、工作日记转储和打印公用程序等。
3.组成部分
按功能划分,数据库管理系统大致可分为6个部分:
(1)模式翻译:提供数据定义语言(ddl)。
用它书写的数据库模式被翻译为内部表示。
数据库的逻辑结构、完整性约束和物理储存结构保存在内部的数据字典中。
数据库的各种数据操作(如查找、修改、插入和删除等)和数据库的维护管理都是以数据库模式为依据的。
(2)应用程序的编译:把包含着访问数据库语句的应用程序,编译成在dbms支持下可运行的目标程序。
(3)交互式查询:提供易使用的交互式查询语言,如负责执行查询命令,并将查询结果显示在屏幕上。
(4)数据的组织与存取:提供数据在外围储存设备上的物理组织与存取方法。
⑸事务运行管理:提供事务运行管理及运行日志,事务运行的安全性监控和数据完整性检查,事务的并发控制及系统恢复等功能。
(6)数据库的维护:为数据库管理员提供软件支持,包括数据安全控制、完整性保障、数据库备份、数据库重组以及性能监控等维护工具。
4.技术特点
(1)采用复杂的数据模型表示数据结构,数据冗余小,易扩充,实现了数据共享。
(2)具有较高的数据和程序独立性,数据库的独立性有物理独立性和逻辑独立性。
(3)数据库系统为用户提供了方便的用户接口。
(4)数据库系统提供4个方面的数据控制功能,分别是并发控制、恢复、完整性和安全性。
数据库中各个应用程序所使用的数据由数据库系统统一规定,按照一定的数据模型组织和建立,由系统统一管理和集中控制。
(5)增加了系统的灵活性。
5.层次结构
根据处理对象的不同,数据库管理系统的层次结构由高级到低级依次为应用层、语言翻译处理层、数据存取层、数据存储层、操作系统。
6.应用层
应用层是DBMS与终端用户和应用程序的界面层,处理的对象是各种各样的数据库应用。
7.语言翻译
语言翻译处理层是对数据库语言的各类语句进行语法分析、视图转换、授权检查、完整性检查等。
8.数据存取层
数据存取层处理的对象是单个元组,它将上层的集合操作转换为单记录操作。
9.数据存储层
数据存储层处理的对象是数据页和系统缓冲区。
10.操作系统
操作系统是DBMS的基础。
操作系统提供的存取原语和基本的存取方法通常是作为和DBMS存储层的接口。
数据库管理系统常见厂商:
Visual Foxpro
MS SQL Server
PostgreSQL
如有疑问,请及时沟通。
什么是K8S?
k8s是什么?
Kubernetes 是一个可移植的,可扩展的开源容器编排平台,用于管理容器化的工作负载和服务,方便了声明式配置和自动化。
它拥有一个庞大且快速增长的生态系统。
Kubernetes 的服务,支持和工具广泛可用。
为什么现在流行使用容器?
早期: 在物理服务器上面部署应用程序存在资源分配问题,因为其不能在物理服务器中的应用程序定义资源边界,导致应用程序资源利用不足而无法扩展.
后来: 为了解决该问题,引入了虚拟化技术, 虚拟化技术是指允许你在单个物理服务器的 CPU 上运行多个虚拟机,可以让多个应用程序在虚拟机之间进行隔离,具有一定的安全性, 每一个虚拟机就是一台完整的计算机, 在虚拟化硬件之上运行所有组件.
现在: 多数在物理服务器上面部署应用程序都是采kubectl用容器的方式,容器类似于虚拟机,它们都具有自己的文件系统、CPU、内存、进程空间等, 且由于它们与基础架构分离,因此可以跨云和 OS 发行版本进行移植。基于此特点被企业大范围使用.
为什么需要使用k8s容器?
若出现这样一个环境: 在生产环境中如果一个容器发生故障,则我们需要手动去启动另外一个容器,这样的操作是对我们的管理员来说是不太方便的, 若一个容器出现故障,另一个容器可以自动启动容器接管故障的容器,这样是最好的.
k8s就可以实现该效果,Kubernetes 提供了一个可弹性运行分布式系统的框架。
Kubernetes 会满足你的扩展要求、故障转移、部署模式等。
k8s功能: 服务发现和负载均衡, 存储编排, 自动部署和回滚, 自动完成装箱计算, 自我修复, 密钥与配置管理
名词解释
Secret有三种类型:
k8s的组成
k8s是由组件,API,对象等组成.
包含所有相互关联组件的 Kubernetes 集群图如下:
组件
Kubernetes 控制面 的核心是 API 服务器。
API 服务器负责提供 HTTP API,以供用户、集群中的不同部分和集群外部组件相互通信。
对象
Kubernetes对象是Kubernetes系统中的持久实体。Kubernetes使用这些实体来表示集群的状态.
具体来说,他们可以描述:
Kubernetes 架构
Kubernetes 架构由节点,控制面到节点通信, 控制器, 云控制器管理器组成.
master 流程图
节点
节点可以是一个虚拟机或者物理机器,取决于所在的集群配置。 每个节点包含运行 Pods 所需的服务, 这些 Pods 由 控制面 负责管理.
节点上的组件包括 kubelet、 容器运行时以及 kube-proxy。
节点状态
可以使用 kubectl 来查看节点状态和其他细节信息:
kubectl describe node <�节点名称>
一个节点包含以下信息:
控制面到节点通信
控制器
在 Kubernetes 中,控制器通过监控集群 的公共状态,并致力于将当前状态转变为期望的状态。
举个例子: 当前室内温度为20度, 我们通过调节遥控器,使其温度上升至24度, 这20度到24度的变化即为让其从当前状态接近期望状态。
控制器模式分为直接控制和通过API服务器来控制.
云控制器管理器
云控制器管理器是指嵌入特定云的控制逻辑的 控制平面组件。
云控制器管理器允许您链接聚合到云提供商的应用编程接口中, 并分离出相互作用的组件与您的集群交互的组件。
云控制器管理器中的控制器包括:
Kubernetes 安全性
云原生安全
云原生安全4个C: 云(Cloud)、集群(Cluster)、容器(Container)和代码(Code)
云原生安全模型的每一层都是基于下一个最外层,代码层受益于强大的基础安全层(云、集群、容器)。
我们无法通过在代码层解决安全问题来为基础层中糟糕的安全标准提供保护。
基础设施安全
Kubetnetes 基础架构关注领域
建议
通过网络访问 API 服务(控制平面)
所有对 Kubernetes 控制平面的访问不允许在 Internet 上公开,同时应由网络访问控制列表控制,该列表包含管理集群所需的 IP 地址集。
通过网络访问 Node(节点)
节点应配置为 仅能 从控制平面上通过指定端口来接受(通过网络访问控制列表)连接,以及接受 NodePort 和 LoadBalancer 类型的 Kubernetes 服务连接。
如果可能的话,这些节点不应完全暴露在公共互联网上。
Kubernetes 云访问提供商的 API
每个云提供商都需要向 Kubernetes 控制平面和节点授予不同的权限集。
为集群提供云提供商访问权限时,最好遵循对需要管理的资源的最小特权原则。
Kops 文档提供有关 IAM 策略和角色的信息。
访问 etcd
对 etcd(Kubernetes 的数据存储)的访问应仅限于控制平面。
根据配置情况,你应该尝试通过 TLS 来使用 etcd。
更多信息可以在 etcd 文档中找到。
etcd 加密
在所有可能的情况下,最好对所有驱动器进行静态数据加密,但是由于 etcd 拥有整个集群的状态(包括机密信息),因此其磁盘更应该进行静态数据加密。
集群组件安全
容器安全
代码安全
Kubernetes架构常见问题
Kubernetes ATTACK 矩阵
信息泄露
云账号AK泄露
API凭证(即阿里云AccessKey)是用户访问内部资源最重要的身份凭证。用户调用API时的通信加密和身份认证会使用API凭证.
API凭证是云上用户调用云服务API、访问云上资源的唯一身份凭证。
API凭证相当于登录密码,用于程序方式调用云服务API.
k8s configfile泄露
kubeconfig文件所在的位置:
$HOME//config
Kubeconfig文件包含有关Kubernetes集群的详细信息,包括它们的位置和凭据。
云厂商会给用户提供该文件,以便于用户可以通过kubectl对集群进行管理. 如果攻击者能够访问到此文件(如办公网员工机器入侵、泄露到Github的代码等),就可以直接通过API Server接管K8s集群,带来风险隐患。
Master节点SSH登录泄露
常见的容器集群管理方式是通过登录Master节点或运维跳板机,然后再通过kubectl命令工具来控制k8s。
云服务器提供了通过ssh登陆的形式进行登陆master节点.
若Master节点SSH连接地址泄露,攻击者可对ssh登陆进行爆破,从而登陆上ssh,控制集群.
容器组件未鉴权服务
Kubernetes架构下常见的开放服务指纹如下:
注:前六个重点关注: 一旦被控制可以直接获取相应容器、相应节点、集群权限的服务
了解各个组件被攻击时所造成的影响
组件分工图:
假如用户想在集群里面新建一个容器集合单元, 流程如下:
攻击apiserver
apiserver介绍:在Kubernetes中,对于未鉴权对apiserver, 能访问到 apiserver 一般情况下就能获取了集群的权限.
在攻击者眼中Kubernetes APIServer
默认情况下apiserver都有鉴权:
未鉴权配置如下:
对于这类的未鉴权的设置来说,访问到 apiserver 一般情况下就获取了集群的权限:
如何通过apiserver来进行渗透,可参考:攻击kubelet
每一个Node节点都有一个kubelet(每个节点上运行的代理)服务,kubelet监听了,,等端口。
端口,是kubelet与apiserver进行通信对主要端口, 通过该端口,kubelet可以知道当前应该处理的任务.该端口在最新版Kubernetes是有鉴权的, 但在开启了接受匿名请求的情况下,不带鉴权信息的请求也可以使用提供的能力, 在Kubernetes早期,很多挖矿木马基于该端口进行传播.
在配置文件中,若进行如下配置,则可能存在未授权访问漏洞.
/var/bin/kubulet/config/yaml
若端口存在未授权访问漏洞,我们可以直接访问/pods进行查看
根据在pods中获取的信息,我们可以在容器中执行命令
curl -Gks{namespace}/{podname}/{containername} \-d input=1 -d output=1 -d tty=1 \-d command=whoami
上述命令得到websocket地址,连接websocket得到命令结果:
使用wscat工具连接websocket
wscat -c “{websocket}” –no-check
即可得到我们执行命令的结果.
获取token
/var/run/secrets//serviceaccount
然后即可访问kube-api server,获取集群权限
curl -ks -H Authorization: Bearer \ ttps://master:6443/api/v1/namespaces/{namespace}/secrets
攻击kubelet总体步骤如下:
攻击dashboard
dashboard登陆链接如下:
界面如下:
dashboard是Kubernetes官方推出的控制Kubernetes的图形化界面.在Kubernetes配置不当导致dashboard未授权访问漏洞的情况下,通过dashboard我们可以控制整个集群。
默认情况下, dashboard是需要进行鉴权操作的,当用户开启了enable-skip-login时可以在登录界面点击Skip跳过登录进入dashboard.
通过skip登陆的dashboard默认是没有操作集群的权限,因为Kubernetes使用RBAC(Role-based access control)机制进行身份认证和权限管理,不同的serviceaccount拥有不同的集群权限。
但有些开发者为了方便或者在测试环境中会为Kubernetes-dashboard绑定cluster-admin这个ClusterRole(cluster-admin拥有管理集群的最高权限).
为Kubernetes-dashboard绑定cluster-admin 设置如下:
后通过skip登陆dashboard便有了管理集群的权限.
创建Pod控制node节点,该pod主要是将宿主机根目录挂载到容器tmp目录下。
新建一个Pod如下:
通过该容器的tmp目录管理node节点的文件
攻击etcd
Kubernetes默认使用了etcd v3来存储数据, 若能naetcd对内暴露2379端口,本地127.0.0.1可免认证访问. 其他地址要带—endpoint参数和cert进行认证。
未授权访问流程:
攻击docker remote api(Docker daemon公网暴露)
2375是docker远程操控的默认端口,通过这个端口可以直接对远程的docker 守护进程进行操作。Docker 守护进程默认监听2375端口且未鉴权.
当机器以方式启动daemon时,可以在外部机器对该机器的docker daemon进行直接操作:
docker daemon -H=0.0.0.0:2375
之后依次执行systemctl daemon-reload、systemctl restart docker
外部主机使用 即可操作暴露2375端口的主机.
因此当你有访问到目标Docker API 的网络能力或主机能力的时候,你就拥有了控制当前服务器的能力。我们可以利用Docker API在远程主机上创建一个特权容器,并且挂载主机根目录到容器.
检测目标是否存在docker api未授权访问漏洞的方式也很简单,访问路径是否含有ContainersRunning、DockerRootDir等关键字。
攻击kubectl proxy
二次开发所产生的问题
管理Kubernetes无论是使用 kubectl 或 Kubernetes dashboard 的UI功能,其实都是间接在和 APIServer 做交互.
如果有需求对k8s进行二次开发的话,大部分的开发功能请求了 APIServer 的 Rest API 从而使功能实现的。
例如:
求问统信的【有燕USwift】有啥功能?
功能介绍1. 容器云的现状与需求分析1.1. 现状分析近年来我国经济发展迅速,数字化产业不断创新,数字中国已成功举办了五次峰会,国内的IT技术成为经济发展注入新的活力。
随着云计算技术的发展,虚拟化这一词不断的被人们广泛了解。
目前云计算功能是把资源虚拟化为“云”后存储起来,为用户提供服务。
随着虚拟化技术发展,传统虚拟化技术有,比如VMWare、KVM、Xen等,目标是创建完整的虚拟机调度使用。
随着一朵朵私有云产品建立,如何实现更为高效、敏捷应用及开发,满足更为多样化企业上云要求和多样化复杂性IT架构需求。
单一云已不能满足当前IT信息技术发展需求,企业不得不进行云数量增加,以满足不同异构场景需求。
针对上云采用虚拟化技术存在主要问题如下:为了运行应用,除了部署应用本身及其依赖(通常几十MB),还得安装整个操作系统(几十GB),空间资源占用大。
虚拟机技术中服务器与应用的映射关系从一对一变为了一对多,这样会使得使得不同的虚拟机间会竞争带宽、宿主机端口资源等。
在负载较高的情况下,虚拟机的性能则会变得很差,资源利用率大大下降,导致调度分发也缓慢。
虚拟机平台有数量限制,传统云平台一般数量只有几十个。
云平台虚拟机提供的产品较为单一,每次需要针对镜像进行手动定制服务,准备时间长周期久,迭代更新缓慢。
1.2. 需求分析根据中国信通院的数据记载,2020 年全球云计算市场规模为 2083 亿美元,到 2025年将超过 6000 亿美元。
而且,中国信通院在《数字政府云原生基础设施白皮书》中表示:当前,国内需要一款成熟、可靠的面向云计算/云原生的轻量化操作系统,用于实现政府、金融、中小型企业等行业的云建设、运维、运营模式的新一轮升级,进而加速数字政府建设的全面升级。
在国际市场中,用于云计算/云原生场景的专业操作系统目前主要有 Red Hat 发布的 RHCOS 和 SUSE 发布的 Micro。
它们占据了国际云计算/云原生等边缘计算场景 60%的市场。
然而,国内传统操作系统难以完全满足快速启动、系统轻量化、集群化、应用与系统架构分离化、系统固化等需求。
因此,在云计算/云原生场景下场景下,基于传统操作系统进行定制裁剪的国内轻量化操作系统应运而生。
新的需求如下:以应用为中心,提供配置、存储、镜像仓库等完整的、容器引擎模块,支持应用的弹性伸缩、高可用、负载、均衡等特性通过可视化的流水线设计任务,对构建、测试、部署等各类任务做流程化设计,一键完成持续/交付工作可视化的编辑界面,以编辑YAML文件的方式设计复、杂的应用模板,简化应用部署难度并提升灵活性实现了完整的微服务治理体系,支持服务发现、熔断、负载均衡、配置及调度分析应用层面实现负载均衡、弹性扩容、故障自动恢复等功能,并配备监控告警、健康检查和自动化作业平台、等智能化运维工具2.细分场景针对不同的应用场景,统信云原生操作系统支持如下三个版本:(1) 精简化云原生的操作系统版本,该版本是一个最轻量化的云原生操作系统,只有 300MB 左右。
可以根据用户需求定制针对不同业务的云原生操作系统,例如可以为分布式存储、分布式数据库和私有云计算 IAAS 平台等业务定制专门针对存储、数据库和云计算 IAAS 平台的专用云原生操作系统。
(2) 在精简化云原生的操作系统版本,针对云原生 Kubernetes 的操作系统版本,该版本集成了 Kubernetes 相关组件,同时提供了 Kubernetes 的快速集群部署方案,用户只需要进行一些 IP 网络的基础配置就可以得到一个 Kubernetes集群。
(3)在精简化云原生的操作系统版本,针对 IAAS/PAAS 平台的操作系统版本,该版本集成了统信容器云管理平台,用户可以得到一个 PAAS 容器云。
3. 方案特点3.1.轻量化统信云原生操作系统基于统信服务器操作系统 V20 剔除了非核心的软件,例如GUI、包管理器、开发语言等,使得系统与应用高度分离,更极大的提升了启动速度。
根据实测数据显示,统信云原生操作系统运行时内存使用量小于 100M,资源占用率比常见的服务器操作系统小 50%。
模部署容器时,与使用其他操作系统相比,统信云原生操作系统凭借 Docker 的快速启动能力,在性能和启动速度上有更加明显的优势。
同时,统信云原生操作系统支持在裸金属中直接部署容器运行环境,无虚拟化开销,支持存储协同调度,释放硬件最大效能。
3.2.高可靠性在大规模全 CPU 架构的整机上,统信云原生操作系统采用 LTP 工具进行测试,测试结果如下:在 LTP Stress 7×24 小时高负荷条件下,无宕机;测试用例通过率超过 97%;卸荷后,在不超过 60 秒内,系统和各应用可以流畅运行。
统信云原生操作系统通过使用 rpm-ostree 机制,可以保证每次进行系统更新或补丁升级时,应用程序的运行不会被打断。
另外,如果系统更新或补丁升级失败,系统可以快速回退到上一版本。
3.3.高安全性统信云原生操作系统通过使用 rpm-ostree 的只读文件系统机制,既降低了系统被病毒感染的风险,又保证了升级、回滚时系统的完整性。
统信云原生操作系统默认关闭了 sshd 服务,裁剪了 samba 和 python 等软件包,只保留了系统运行必要的软件包和容器运行时依赖包,降低了漏洞产生等风险。
3.4.易维护性统信云原生操作系统通过提供系统监控 web 界面,方便查看系统的状态和运行负载情况。
它自带云原生容器化平台和标准化的应用开发能力,可实现整个应用集群的自动化运维。
4. 具体功能介绍4.1. 安装程序统信云原生操作系统内置了一个安装程序,通过使用定制引导模块提供的引导文件,可以自定义或使用默认方式配置系统中的 Roota 和 Rootb 等磁盘的分区大小、选择安装的软件包、导入配置文件等。
4.2. 安装程序统信云原生操作系统采用双系统分区 (dual root partition) 设计。
即两个系统分区,分别为主动分区和被动分区并在系统运行期间各司其职。
主动分区负责系统运行,被动分区负责系统升级。
系统通过集成 rpm-ostree 技术进行系统更新升级,一旦这个新版本的操作系统将被使用,现在使用的系统文件将被下线至被动分区,并在系统重启时从新版本分区启动,原来的被动分区将切换为主动分区,而之前的主动分区则被切换为被动分区,两个分区扮演的角色将相互对调。
同时在系统运行期间系统分区被设置成只读状态。
如果当系统更新出现故障或问题时也可以使用 rpm-ostree回退到上一个系统状态。
rpm-ostree 是 ostree 和 rpm 的结合,一方面提供基于 rpm 的软件包安装,一方面提供基于 ostree 的操作系统更新。
rpm-ostree 将这两种操作都视为对操作系统的更新,从而确保更新全部成功或全部失败,并允许在更新系统后回滚到更新前的状态。
这种特性视为原子升级/回滚。
4.3. 自动更新统信云原生操作系统内置一个自动更新模块,会实时检查软件仓库中是否有最新的软件包。
当统信云原生操作系统开启自动更新功能后,一旦发现有最新软件包,系统会调用 rpm-ostree 进程对集群系统进行统一更新。
4.4. 容器化应用部署统信云原生操作系统的总体设计主要面向集群化与容器化场景不在提供何软件包管理器,将所有其它应用都将作为 Docker 容器运行,从而保证各服务实现隔离、可移植以及外部管理能力。
实时上,开发者将应用部署到云基础架构上时变得日益流行。
通过容器化 (containerized) 的运算环境向应用程序提供运算资源,应用程序之间共享系统内核和资源,却互不干涉运行。
单个容器的故障能够快速的重启修复,并且容器内的应用故障不会引起整个系统的崩溃。
统信云原生操作系统不但提供了各种容器运行时如欧拉社区 isulad,还提集成了 Kubernetes,同时也提供了如中间件,数据库等容器镜像,节省了用户部署配置时间。
这种方式,保障了整个集群内 Host 节点操作系统内核和系统软件包版本的一致性,简化了由于版本问题带来的操作复杂性,使得操作系统自身的维护更加容易。
5.方案优势5.1. 快速部署,开箱即用统信云原生操作系统基于统信服务器操作系统 V20,进行二次开发,可快速部署容器中的集群环境。
例如,统信云原生操作系统可按照用户需求在一分钟内快速拉取一个 K8S 应用集群,无需单独配置应用、中间件、数据库等信息。
统信云原生操作系统还提供自动构建镜像能力,内置灰度发布,流量控制,环境隔离,应用监控诊断,零基础、开箱即用。
5.2. 多架构支持,广泛兼容统信云原生操作系统兼容主流服务器设备,适配主流中间件和数据库,并兼容适配了 余国内外主流软件包,为用户构建软硬件系统架构提供了更多的组合选择。
在硬件兼容方面,统信云原生操作系统实现了对全系列国产处理器架构(AMD64、ARM64、LoongArch 等)、主流服务器硬件的良好适配。
同时,针对其它配件,统信服务器操作系统 V20 完成了大量的兼容性适配和测试工作,包括 HBA 卡、万兆网卡、AI加速卡等。
5.3. 容器管理所有应用以容器化方式运行,保证各服务应用独立运行,无依赖冲突等问题。
提供Docker、Podman和iSula等运行时,用于创建、删除、修改、运行容器镜像。
5.4. 安全管理基于统信自身的经验和成果,积极汲取上游社区的优势并适配Kata Containers容器安全隔离技术,让容器能运行在安全且隔离的环境中。
固化文件系统,提供操作系统固化能力,通过使用Rpm-ostree的只读文件系统机制,既降低了系统被病毒感染的风险,又保证了升级、回滚时系统的完整性.默认文件系统权限见下图5.5. 轻量化管理通过剔除GUI等非核心组件,使镜像大小仅为500MB,不仅减少了系统受攻击面,提升了系统安全性,也加快了启动速度,并方便了统一运维.5.6. 高可靠通过使用Rpm-ostree机制,即结合dnf与OSTree技术,在不可变基础设施的基础上,使某些不易容器化的组件(例如驱动),能以包的形式扩展操作系统的能力,有效确保系统在更新前或者更新后都可以使用.5.7. 高稳定在LTP Stress 7 x 24小时高负荷条件下,压力测试无宕机,测试用例通过率平均超过98%。
5.8. 可定制基于不同的系统组件或容器镜像,可进行有针对性的定制,保障兼容性及原有业务的稳定性,据公报了解同时提供集成了统信容器云管理平台的镜像,可使开发人员能够创建、测试和运行应用程序,并且将它们快速部署到集群中。















