【问题标题】:How to Change Kubernetes Node Status from "Ready" to "NotReady" by changing CPU Utilization or memory utilization or Disk Pressure?如何通过更改 CPU 利用率或内存利用率或磁盘压力将 Kubernetes 节点状态从“就绪”更改为“未就绪”?
【发布时间】:2019-11-28 20:23:13
【问题描述】:

我有 1 个主节点和 1 个工作节点的 kubernetes 集群。出于测试目的,我将 CPU 利用率和内存利用率提高到 100%,但静止节点没有获得“未就绪”状态。 我正在测试压力状态..如何将 MemoryPressure 的状态标志更改为 true 或将 DiskPressure 或 PIDPressure 更改为 true

这是我的主节点条件:-

条件:

 Type                 Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
  ----                 ------  -----------------                 ------------------                ------                       -------
  NetworkUnavailable   False   Wed, 27 Nov 2019 14:36:29 +0000   Wed, 27 Nov 2019 14:36:29 +0000   WeaveIsUp                    Weave pod has set this
  MemoryPressure       False   Thu, 28 Nov 2019 07:36:46 +0000   Fri, 22 Nov 2019 13:30:38 +0000   KubeletHasSufficientMemory   kubelet has sufficient memory available
  DiskPressure         False   Thu, 28 Nov 2019 07:36:46 +0000   Fri, 22 Nov 2019 13:30:38 +0000   KubeletHasNoDiskPressure     kubelet has no disk pressure
  PIDPressure          False   Thu, 28 Nov 2019 07:36:46 +0000   Fri, 22 Nov 2019 13:30:38 +0000   KubeletHasSufficientPID      kubelet has sufficient PID available
  Ready                True    Thu, 28 Nov 2019 07:36:46 +0000   Fri, 22 Nov 2019 13:30:48 +0000   KubeletReady                 kubelet is posting ready status

这里是 pod 信息:-

Non-terminated Pods:         (8 in total)
  Namespace                  Name                                                                   CPU Requests  CPU Limits  Memory Requests  Memory Limits  AGE
  ---------                  ----                                                                   ------------  ----------  ---------------  -------------  ---
  kube-system                coredns-5644d7b6d9-dm8v7                                               100m (5%)     0 (0%)      70Mi (0%)        170Mi (2%)     22d
  kube-system                coredns-5644d7b6d9-mz5rm                                               100m (5%)     0 (0%)      70Mi (0%)        170Mi (2%)     22d
  kube-system                etcd-ip-172-31-28-186.us-east-2.compute.internal                       0 (0%)        0 (0%)      0 (0%)           0 (0%)         22d
  kube-system                kube-apiserver-ip-172-31-28-186.us-east-2.compute.internal             250m (12%)    0 (0%)      0 (0%)           0 (0%)         22d
  kube-system                kube-controller-manager-ip-172-31-28-186.us-east-2.compute.internal    200m (10%)    0 (0%)      0 (0%)           0 (0%)         22d
  kube-system                kube-proxy-cw8vv                                                       0 (0%)        0 (0%)      0 (0%)           0 (0%)         22d
  kube-system                kube-scheduler-ip-172-31-28-186.us-east-2.compute.internal             100m (5%)     0 (0%)      0 (0%)           0 (0%)         22d
  kube-system                weave-net-ct9zb                                                        20m (1%)      0 (0%)      0 (0%)           0 (0%)         22d
Allocated resources:
  (Total limits may be over 100 percent, i.e., overcommitted.)
  Resource           Requests    Limits
  --------           --------    ------
  cpu                770m (38%)  0 (0%)
  memory             140Mi (1%)  340Mi (4%)
  ephemeral-storage  0 (0%)      0 (0%)

这里是工作节点:-

Conditions:
  Type                 Status  LastHeartbeatTime                 LastTransitionTime                Reason                       Message
  ----                 ------  -----------------                 ------------------                ------                       -------
  NetworkUnavailable   False   Thu, 28 Nov 2019 07:00:08 +0000   Thu, 28 Nov 2019 07:00:08 +0000   WeaveIsUp                    Weave pod has set this
  MemoryPressure       False   Thu, 28 Nov 2019 07:39:03 +0000   Thu, 28 Nov 2019 07:00:00 +0000   KubeletHasSufficientMemory   kubelet has sufficient memory available
  DiskPressure         False   Thu, 28 Nov 2019 07:39:03 +0000   Thu, 28 Nov 2019 07:00:00 +0000   KubeletHasNoDiskPressure     kubelet has no disk pressure
  PIDPressure          False   Thu, 28 Nov 2019 07:39:03 +0000   Thu, 28 Nov 2019 07:00:00 +0000   KubeletHasSufficientPID      kubelet has sufficient PID available
  Ready                True    Thu, 28 Nov 2019 07:39:03 +0000   Thu, 28 Nov 2019 07:00:00 +0000   KubeletReady                 kubelet is posting ready status

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    有几种方法可以让节点进入 NotReady 状态,但不能通过 Pod。当 Pod 开始消耗过多内存时,kubelet 会直接杀死该 pod,以精确保护节点。

    我猜你想测试一个节点宕机时会发生什么,在这种情况下你想耗尽它。换句话说,要模拟节点问题,您应该这样做:

    kubectl drain NODE

    不过,请查看kubectl drain --help,看看在什么情况下会发生什么。

    编辑

    我试过,其实是直接访问节点并在节点上运行压力,20秒内是这样的:

    root@gke-klusta-lemmy-3ce02acd-djhm:/# stress --cpu 16 --io 8 --vm 8 --vm-bytes 2G
    

    检查节点:

    $ kubectl get no -w | grep gke-klusta-lemmy-3ce02acd-djhm
    gke-klusta-lemmy-3ce02acd-djhm   Ready    <none>   15d     v1.13.11-gke.14
    gke-klusta-lemmy-3ce02acd-djhm   Ready   <none>   15d   v1.13.11-gke.14
    gke-klusta-lemmy-3ce02acd-djhm   NotReady   <none>   15d   v1.13.11-gke.14
    gke-klusta-lemmy-3ce02acd-djhm   NotReady   <none>   15d   v1.13.11-gke.14
    gke-klusta-lemmy-3ce02acd-djhm   NotReady   <none>   15d   v1.13.11-gke.14
    

    我正在运行非常弱的节点。 1CPU@4GB RAM

    【讨论】:

    • 我正在寻找将节点条件(MemoryPressure、DiskPressure、PIDPressure)的状态设置为 true 的方法,然后它也会进入“NotReady”状态..
    • 直接在节点上运行,可以。我编辑了我的答案。
    • 如何从节点内部运行命令?,我可以从实例运行它,stress --cpu 8 --io 4 --vm 3 --vm-bytes 1900M --超时 24 小时 & CPU 达到 100%,内存也达到 .. 但节点仍处于就绪状态
    • 来自实例是来自节点,所以是对的。更加强调它。更多工人,更多 io。我的第一次测试比我发布的测试要弱得多,是的,已经有一段时间了,大约 106% 没有发生任何事情。但是当我升到 cpu 16,io 8 vm 8 和 vm bytes 到 2G 时,在 20 秒内,它杀死了节点。
    • 谢谢..它变得内存不足..任何摆脱磁盘压力或PID压力的方法都失败了
    【解决方案2】:

    只需在您希望处于 NotReady 状态的节点上关闭 kubelet 服务

    【讨论】:

    • 我想靠CPU、内存或磁盘的压力来做
    • 它不会那样发生。当存在磁盘压力或资源不足时,Pod 就会从该节点被逐出
    • 所以您的意思是节点磁盘压力不会将节点状态更改为“NotReady”..我想检查..如何将这些压力设为真实?
    • 部署一个或多个需要比节点容量更多的 cpu/内存的 pod
    • 这将导致 pod 失败但我想要节点压力
    猜你喜欢
    • 1970-01-01
    • 2021-01-21
    • 2020-11-19
    • 2018-06-03
    • 2021-07-10
    • 1970-01-01
    • 2017-04-03
    • 2019-06-02
    • 1970-01-01
    相关资源
    最近更新 更多