如何通过更改CPU利用率或内存利用率或磁盘压力将Kubernetes节点状态从“就绪”更改为“未就绪”?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过更改CPU利用率或内存利用率或磁盘压力将Kubernetes节点状态从“就绪”更改为“未就绪”?相关的知识,希望对你有一定的参考价值。

我已经设置了1个主节点和1个工作节点的kubernetes集群。出于测试目的,我将CPU利用率和内存利用率提高了100%,但是,静止的Node并未获得状态“ NotReady”。我正在测试压力状态..如何将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

这里是豆荚信息:-

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
答案

仅在您希望处于未就绪状态的节点上关闭kubelet服务

另一答案

有几种方法使节点进入“未就绪”状态,但不能通过Pods。当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

以上是关于如何通过更改CPU利用率或内存利用率或磁盘压力将Kubernetes节点状态从“就绪”更改为“未就绪”?的主要内容,如果未能解决你的问题,请参考以下文章

Docker的资源管理控制(CPU内存磁盘IO配额)

如何利用snmp查询centos系统cpu,磁盘,内存,等系统信息

如何评估服务器基础性能 - CPU负载使用率内存&磁盘使用率网络带宽......

如何评估服务器基础性能 - CPU负载使用率内存&磁盘使用率网络带宽......

如何判断CPU内存磁盘的性能瓶颈?

如何使用C或C++编程获取电脑CPU使用率?如何使用C或C++获取指定进程的CPU使用率?