当前位置:首页 > 嵌入式 > 嵌入式新闻
[导读]随着我们的客户越来越多地使用容器来运行其工作负载,设计Linux发行版以从头开始运行容器已经变得很流行。 例如,Compact Alpine Research,Redhat的CoreOS和其他操作系统用于运行容器。

随着我们的客户越来越多地使用容器来运行其工作负载,设计Linux发行版以从头开始运行容器已经变得很流行。 例如,Compact Alpine Research,Redhat的CoreOS和其他操作系统用于运行容器。

日前著名云厂商亚马逊宣布,发布自己的容器Linux发行版Bottlerocket。Bottlerocket立足于安全性,操作和规模管理,使用它能够自动管理数千个运行容器的主机。

Bottlerocket,本质上是一个新Linux发行版,用来跑容器。他内置了安全性增强功能有助于简化安全性合规性,并提供事务更新机制使使用容器编排器自动化操作系统更新并降低运营成本。

Bottlerocket目前已在GitHub创建开源组,并全开源。今天我们就一起来了解一下这个系统。

技术架构

Bottlerocket的开发源于,Amazon AWS云中客户如何使用Amazon Linux运行容器以及从运行服务(例如AWS Fargate)中学到的知识来设计和构建的。在设计中,充分对Bottlerocket进行了优化,以提高安全性,性能并简化维护流程。

最少组件、SELinux增强

Bottlerocket中只包含运行容器所需的软件,以减少安全攻击面,从而提高了安全性。除了使用标准Linux内核技术在容器化工作负载(例如控制组(cgroup),名称空间和seccomp)之间实现隔离之外,还以强制模式使用安全性增强的Linux(SELinux)来增强容器与主机操作系统之间的隔离。

Device-mapper和eBPF

Bottlerocket使用Device-mapper的verity目标(dm-verity),这是一种Linux内核功能,可提供完整性检查,以帮助防止攻击者在操作系统上持续存在威胁,例如覆盖核心系统软件。

Bottlerocket Linux内核中包括了eBPF,这减少了许多低级系统操作对内核模块的需求。

Rust开发

Bottlerocket的大部分内容都是用Rust编写的,Rust是一种现代编程语言,可帮助确保线程安全并防止与内存相关的错误,例如可能导致安全漏洞的缓冲区溢出。

隔离容器管理

Bottlerocket还通过阻止与生产服务器的管理连接来实施可进一步提高安全性的操作模型。它适用于限制对单个主机的控制的大型分布式环境。

为了进行调试,可以使用Bottlerocket的API运行"管理容器"(通过用户数据或AWS Systems Manager调用),然后使用SSH登录以进行高级调试和故障排除。admin容器是Amazon Linux 2容器映像,包含用于对Bottlerocket进行故障排除和调试的实用程序,并以提升的特权运行。它允许安装和使用标准调试工具,例如traceroute,strace,tcpdump。登录到单个Bottlerocket实例的行为旨在作为高级调试和故障排除的操作。

自动更新

Bottlerocket通过使节点的管理和对集群中节点的自动更新更加容易,从而大规模地提高了操作和可管理性。与旨在支持以各种格式打包的应用程序的通用Linux发行版不同,Bottlerocket是专门为运行容器而构建的。对其他通用Linux发行版的更新是在逐个软件包的基础上应用的,它们的软件包之间的复杂依赖关系可能导致错误,从而使流程难以实现自动化。

操作灵活

Bottlerocke以原子方式应用和回滚更新,这使得它们易于自动化,从而减少了管理开销并降低了运营成本。

Bottlerocket与容器编排器集成在一起,可以对主机进行自动修补,以提高运营成本,可管理性和正常运行时间。Bottlerocket支持与任何容器编排器集成,AWS提供的编译版本可与Amazon EKS(具有一般可用性)和Amazon ECS(具有预览功能)一起使用。

Bottlerocket入门

Bottlerocke支持不包括编排系统的,作为独立的OS运行进行开发和测试用例,官方还是建议建议将其与容器编排系统结合使用,以充分利用其所有优点。

最简单入门方法在AWS云中,使用AWS提供的Bottlerocket AMI与Amazon EKS或Amazon ECS结合使用。

可以通过使用AWS CLI查询SSM来找到这些AMI的ID,如下所示。

要查找Bottlerocket aws-k8s-1.17变体的最新AMI ID,请运行:

aws ssm get-parameter --region us-west-2 \

--name "/aws/service/bottlerocket/aws-k8s-1.17/x86_64/latest/image_id" \

--query Parameter.Value --output text

要查找Bottlerocket aws-ecs-1变体的最新AMI ID,运行:

aws ssm get-parameter --region us-west-2 \

--name "/aws/service/bottlerocket/aws-ecs-1/x86_64/latest/image_id" \

--query Parameter.Value --output text

在上述两个示例的命令,可以指定是否在另一个区域中操作改变区域,或从x86_64的改变架构arm64如果使用Graviton-动力实例。

得到AMI ID后,可以启动EC2实例并将其连接到现有的EKS或ECS群集。要使用Bottlerocket的Kubernetes变体连接到EKS集群,在启动EC2实例时,需要提供如下用户数据:

[settings.kubernetes]

api-server = "Your EKS API server endpoint here"

cluster-certificate = "Your base64-encoded cluster certificate here"

cluster-name = "Your cluster name here"

要使用Bottlerocket的ECS变体连接到ECS群集,可以提供以下用户数据:

[settings.ecs]

cluster = "Your cluster name here"

自定义编译Bottlerocket

除了使用AWS提供的Bottlerocket AMI外,还可以使用自己的更改生成定制的Bottlerocket构建。

作为前提步骤,首先创建一个Rust开发环境。建议使用安装最新的稳定Rust版本。要组织构建任务,要使用cargo-make和cargo-deny:

cargo install cargo-make

cargo install cargo-deny --version 0.6.2

Bottlerocket使用Docker来协调打包和映像构建。建议使用Docker 19.03或更高版本。需要安装Docker并以您的用户帐户运行,以便能够访问Docker API。通常可以通过将用户帐户添加到docker组来启用此功能。

要生成映像,请在更改源代码后运行:

cargo make

所有软件包将依次构建,然后编译目录中的img文件build。

接下来,要注册在Amazon EC2上使用的Bottlerocket AMI,需要设置aws-cli并运行:

cargo make ami

开源社区

Bottlerocket已经完全开源,以使用户能够对用于运行其基础架构的操作系统进行自定义(例如,与自定义协调器/内核/容器运行时集成),将其提交上游并生成自定义版本。所有设计文档,代码,构建工具,测试和文档都将托管在GitHub上。使用GitHub的错误和功能跟踪系统进行项目管理。支持可以使用标准GitHub工作流程查看并为Bottlerocket源代码做贡献。构建,发行和测试基础结构的可用性使生成包含其更改的自定义构建变得容易。ISV合作伙伴可以在客户更新到最新版本的Bottlerocket之前快速验证其软件。

Bottlerocket包括标准的开放源代码组件,例如Linux内核,容器化容器运行时等。特定于Bottlerocket的附加项着重于可靠的更新以及基于API的机制来进行配置更改和触发更新/回滚。可以选择根据Apache 2.0许可证或MIT许可证来许可Bottlerocket代码。诸如Linux内核之类的底层第三方代码仍受其原始许可证的约束。如果修改Bottlerocket,则可以根据策略准则使用"Bottlerocket Remix"来引用构建。

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

双系统将是下述内容的主要介绍对象,通过这篇文章,小编希望大家可以对双系统的相关情况以及信息有所认识和了解,详细内容如下。

关键字: 双系统 Windows Linux

安装Linux操作系统并不复杂,下面是一个大致的步骤指南,以帮助您完成安装。1. 下载Linux发行版:首先,您需要从Linux发行版官方网站下载最新的ISO镜像文件。

关键字: Linux 操作系统 ISO镜像

计算机是由一堆硬件组成的,为了有限的控制这些硬件资源,于是就有了操作系统的产生,操作系统是软件子系统的一部分,是硬件基础上的第一层软件。

关键字: Linux 操作系统 计算机

Linux操作系统是一套免费使用和自由传播的类Unix操作系统,通常被称为GNU/Linux。它是由林纳斯·托瓦兹在1991年首次发布的,并基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。Lin...

关键字: Linux 操作系统

所谓进程间通信就是在不同进程之间传播或交换信息,它是一组编程接口,让程序员能够协调不同的进程,使之能在一个操作系统里同时运行,并相互传递、交换信息;还可以让一个程序能够在同一时间里处理许多用户的需求。

关键字: Linux 进程通信 编程接口

串口通信作为一种最传统的通信方式,在工业自动化、通讯、控制等领域得到广泛使用。

关键字: Linux 串口通信 通讯

2023年11月16日: MikroElektronika(MIKROE) ,作为一家通过提供基于成熟标准的创新式硬软件产品来大幅缩短开发时间的嵌入式解决方案公司,今天宣布推出一款基于单线设备的软硬件开源解决方案Cli...

关键字: 嵌入式 Linux 操作系统

Linux是一种免费使用和自由传播的类Unix操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布。它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CP...

关键字: Linux 操作系统

本文中,小编将对嵌入式予以介绍,如果你想对它的详细情况有所认识,或者想要增进对它的了解程度,不妨请看以下内容哦。

关键字: 嵌入式 Linux

在这篇文章中,小编将为大家带来嵌入式 Linux的相关报道。如果你对本文即将要讲解的内容存在一定兴趣,不妨继续往下阅读哦。

关键字: 嵌入式 Linux
关闭
关闭