【问题标题】:Find the available RAM using GO API使用 GO API 查找可用 RAM
【发布时间】:2018-08-17 22:49:59
【问题描述】:

我正在使用 Minikube 环境,我已经定义了最大内存使用

$] minikube config set memory 2048

现在我想在 GO 中使用 Kubernetes API 调用来获取这个内存值。 我尝试了以下方法,

import (
    "k8s.io/client-go/kubernetes"
    "k8s.io/client-go/rest"
)

availableMem := kubernetes.Interface.StorageV1beta1().RESTClient().Get().Name("config")

但输出不可读。

【问题讨论】:

  • Minikube 本质上是一个单节点 kubernetes。 Node 上可用的资源应该是 v1.Node 对象的一部分。状态成员应包含有关可分配 RAM 的信息。
  • 我也将在 K8S 集群中运行相同的程序。在那种情况下 v1.Node 也可以正常工作?
  • 是的,您可以向 apiserver 发出请求以获取节点信息,可以是所有节点,也可以是按名称指定的特定节点。在这些对象中将包含有关节点容量的信息。并且特定的 pod 可以通过向下的 api 获取其节点 ip 和名称。

标签: rest go kubernetes minikube


【解决方案1】:

此代码将获取第一个集群的可用内存

nodeList, err := f.KubeClient.CoreV1().Nodes().List(metav1.ListOptions{})

if err == nil {
   if len(nodeList.Items) > 0 {
        node := &nodeList.Items[0]
        memQuantity := node.Status.Allocatable[v1.ResourceMemory]
        totalMemAvail = int(memQuantity.Value() >> 20)
    } else {
        t.Fatal("Unable to read node list")
        return
    }
} else {
    t.Fatalf("Error while reading node list data: %v", err)
}

【讨论】:

    猜你喜欢
    • 2011-04-29
    • 1970-01-01
    • 2022-01-16
    • 2020-11-09
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    相关资源
    最近更新 更多