
如果您不熟悉 BootC,它提供了一种令人印象深刻的方法,可以直接从单个 Containerfile 或预先存在的 BootC 支持镜像将应用程序部署到裸机。
一个“可启动”镜像,也称为 BootC 容器镜像,允许您使用一个简单的容器镜像来创建一个完整的可启动操作系统,无论是 raw
格式的虚拟机镜像还是用于 USB 安装的 iso
!
此功能非常适合各种用途,从简单的 HTTP 服务器到为全栈应用程序提供支持的操作系统。
在本教程中,我们将部署一个名为 MicroShift 的 OpenShift 衍生版本,它是 OpenShift 的边缘优化版本,专为资源受限配置上的单节点设置而设计。可以将其视为 OpenShift 的紧凑版本!
整个过程都通过一个单独的 Containerfile(或 Dockerfile)来完成。
开始本教程前,请确保您已具备:
构建 BootC 容器镜像
首先,我们将构建初始的 BootC 容器镜像,稍后我们将用它来创建一个可启动的操作系统。
登录 Red Hat 镜像仓库
在继续之前,请从目录中下载 Red Hat Authentication 扩展,以启用对 Red Hat 镜像仓库的访问。

然后登录您的帐户。

下载您的 OpenShift 混合云 pull secret
下载您的拉取凭证。
它会以 pull-secret.txt
的形式下载。请将其存放在安全的位置。
创建 Containerfile(或 Dockerfile)
Containerfile 对于创建可启动镜像至关重要。
需要注意的是,在构建过程中,我们将提供*一个*参数,即 PASSWORD,以便通过 redhat
用户名登录虚拟机。
我们将使用 MicroShift 镜像模式 GitHub 文档中的 Containerfile。
将上述链接中的 Containerfile 复制到一个新文件中,我们将使用 Podman Desktop 来构建它。
$ curl https://raw.githubusercontent.com/openshift/microshift/main/docs/config/Containerfile.bootc-rhel9 -o Containerfile
使用 Podman Desktop 构建
选择 Containerfile 并在 Podman Desktop 中构建它。
您需要提供:
- 在 Containerfile 中创建的
redhat
用户的密码。
在构建页面的参数中以 USER_PASSWD
的形式传递该参数。

使用 BootC Podman Desktop 扩展构建可启动镜像
从扩展目录安装 BootC Podman Desktop 扩展。

构建镜像
现在,从我们的容器镜像创建可启动镜像!
点击导航栏上新的 BootC 图标,然后转到构建页面。

构建完成后,您会在仪表盘上看到一条确认信息。
接下来,选择我们构建的镜像,并为测试可启动镜像选择一个合适的输出格式。对于使用 QEMU 和其他虚拟机软件(如 libvirt
)进行本地测试,RAW 是一个常见的选择。
测试镜像
探索各种测试镜像的方法,可以使用本地软件或云平台。以下是使用 RAW 输出的可启动镜像的一些常见步骤。
运行虚拟机
本指南不涵盖所有运行虚拟机的方法,但以下是最常见的几种:
- Windows (.vhd)
- macOS Silicon (.raw)
- Linux (.raw)
-
构建时,选择 .raw
选项和 ARM64 架构。
-
安装 QEMU
- 导航到包含您的
disk.raw
文件的目录。
- 运行
qemu
命令
$ qemu-system-aarch64 \
-m 8G \
-M virt \
-accel hvf \
-cpu host \
-smp 4 \
-serial mon:stdio \
-nographic \
-netdev user,id=mynet0,hostfwd=tcp::2222-:22 \
-device e1000,netdev=mynet0 \
-drive file=/opt/homebrew/share/qemu/edk2-aarch64-code.fd,format=raw,if=pflash,readonly=on \
-drive file=disk.raw,if=virtio,cache=writethrough,format=raw
- 验证连接
通过上述 qemu
命令,本地已在 :2222 端口上打开了一个端口,用于 SSH 转发到可启动镜像。您现在可以通过以下方式访问您的虚拟机:
$ ssh redhat@localhost -p 2222
-
构建时,选择 .raw
选项和 AMD64 架构。
-
安装 QEMU.
-
导航到包含您的 disk.raw
文件的目录。
- 运行
qemu
命令
$ qemu-system-x86_64 \
-m 8G \
-cpu Broadwell-v4 \
-nographic \
-netdev user,id=mynet0,hostfwd=tcp::2222-:22 \
-device e1000,netdev=mynet0 \
-snapshot disk.raw
- 验证连接
通过上述 qemu
命令,本地已在 :2222 端口上打开了一个端口,用于 SSH 转发到可启动镜像。您现在可以通过以下方式访问您的虚拟机:
$ ssh redhat@localhost -p 2222
配置和验证 MicroShift
启动虚拟机后,您现在可以配置 MicroShift 并验证连接。
复制 OpenShift 拉取凭证
在继续验证 OpenShift 之前,必须先将 OpenShift 拉取凭证复制过去,以便 MicroShift 可以下载需要 Red Hat 镜像仓库认证的容器镜像。
下面我们将把您之前下载的 OpenShift 凭证复制到虚拟机中。
-
下载您的 OpenShift 拉取凭证,它会以 pull-secret.txt
的形式下载。
-
使用 scp
复制到虚拟机
$ scp -P 2222 pull-secret.txt redhat@localhost:~/
- 通过 SSH 登录到虚拟机
$ ssh redhat@localhost -p 2222
- 将凭证移动到
/etc/crio/openshift-pull-secret
$ sudo mv pull-secret.txt /etc/crio/openshift-pull-secret
- 重启
microshift
服务
$ sudo systemctl restart microshift
列出 Pod
下面我们将通过 SSH 登录到虚拟机,并确认 MicroShift 正在正确部署 Pod。
- 通过 SSH 登录到虚拟机
$ ssh redhat@localhost -p 2222
- 将生成的
kubeconfig
文件复制到 ~/.kube/config
$ mkdir -p ~/.kube
$ sudo cp /var/lib/microshift/resources/kubeadmin/kubeconfig ~/.kube/config
$ sudo chown redhat ~/.kube/config
- 使用
oc
或 kubectl
验证 Pod 是否正在运行
$ kubectl get pods -A
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system csi-snapshot-controller-856bb8b9bc-9n7lj 1/1 Running 1 3d23h
kube-system csi-snapshot-webhook-7c64d4d4d7-98v6l 1/1 Running 1 3d23h
openshift-dns dns-default-n2td4 2/2 Running 2 3d23h
openshift-dns node-resolver-7cslg 1/1 Running 1 3d23h
openshift-ingress router-default-7cbc67954b-nqqc6 1/1 Running 1 3d23h
openshift-ovn-kubernetes ovnkube-master-zcqw5 4/4 Running 5 3d23h
openshift-ovn-kubernetes ovnkube-node-crnn9 1/1 Running 2 3d23h
openshift-service-ca service-ca-6799f567-k7lsc 1/1 Running 1 3d23h
使用 Podman Desktop 验证 MicroShift
或者,您可以将 MicroShift 配置文件复制到本地计算机,并在 Podman Desktop 上进行远程测试。
- 在您的本地计算机上,如果
.kube
目录不存在,请创建它。
- 将远程
kubeconfig
文件复制到本地配置文件
在 MicroShift 中,一个 kubeconfig
文件会自动创建在 /var/lib/microshift/resources/kubeadmin/kubeconfig
。
将该文件复制到您的本地系统
scp -P 2222 redhat@localhost:/var/lib/microshift/resources/kubeadmin/kubeconfig ~/config
如果您已经有一个 ~/.kube/config
文件,请将 config
的内容复制到 ~/.kube/config
文件中。
- 使用 Podman Desktop 验证 MicroShift 集群
Podman Desktop 将自动检测您的 .kube/config
文件。
注意:您可能需要修改您的 .kube/config
文件,以反映您集群的正确域名或 IP 地址。

存储配置
默认情况下,存储配置需要一个 LVM 分区,并且 LVMS 存储管理器将不会部署。这是由于构建 RAW 镜像时存在限制。要使用具有存储功能的 OpenShift 工件,需要一个替代的非本地存储解决方案。添加 LVM 支持的功能已在此拉取请求中跟踪。
本教程提供了使用 Podman Desktop 和 BootC 扩展部署可启动 MicroShift 镜像的分步指南。通过利用 BootC 和 Podman 等工具,我们简化了创建轻量级但功能齐全的 OpenShift 环境的过程,该环境适用于单节点边缘计算场景。
感谢您的跟随,祝您部署愉快!