package common import ( "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd" ) // 存储已初始化好的 clientSet 变量 var clientSet *kubernetes.Clientset // GetClientSet 单例的获取ClientSet的方法 // if clientSet == nil // true: 未初始化,初始化,将其存储到clientSet变量中,返回 // false: 已初始化,直接返回 func GetClientSet() (*kubernetes.Clientset, error) { // 1. clientSet 是否已经初始化 // 已初始化 if clientSet != nil { return clientSet, nil } // 未初始化,需要初始化 // 2. 配置 kubeconfig, 得到client(ClientSet)对象 // 配置文件位置 //kubeConfigPath := kubeConfigPath // 构建配置,读取配置文件内容,解析为配置对象 config, err := clientcmd.BuildConfigFromFlags("", KubeConfigPath) if err != nil { return nil, err } // 3. 使用配置,得到ClientSet对象 cs, err := kubernetes.NewForConfig(config) if err != nil { return nil, err } // 4. 存储初始化好的ClientSet对象 clientSet = cs // clientSet 初始化成功 return clientSet, nil }