package main
import (
"flag"
"k8s.io/client-go/tools/clientcmd"
"log"
"k8s.io/client-go/kubernetes"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"fmt"
)
var clientset *kubernetes.Clientset
func main() {
k8sconfig := flag.String("k8sconfig","./k8sconfig","kubernetes config file path")
flag.Parse()
config , err := clientcmd.BuildConfigFromFlags("",*k8sconfig)
if err != nil {
log.Println(err)
}
clientset , err = kubernetes.NewForConfig(config)
if err != nil {
log.Fatalln(err)
} else {
fmt.Println("connect k8s success")
}
pods,err := clientset.CoreV1().Pods("").List(metav1.ListOptions{})
if err != nil {
log.Println(err.Error())
}
fmt.Println(pods.Items[1].Name)
fmt.Println(pods.Items[1].CreationTimestamp)
fmt.Println(pods.Items[1].Labels)
fmt.Println(pods.Items[1].Namespace)
fmt.Println(pods.Items[1].Status.HostIP)
fmt.Println(pods.Items[1].Status.PodIP)
fmt.Println(pods.Items[1].Status.StartTime)
fmt.Println(pods.Items[1].Status.Phase)
fmt.Println(pods.Items[1].Status.ContainerStatuses[0].RestartCount)
fmt.Println(pods.Items[1].Status.ContainerStatuses[0].Image)
fmt.Println("##################")
nodes, err := clientset.CoreV1().Nodes().List(metav1.ListOptions{})
fmt.Println(nodes.Items[0].Name)
fmt.Println(nodes.Items[0].CreationTimestamp)
fmt.Println(nodes.Items[0].Status.NodeInfo)
fmt.Println(nodes.Items[0].Status.Conditions[len(nodes.Items[0].Status.Conditions)-1].Type)
fmt.Println(nodes.Items[0].Status.Allocatable.Memory().String())
}
kubernetes客户端client-go使用
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)
2021-03-09 k8s crd api是不分命名空间的