为什么一些OpenShift命令会特别处理PersistentVolumeClaims

为什么一些OpenShift命令会特别处理PersistentVolumeClaims,openshift,Openshift,为什么OpenShift 3.10中的作用域oc get all(和oc delete all--all)也不包括类型为PersistentVolumeClaim的组件?需要单独的oc get pvc(和oc delete pvc--all) 是否有特殊的理由来对待这些特殊的物体?(显然,它们只是在某些方面有特殊之处;例如,应用程序模板可以非常正常地与其他组件一起创建它们。) Update类型为Secret的组件也可能以类似的方式和原因进行特殊处理。我能想到的一个原因是,这些组件的使用寿命通常比

为什么OpenShift 3.10中的作用域
oc get all
(和
oc delete all--all
)也不包括类型为
PersistentVolumeClaim
的组件?需要单独的
oc get pvc
(和
oc delete pvc--all

是否有特殊的理由来对待这些特殊的物体?(显然,它们只是在某些方面有特殊之处;例如,应用程序模板可以非常正常地与其他组件一起创建它们。)

Update类型为
Secret
的组件也可能以类似的方式和原因进行特殊处理。我能想到的一个原因是,这些组件的使用寿命通常比应用程序长。

我现在已经得出结论(也是从收到的评论中得出的结论),即行为是为了防止意外删除寿命可能大大超过单个(版本)的昂贵持久性存储应用程序

因此,我现在对应用程序模板进行了一些重构。到目前为止,只有一个模板(YAML文件)负责创建所有组件(机密除外)。这导致了一种“不平衡”的情况,需要一个
oc-new-app--template=app
来创建应用程序,但需要两个
oc-delete
s(
oc-delete all--selector-app=…
oc-delete-pvc--selector-app=…
)来完全删除。将模板拆分为
app.yaml
yaml.yaml
后,新的“平衡”安排如下:

# create app (including its persistent storage)
oc new-app --template=app
oc new-app --template=pvc

# delete app (including its persistent storage)
oc delete all --selector app=...
oc delete pvc --selector app=...

我仍然在这个范围之外保留秘密,并使用
oc create secret
预先创建它们。

all
映射到所有组件类型将是危险的,很好,它不会这样做,它只引用了少数组件类型。另外,您应该真正使用
ocdeleteall--all
,因为删除您不想删除的内容的风险太大了。学习使用标签,然后在删除内容时使用选择器。看,哎呀,那应该是“你不应该真的使用
oc delete all--all
”@GrahamDumpleton是的,我实际上是在我想删除所有内容的情况下使用
oc delete all--selector app=
。这不是(完全?)OpenShift的错。这是从库伯内特斯“继承”来的。很少有讨论,像这里这样-。我记得在
oc get all,
oc delete all,
--选择器=-n