登录
首页 >  Golang >  Go问答

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

来源:stackoverflow

时间:2024-04-15 22:54:33 102浏览 收藏

你在学习Golang相关的知识吗?本文《使用 k8s Rest api 从特定节点获取 Pod》,主要介绍的内容就涉及到,如果你想提升自己的开发能力,就不要错过这篇文章,大家要知道编程理论基础和实战操作都是不可或缺的哦!

问题内容

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


解决方案


您可以使用 client-go 库与 api 服务器 进行通信。这是一个例子。

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())
    }
}

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

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

您可以使用 kubectl 来获取特定节点的 pod:

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

看看这个:Kubernetes API - gets Pods on specific nodes

您也可以在不使用 kubectl 的情况下完成此操作 - 阅读以下内容:The Kubernetes API

理论要掌握,实操不能落!以上关于《使用 k8s Rest api 从特定节点获取 Pod》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>