首页 > 解决方案 > 为什么某些 OpenShift 命令会特殊处理 PersistentVolumeClaims

问题描述

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

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

更新类型的组件Secret也可能以类似的方式和出于类似的原因进行特殊处理。我能想到的一个原因是这些组件通常可能比应用程序具有更长的生命周期。

标签: openshift

解决方案


我现在已经得出结论(也从收到的评论中),行为旨在防止意外删除亲爱的持久存储,其生命周期可能大大超过单个(版本)应用程序。

因此,我现在稍微重构了应用程序模板。到目前为止,一个模板(YAML 文件)负责创建所有组件(机密除外)。这导致了一种“不平衡”的情况,需要一个oc new-app --template=app创建应用程序,但需要两个oc deletes (oc 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


推荐阅读