使用 k8s rest api 从特定节点获取 Pods
Get Pods from a Particular node using k8s rest api
是否有任何 k8s rest api 端点可以获取特定节点的所有 pods 及其详细信息。
我使用 minikube 并使用 kubectl proxy --port=7070 &
启动代理。
我们有像 GET /api/v1/namespaces/{namespace-name}/pods
这样的端点。我们是否有任何类似的端点可以访问属于特定节点的 pods?我不想使用 kubectl 命令。
I dont want to use kubectl commands.
kubectl
是 k8s API server
的 REST
客户端。如果您不想使用它 - 您将需要手动执行相同的请求。
没有“合法”的方式可以在不与 API Server
交谈的情况下从 k8s 集群获取信息。 API Server
是唯一的真实来源,所有控制器都使用 API Server
来执行所需的更改。因此,您可能应该依赖 API Server
.
提供的信息
您可以使用 kubectl
通过以下方式为特定节点获取 pods:
kubectl get pods --all-namespaces -o wide --field-selector spec.nodeName=<node>
看看这个:
您也可以在不使用 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())
}
}
是否有任何 k8s rest api 端点可以获取特定节点的所有 pods 及其详细信息。
我使用 minikube 并使用 kubectl proxy --port=7070 &
启动代理。
我们有像 GET /api/v1/namespaces/{namespace-name}/pods
这样的端点。我们是否有任何类似的端点可以访问属于特定节点的 pods?我不想使用 kubectl 命令。
I dont want to use kubectl commands.
kubectl
是 k8s API server
的 REST
客户端。如果您不想使用它 - 您将需要手动执行相同的请求。
没有“合法”的方式可以在不与 API Server
交谈的情况下从 k8s 集群获取信息。 API Server
是唯一的真实来源,所有控制器都使用 API Server
来执行所需的更改。因此,您可能应该依赖 API Server
.
您可以使用 kubectl
通过以下方式为特定节点获取 pods:
kubectl get pods --all-namespaces -o wide --field-selector spec.nodeName=<node>
看看这个:
您也可以在不使用 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())
}
}