• pv空间回收显示失败


    关注 码龄 粉丝数 原力等级 -- 被采纳 被点赞 采纳率 2301_78594128 2024-04-13 21:14 采纳率: 0% 浏览 1 首页/ 运维 / pv空间回收显示失败 linux容器 在删除pod和PVC1之后,过了一会就显示回收失败了,共享目录上的东西也没删除成功,有谁知道这是怎么回事吗 收起 写回答 好问题 0 提建议 追加酬金 关注问题 微信扫一扫 点击复制链接 分享 邀请回答 编辑 收藏 删除 结题 收藏 举报 追加酬金 (90%的用户在追加酬金后获得了解决方案) 当前问题酬金 ¥ 0 (可追加 ¥500) ¥ 15¥ 20¥ 50¥ 100¥ 200 支付方式 扫码支付 二维码出错 点击刷新 支付金额 15 元 提供问题酬金的用户不参与问题酬金结算和分配 支付即为同意 《付费问题酬金结算规则》 结题 再想想 删除 再等等

    5条回答 默认 最新

    • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-13 21:14
      关注

      引自免费微信小程序:皆我百晓生

      看起来您正在遇到Linux环境中Kubernetes PersistentVolume(PV)回收的问题。当您尝试删除Pod和与之关联的PersistentVolumeClaim(PVC)后,回收策略设置为"Recycle",但回收似乎并未成功,并且存储在NFS共享目录上的数据仍然存在。

      以下是可能的原因及相应的解决步骤:

      1. 检查PV和PVC的状态: 确保PV和PVC的状态是已释放(Released),并且PVC已经被正确地删除。这可以通过运行kubectl get pv,pvc命令来检查。确保PVC已经不存在,而PV的状态应该是 Released 或者 Failed(如果回收失败)。

      2. 确认NFS服务器状态: 检查NFS服务器是否正常运行,以及NFS共享是否可用。您可以尝试从Kubernetes集群中的其他节点或者Master节点上通过showmount -e 命令查看NFS共享列表。

      3. 验证挂载点: 在删除Pod之前,确认Pod是否正确卸载了NFS共享。可以使用kubectl describe pod 命令查看Pod的详细信息,特别是容器日志中是否有挂载和卸载NFS共享的相关输出。

      4. 检查回收策略配置: 如果回收失败,可能是由于回收策略配置不正确。确认您的StorageClass定义是否正确。例如,一个简单的回收策略示例如下:

        apiVersion: storage.k8s.io/v1
        kind: StorageClass
        metadata:
          name: nfs-storage-class
        provisioner: kubernetes.io/no-provisioner # 不需要实际创建PV,仅用于回收策略
        reclaimPolicy: Recycle
        

        然后将此StorageClass应用于PVC:

        apiVersion: v1
        kind: PersistentVolumeClaim
        metadata:
          name: pvc1
        spec:
          accessModes:
            - ReadWriteOnce
          resources:
            requests:
              storage: 1Gi
          storageClassName: nfs-storage-class
        
      5. 手动清理数据: 如果上述步骤都无法解决问题,您可能需要手动清理NFS共享目录上的数据。首先停止相关的Pod,然后登录到宿主机上,找到NFS挂载点(通常是 /mnt/nfs 或类似路径),并删除相关文件夹及其内容。确保删除操作完成后,重新启动Pod,看是否能正常工作。

      6. 重启kubelet服务: 在某些情况下,重启kubelet服务可能会解决回收问题。在Master节点上执行:

        sudo systemctl restart kubelet
        
      7. 更新Kubernetes版本: 如果问题依然存在,考虑更新Kubernetes到最新稳定版本,因为可能是旧版本中存在的bug。

      8. 检查NFS客户端配置: 确保Kubernetes节点上的NFS客户端配置正确,包括适当的防火墙规则、NFS客户端软件安装等。

      9. 排查网络问题: 检查网络连接,确保Pod和NFS服务器之间通信无阻塞。

      如果以上步骤都无法解决问题,建议进一步检查Kubernetes的日志(如kubelet、kube-controller-manager和apiserver的日志),查找可能的错误消息,以便更深入地诊断问题。

      展开全部

      评论 编辑记录
    • 码农阿豪 Java领域优质创作者 2024-04-13 21:14
      关注
      让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
      问题描述: 在删除pod和PVC1之后,过一段时间后显示回收失败,且共享目录上的内容也未成功删除,需要知道具体原因。 解决方案:
      1. 检查是否存在其他pod或PVC正在访问该共享目录,导致回收失败。可以通过使用以下命令来查找:
      kubectl get pvc
      
      kubectl get pods
      

      如果存在,请先停止所有占用该共享目录的容器,然后再删除PVC和pod。 2. 检查存储后端,查看是否存在错误,可以通过以下命令检查:

      kubectl describe storageclass
      

      如果出现错误,请修复后再次尝试删除。 3. 可以重新创建PVC和pod,并手动在共享目录上执行清理操作,以确保共享目录中的内容已被删除。例如,可以使用以下命令:

      kubectl exec  rm -rf /path/to/shared/folder/*
      

      参考示例:

      apiVersion: v1
      kind: PersistentVolumeClaim
      metadata:
        name: test-pvc
      spec:
        accessModes:
          - ReadWriteMany
        resources:
          requests:
            storage: 1Gi
        storageClassName: csi-rbd
      

      在删除pod和PVC1后,使用以下命令检查资源是否被删除:

      kubectl get pvc
      kubectl get pods
      

      如果资源仍然存在,则使用以下命令强制删除:

      kubectl delete pvc  --grace-period=0 --force
      kubectl delete pod  --grace-period=0 --force
      

      如果以上方法仍然无法解决问题,可以考虑与存储后端供应商联系以获取更多支持。

      展开全部

      评论
    • GISer Liu 2024-04-13 21:18
      关注

      该回答引用自GPT-3.5,由博主GISer Liu编写:

      针对你描述的问题,我能提供以下解决思路和方案:
      问题分析:

      1. 删除了 Pod 和 PVC 后,过一段时间发现 PV 回收失败,共享目录上的内容也没有被删除。
      2. 这种情况可能出现在 PV 的回收策略与实际需求不符,或者与持久卷声明 (PVC) 的绑定关系有关。

      解决思路:

      1. 检查 PV 的回收策略,确保与实际需求相符。
      2. 确认 PVC 与 PV 的绑定关系,以及 PVC 的状态。

      具体解决方案:

      1. 检查 PV 的回收策略:
        yamlCopy code
        kubectl get pv <pv-name> -o yaml
        
        在 PV 对象的 YAML 中查找 reclaimPolicy 字段,确认其值是否为 RetainDeleteRecycle。如果是 Retain,则需要手动删除 PV 的内容;如果是 Delete
        Recycle,则系统应该会自动删除内容。
      2. 检查 PVC 的状态和绑定关系:
        yamlCopy code
        kubectl get pvc name> -o yaml
        
        确保 PVC 的状态为 Bound,表示已经成功绑定了 PV。
        如果 PV 的回收策略设置正确,且 PVC 与 PV
        的绑定关系也正确,但仍然出现回收失败的情况,可能是由于系统环境问题导致的异常。在这种情况下,建议检查集群的日志以查看更多详细信息,并可能需要进一步调查与系统环境相关的问题。
        希望以上解决方案对你有所帮助。如果需要更多帮助或有其他问题,请随时提出。

      如果该回答解决了您的问题,请采纳!如果没有,请私信联系或评论您的疑惑

      评论
    • CSDN-Ada助手 CSDN-AI 官方账号 2024-04-15 01:31
      关注

      【相关推荐】



      • 这篇博客: 资源利用率监控与存储卷(pv/pvc)中的 三.同一个pod运行多容器 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:

        类似于容器之间同一个网络,这里是同一个名称空间,也就是一个pod多个容器,那么他们的网卡,主机名等都是共用的

        ~]# vim webnginx.yaml 
        ---
        kind: Deployment
        apiVersion: apps/v1
        metadata:
           name: webnginx
        spec:
           selector:
              matchLabels:
                 myapp: nginx
           replicas: 1
           template:
              metadata:
                 labels:
                    myapp: nginx
              spec:
                 volumes:
                 - name: nginx-php
                   configMap:
                      name: nginx-conf
                 containers:
                 - name: nginx
                   image: 172.17.0.98:5000/myos:nginx2
                   volumeMounts:
                   - name: nginx-php
                     subPath: nginx.conf
                     mountPath: /data/nginx/conf/nginx.conf
                   ports:
                   - protocol: TCP
                     containerPort: 80
                 - name: php    # 在containers字段中添加一个容器
                   image: 172.17.0.98:5000/myos:nginx2
                   ports:         # 开放端口(可以不写,运用内部io传递的)
                   - protocol: TCP
                     containerPort: 80
                 restartPolicy: Always
                 
         # 先当于在文件中添加一个容器
        # 创建
        ~]# kubectl apply -f webnginx.yaml
        # 查看验证
        ]# kubectl get pods
        NAME                        READY   STATUS              RESTARTS   AGE
        webnginx-7567f4f8d7-rbv9r   2/2     Running   1 (2s ago)   4s
        # 查看日志
        ~]# kubectl describe pods -n default webnginx-7567f4f8d7-rbv9r
        ]# kubectl logs webnginx-7567f4f8d7-rbv9r
        error: a container name must be specified for pod webnginx-7567f4f8d7-rbv9r, choose one of: [nginx php]
        # 此时就不能直接logs查看了,要指定容器
        ~]# kubectl logs webnginx-7567f4f8d7-rbv9r -c nginx
        ~]# kubectl logs webnginx-7567f4f8d7-rbv9r -c php
        # 进入容器也要指定容器
        ~]# kubectl exec -it webnginx-7567f4f8d7-rbv9r -c nginx -- /bin/bash
        ~]# kubectl exec -it webnginx-7567f4f8d7-rbv9r -c php -- /bin/bash
        ​
        # 测试
        ~]# kubectl exec -it webnginx-7567f4f8d7-rbv9r -c nginx -- /bin/bash
        ~]# ss -ltun
        Netid  State      Recv-Q Send-Q      Local Address:Port      Peer Address:Port              
        tcp    LISTEN     0      128         *:80                    *:*                  
        tcp    LISTEN     0      128         127.0.0.1:9000          *:*
        /]# exit
        ~]# curl http://10.244.2.25/info.php
        
        Array
        (
            [REMOTE_ADDR] => 10.244.0.0
            [REQUEST_METHOD] => GET
            [HTTP_USER_AGENT] => curl/7.29.0
            [REQUEST_URI] => /info.php
        )
        php_host:   webnginx-6c9f6fd675-7rmzk
        1229

      如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

      展开全部

      评论
    • Kwan的解忧杂货铺 Java领域优质创作者 2024-04-16 13:44
      关注

      下午好🌅🌅🌅
      本答案参考ChatGPT-3.5

      根据你的描述,PV空间回收显示失败可能是由以下原因导致的:

      1. 存在其他的Pod仍在使用该PVC,导致无法回收。需要确保先删除使用该PVC的Pod,再删除PVC才能顺利回收PV。

      2. PV上挂载的存储卷可能还存在着一些文件或目录没有被删除,阻止了PV的回收。可以手动登陆到共享目录并彻底清理残留数据,然后再试图删除PV。

      3. 如果在共享目录中手动删除了数据而不是通过 K8s API,那么导致PV不再发现有效数据。可以通过在 PV 上重新创建一个空目录,并将其挂载到一个测试 Pod 上,然后手动将数据复制到这个空目录中,以测试 K8s 是否可以发现它。

      因此,为了解决这个问题,建议采取以下步骤:

      1.检查使用该PVC的Pod是否已经被删除并且PVC依然存在,可以使用以下 Kubernetes 命令清理Pod和PVC:

      $ kubectl delete pod 
      $ kubectl delete pvc 
      
      1. 登录到共享目录,按照需要彻底清理残留文件或文件夹:
      $ ssh user@nfs-server
      $ rm -rf /path/to/nfs-share
      
      1. 创建一个空目录,并将其挂载到 PV 上,并手动将数据复制到 PV 的重命名空间下:
      $ mkdir /path/to/nfs-share
      $ echo 'test file' > /path/to/nfs-share/test.file
      $ kubectl exec -it  -- /bin/bash
      $ cp /test-data/* /mnt/target
      
      1. 删除 PV:
      $ kubectl delete pv 
      

      如果采取以上操作后仍然存在问题,可以查看 Kubernetes 的事件日志,以便进一步了解有关 PV 回收失败的原因。

      评论
    编辑
    预览

    报告相同问题?

  • 相关阅读:
    Day18:初识B、B+树&RB树
    Python 用相对名称来导入包中的子模块
    新生任务-1
    网课答案公众号搭建过程详解
    【安卓学习之常见问题】jar文件中Class转java文件不准(不同软件打开的class文件不一样)
    Elasticsearch近实时架构
    SSM+基于微信小程序的航空售票管理系统 毕业设计-附源码191111
    聚观早报 | 微博个人主页将展示评论;京东PLUS会员突破 3000 万
    LeetCode - 解题笔记 - 212 - Word Search II
    final 关键字 —— 限制继承、限制虚函数重写
  • 原文地址:https://ask.csdn.net/questions/8088035