首页 > 其他分享 >client-go DiscoveryClient和ClientSet长连接数

client-go DiscoveryClient和ClientSet长连接数

时间:2024-10-27 17:01:48浏览次数:4  
标签:DiscoveryClient 连接数 v1 client io go k8s

package main

import (
	"context"
	"test/signals"
	"time"

	core_v1 "k8s.io/api/core/v1"
	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
	"k8s.io/client-go/discovery"
	"k8s.io/client-go/kubernetes"
	"k8s.io/client-go/tools/clientcmd"
	klog "k8s.io/klog/v2"
)

func addListWatchCfgAndClient(stopCh <-chan struct{}) {
	cfg1, err := clientcmd.BuildConfigFromFlags("", "/root/.kube/config")
	if err != nil {
		klog.Fatalf("Error building kubeconfig: %s", err.Error())
	}

	kubeClient, err := kubernetes.NewForConfig(cfg1)
	if err != nil {
		klog.Fatalf("Error building kubernetes clientset: %v", err)
	}

	cfg2, err := clientcmd.BuildConfigFromFlags("", "/root/.kube/config")
	if err != nil {
		klog.Fatalf("Error building kubeconfig: %s", err.Error())
	}

	discoveryClient, err := discovery.NewDiscoveryClientForConfig(cfg2)
	if err != nil {
		klog.Fatalf("Error building kubernetes discoveryclient: %v", err)
	}

	_, err = discoveryClient.ServerResourcesForGroupVersion("v1")
	if err != nil {
		klog.Errorf("get groups and resources failed")
	} else {
		klog.Infof("get groups and resources ok")
	}
	
	ns := &core_v1.Namespace{
		ObjectMeta: metav1.ObjectMeta{
			Name: "test",
		},
	}
	if _, err := kubeClient.CoreV1().Namespaces().Create(context.Background(), ns, metav1.CreateOptions{}); err != nil {
		klog.Infof("create ns test failed, err is %v", err)
	} else {
		klog.Infof("create ns test success")
	}

	select {
	case <-stopCh:
		return
	case <-time.After(time.Hour):
	}
}

func main() {
	stopCh := signals.SetupSignalHandler()
	addListWatchCfgAndClient(stopCh)
}

基于相同kubeconfig路径,创建2个不同kubeconfig对象,对应启动2个不同client,最后只有1条长连接。

标签:DiscoveryClient,连接数,v1,client,io,go,k8s
From: https://www.cnblogs.com/WJQ2017/p/18508605

相关文章

  • A 2-D LiDAR-SLAM Algorithm for Indoor Similar Environment With Deep Visual Loop
      具有深度视觉闭环的室内类似环境的二维LiDAR-SLAM算法A2-DLiDAR-SLAMAlgorithmforIndoorSimilarEnvironmentWithDeepVisualLoopClosure摘要:同步定位与建图(SLAM)是实现机器人智能的关键技术。与摄像头相比,在室内环境下使用光探测和测距(LiDAR)可以实现更高......
  • Prometheus源码专题精讲——监控系统 Prometheus 2.x/3.x 源码阅读和分析_配置文件的
    配置文件的加载与刷新——config/config.gohttps://github.com/prometheus/prometheus/blob/v2.55.0/config/config.goPrometheus配置文件的加载过程主要可以分为以下两步:1、初始化时加载2、运行时重新加载一、初始化时加载1.1、启动时加载1.2、配置初始化二、运行时加载......
  • Java 和 go 的区别是什么
    Java和go的区别有:1.编程语言设计和历史背景;2.并发模型的差异;3.内存管理;4.语言特性和语法;5.生态系统和库支持;6.性能和执行速度。Java是由SunMicrosystems于1995年推出的一种面向对象的编程语言,Go,也被称为Golang,是由Google于2007年开始开发,2009年首次正式发布。1.编程......
  • (开题报告)django+vue大学生兼职小程序前台论文+源码
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于大学生兼职小程序的研究,现有研究主要以大学生就业相关的大型综合平台为主,专门针对大学生兼职小程序的研究较少。在国内外,就业相关......
  • Go语言的反射机制如何使用
    #Go语言的反射机制如何使用在Go语言中,反射机制主要用于在运行时检查变量的类型和值、调用变量的方法以及动态操作对象。反射机制在Go中通过`reflect`包实现,它允许程序操作任意类型的对象。反射最常见的用途包括:类型检查、动态调用方法、以及结构体标签的处理。其中,动态调用方法......
  • 【毕设论文】美食推荐系统Python-Django
       博主介绍:......
  • Go语言的持续集成和持续部署方法
    在如今这个快速迭代的软件开发领域,Go语言的持续集成(CI)和持续部署(CD)方法对于提升项目的交付质量和速度起着至关重要的作用。简要来说,持续集成指的是开发者将代码频繁地集成到主分支的过程、持续部署则是指软件变更自动、频繁地部署到生产环境的实践。具体到Go语言,其CI/CD的框架和......
  • go 基础语法
    go基础语法结构funcfunction_name([parameterlist])[return_types]{函数体}示例packagemainimport( "fmt")funcmain(){ a:=100 varb=200 varresultint result=max(a,b) fmt.Printf("最大为%d\n",result)}funcmax(c,dint)......
  • (开题报告)django+vue《集慧》毕业论文管理系统论文+源码
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于毕业论文管理系统的研究,现有研究主要以传统的管理模式为主,如单纯的文档管理和流程跟踪等方式。专门针对将Django和Vue技术相结合......
  • 大数据技术045_python国潮男装微博评论数据分析系统的设计与实现 django flask爬虫可
    目录具体实现截图技术栈预期达到的目标开发技术介绍论文大纲目录编码规范核心代码部分展示其他项目推荐详细视频演示源码获取方式具体实现截图技术栈Python也提供了数据库的操作接口,通过引入Python的MySQL处理对象连接数据库后,使用通用的SQL语句方法实现数......