本文档采用自动化机器翻译技术翻译。 尽管我们力求提供准确的译文,但不对翻译内容的完整性、准确性或可靠性作出任何保证。 若出现任何内容不一致情况,请以原始 英文 版本为准,且原始英文版本为权威文本。

种子映像参考

一个 SeedImage 资源允许构建一个安装介质,可以用来将 SUSE® Rancher Prime: OS Manager 安装到节点上。

它需要一个 baseImage,即一个指向 SUSE® Rancher Prime: OS Manager 安装 .iso 映像或节点容器映像的 URL,以及一个 registrationRef 引用,指向一个 MachineRegistration 资源,从中提取注册部分的 SUSE® Rancher Prime: OS Manager 配置并注入到介质中,以生成最终的 种子映像

也可以在 cloud-config 字段中注入自定义内容。支持 yip 和 cloud-init 语法。有关完整信息,请参见 Cloud Config Reference

一旦种子映像准备就绪,下载 URL 将在 .status.downloadURL 字段中共享。 它将在 cleanupAfterMinutes 分钟内可供下载(默认是 60,1 小时),之后将被删除。

retriggerBuild 设置为 true 会重新触发种子映像构建过程,而将 cleanupAfterMinutes 设置为 0 会使种子映像保留,直到 SeedImage 资源被删除。

SeedImage 资源还有一个 type 字段,可以设置为 iso,以构建 ISO,或 raw,以构建原始磁盘映像。原始磁盘映像可以直接复制到目标驱动器,并在首次启动时会自动启动到恢复分区,以展开驱动器以使用可用磁盘空间并注册节点,之后将以与 .iso 映像安装相同的方式重启。

如果未为种子映像指定 BuildContainer,则将根据默认值和 type 自动填充。

为不同平台构建种子映像是通过使用 targetPlatform 字段实现的。平台通过 os/arch 指定,例如 (linux/x86_64linux/aarch64)。默认情况下,映像将为操作员所在的平台构建。

种子映像可能会占满本地存储

种子映像保存在节点的本地存储中:请注意您同时启动的 SeedImage 资源数量,以及在禁用自动清理功能时可能遗留的那些资源 (cleanupAfterMinutes = 0),因为这可能会耗尽集群节点上的存储空间。

SeedImageSpec 参考

类型 默认值 说明

baseImage

字符串

用于构建种子映像的基础元素图像。

registrationRef

对象引用。

null

对将用于所有已安装机器进行注册的MachineRegistration的引用。

buildContainer

对象

null

用于生成可下载图像的自定义容器的设置。(请参见文档)。

cleanupAfterMinutes

整数

60

构建的种子映像将在此时间后被清理。活动下载将在图像被移除之前完成。

retriggerBuild

布尔

false

触发重新构建已清理的种子映像。

size

字符串

6Gi

指定用于存储图像的卷的大小。

type

字符串

iso

指定要构建的种子映像的类型:isoraw。(请参见文档

targetPlatform

字符串

指定构建图像的目标平台。示例:linux/x86_64`或`linux/aarch64。(请参见文档)。

cloud-config

对象

null

包含将要嵌入生成镜像中的 cloud-config 数据。(请参见文档)。

BuildContainer

可以使用 buildContainer 设置来自定义 build pod 中的 SeedImage 初始化容器。 例如,在构建自定义 Elemental 镜像时可能会出现这种情况。

buildContainer:
  name: "custom-build"
  image: my.registry.com/elemental-custom-builder:1.2.3
  command:
    - build-image
  args:
    - foo
    - bar
  imagePullPolicy: Always

请注意,容器还将额外挂载两个卷,分别位于 /iso/overlay。 种子映像构建过程期望构建容器将构建工件放置在 /iso/$(ELEMENTAL_OUTPUT_NAME)

配置文件可在以下位置获得:

  • /overlay/reg/livecd-cloud-config.yaml:可以被 elemental-register 用于注册机器的配置文件。

  • /overlay/iso-config/cloud-config.yaml:在 SeedImage.spec.cloud-config 中定义的 cloud-config

以下环境变量列表也可以在自定义构建容器中使用:

  • ELEMENTAL_DEVICEMachineRegistration.spec.config.elemental.install.device 的值。

  • ELEMENTAL_REGISTRATION_URL:MachineRegistration 的唯一 URL。

  • ELEMENTAL_BASE_IMAGE:在 SeedImage 中定义的基础镜像。

  • ELEMENTAL_OUTPUT_NAME:构建工件的预期文件名。

ISO 和 Raw 镜像

SeedImage 能够构建 isoraw 类型的镜像。 请注意,Elemental 提供两种不同类型的镜像,isocontainer 类型。请参见 ManagedOSversion’s type

在构建 iso SeedImage 时,可以使用 iso Elemental 镜像。iso 镜像包含预构建的 .iso 工件。这是官方 ISO 的默认 Elemental 交付方式,因此每次定义 SeedImage 时都不需要重新构建。

点击这里查看 ISO 种子映像示例
apiVersion: elemental.cattle.io/v1beta1
kind: SeedImage
metadata:
  name: fire-iso
  namespace: fleet-default
spec:
  type: iso
  baseImage: registry.suse.com/suse/sl-micro/6.0/baremetal-iso-image:2.1.1-3.36
  registrationRef:
    apiVersion: elemental.cattle.io/v1beta1
    kind: MachineRegistration
    name: fire-nodes
    namespace: fleet-default

或者,在构建 raw SeedImage 时,您应该使用 container Elemental 镜像。这些镜像在升级过程中也会使用(见:管理操作系统镜像,但也可以用于构建`raw` SeedImages

点击这里查看原始种子映像示例
apiVersion: elemental.cattle.io/v1beta1
kind: SeedImage
metadata:
  name: fire-raw
  namespace: fleet-default
spec:
  type: raw
  baseImage: registry.suse.com/suse/sl-micro/6.0/baremetal-os-container:2.1.1-3.29
  registrationRef:
    apiVersion: elemental.cattle.io/v1beta1
    kind: MachineRegistration
    name: fire-nodes
    namespace: fleet-default

多平台支持

Elemental 为大多数变体提供 linux/x86_64linux/aarch64 镜像。 为了确定 ManagedOSVersion 镜像是否支持两个平台,您可以验证 ManagedOSVersion.spec.metadata.platform 值。(请参见 文档)。

在定义 SeedImage 时,您可以将此值用于镜像的 targetPlatform。 如果 targetPlatform 留空,则默认使用运行 elemental-operator 的平台。

点击这里查看原始 aarch64 种子映像示例
apiVersion: elemental.cattle.io/v1beta1
kind: SeedImage
metadata:
  name: fire-raw-aarch64
  namespace: fleet-default
spec:
  targetPlatform: linux/aarch64
  type: raw
  baseImage: registry.suse.com/suse/sl-micro/6.0/baremetal-os-container:2.1.1-3.29
  registrationRef:
    apiVersion: elemental.cattle.io/v1beta1
    kind: MachineRegistration
    name: fire-nodes
    namespace: fleet-default

可下载的 URL

SeedImage 资源通过两个状态条件跟踪种子映像构建过程:

  • 准备就绪:跟踪所有执行实际构建过程所需的子资源的创建。

  • 种子映像准备就绪:跟踪子资源中构建过程的状态.

或者,也可以等待 SeedImage pod 准备就绪:

kubectl wait --for=condition=ready pod -n fleet-default fire-img

在下载任何工件之前,等待准备条件是一种最佳实践。

一旦 SeedImage 准备就绪,.status.downloadURL 将包含可下载的 URL。 请注意,URL 将使用与 Rancher 相同的端点,因此在使用自签名证书时要注意 HTTPS 验证。

kubectl get seedimage -n fleet-default fire-img -o jsonpath="{.status.downloadURL}"

镜像的校验和也可用以验证下载是否正确:

kubectl get seedimage -n fleet-default fire-img -o jsonpath="{.status.checksumURL}"