通过clientset获取deployment

我用的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("default").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
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值