如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
![加入聊天 []]([] 本指南以在OpenShift上部署ManageIQ为例,但此方法也可用于其他容器集群环境
本示例提供了在OpenShift上部署多pod ManageIQ应用的基础模板,数据库存储在持久卷中。包含集群管理任务、用户操作步骤等详细设置流程。项目最终目标是将ManageIQ应用分解为多个容器,运行在单个或多个pod中。
为避免因资源不足导致部署失败,测试环境建议最小集群规模:
其他规模考虑:
bash$ git clone https://github.com/ManageIQ/manageiq-pods.git
以普通用户操作
登录OpenShift并创建项目
注意:本部分假设您拥有普通用户权限
bash$ oc login -u <用户> -p <密码>
创建项目:
bash$ oc new-project <项目名称> \ --description="<描述>" \ --display-name="<显示名称>"
至少需要提供
<项目名称>
添加服务账户到anyuid安全上下文约束
注意:当前MIQ镜像需要root用户权限
必须将命名空间(项目)的以下服务账户添加到anyuid SCC,才能使使用这些服务账户的pod以root用户运行。
以管理员操作
bash$ oc adm policy add-scc-to-user anyuid system:serviceaccount:<您的命名空间>:miq-anyuid $ oc adm policy add-scc-to-user anyuid system:serviceaccount:<您的命名空间>:miq-orchestrator
验证服务账户已添加到anyuid SCC:
bash$ oc describe scc anyuid | grep Users Users: system:serviceaccount:<您的命名空间>:miq-anyuid,system:serviceaccount:<您的命名空间>:miq-orchestrator
添加miq-privileged服务账户到privileged安全上下文约束
注意:当前Embedded Ansible镜像需要特权pod
必须将命名空间的miq-privileged服务账户添加到privileged SCC,才能使embedded-ansible pod正常运行。
以管理员操作
bash$ oc adm policy add-scc-to-user privileged system:serviceaccount:<您的命名空间>:miq-privileged
验证miq-privileged服务账户已添加到privileged SCC:
bash$ oc describe scc privileged | grep Users Users: system:serviceaccount:<您的命名空间>:miq-privileged
配置miq-httpd服务账户
无OCI systemd hooks时(Minishift)
注意:Minishift集群未配备OCI systemd hooks,该工具用于辅助容器化systemd部署
Minishift需使用额外的SCC来弥补oci-systemd-hooks的缺失。如果集群已配备oci-systemd-hooks,请跳过此步骤。
以管理员操作
创建miq-sysadmin SCC:
bash$ oc create -f templates/miq-scc-sysadmin.yaml
将miq-httpd服务账户添加到miq-sysadmin SCC:
bash$ oc adm policy add-scc-to-user miq-sysadmin system:serviceaccount:<您的命名空间>:miq-httpd
验证miq-httpd服务账户已添加到miq-sysadmin SCC:
bash$ oc describe scc miq-sysadmin | grep Users Users: system:serviceaccount:<您的命名空间>:miq-httpd
有OCI systemd hooks时
以管理员操作
将miq-httpd服务账户添加到anyuid SCC:
bash$ oc adm policy add-scc-to-user anyuid system:serviceaccount:<您的命名空间>:miq-httpd
验证miq-httpd服务账户已添加到anyuid SCC:
bash$ oc describe scc anyuid | grep Users Users: system:serviceaccount:<您的命名空间>:miq-httpd
创建持久卷
基础(单服务器/副本)部署需要最多2个持久卷(PV)存储MIQ数据:
提供了NFS PV模板,如果已配置持久存储,请跳过此步骤。
对于NFS后端卷,请确保NFS服务器防火墙允许OpenShift集群通过2049端口(TCP)通信。
注意:PV卷推荐权限为777,所有者为root uid/gid
以管理员操作:
创建所需PV可分为两步或一步完成。可先创建初始模板,之后处理并创建PV;或一次性完成处理和PV创建。
处理模板需要三个参数,仅NFS_HOST为必填,PV_SIZE和BASE_PATH有默认值:
PV_SIZE - 默认值为应用/数据库模板的推荐PV大小(分别为5Gi/15Gi)BASE_PATH - 默认值为/exportsNFS_HOST - 无默认值 - NFS服务器的主机名或IP地址注意:如果运行Pod化PostgreSQL数据库,还需对
templates/miq-pv-db-example.yaml执行相同操作。数据库PV模板名称为manageiq-db-pv。
方法1 - 创建模板,稍后处理和创建PV
先在OpenShift中创建模板对象,之后处理模板并填写所需参数:
bash$ oc create -f templates/miq-pv-server-example.yaml # ... 其他操作 ... $ oc process manageiq-app-pv -p NFS_HOST=nfs.example.com | oc create -f -
方法2 - 处理模板并一步创建PV
bash$ oc process templates/miq-pv-server-example.yaml -p NFS_HOST=nfs.example.com | oc create -f -
验证PV创建:
bash$ oc get pv NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE miq-app 5Gi RWO Retain Available 7s miq-db 15Gi RWO Retain Available 1s
强烈建议在部署前从OpenShift节点验证NFS共享连接。
创建MIQ部署模板并验证其在项目中可用
如果现在添加SSL证书,可编辑应用模板并提供证书。有关详细信息,请查看安全路由的边缘终止部分。
之后可在OpenShift UI中修改:您的项目 -> 应用 -> 路由 -> httpd -> 操作 -> 编辑。
以普通用户操作
bash$ oc create -f templates/miq-template.yaml template "manageiq" created $ oc get templates NAME DESCRIPTION PARAMETERS OBJECTS manageiq ManageIQ appliance with persistent storage 55 (1 blank) 24
提供的模板包含可自定义的部署参数,使用oc process查看可用参数和描述:
bash$ oc process --parameters -n <您的项目> manageiq
使用默认设置从模板部署MIQ:
bash$ oc new-app --template=manageiq
使用自定义设置从模板部署MIQ:
bash$ oc new-app --template=manageiq -p DATABASE_VOLUME_CAPACITY=2Gi,POSTGRESQL_MEM_LIMIT=4Gi
尝试外部数据库部署前,请确保满足以下条件:
导入MIQ外部数据库模板:
bash$ oc create -f templates/miq-template-ext-db.yaml
启动部署,需提供数据库服务器IP,其他设置必须与远程PG服务器匹配:
bash$ oc new-app --template=manageiq-ext-db -p DATABASE_IP=<服务器IP> -p DATABASE_USER=<用户> -p DATABASE_PASSWORD=<密码> -p DATABASE_NAME=<数据库名称>
注意:首次部署可能需要几分钟,因为OpenShift正在下载必要的镜像
描述所有pod并搜索安全策略:
bash$ oc describe pods | grep -B2 "Security Policy" Name: httpd-1-5pnrz Security Policy: anyuid -- Name: manageiq-0 Security Policy: anyuid -- Name: memcached-1-l3030 Security Policy: restricted -- Name: postgresql-1-mz623 Security Policy: restricted
bash$ oc volume pods --all pods/manageiq-0 pvc/manageiq-server-manageiq-0 (allocated 2GiB) as manageiq-server mounted at /persistent secret/default-token-nw0qi as default-token-nw0qi mounted at /var/run/secrets/kubernetes.io/serviceaccount pods/postgresql-1-dufgp pvc/manageiq-postgresql (allocated 2GiB) as miq-pgdb-volume mounted at /var/lib/pgsql/data secret/default-token-nw0qi as default-token-nw0qi mounted at /var/run/secrets/kubernetes.io/serviceaccount
注意:pod处于Running状态后,请允许约5分钟时间,MIQ才能开始响应HTTPS
READY列表示副本数量及其就绪状态:
bash$ oc get pods NAME READY STATUS RESTARTS AGE httpd-1-5pnrz 1/1 Running 0 1h manageiq-0 1/1 Running 0 1h memcached-1-l3030 1/1 Running 0 1h postgresql-1-mz623 1/1 Running 0 1h
使用StatefulSet实现MIQ应用扩展,扩展前请确保有足够的PV可用。每个新副本将消耗一个PV。
示例扩展到2个副本/服务器:
bash$ oc scale statefulset manageiq --replicas=2 statefulset "manageiq" scaled $ oc get pods NAME READY STATUS RESTARTS AGE manageiq-0 1/1 Running 0 34m manageiq-1 1/1 Running 0 5m memcached-1-mzeer 1/1 Running 0 1h postgresql-1-dufgp 1/1 Running 0 1h
新创建的副本将加入现有MIQ区域。对于具有N个副本的StatefulSet,部署pod时将按{0..N-1}顺序依次创建。
注意:在Origin 1.5中,StatefulSet是beta功能,功能可能有限。
bash$ oc rsh <pod名称> bash -l
模板应已部署路由,用于MIQ pod的HTTPS访问:
bash$ oc get routes NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD httpd miq-dev.apps.example.com httpd http edge/Redirect None
查看输出并将浏览器指向报告的URL/HOST。
根据ManageIQ项目基本配置文档,现在可使用默认用户名/密码登录MIQ Web界面:admin/smartvm。
可通过OpenShift作业实现MIQ数据库的备份与恢复。需注意,需要额外的PV,其容量足以存储所需数量的备份副本。
模板中提供了示例备份PV,在尝试导入前请根据站点要求调整默认设置。
以管理员用户操作
bash$ oc create -f miq-pv-backup-example.yaml
以普通用户操作
bash$ oc create -f miq-backup-pvc.yaml
备份和恢复作业示例期望PVC命名为"manageiq-backup"和"manageiq-postgresql"以正确设置卷:
bash$ oc get pvc NAME STATUS VOLUME CAPACITY ACCESSMODES AGE manageiq-backup Bound pv05 15Gi RWO 1d manageiq-postgresql Bound pv12 15Gi RWO 1d manageiq-server-manageiq-0 Bound pv01 5Gi RWO 1d
bash$ oc get secret -o yaml --export=true > secrets.yaml $ oc get pvc -o yaml --export=true > pvc.yaml
MIQ密钥对象包含部署的重要数据(如数据库加密密钥和其他凭据),请备份并将对象保存在安全位置。
可在数据库在线时启动备份,作业将在创建后立即尝试运行:
bash$ oc create -f miq-backup-job.yaml
备份作业将连接到MIQ数据库pod并执行整个数据库集群的完整二进制备份,基于pg_basebackup。
bash$ oc get pods NAME READY STATUS RESTARTS AGE manageiq-backup-rrkw5 0/1 Completed 0 1h $ oc logs manageiq-backup-rrkw5 == Starting MIQ DB backup == Current time is : Thu Jul 27 02:30:44 UTC 2017 transaction log start point: 0/2C000028 on timeline 1 86554/86554 kB (100%), 1/1 tablespace transaction log end point: 0/2C01FBF8 pg_basebackup: base backup completed Sucessfully finished backup : Thu Jul 27 02:30:57 UTC 2017 Backup stored at : /backups/miq_backup_20170727T023044
数据库恢复必须在离线状态下进行,请先缩容,否则可能导致数据损坏:
bash$ oc scale statefulset manageiq --replicas=0 $ oc scale dc/httpd --replicas=0 $ oc scale dc/postgresql --replicas=0
恢复过程注意事项:
bash$ oc create -f miq-restore-job.yaml
bash$ oc get pods NAME READY STATUS RESTARTS
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。

来自真实用户的反馈,见证轩辕镜像的优质服务