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.启动电源测试

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

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

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

相关文章

数据结构链表

数据结构链表 链表 1)链表的概念及结构: 链表是一种物理存储结构上非连续存储结构,数据元素的逻辑顺序是通过链表中的引用链接次序实现的。 2)实际中链表的结构非常多样,以下情况组合起来就有8种链表结构: 单向、双向…

信息系统项目管理师——项目工具

直方图散点图蒙特卡洛分析 PERT分析 因果图 控制图 帕累托图 持续改进 偏差分析 鱼骨图 工作绩效报告可以包含挣值图表和信息、趋势线和预测、储备燃尽图、缺陷直方图、合同绩效信息以及风险概述信息。可表现为仪表指示图、热点报告、信号灯图或其他形式。 干系人参与度评估矩…

服务器数据恢复—ESXi虚拟机中MySQL数据库数据恢复案例

服务器数据恢复环境: 某品牌EVA某型号存储中部署VMware ESXi虚拟化平台,数据盘(精简模式)快照数据盘,虚拟机中有mysql数据库。 服务器故障: 机房意外断电导致该存储中的一台VMware虚拟机无法启动&#xff0…

【iOS】方法交换(Method Swizzling)

文章目录 前言一、原理与注意用法注意要点Method Swizzing涉及的相关API 二、应用场景与实践1.统计VC加载次数并打印2.防止UI控件短时间多次激活事件3.防崩溃处理:数组越界问题4.防KVO崩溃 总结 前言 上文讲到了iOS的消息发送机制,在消息机制中我们了解…

【3dmax笔记】023:阵列工具(移动+一维+二维+三维)

文章目录 一、阵列工具二、案例演示 一、阵列工具 【阵列】命令将显示【阵列】对话框,使用该对话框可以基于当前选择创建对象阵列。 菜单栏:【工具】菜单 > 【阵列】 二、案例演示 首先,画一个物体,如茶壶,如下图…

鸿蒙 DevEcoStudio:组件实例(页面及组件生命周期函数)

【使用onPageshow等生命周期函数】 在entry/src/main/ets/pages路径下创建Page1.ets: import router from ohos.router Entry Component struct Page1 {State message: string Hello WorldState show: booleantrueaboutToAppear(){console.log(Page1组件创建实例)}aboutToDisa…

中国教育界的泰斗级人物颜廷利:一位在多个领域具有深远影响的学者

**中国教育界的泰斗级人物颜廷利教授是一位在多个领域都有着深远影响的学者**。 山东籍文化名人颜廷利教授是一位世界级的哲学大师,他在学术界拥有多项创造性的成果。他不仅是国际十大姓名学专家排行榜上的佼佼者,颜廷利还被评为颜氏家族十大杰出名人教育…

在Windows 11环境下,生成自签名证书

在Windows 11环境下&#xff0c;使用上述命令生成自签名证书时&#xff0c;需要注意的是Windows命令行不直接支持<(command)这样的进程替换语法。因此&#xff0c;您需要稍微调整方法来实现相同的目标。下面是分步骤的操作指南&#xff1a; ### 1. 安装OpenSSL 确保您已经…

python分析预测退休后养老金金额

欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一.前言 二.代码 三.总结 一.前言 养老金,也称为退休金或退休费,是一种主要的社会养老保险待遇。它旨在保障职工退休后的基本生活需要,根据劳动者对社会所作的贡献和所具备的享受养老保险资格或退休条件,按月或一次…

【Word】写论文,参考文献涉及的上标、尾注、脚注 怎么用

一、功能位置 二、脚注和尾注区别 1.首先脚注是一个汉语词汇&#xff0c;论文脚注就是附在论文页面的最底端&#xff0c;对某些内容加以说明&#xff0c;印在书页下端的注文。脚注和尾注是对文本的补充说明。 2.其次脚注一般位于页面的底部&#xff0c;可以作为文档某处内容的…

从招标到合作:如何筛选与企业需求匹配的6sigma咨询公司

在市场竞争激烈的环境中&#xff0c;领军企业需要不断改进和创新才能在行业中保持竞争优势。为了解决产品质量、生产流程和客户满意度等方面的挑战&#xff0c;许多企业选择与6sigma咨询公司合作&#xff0c;推动企业的全面变革和持续发展。下面是企业在选择合作伙伴时通常会经…

GPT-3

论文&#xff1a;Language Models are Few-Shot Learners&#xff08;巨无霸OpenAI GPT3 2020&#xff09; 摘要 最近的工作表明&#xff0c;通过对大量文本进行预训练&#xff0c;然后对特定任务进行微调&#xff0c;在许多NLP任务和基准方面取得了实质性进展。虽然这种方法…

【LLama】Llama3 的本地部署与lora微调(基于xturn)

系列课程代码文档&#xff08;前2节课可跳过&#xff09;&#xff1a;https://github.com/SmartFlowAI/Llama3-Tutorial 课程视频&#xff1a;https://space.bilibili.com/3546636263360696/channel/series XTuner &#xff1a;https://github.com/InternLM/xtuner/blob/main/R…

如何完美解决Outlook大文件传送问题,提升办公协作效率?

在日常工作中&#xff0c;邮件是一种常用的通信方式&#xff0c;经常用来发送各类文件&#xff0c;比如报告和文档、合同和协议、财务报表、营销资料、设计文件等。但有时文件会比较大&#xff0c;因此Outlook大文件传送时&#xff0c;会遇到附件大小受限的情况。常用的解决发送…

Leetcode—724. 寻找数组的中心下标【简单】

2024每日刷题&#xff08;129&#xff09; Leetcode—724. 寻找数组的中心下标 实现代码 class Solution { public:int pivotIndex(vector<int>& nums) {int sum accumulate(nums.begin(), nums.end(), 0);int prefix 0;for(int i 0; i < nums.size(); i) {i…

ai写作工具推荐:如何用AI人工智能进行写作

AI写作工具&#xff1a;提升创作效率的秘密武器 在科技日新月异的今天&#xff0c;人工智能&#xff08;AI&#xff09;已经渗透到我们生活的方方面面&#xff0c;包括写作。AI写作工具&#xff0c;就是利用人工智能技术&#xff0c;帮助我们进行文本生成、语言优化等工作的工…

[综合应用]dns nfs httpd php mysql

第一步&#xff1a;搭建三台主机 主机名称 Ip地址 角色 503A 192.168.68.10 Mysql从 503B 192.168.68.11 Mysql从&#xff0c;nfs服务端&#xff0c;dns服务端 503Cmysql 192.168.68.12 MySQL主&#xff0c;web客户端 第二步&#xff1a;在503B上配置DNS 2.1 下载…

Hbase 常用shell操作

目录 1、创建表 1.1、启动HBase Shell 1.2、创建表 1.3、查看表 1.4、删除表 2、插入数据 2.1、put命令 3、查看数据 3.1、get命令 3.2、查询数据中文显示 4、更新数据 4.1、使用put来更新数据 5、删除数据 5.1、delete命令 5.2、删除指定列的数据 5.3、delete…

Django开发实战之登录用户鉴权登录界面实现

Django自带的鉴权系统非常的安全&#xff0c;大家可以放心使用&#xff0c;那么如何使用呢&#xff1f; 1、首先需要检查settings文件种的INSTALLED_APPS&#xff0c;有没有这两部分内容&#xff1a; 2、检查中间件&#xff0c;比如这两个中间件&#xff0c;一个是用于登录&a…

如何选择最佳的机器学习分类模型?基于使用贝叶斯和异步连续减半算法(ASHA)优化的最佳分类模型自动选择方法

目录 一、主要内容&#xff1a; 二、贝叶斯优化算法&#xff1a; 三、异步连续减半优化算法&#xff1a; 四、代码运行效果&#xff1a; 五、代码下载&#xff1a; 一、主要内容&#xff1a; 对于分类问题&#xff0c;不同机器学习模型分类的效果不同&#xff0c;而且在同…