Shell kubectl replace-f说它已经替换了一个资源,但实际上它没有';T

Shell kubectl replace-f说它已经替换了一个资源,但实际上它没有';T,shell,kubernetes,sh,kubectl,Shell,Kubernetes,Sh,Kubectl,我正在编写一个shell脚本来创建和分解一个持久卷和一个持久卷声明。在拆卸时,我必须进入持久卷声明资源并删除终结器限制,使用 kubectl get pvc example-pvc -o yaml > hype.yaml && \ sed -i '/^[^#]*finalizer/c\' hype.yaml && \ sed -i '/^[^#]*pvc-protection/c\' hype.yaml && \ kubectl replac

我正在编写一个shell脚本来创建和分解一个持久卷和一个持久卷声明。在拆卸时,我必须进入持久卷声明资源并删除终结器限制,使用

kubectl get pvc example-pvc -o yaml > hype.yaml && \
sed -i '/^[^#]*finalizer/c\' hype.yaml && \
sed -i '/^[^#]*pvc-protection/c\' hype.yaml && \
kubectl replace pvc example-pvc -o yaml -f hype.yaml.
hype.yaml
文件不再具有此限制

persistentvolumeclaim/example-pvc replaced
显示,但资源本身(如通过
kubectl edit pvc example pvc
所示)保持不变,因此拒绝删除持久卷声明

你知道为什么会这样,怎么解决吗

应@Kamol Hasan的请求:

$kubectl get pvc 
NAME         STATUS        VOLUME      CAPACITY   ACCESS MODES   STORAGECLASS   AGE
example-pvc   Terminating   example-pv   10Gi       RWX

第二个请求的命令生成一个很长的.yaml文件,但是,正如我所说的,没有终结器行。

如果PVC连接到PV,那么它不会终止,除非PV也被终止。它将永远处于终止状态。更新PV,然后更新PVC。您只需将PV和PVC放在同一个yaml中,然后运行
kubectl apply-f

如果您的PVC连接到PV,则除非您的PV也被终止,否则它不会终止。它将永远处于终止状态。更新PV,然后更新PVC。您只需将PV和PVC放在同一个yaml中,然后运行
kubectl apply-f

您还可以提供
kubectl get pvc
kubectl get pvc example pvc-o yaml
的输出吗?@Kamol Hasan:试图满足您的要求。我问这个问题是因为您正在替换
example pvc
,但为什么它显示被替换的
织物pvc
。对不起,我忘了更改所有输出。您是否尝试将
--force
标志添加到
kubectl replace
?您是否也可以提供
kubectl get pvc
&
kubectl get pvc示例pvc-o yaml
的输出?@Kamol Hasan:尝试满足您的要求。我之所以这样问,是因为您正在替换
示例pvc
,但是为什么它显示的
织物pvc
已被替换。对不起,我忘了更改所有输出。您是否尝试将
--force
标志添加到
kubectl replace
?不幸的是,情况正好相反,我。E首先必须删除pvc,然后才能删除pv。不管怎样,我的问题更多地涉及到相互冲突的现象,我。E确认替换,但显示不变。不幸的是,情况正好相反,i。E首先必须删除pvc,然后才能删除pv。不管怎样,我的问题更多地涉及到相互冲突的现象,我。E确认替换,但显示不变。