Kubernetes 在运行时如何处理节点资源的变化?



我对k8s很陌生。k8s 如何处理节点资源变化?例如,如果某些节点是虚拟机,并且它们的资源分配(cpu和内存(随时间变化,k8s控制平面是否持续监控每个节点可用的计算资源并更新其记录?

准确地说,"运行时更改"是什么意思? 您的意思是 VM(节点(位于群集中,您将关闭此 VM,添加新资源并再次打开?

如果是,请在此处找到一些信息,并在下面找到一些示例:

米尼库贝

您无法更改它。在创建Minikube集群的过程中,如果您没有指定资源,它将自动创建具有Minikube名称、2 个 CPU 和 2048 RAM 的集群。

例如,如果要指定 Minikube 资源:

$ sudo minikube start --cpus=4 --memory=8192 -p minikube-name

库比德姆

基本上,如果提到的虚拟机不是主虚拟机,您只需关闭虚拟机,添加资源并再次运行它。Kubeadm 会自动识别出节点资源已更改。

$ kubectl describe node <node-name>

$ kubectl describe node ubuntu18-slave
...
Addresses:
InternalIP:  10.156.0.16
Hostname:    ubuntu18-slave
Capacity:
cpu:                2
ephemeral-storage:  9983232Ki
hugepages-1Gi:      0
hugepages-2Mi:      0
memory:             7652372Ki
pods:               110
Allocatable:
cpu:                2
ephemeral-storage:  9200546596
hugepages-1Gi:      0
hugepages-2Mi:      0
memory:             7549972Ki
pods:               110
...

添加了资源。只需关闭并打开 VM,无需重新启动kubelet

$ kubectl describe node ubuntu18-slave
...
Addresses:
InternalIP:  10.156.0.16
Hostname:    ubuntu18-slave
Capacity:
cpu:                8
ephemeral-storage:  9983232Ki
hugepages-1Gi:      0
hugepages-2Mi:      0
memory:             30875684Ki
pods:               110
Allocatable:
cpu:                8
ephemeral-storage:  9200546596
hugepages-1Gi:      0
hugepages-2Mi:      0
memory:             30773284Ki
pods:               110
...

这取决于云提供的。我试图通过GKE实现这一目标. 我发现只有一种方法可以做到这一点。您只需要: * 使用特定资源创建新node_pool* 将它们添加到集群 * 清空旧节点 * 删除旧节点

注意:

请记住,在关闭 VM(节点(之前,您应该清空要关闭的节点。

监测

要实现当前时间的资源使用,请创建使用历史记录,您可以使用一些开源或付费软件。一切都取决于您的需求

  • Kubernetes Dashboard
  • 普罗米修斯+格拉法纳
  • 数据狗
  • 系统挖掘 等

但是,我建议您使用Prometheus因为它是最受欢迎的教程之一,您可以在线找到许多教程。
在这里,您可以找到有关指标和普罗米修斯的许多有用信息。

我发现这个链接非常有用。要回答您的问题,如果 K8s 监控资源,是的,它确实如此,因为它必须确保节点上所需的资源在资源(例如 CPU(允许的限制范围内。

是的,您可以添加 grafana 以更具描述性的方式查看这些变体,或者 kubernetes 仪表板也会有所帮助。

您还可以计算分配给应用程序 Pod 的资源限制,即调度它们的节点,从而几乎大致了解工作节点的内存和 CPU 占用情况。

最新更新