0

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

4

2 回答 2

2

我不想使用 kubectl 命令。

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

在不与API Server. 这API Server是唯一的事实来源,所有控制器都在使用API Server来执行所需的更改。因此,您可能应该依赖API Server.

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

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

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

您也可以不使用kubectl- 阅读以下内容:Kubernetes API

于 2020-09-02T10:10:45.647 回答
1

您可以使用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())
    }
}
于 2020-09-20T15:39:29.787 回答