Kubernetes 容器化kubelet和本地磁盘卷生命周期

Kubernetes 容器化kubelet和本地磁盘卷生命周期,kubernetes,persistent-volumes,Kubernetes,Persistent Volumes,平台:OEL 7.7+kube 1.15.5+docker 19.03.1 我们正在使用容器化的kubelet方法在k8s上构建一个擦除编码的对象存储。我们很难想出一种可行的磁盘生命周期方法。现在,我们必须为kubelet提供一个“extra_binds”参数,该参数指定安装块设备的基本安装点。(每个节点80个SSD,格式为ext4) 一切正常。创建PV和部署应用程序工作正常。当一个PVC被删除时,我们的问题出现了,我们想擦洗使用过的磁盘,使磁盘再次可用 到目前为止,唯一有效的方法是封锁该节点,

平台:OEL 7.7+kube 1.15.5+docker 19.03.1

我们正在使用容器化的kubelet方法在k8s上构建一个擦除编码的对象存储。我们很难想出一种可行的磁盘生命周期方法。现在,我们必须为kubelet提供一个“extra_binds”参数,该参数指定安装块设备的基本安装点。(每个节点80个SSD,格式为ext4)

一切正常。创建PV和部署应用程序工作正常。当一个PVC被删除时,我们的问题出现了,我们想擦洗使用过的磁盘,使磁盘再次可用

到目前为止,唯一有效的方法是封锁该节点,移除kubelet的额外绑定,反弹节点,重新配置块设备,重新添加kubelet绑定。显然,这对生产来说太笨重了。首先,弹跳kubelet不是一个选项

一旦PV被使用,即使检查裸机系统上的lsof显示未打开的手柄,也会有东西锁定该块设备。我无法在设备上卸载或创建新文件系统。仅仅弹跳kubelet并不能释放“锁”

有人使用集装箱化kubernetes控制飞机,并以类似方式使用本地磁盘的应用程序吗?有人找到了解决这个问题的可行方法吗

我们的长期计划是编写一个管理磁盘的运营商,但即使有一个运营商,我也不认为它可以缓解这个问题

感谢您的帮助,

首先查看您的:

您需要提供有关k8s群集和
pv
pvc
配置的更多信息,以便我可以深入了解甚至测试它。

首先查看您的:

您需要提供有关k8s群集和
pv
pvc
配置的更多信息,以便我可以深入了解甚至测试它

$ kubectl describe pvc <PVC_NAME> | grep Finalizers
$ kubectl describe pv <PV_NAME> | grep Finalizers
  claimRef:
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: packages-pvc
    namespace: default
    resourceVersion: "10218121"
    uid: 1aede3e6-eaa1-11e9-a594-42010a9c0005