首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >OpenShift oc创建失败与“已存在”

OpenShift oc创建失败与“已存在”
EN

Stack Overflow用户
提问于 2017-10-16 15:23:22
回答 3查看 13.7K关注 0票数 16

试图通过oc create创建一组基于文件的资源,如果这些资源已经存在,则失败。

根据医生来了 oc create应该:

解析配置文件并创建一个或多个OpenShift企业对象.任何现有资源都将被忽略。

(强调我的)。

我看不到这个命令的任何配置选项或全局配置选项会改变这种行为,在我看来,这似乎与docs背道而驰。

我运行的命令是oc create -f some.file

产出如下:

代码语言:javascript
运行
复制
Error from server: services 'my-app' already exists
Error from server: buildconfigs 'my-app' already exists
Error from server: imagestreams 'my-app' already exists
Error from server: deploymentconfigs 'my-app' already exists
Error from server: routes 'my-app' already exists
Error from server: secrets 'my-app' already exists

它也有一个非零的退出代码,所以它不仅仅是一个警告。我是不是漏掉了一些显而易见的东西,还是误解了文档的意思?

我只想能够应用这个文件,然后确保OpenShift项目的状态。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-10-16 22:55:13

文档的措辞可能有点糟糕。它的意思是,如果您尝试创建一个特定类型的对象,其中具有该名称的对象已经存在,则您创建新对象的尝试将被忽略。

如果尝试从相同的原始资源定义创建应用程序的多个实例,则会出现这种情况。无法使用一组原始资源定义中的oc create -f覆盖命令行中的名称,因此第二个部署是不同的。

如果要从相同的资源定义创建多个实例,则需要做的是将定义转换为模板并对名称进行参数化,以便为不同的实例传递不同的名称。这样就不会有冲突了。

另外,当您创建一组资源时,通常最好在所有资源类型中使用一个名称,而不是对每个资源类型使用不同的名称,例如,只对所有资源使用'my-app- name‘,而不是单独使用'my-buildconfig’、'my-imagestream‘。

更重要的是,您需要确保在它们上添加一个具有相同键/值的标签,这样就可以轻松地与它们一起工作,包括一次性删除它们。

您要部署的应用程序类型是什么?我可以向您指出示例模板,您可以使用它作为指南。

更新1

如果您希望能够运行oc create -f,并且在资源已经存在的情况下让它不抱怨,但是如果它们不存在,则使用oc apply -f

票数 20
EN

Stack Overflow用户

发布于 2020-06-08 10:31:03

使用oc replace怎么样?

代码语言:javascript
运行
复制
oc replace --filename file.yml --force
票数 0
EN

Stack Overflow用户

发布于 2022-11-28 21:26:30

运行oc delete <resource> <name>。示例:然后运行oc delete configmap my-configs命令。-f和"oc替换“对我不起作用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46773727

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档