为什么某些OpenShift命令会特别对待PersistentVolumeClaims

时间:2018-11-23 14:31:29

标签: openshift

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

是否有特殊原因需要特别对待这些物品? (显然,它们仅在某些方面是特殊的;例如,应用程序模板可以很正常地与其他组件一起创建它们。)

更新类型Secret的组件也可能以类似的方式并且出于类似的原因而被特殊对待。我能想到的一个原因是这些组件的寿命通常可能比应用程序更长。

1 个答案:

答案 0 :(得分:0)

我现在已经得出结论(也从收到的评论中得出),该行为是设计使然,目的是防止意外删除亲爱的持久性存储,该持久性存储的寿命可能大大超过单个(版本)应用程序。

因此,我现在对应用程序模板进行了一些重构。到目前为止,一个模板(YAML文件)负责创建所有组件(机密除外)。这导致了一种“不平衡”情况,需要一个oc new-app --template=app来创建应用程序,而需要两个oc deleteoc delete all --selector app=...oc delete pvc --selector app=..)才能完全删除。将模板分为app.yamlyaml.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创建秘密。