linux怎么查看本机内存大小
288
2022-09-11
client-go连接kubernetes集群
背景:
kubernetes的基本应用的算是能入门了。但是基于各种客户端操作kubernetes集群还是没有深入玩过,最近一段时间入门了一下goland,就拿client-go深入体验一下kubernetes集群的基本操作,当然了最后能更深入一下跟gin框架结合了就好了......算是练手入门关于client-go参照githubgo get安装依赖
go get k8s.io/client-go@v0.23.6
api官方文档
关于client-go连接kubernetes集群的几种客户端
参照:csdn博客https://xinchen.blog.csdn.net/article/details/113753087
client-go实战之二:RESTClient client-go实战之三:Clientset client-go实战之四:dynamicClient client-go实战之五:DiscoveryClient
我这里就使用Clientset了!
clientset创建kubernetes客户端并验证version
下载集群配置文件
第一个例子打印一下kubernetes集群version
package main import ( "flag" "fmt" "k8s.io/client-go/kubernetes" "k8s.io/client-go/tools/clientcmd" "k8s.io/client-go/util/homedir" "path/filepath" ) func main() { var kubeconfig *string if home := homedir.HomeDir(); home != "" { kubeconfig = flag.String("kubeconfig", filepath.Join(home, ".kube", "config"), "(optional) absolute path to the kubeconfig file") } else { kubeconfig = flag.String("kubeconfig", "", "absolute path to the kubeconfig file") } flag.Parse() config, err := clientcmd.BuildConfigFromFlags("", *kubeconfig) if err != nil { panic(err.Error()) } // create the clientset clientset, err := kubernetes.NewForConfig(config) if err != nil { panic(err.Error()) } fmt.Println(clientset.ServerVersion()) }
go run main.go的时候报错了貌似少了依赖包。按照提示按照了一下
go get k8s.io/client-go/kubernetes@v0.23.6 go get k8s.io/client-go/tools/clientcmd@v0.23.6
第二个例子打印namespace列表
参照文档_ := clientset.CoreV1().Namespaces().List(context.Background(), metav1.ListOptions{}) for _, item := range list.Items { fmt.Println(item.Name) }
说明:列表就是定义list了,err忽略。corev1输入那么补全了namespaces。下一步出现了List将鼠标放在List上的提示继续补全:
func (NamespaceInterface) List(ctx context.Context, opts v1.ListOptions) (*v1.NamespaceList, error
常用的两个context:
context.Background():可以简单理解我们知道这个上下文要去干什么 context.TODO():可以简单理解我们不清楚要使用哪个上下文、或者还没有可用的上下文
就按照这里的去理解了"k8s.io/apimachinery/pkg/apis/meta/v1"
第三个例子打印develop namespace下的pod
fmt.Println("pod list in develop") list1, _ := clientset.CoreV1().Pods("develop").List(context.Background(), metav1.ListOptions{}) for _, item := range list1.Items { fmt.Println(item.Name) }
强调的:
CoreV1 AppV1 context的用法 metav1 其他连接kubernetes的集群方式
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~