[英]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 server
的REST
客户端。 如果您不想使用它 - 您将需要手动执行相同的请求。
在不与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.