【问题标题】:Where to configure disk pressure in Kubernetes?Kubernetes哪里配置磁盘压力?
【发布时间】:2021-06-16 14:08:07
【问题描述】:

我有一个主节点,它有磁盘压力,并且正在向日志中发送无休止的垃圾邮件,如下所示:

3 月 18 日 22:53:04 kubelet[7521]: W0318 22:53:04.413211 7521 eviction_manager.go:344] 驱逐管理器:试图回收临时存储

3 月 18 日 22:53:04 kubelet[7521]: I0318 22:53:04.413235 7521 container_gc.go:85] 试图删除未使用的容器

......................

3 月 18 日 22:53:04 kubelet[7521]: E0318 22:53:04.429446 7521 eviction_manager.go:574] 驱逐管理器:无法驱逐关键 pod kube-controller-manager_kube-system(5308d5632ec7d3e588c56d9f0bca17c8) 3 月 18 日 22:53:04 kubelet[7521]: E0318 22:53:04.429458 7521 eviction_manager.go:574] 驱逐管理器:无法驱逐关键 pod kube-apiserver_kube-system(9fdc5b37e61264bdf7e38864e765849a) 3 月 18 日 22:53:04 kubelet[7521]: E0318 22:53:04.429464 7521 eviction_manager.go:574] 驱逐管理器:无法驱逐关键 pod kube-scheduler_kube-system(90280dfce8bf44f46a3e41b6c4a9f551) 3 月 18 日 22:53:04 kubelet[7521]: E0318 22:53:04.429472 7521 eviction_manager.go:574] 驱逐管理器:无法驱逐关键 pod coredns-74ff55c5b-th722_kube-system(33744a13-8f71-4e34-8cfb-59555c ) 3 月 18 日 22:53:04 kubelet[7521]: E0318 22:53:04.429478 7521 eviction_manager.go:574] 驱逐管理器:无法驱逐关键 pod coredns-74ff55c5b-d45hd_kube-system(65a5684e-5013-46843-aa38-82016d ) 3 月 18 日 22:53:04 kubelet[7521]: E0318 22:53:04.429487 7521 eviction_manager.go:574] 驱逐管理器:无法驱逐关键 pod weave-net-wjs78_kube-system(f0f9a4e5-98a4-4df4-ac28-6bc1202ec06d ) 3 月 18 日 22:53:04 kubelet[7521]: E0318 22:53:04.429493 7521 eviction_manager.go:574] 驱逐管理器:无法驱逐关键 pod kube-proxy-8dvws_kube-system(c55198f4-38bc-4adf-8bd8-4a2ec2d8a46d ) 3 月 18 日 22:53:04 kubelet[7521]: E0318 22:53:04.429498 7521 eviction_manager.go:574] 驱逐管理器:无法驱逐关键 pod etcd_kube-system(e3f86cf1b5559dfe46a5167a548f8a4d) 3 月 18 日 22:53:04 kubelet[7521]: I0318 22:53:04.429502 7521 eviction_manager.go:396] 驱逐管理器:无法从节点驱逐任何 pod

.......

这种情况已经持续了几个月。我知道磁盘压力可能设置为默认值,但它首先配置在哪里?

我确实知道这一点: https://kubernetes.io/docs/tasks/administer-cluster/out-of-resource/

大概就是这个设置可以设置:

imagefs.available imagefs.available := node.stats.runtime.imagefs.available

(根据上面的链接)

但又一次,在哪里?在etcd?如何将所有节点的此项设置为默认值?

确实,可用空间比设置的要少,但这是控制平面(上面没有其他 pod)而不是生产系统,它仅用于测试,我看不到日志中的任何内容,因为 kubernetes 向其中充满垃圾的垃圾邮件。垃圾,因为这些消息绝对没有意义: 这些 pod 不应该被驱逐,它们是必不可少的,甚至不应该试图驱逐它们。

我的问题:

  • 另外,限速器呢?
  • 在失败 10 次后停止?
  • 崩溃回退?
  • 另外,我看不到当前设置的值。

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    有三种方法可以设置 Kubelet 选项。首先是command line options,比如--eviction-hard。接下来是config file。最近的是dynamic configuration

    当然,这里更好的答案是释放一些磁盘空间。

    【讨论】:

    • 不,释放磁盘空间是为了避免如何配置的问题,这不是正确的解决方案。这也不相关,磁盘压力的阈值设置得太保守了,再说一遍,这不是一个高效的系统,也没有因为磁盘空间太少而变得不稳定的危险。
    • 当然,这就是为什么我首先用三个不同的选项回答了这个问题。
    • 我正在尝试找出如何在 kubelet 的 yaml 配置中包含 imagefs.available,但是有密钥对,这需要 3 个元素:1. imagefs.available 2.等于或小于/大于 3. 大小值。
    • 如何查询这些压力设置的当前设置值?有办法吗?
    猜你喜欢
    • 2018-11-26
    • 2020-10-06
    • 2019-12-18
    • 2021-02-13
    • 2010-12-27
    • 1970-01-01
    • 2017-05-18
    • 2018-05-25
    • 1970-01-01
    相关资源
    最近更新 更多