我们如何获取集群中运行的 gke pod 数量?我发现有很多方法可以获得节点数,但我们也需要 pod 数。如果我们可以在 gcp 操作中使用不需要日志记录的东西会更好。
答案 0 :(得分:0)
您可以使用 Kubernetes Python Client library 来完成,如 this question 中所示,由 Pradeep Padmanaban C 发布,他正在寻找更有效的方法,但他的示例实际上是最好的您可以执行这样的操作,因为没有特定的方法可以让您只计算 pod 数而无需检索它们的整个 json 清单:
from kubernetes import client , config
config.load_kube_config()
v1= client.CoreV1Api()
ret_pod = v1.list_pod_for_all_namespaces(watch=False)
print(len(ret_pod.items))
您还可以使用不同的方法,该方法仅允许从特定的 namespace
检索 pod,例如:
list_namespaced_pod("default")
以 kubectl
的方式,您可以按如下方式进行(如 here 提议的 RammusXu):
kubectl get pods --all-namespaces --no-headers | wc -l
答案 1 :(得分:0)
您可以直接访问 kubernetes API using a restful API call。您需要确保通过包含不记名令牌在通话中提供 authentication token。
一旦您能够直接查询 api 服务器,您就可以使用 GET <master_endpoint>/api/v1/pods
列出集群中的所有 pod。您还可以通过指定命名空间 /api/v1/namespaces/<namespace>/pods
来搜索特定的命名空间。
请记住,kubectl cli 工具只是 API 调用的包装器,每个 kubectl 命令都将形成一个与上面列出的格式类似的 RESTful API 调用,因此您使用 kubectl 与集群进行的任何交互也可以通过 RESTful API 调用实现