繁体   English   中英

使用 k8s rest api 从特定节点获取 Pod

[英]Get Pods from a Particular node using k8s rest api

是否有任何 k8s rest api 端点来获取特定节点的所有 pod 及其详细信息。 我使用 minikube 并使用kubectl proxy --port=7070 &启动了一个代理。 我们有像GET /api/v1/namespaces/{namespace-name}/pods这样的端点。 我们是否有任何类似的端点来访问属于特定节点的 pod? 我不想使用 kubectl 命令。

我不想使用 kubectl 命令。

kubectl是 k8s API serverREST客户端。 如果您不想使用它 - 您将需要手动执行相同的请求。

在不与API Server交谈的情况下,没有从 k8s 集群获取信息的“合法”方式。 API Server是唯一的真实来源,所有控制器都使用API Server来执行所需的更改。 因此,您可能应该依赖API Server提供的信息。

您可以使用kubectl通过以下方式获取特定节点的 pod:

kubectl get pods --all-namespaces -o wide --field-selector spec.nodeName=<node>

看看这个: Kubernetes API - 在特定节点上获取 Pod

你也可以在不使用kubectl情况下做到这kubectl - 阅读: The Kubernetes API

您可以使用client-go库与API server 这是一个例子。

import (
     "github.com/golang/glog"

     "k8s.io/api/core/v1"
     "k8s.io/apimachinery/pkg/fields"
     "k8s.io/client-go/kubernetes"
     "k8s.io/client-go/tools/cache"
     "k8s.io/client-go/tools/clientcmd"
)
func main() {
    config, err := clientcmd.BuildConfigFromFlags("", "")
    if err != nil {
        glog.Errorln(err)
    }
    clientset, err := kubernetes.NewForConfig(config)
    if err != nil {
        glog.Errorln(err)
    }
    pods, err := clientset.CoreV1().Pods("").List(context.TODO(), metav1.ListOptions{})
    if err != nil {
        panic(err.Error())
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM