本文主要是介绍client-go入门之1:创建连接Kubernetes集群的客户端,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
文章目录
- 简介
- 使用
简介
我们可以使用Dashboard或kubectl来访问k8s的API,也可以使用编程语言,如Go,Java,Python作为客户端来访问k8s。client-go是一个使用go语言编写的库,用来连接k8s集群并对集群资源进行操作。
使用
以下代码使用go连上k8s集群,并查询集群的节点信息:
package mainimport ("fmt"metav1 "k8s.io/apimachinery/pkg/apis/meta/v1""k8s.io/client-go/kubernetes""k8s.io/client-go/tools/clientcmd"
)func main() {// 读取配置文件home := GetHomePath()k8sConfig, err := clientcmd.BuildConfigFromFlags("", fmt.Sprintf("%s/.kube/config", home)) // 使用 kubectl 默认配置 ~/.kube/configif err != nil {fmt.Printf("%v",err)return}// 创建一个k8s客户端clientSet, err := kubernetes.NewForConfig(k8sConfig)if err != nil {fmt.Printf("%v",err)return}// 查询k8s集群的节点信息,相当于命令:kubectl get nodes -o yaml, 如果没有管理员权限可能会失败,可以改成查Pods的接口// nodes, err := clientSet.CoreV1().Nodes().List(metav1.ListOptions{}) 老版本写法nodes, err := clientSet.CoreV1().Nodes().List(context.TODO(),metav1.ListOptions{})if err != nil {fmt.Printf("%v",err)return}for _,node := range nodes.Items {fmt.Println(node.Name)}
}func GetHomePath() string {u , err := user.Current()if err == nil {return u.HomeDir}return ""
}
主要步骤:
-
读取配置信息
-
创建k8s客户端根据配置信息创建一个k8s客户端,并连上k8s集群:
clientSet, err := kubernetes.NewForConfig(k8sConfig)
-
调用k8s api获取集群资源信息
有了客户端以后,我们就可以访问k8s的资源并对其进行操作,这里我们获取一下集群的节点信息:nodes, err := clientSet.CoreV1().Nodes().List(context.TODO(),metav1.ListOptions{})
上述代码得到的信息相当于命令:
kubectl get nodes -o yaml
-
打印得到的资源信息,我们可以把节点的名字遍历一下打印出来看看:
for _,node := range nodes.Items {fmt.Println(node.Name) }
输出即为k8s集群的节点列表。
这篇关于client-go入门之1:创建连接Kubernetes集群的客户端的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!