我用的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("glzh-dev").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
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。