使用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, ) } }