kubectl replace -f表示已替换资源,但实际上没有

时间:2019-10-26 14:35:09

标签: 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 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文件,但是,正如我所说的,终结器行不存在。

1 个答案:

答案 0 :(得分:0)

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