是否有任何 k8s rest api 端点来获取所有 pod 及其特定节点的详细信息。我使用 minikube 并使用kubectl proxy --port=7070 &
. 我们有像 GET /api/v1/namespaces/{namespace-name}/pods
. 我们是否有任何类似的端点来访问属于特定节点的 pod?我不想使用 kubectl 命令。
问问题
584 次
2 回答
2
我不想使用 kubectl 命令。
kubectl
是REST
k8s 的客户端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 回答