您的位置:首页 > 科技 > IT业 > seo搜索工具栏_网业怎么做_怎么自己制作网页_网络推广怎么做效果好

seo搜索工具栏_网业怎么做_怎么自己制作网页_网络推广怎么做效果好

2025/4/30 1:23:58 来源:https://blog.csdn.net/ygq13572549874/article/details/144380926  浏览:    关键词:seo搜索工具栏_网业怎么做_怎么自己制作网页_网络推广怎么做效果好
seo搜索工具栏_网业怎么做_怎么自己制作网页_网络推广怎么做效果好

Kubelet是Kubernetes节点上的主要组件,负责管理Pod和容器的生命周期。当节点资源不足时,kubelet会采取一系列措施来清理资源。以下是kubelet如何清理资源的几个关键步骤:

1. 镜像垃圾回收(Image Garbage Collection)

  • 触发条件:当节点的磁盘使用率超过设定的阈值时,kubelet会触发镜像垃圾回收。正常触发:定时执行,以保证节点资源充足;强制触发:在节点资源不足时,Kubelet在驱逐Pod前会先强制执行一次垃圾回收,如果清理后资源充足则不会驱逐Pod。
  • 镜像清理过程:kubelet会识别不再被任何容器引用的镜像(未使用镜像),并按照最近使用时间排序,优先删除最旧的镜像,对于新拉取的镜像,会存活一定时间(默认2分钟)后才执行清理,以防止刚拉取的镜像就被清理掉。
  • 镜像垃圾回收频率Kubelet默认每5分钟执行一次镜像垃圾回收。

  • 关键参数
    • --image-gc-high-threshold:磁盘使用率的上限阈值,默认为85%。
    • --image-gc-low-threshold:磁盘使用率的下限阈值,默认为80%。
    • --minimum-image-ttl-duration:镜像最短生存时间,默认2分钟。
  • 镜像垃圾回收流程Kubelet会识别不再被任何Pod引用的镜像,并按照最近使用时间(LRU)策略逐个清理,直到磁盘使用率降到设定的下限或没有空闲镜像可以清理。

2. 容器垃圾回收(Container Garbage Collection)

  • 触发条件:kubelet定期执行容器垃圾回收,以清理不再需要的容器,主要针对普通容器、sandbox容器以及容器日志目录。对于普通容器,Kubelet会根据MaxPerPodContainerMaxContainers的设置,按照LRU策略,从Pod的死亡容器列表删除一定数量的容器,直到满足配置需求;对于sandbox容器,Kubelet按照每个Pod保留一个的原则清理多余的死亡sandbox;对于日志目录,只要没有Pod与之关联了就将其删除。
  • 清理过程:kubelet会删除已经终止的容器,特别是那些已经超出保留时间的容器。
  • 容器垃圾回收频率:Kubelet默认每分钟执行一次容器垃圾回收,
  • 容器垃圾回收参数
    • --maximum-dead-containers-per-container:每个Pod可以保留的死亡容器的最大数量,默认为1。
    • --maximum-dead-containers:节点上可以保留的死亡容器的最大数量,默认为-1,表示没有限制。
    • --minimum-container-ttl-duration:容器可被回收的最小生存时间,默认为0分钟,即死亡容器可以立即被回收。
  • 容器垃圾回收流程:Kubelet会清理可以驱逐的容器,包括那些状态不是RUNNING且在本轮GC前创建的容器。Kubelet在到达GC时间点时,会遍历所有Pod,使其满足--maximum-dead-containers-per-container的设置,如果不满足--maximum-dead-containers,则计算值X=(--maximum-dead-containers)/(Pod总数),再遍历所有Pod,使其满足已停止运行的容器集个数不大于X且至少为1,如果还不满足--maximum-dead-containers,则对所有已停止的容器(普通容器 + sandbox容器)排序,优先删除创建时间最早的容器直到满足--maximum-dead-containers为止。执行清理直到满足以下条件之一:

    • 每个Pod中存在的已挂掉的容器数满足阈值。
    • 所有Pod中存在的已挂掉的容器数满足阈值。

3. 未使用的Volume清理

  • 触发条件:当节点磁盘空间不足时,kubelet会尝试清理未使用的Volumes。
  • 清理过程:kubelet会识别并删除那些不再被任何Pod引用的Volumes。
  • Kubelet自动清理未使用的Volume主要涉及以下几个方面:

    • PersistentVolumeClaim (PVC) 和 PersistentVolume (PV) 的回收策略

      • Kubernetes中的PVC对象可以设置reclaimPolicy属性,该属性有两个值:RetainDelete。当PVC与PV绑定后,如果Pod被删除,根据reclaimPolicy的设置,Volume可以被保留或自动删除。
    • StorageClass的reclaimPolicy

      • 在StorageClass对象中,可以设置reclaimPolicy,这将决定PV的默认回收策略。当设置为Delete时,PV和绑定的存储资源在PVC删除时将被自动清理。
    • Kubelet垃圾回收机制

      • Kubelet定期进行垃圾收集,包括容器和镜像。Kubelet每分钟对未使用的容器执行一次垃圾收集,每五分钟对未使用的镜像执行一次垃圾收集。
    • Volume插件目录清理

      • Kubelet可以通过配置--volume-plugin-dir参数来指定卷插件目录,并定期清理其中的数据。
    • 日志文件管理

      • Kubelet会定期清理旧的日志文件,或者配置日志轮转工具(如logrotate)来管理日志文件的大小和生命周期,以释放磁盘空间。
    • 手动清理命令

      • 可以使用kubectl命令清理未使用的PV和PVC,例如查找未被使用的PVC并删除它们,进而可能触发关联Volume的清理。
    • 定期审计和清理

      • 定期检查集群中的Volume使用情况,手动清理未被自动回收的Volume。

4. 驱逐机制(Eviction)

  • 触发条件:当节点资源(如内存、磁盘空间)低于硬驱逐阈值时,kubelet会触发驱逐机制。
  • 驱逐过程:kubelet会根据配置的驱逐策略,选择并终止某些Pod以释放资源。例如,当节点的可用内存低于100Mi时,kubelet可能会开始驱逐Pod。详细的驱逐机制见:Kubernetes基础(六)-常见 Kubernetes Pod 驱逐场景_drainresource资源cpu 内存消耗-CSDN博客

5. 日志文件管理

  • 触发条件:日志文件占用大量磁盘空间时。
  • 管理过程:kubelet会定期清理旧的日志文件,或者配置日志轮转工具(如logrotate)来管理日志文件的大小和生命周期。
  • Kubelet 日志文件管理主要涉及以下几个方面:
    • 日志文件路径规则

      • Kubelet将容器日志默认写入/var/log/pods目录下,每个Pod的日志存放在以其命名空间、名称和UID为名的子目录中。容器日志文件以容器重启次数命名,格式为<容器重启次数>.log
    • 日志文件软链接规则

      • 容器日志目录下的日志文件实际上是软链接类型文件,指向实际的日志文件。
    • 日志文件清理

      • Kubelet每1分钟执行一次容器清理,包括清理死亡容器的日志目录。如果一个Pod已经不再占用其日志目录,Kubelet会清理这些日志目录。
    • 日志文件大小和文件数限制

      • Kubelet配置选项containerLogMaxSizecontainerLogMaxFiles分别允许配置每个日志文件大小的最大值和每个容器允许的最大文件数,默认分别为10Mi和5。
    • 日志轮换机制

      • Kubelet提供了基于可以执行多少并发日志轮换以及监控和轮换日志所需要的间隔来调整日志的轮换方式的机制。可以通过配置containerLogMaxWorkerscontainerLogMonitorInterval来调整。
    • 系统组件日志位置

      • 在使用systemd的Linux节点上,kubelet和容器运行时默认写入journald。如果systemd不存在,kubelet和容器运行时将写入到/var/log目录中的.log文件。
    • 自定义日志目录

      • Kubelet允许将Pod日志目录从默认的/var/log/pods更改为自定义路径,通过在kubelet的配置文件中配置podLogsDir参数来进行此调整。

6. 配置参数调整

  • 参数调整:管理员可以通过调整kubelet的配置参数来优化资源清理行为,例如调整垃圾回收的阈值和频率。

注意事项

  • Kubelet的资源清理行为可能会影响正在运行的Pod和服务,因此需要谨慎配置。
  • 在执行资源清理之前,确保重要数据已经备份,以防止数据丢失。
  • 监控和报警机制可以帮助及时发现资源不足的问题,并在问题发生前采取措施。
  • 不建议使用外部垃圾回收工具,因为这些工具可能会错误地清理掉Kubelet认为本应保留的镜像或容器,从而可能造成不可预知的问题。
  • 有些服务可能需要Kubelet启动后才会运行,调整垃圾回收策略可以避免这部分镜像被意外清理。
  • Kubelet的容器垃圾回收只针对Pod容器,非Kubelet Pod容器(比如通过docker run启动的容器)不会被主动清理。

通过这些机制,kubelet能够有效地管理节点资源,确保Kubernetes集群的稳定性和性能。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com