rancher/elemental 构建不可变IOS(一)

2024-04-29 22:12

本文主要是介绍rancher/elemental 构建不可变IOS(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、什么是elemental

Elemental 是 Rancher 的一个变种,专注于提供一个更轻量级的 Kubernetes 发行版。它旨在提供简化的部署和管理体验,同时保持 Kubernetes 的灵活性和强大功能。Elemental 通常针对较小的部署场景或资源受限的环境,例如测试环境、开发环境或边缘计算场景。通过 Elemental,用户可以更快速地启动和运行 Kubernetes 集群,并使用 Rancher 提供的丰富功能来管理它们。

二、官网

Elemental - Immutable Linux for Rancher

三、使用要求

        #参考官网要求

  • 配置了 Rancher 服务器(v2.7.0 或更高版本)(设置了 server-url)
    • 要配置 Rancher,server-url请查看Rancher 文档
  • 具有 TPM 2.0 的机器(裸机或虚拟化)
    • 提示 1:Libvirt 允许为虚拟机设置虚拟 TPM,示例如下
    • 提示 2:您可以在此处缺少 TPM 2.0 模块示例的裸机上启用 TPM 模拟
    • 提示 3:确保您在 x86-64 上使用 UEFI(而不是 BIOS),否则 ISO 将无法启动
    • 提示 4:建议最小卷大小为 25 GB。有关更多详细信息,请参阅Elemental Teal 分区表
    • 提示 5:CPU 和 RAM 要求取决于安装的 Kubernetes 版本,例如K3s或RKE2
  • Helm 包管理器 ( Helm )
  • 对于 ARM (aarch64) - 一张 SD 卡(32 GB 或更大,必须很快- 40MB/s 写入速度可以接受)和一个用于安装的 USB 记忆棒

四、部署测试例子

一、使用helm部署elemental-operator

我们将使用 Helm 包管理器将元素操作符图表安装到我们的集群中。

helm upgrade --create-namespace -n cattle-elemental-system --install elemental-operator-crds oci://registry.suse.com/rancher/elemental-operator-crds-chart
helm upgrade --create-namespace -n cattle-elemental-system --install elemental-operator oci://registry.suse.com/rancher/elemental-operator-chart

现在,几秒钟后,您应该会看到操作员 pod 出现在cattle-elemental-system命名空间上:

kubectl get pods -n cattle-elemental-system
NAME                                  READY   STATUS    RESTARTS   AGE
elemental-operator-64f88fc695-b8qhn   1/1     Running   0          16s

二、创建4个资源对象

        1.selector.yaml

apiVersion: elemental.cattle.io/v1beta1
kind: MachineInventorySelectorTemplate
metadata:name: fire-machine-selectornamespace: fleet-default
spec:template:spec:selector:matchExpressions:- key: elementoperator: Invalues: [ 'fire' ]

        2.cluster.yaml

kind: Cluster
apiVersion: provisioning.cattle.io/v1
metadata:name: volcanonamespace: fleet-default
spec:rkeConfig:machineGlobalConfig:etcd-expose-metrics: falseprofile: nullmachinePools:- controlPlaneRole: trueetcdRole: truemachineConfigRef:apiVersion: elemental.cattle.io/v1beta1kind: MachineInventorySelectorTemplatename: fire-machine-selectorname: fire-poolquantity: 1unhealthyNodeTimeout: 0sworkerRole: truemachineSelectorConfig:- config:protect-kernel-defaults: falseregistries: {}kubernetesVersion: v1.24.8+k3s1

        #这里说一下:

                 1.selector.yaml与cluster.yaml是为Rancher集群管理服务的资源对象,并且为elemental自定义IOS的文件相关。

                2.验证-哪怕我现在并没有使用自定义的ISO文件去创建节点主机,依然有集群存在在Rancher上

                

        3.registration.yaml

        #这是重点,这个文件为自定义iso镜像内容的文件。

apiVersion: elemental.cattle.io/v1beta1
kind: MachineRegistration
metadata:name: fire-nodesnamespace: fleet-default
spec:config:cloud-config:users:- name: rootpasswd: rootelemental:install:reboot: truedevice: /dev/sdadebug: truemachineInventoryLabels:element: firemanufacturer: "${System Information/Manufacturer}"productName: "${System Information/Product Name}"serialNumber: "${System Information/Serial Number}"machineUUID: "${System Information/UUID}"

        #其中config/cloud-config: 为你自定义给OS添加的内容,你可以配置自定义网络,自定义主机名。下面提供一个自定义静态网络的配置参考。其余请参考官网文档-Elemental - Immutable Linux for Rancher。

apiVersion: elemental.cattle.io/v1beta1
kind: MachineRegistration
metadata:name: fire-nodesnamespace: fleet-default
spec:config:cloud-config:users:- name: rootpasswd: rootwrite_files:- content: |[connection]id=fixed-ipuuid=9039a243-452d-4f01-9424-78648404d50btype=ethernet[ipv4]address1=192.168.91.103/24gateway=192.168.91.254dns=8.8.8.8;method=manualpath: /etc/NetworkManager/system-connections/fixed-ip.nmconnectionpermissions: "0600"elemental:install:reboot: truedevice: /dev/sdadebug: truemachineInventoryLabels:element: firemanufacturer: "${System Information/Manufacturer}"productName: "${System Information/Product Name}"serialNumber: "${System Information/Serial Number}"machineUUID: "${System Information/UUID}"

        其中:write_files:为你可以任意将文件传入到OS的途径。网络配置支持使用nm-settings-keyfile 格式,官网如下:nm-settings-keyfile: NetworkManager Reference Manual

        4.seedimage.yaml 

        #这也是重点,这个yaml为使用你自定义的配置文件自动打包构建你的自定义ISO镜像。

apiVersion: elemental.cattle.io/v1beta1
kind: SeedImage
metadata:name: fire-imgnamespace: fleet-default
spec:baseImage: registry.suse.com/rancher/elemental-teal-iso/5.4:1.2.2registrationRef:apiVersion: elemental.cattle.io/v1beta1kind: MachineRegistrationname: fire-nodesnamespace: fleet-default

        #这里使用的根镜像是SLE Micro for Rancher,就是Suse的边缘场景操作系统。非常轻量。

        5.构建ISO

kubectl apple -f ./

 

        会在fleet-default下创建一个POD,来帮助你构建和打包你的镜像。

 

        可以看到第一个容器帮助你下载拉取,第二个容器帮助你构建打包,第三个容器负责让你下载。

        6.下载构建好的ISO

kubectl get seedimage -n fleet-default -o yaml

        #等待POD 构建以及出现下载的地址

 

        #下载iso: 

kubectl wait --for=condition=ready pod -n fleet-default fire-img
wget --no-check-certificate `kubectl get seedimage -n fleet-default fire-img -o jsonpath="{.status.downloadURL}"` -O elemental-teal.x86_64.iso

         7.查看获取到的iso

        8.但是有个问题是你必须要有TPM模块才可以使用。故选择使用Vsphere-Fusion来测试

                1.创建一台虚拟机,挂载ISO.

                2.启动电源测试

        镜像文件挂载正常,启动正常。 

这篇关于rancher/elemental 构建不可变IOS(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/947285

相关文章

嵌入式QT开发:构建高效智能的嵌入式系统

摘要: 本文深入探讨了嵌入式 QT 相关的各个方面。从 QT 框架的基础架构和核心概念出发,详细阐述了其在嵌入式环境中的优势与特点。文中分析了嵌入式 QT 的开发环境搭建过程,包括交叉编译工具链的配置等关键步骤。进一步探讨了嵌入式 QT 的界面设计与开发,涵盖了从基本控件的使用到复杂界面布局的构建。同时也深入研究了信号与槽机制在嵌入式系统中的应用,以及嵌入式 QT 与硬件设备的交互,包括输入输出设

安卓链接正常显示,ios#符被转义%23导致链接访问404

原因分析: url中含有特殊字符 中文未编码 都有可能导致URL转换失败,所以需要对url编码处理  如下: guard let allowUrl = webUrl.addingPercentEncoding(withAllowedCharacters: .urlQueryAllowed) else {return} 后面发现当url中有#号时,会被误伤转义为%23,导致链接无法访问

Retrieval-based-Voice-Conversion-WebUI模型构建指南

一、模型介绍 Retrieval-based-Voice-Conversion-WebUI(简称 RVC)模型是一个基于 VITS(Variational Inference with adversarial learning for end-to-end Text-to-Speech)的简单易用的语音转换框架。 具有以下特点 简单易用:RVC 模型通过简单易用的网页界面,使得用户无需深入了

maven 编译构建可以执行的jar包

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「stormsha的主页」👈,「stormsha的知识库」👈持续学习,不断总结,共同进步,为了踏实,做好当下事儿~ 专栏导航 Python系列: Python面试题合集,剑指大厂Git系列: Git操作技巧GO

嵌入式Openharmony系统构建与启动详解

大家好,今天主要给大家分享一下,如何构建Openharmony子系统以及系统的启动过程分解。 第一:OpenHarmony系统构建      首先熟悉一下,构建系统是一种自动化处理工具的集合,通过将源代码文件进行一系列处理,最终生成和用户可以使用的目标文件。这里的目标文件包括静态链接库文件、动态链接库文件、可执行文件、脚本文件、配置文件等。      我们在编写hellowor

【iOS】MVC模式

MVC模式 MVC模式MVC模式demo MVC模式 MVC模式全称为model(模型)view(视图)controller(控制器),他分为三个不同的层分别负责不同的职责。 View:该层用于存放视图,该层中我们可以对页面及控件进行布局。Model:模型一般都拥有很好的可复用性,在该层中,我们可以统一管理一些数据。Controlller:该层充当一个CPU的功能,即该应用程序

利用命令模式构建高效的手游后端架构

在现代手游开发中,后端架构的设计对于支持高并发、快速迭代和复杂游戏逻辑至关重要。命令模式作为一种行为设计模式,可以有效地解耦请求的发起者与接收者,提升系统的可维护性和扩展性。本文将深入探讨如何利用命令模式构建一个强大且灵活的手游后端架构。 1. 命令模式的概念与优势 命令模式通过将请求封装为对象,使得请求的发起者和接收者之间的耦合度降低。这种模式的主要优势包括: 解耦请求发起者与处理者

Jenkins构建Maven聚合工程,指定构建子模块

一、设置单独编译构建子模块 配置: 1、Root POM指向父pom.xml 2、Goals and options指定构建模块的参数: mvn -pl project1/project1-son -am clean package 单独构建project1-son项目以及它所依赖的其它项目。 说明: mvn clean package -pl 父级模块名/子模块名 -am参数

JAVA用最简单的方法来构建一个高可用的服务端,提升系统可用性

一、什么是提升系统的高可用性 JAVA服务端,顾名思义就是23体验网为用户提供服务的。停工时间,就是不能向用户提供服务的时间。高可用,就是系统具有高度可用性,尽量减少停工时间。如何用最简单的方法来搭建一个高效率可用的服务端JAVA呢? 停工的原因一般有: 服务器故障。例如服务器宕机,服务器网络出现问题,机房或者机架出现问题等;访问量急剧上升,导致服务器压力过大导致访问量急剧上升的原因;时间和

利用Django框架快速构建Web应用:从零到上线

随着互联网的发展,Web应用的需求日益增长,而Django作为一个高级的Python Web框架,以其强大的功能和灵活的架构,成为了众多开发者的选择。本文将指导你如何从零开始使用Django框架构建一个简单的Web应用,并将其部署到线上,让世界看到你的作品。 Django简介 Django是由Adrian Holovaty和Simon Willison于2005年开发的一个开源框架,旨在简