使用client-go获取节点列表
来源:原创
时间:2023-03-28
作者:脚本小站
分类:GoLang
package main
import (
"context"
"fmt"
"log"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/tools/clientcmd"
)
func main() {
configPath := "config" // 配置文件路径
config, err := clientcmd.BuildConfigFromFlags("", configPath) // 从配置文件创建Kubernetes客户端配置
if err != nil {
log.Fatal(err)
}
clientset, err := kubernetes.NewForConfig(config) // 使用Kubernetes客户端配置创建Kubernetes客户端集
if err != nil {
log.Fatal(err)
}
nodeList, err := clientset.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{}) // 获取集群中所有节点的信息列表
if err != nil {
log.Fatal(err)
}
for _, node := range nodeList.Items {
fmt.Printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\n",
node.Name,
node.Status.Phase,
node.Status.NodeInfo.OSImage,
node.Status.NodeInfo.KubeletVersion,
node.Status.NodeInfo.OperatingSystem,
node.Status.NodeInfo.Architecture,
node.CreationTimestamp,
)
}
// 获取名称空间
namespaceList, err := clientset.CoreV1().Namespaces().List(context.TODO(), metav1.ListOptions{})
if err != nil {
log.Fatal(err)
}
for _, namespace := range namespaceList.Items {
fmt.Printf("%s\t%s\t%s\n", namespace.Name, namespace.Status.Phase, namespace.CreationTimestamp)
}
fmt.Println("serviec: ---------------------------------")
// 获取service列表
serviceList, err := clientset.CoreV1().Services("").List(context.TODO(), metav1.ListOptions{})
if err != nil {
log.Fatal(err)
}
for _, service := range serviceList.Items {
fmt.Printf("%s\t%s\t%s\n",
service.Name,
service.Spec.Type,
service.CreationTimestamp,
)
}
// 获取deployment列表 Deployments("名称空间")
deploymentList, err := clientset.AppsV1().Deployments("").List(context.TODO(), metav1.ListOptions{})
if err != nil {
log.Fatal(err)
}
for _, deployment := range deploymentList.Items {
fmt.Printf("%s\t%s\t%s\t%s\n",
deployment.Namespace,
deployment.Name,
deployment.Spec.Template.Name,
deployment.CreationTimestamp,
)
}
}