使用oc cluster up搭建的OpenShift实例部署postgresql-persistent模板失败求助
解决
oc new-app部署PostgreSQL模板时镜像为空的问题 看起来你遇到的问题根源在于模板中镜像引用的命名空间配置错误。让我帮你拆解一下:
当你通过OpenShift UI创建PostgreSQL实例时,UI会自动使用模板默认的配置——也就是引用openshift命名空间下官方维护的PostgreSQL ImageStream。但你通过命令行执行时,指定了--param=NAMESPACE=airsonic-demo,这个参数会告诉模板去airsonic-demo命名空间找对应的PostgreSQL镜像流,而你的目标命名空间里并没有这个镜像流,所以模板无法解析到具体镜像,最终导致DeploymentConfig的image字段变成空值。
这里有两种可行的解决方案:
方法一:使用默认的ImageStream命名空间(推荐)
直接移除NAMESPACE参数,让模板使用默认的openshift命名空间下的官方ImageStream。执行以下命令时,记得先切换到目标命名空间,或者加上-n airsonic-demo指定部署位置:
oc new-app --template=postgresql-persistent \ -n airsonic-demo \ --param=DATABASE_SERVICE_NAME=postgresql \ --param=POSTGRESQL_USER=airsonic \ --param=POSTGRESQL_PASSWORD=**** \ --param=POSTGRESQL_DATABASE=airsonic \ --param=VOLUME_CAPACITY=30Mi \ --param=POSTGRESQL_VERSION=9.5
方法二:在目标命名空间导入镜像流
如果你确实需要在airsonic-demo命名空间中维护独立的PostgreSQL镜像流,可以先导入官方镜像:
# 切换到目标命名空间 oc project airsonic-demo # 导入PostgreSQL 9.5镜像流 oc import-image postgresql:9.5 --from=registry.redhat.io/rhscl/postgresql-95-rhel7 --confirm
导入完成后,再执行你原来的命令,模板就能找到airsonic-demo命名空间下的镜像流,正确填充镜像字段。
验证解决方案
执行命令后,你可以用以下命令检查DeploymentConfig的镜像字段是否正常:
oc get dc postgresql -o jsonpath='{.spec.template.spec.containers[0].image}' -n airsonic-demo
如果返回类似openshift/postgresql:9.5或者airsonic-demo/postgresql:9.5的结果,就说明问题已经解决了。
内容的提问来源于stack exchange,提问作者biconou
相关产品推荐
相关产品推荐

