通过clientset获取deployment
我用的k8s api版本是v0.22.3package mainimport ("context""flag""fmt"metav1 "k8s.io/apimachinery/pkg/apis/meta/v1""k8s.io/client-go/kubernetes""k8s.io/client-go/rest""k8s.io/client-go/tools/clientcmd""os""path
·
我用的k8s api版本是v0.22.3
package main
import (
"context"
"flag"
"fmt"
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
"k8s.io/client-go/kubernetes"
"k8s.io/client-go/rest"
"k8s.io/client-go/tools/clientcmd"
"os"
"path/filepath"
)
func main() {
// 声明error,也可以不声明后面直接用 err:=的方式
var err error
// 定义kubeconfig,这里用*string的原因是flag.String的返回值为*string
var kubeconfig *string
// 定义config用于初始化clientset
var config *rest.Config
// 打印家目录
fmt.Println(homeDir())
// 外部传入家目录,如果不传入使用默认家目录
if home := homeDir(); home != "" {
kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(可选)输入kubeconfig的绝对路径")
} else {
kubeconfig = flag.String("kubeconfig", "", "输入kubeconfig的绝对路径")
}
// 解析输入的配置
flag.Parse()
fmt.Println(*kubeconfig)
// 创建集群配置
// 使用sa创建集群配置(InCluster模式)
if config, err = rest.InClusterConfig(); err != nil {
// 使用kubeconfig文件创建集群配置
if config,err = clientcmd.BuildConfigFromFlags("",*kubeconfig);err != nil{
panic(err.Error())
}
}
//创建clientset
clientset,err := kubernetes.NewForConfig(config)
if err != nil {
panic(err.Error())
}
//使用clientset获取Deployments
deployments,err := clientset.AppsV1().Deployments("default").List(context.TODO(),metav1.ListOptions{})
if err != nil {
panic(err.Error())
}
for idx,deploy := range deployments.Items{
fmt.Printf("%d---->%s\n",idx+1,deploy.Name)
}
}
//获取家目录
func homeDir() string {
if h := os.Getenv("HOME"); h != "" {
return h
}
return os.Getenv("USERPROFILE") // windows
}
更多推荐
已为社区贡献2条内容
所有评论(0)