存储

## pv ### 简述 Kubernetes PV 生命周期内的阶段? 答:某个 PV 在生命周期中可能处于以下 4 个阶段(Phaes)之一。 Available:可用状态,还未与某个 PVC 绑定。 Bound:已与某个 PVC 绑定。 Released:绑定的 PVC 已经删除,资源已释放,但没有被集群回收。 Failed:自动资源回收失败 ### 问题1: K8S PV一直Released状态的解决办法 说明 我们在修改PV的容量的时候,可能会想删除掉PVC,再进行重新创建,不就可以重新绑定之前的PV了, 可事实并不会,这时候的PV会变成Released状态,而PVC只能和Available 状态的 PV 进行绑定。 这时候需要管理员对PV进行修改,删除 claimRef 对 PVC 的引用, 使PV变成Available状态。 注意数据的备份与保存。 ``` kubectl get pv -n dev # 结果 NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE data-pv-dev 5Gi RWX Retain Released dev/data-pv-claim nfs-slow 117d ``` 解决 ``` kubectl edit pv mims-data-pv-dev # 删除字段 claimRef: apiVersion: v1 kind: PersistentVolumeClaim name: data-pv-claim namespace: dev resourceVersion: "1113810" uid: f40897d6-02cd-4c23-866b-2eb78235cc6d ``` 结果 ``` kubectl get pv -n dev # 正常绑定 NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE data-pv-dev 5Gi RWX Retain Bound dev/data-pv-claim nfs-slow 117d ``` ### 问题2: 遇到k8s 删除pv 和pvc 删不掉 ``` [root@master01 ~]# kubectl get pvc|grep chi clickhouse-storage-template-chi-gt-business-0-0-0 Terminating pvc-52d51ed6-53eb-4dc6-9e29-dd2c3b787c73 500Gi RWO local-path-clickhouse 12m clickhouse-storage-template-chi-gt-business-1-0-0 Terminating pvc-ee1352f5-91f5-4e8f-83fe-4845b4e1fd84 500Gi RWO local-path-clickhouse 12m [root@master01 ~]# kubectl get pv|grep chi pvc-52d51ed6-53eb-4dc6-9e29-dd2c3b787c73 500Gi RWO Retain Terminating default/clickhouse-storage-template-chi-gt-business-0-0-0 local-path-clickhouse 13m pvc-ee1352f5-91f5-4e8f-83fe-4845b4e1fd84 500Gi RWO Retain Terminating default/clickhouse-storage-template-chi-gt-business-1-0-0 local-path-clickhouse 13m ``` 解决方法: ``` kubectl patch pv xxx -p '{"metadata":{"finalizers":null}}' kubectl patch pvc PVC_NAME -p '{"metadata":{"finalizers": []}}' --type=merge ``` ``` [root@master01 ~]# kubectl patch pv pvc-52d51ed6-53eb-4dc6-9e29-dd2c3b787c73 -p '{"metadata":{"finalizers":null}}' persistentvolume/pvc-52d51ed6-53eb-4dc6-9e29-dd2c3b787c73 patched [root@master01 ~]# kubectl patch pv pvc-ee1352f5-91f5-4e8f-83fe-4845b4e1fd84 -p '{"metadata":{"finalizers":null}}' persistentvolume/pvc-ee1352f5-91f5-4e8f-83fe-4845b4e1fd84 patched [root@master01 ~]# kubectl patch pvc clickhouse-storage-template-chi-gt-business-0-0-0 -p '{"metadata":{"finalizers": []}}' --type=merge persistentvolumeclaim/clickhouse-storage-template-chi-gt-business-0-0-0 patched [root@master01 ~]# kubectl patch pvc clickhouse-storage-template-chi-gt-business-1-0-0 -p '{"metadata":{"finalizers": []}}' --type=merge persistentvolumeclaim/clickhouse-storage-template-chi-gt-business-1-0-0 patched [root@master01 ~]# kubectl get pv|grep chi [root@master01 ~]# kubectl get pvc|grep chi ``` 删除crd等同理 ``` kubectl patch crd crd-name -p '{"metadata":{"finalizers":[]}}' --type=merge ``` ### 一、k8s强制删除pod命令 在K8s中,可以使用kubectl命令行工具删除Pod。默认情况下,kubectl delete pod命令将在删除Pod之前等待Pod的终止信号,这可能需要一些时间。但是,在某些情况下,Pod可能无法终止,这时就需要使用强制选项-f(--force)。 下面是一个使用kubectl删除Pod的示例命令: ``` kubectl delete pod my-pod kubectl delete pod my-pod --force ``` ### 二、k8s强制删除pod不重启 有时候,我们需要强制删除容器,但是不想在删除容器后让K8s重新启动该Pod。为此,我们可以使用kubectl的--grace-period=0选项来实现删除Pod的同时禁止其重新启动。 下面是一个使用--grace-period=0选项的示例命令: ``` kubectl delete pod my-pod --grace-period=0 --force ``` 该命令将立即强制删除Pod,不管Pod的状态如何,并且在删除后不会重新启动Pod。