client-go入门之1:创建连接Kubernetes集群的客户端
文章目录简介使用读取配置信息创建k8s客户端调用k8s api获取集群资源信息打印得到的资源信息简介我们可以使用Dashboard或kubectl来访问k8s的API,也可以使用编程语言,如Go,Java,Python作为客户端来访问k8s。client-go是一个使用go语言编写的库,用来连接k8s集群并对集群资源进行操作。使用以下代码使用go连上k8s集群,并查询集群的节点信息:package
·
简介
我们可以使用Dashboard或kubectl来访问k8s的API,也可以使用编程语言,如Go,Java,Python作为客户端来访问k8s。client-go是一个使用go语言编写的库,用来连接k8s集群并对集群资源进行操作。
使用
以下代码使用go连上k8s集群,并查询集群的节点信息:
package main
import (
"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/config
if 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集群的节点列表。
更多推荐
已为社区贡献2条内容
所有评论(0)