- 博客(40)
- 资源 (11)
- 收藏
- 关注
原创 k8s apiserver启动执行流程之aggregatorServer
本文主要分析kubernetes在启动kube-apiserver时,创建聚合服务的过程。总览中概括性标记了流程。本节会详细分析,主要有以下几点:构建apiextensionsapiserver.Config扩展配置 – 其实就是包装了通用apiserver配置和其他额外的配置...
2022-06-29 21:16:36
1116
2
原创 k8s apiserver之启动执行流程总览一
apiserver之启动执行流程总览启动执行流程总览apiserver之启动执行流程总览启动执行流程总览server.go启动执行流程总览本文主要分析kubernetes在启动kube-apiserver的执行流程,本文不作深入分析,后续会展开server.go函数 // 启动命令行的实现func NewAPIServerCommand() *cobra.Command {// 设置默认的apiserver启动选项s := options.NewServerRunOpti
2022-06-16 14:27:23
1255
1
原创 client-go之tools/leaderelection包源码分析
client-go之tools/leaderelection包源码分析tools/leaderelection包源码分析client-go之tools/leaderelection包源码分析tools/leaderelection包healthzadaptor.gometrics.goleaderelection.goresourcelock包tools/leaderelection包用于需要进行leader控制的controller等.healthzadaptor.go函数// 创建一个基本的
2022-03-02 18:17:02
713
2
原创 client-go之tools/events包源码分析
client-go之tools/events包源码分析tools/events包源码分析client-go之tools/events包源码分析tools/events包helper.gointerfaces.goevent_broadcaster.gotools/events包用于记录和报告的所有客户端事件的逻辑helper.go函数// 定义变量mapping(一个map保存了 三种core/v1/v1beta1 gv的)var mapping = map[schema.GroupVersi
2022-03-01 17:41:49
617
1
原创 client-go之tools/cache包源码分析
tools/cache包源码分析tools/cache包controller.godelta_fifo.goexpiration_cache.gofifo.goheap.goindex.golister.golistwatch.gomutation_cache.gomutation_detector.goreflector.goshared_informer.gostore.gothread_safe_store.goundelta_store.gotools/cache包k8s认证的工具类(目前只有关
2021-10-11 14:51:19
1248
1
原创 client-go之tools/auth包源码分析
tools/auth包源码分析tools/auth包tools/auth包k8s认证的工具类(目前只有关于exec方式的工具类)函数// LoadFromFile 从文件路径解析一个 Info 对象.func LoadFromFile(path string) (*Info, error) { var info Info if _, err := os.Stat(path); os.IsNotExist(err) { return nil, err } data, err := iou
2021-08-26 14:43:17
255
1
原创 client-go之scale包源码分析
scale包源码分析scale包util.gointerface.goclient.goscale包获取实现了RESTMapper(通过discovery client操作apiserver,通过gvr获取gvr/gvk,或者获取RESTMapping)接口的结构体util.go接口// PreferredResourceMapper 确定要scale资源的首选版本type PreferredResourceMapper interface { // ResourceFor 获取部分资源并返回
2021-08-25 18:20:31
638
1
原创 client-go之restmapper包源码分析
client-go之restmapper包源码分析restmapper包源码分析client-go之restmapper包源码分析restmapper包discovery.goshortcut.gocategory_expansion.gorestmapper包获取实现了RESTMapper(对应一个gv下的resources)接口的结构体discovery.go结构体// APIGroupResources 是一个 API 组,具有版本到资源的映射。type APIGroupResource
2021-08-22 17:39:13
717
1
原创 client-go之rest包源码分析
rest包源码分析rest包client.goconfig.goexec.goplugin.gorequest.gotransport.gourl_utils.gourlbackoff.gowarnings.gowith_retry.gowatch包rest包主要是提供对外(就是自定义程序所引用的)相关的基础类/接口,client、config、exec、request等具体实现和构造的基础client.go接口.go// 接口用于与 Kubernetes REST api 进行交互的操作集。t
2021-08-05 17:26:22
1145
1
原创 client-go之metadata包(下篇)源码分析
@TOCmetadata包用于获取gvr对应的metadata(gvr的TypeMeta和ObjectMeta)的informer/lister/clientmetadatalister包interface.go 定义了获取(从索引器(缓存)中get/list)obj的接口接口// Lister 获取资源和获取NamespaceLister。type Lister interface { // List 列出索引器(缓存)中的所有资源的MetaData。 List(selector la
2021-07-30 10:17:46
706
1
原创 client-go之metadata包(上篇)源码分析
@TOC阅读本文,可以参考分析dynamic文章,两篇类似,区别是操作对象侧重点不同metadata包用于获取gvr对应的metadata(gvr的TypeMeta和ObjectMeta)的informer/lister/clientinterface.go接口.go// ResourceInterface的工厂模式,方法Resource可以获取对应gvr的ResourceInterface接口type Interface interface { Resource(resource sche
2021-07-30 10:14:05
658
1
原创 client-go之listers包源码分析
listers包源码分析listers包admissionregistration包listers包从cache.Indexer中获取原生k8s的对象/列表admissionregistration包以admissionregistration包做分析,其他的类似,不在分析v1expansion_generated.go 用于扩展resource client接口// MutatingWebhookConfigurationListerExpansion 将自定义方法添加到Mutati
2021-07-30 10:10:53
281
1
原创 client-go之kubernetes包源码分析
client-go之kubernetes包源码分析kubernetes包源码分析client-go之kubernetes包源码分析kubernetes包clientset.goscheme包typed包kubernetes包生成原生k8s的对象的client,用于访问kubernetes API(create、update、patch等等)clientset.gok8s原生type的restclient的集合,用来统一管理和调配接口// Interface 定义了一个DiscoveryInte
2021-07-30 10:09:04
420
原创 client-go之informers包源码分析
client-go之informers包源码分析informers包用于生成各种gvk对应的informer(注意这里这是针对原生k8s的对象)generic.go注意: 这里的informer和informers包是有区别的,虽然具体的informer底层都是包装了SharedIndexInformer,但是另一个属性是不相同的。这里是gvr,而informers包中是gr接口// GenericInformer 是 SharedIndexInformer 的类型,它将根据类型定位并委托给其
2021-07-20 14:50:05
548
1
原创 client-go之dynamic包(下篇)源码分析
client-go之dynamic包(下篇)源码分析@TOCdynamic包用于动态生成informer/lister/client等dynamiclister包interface.go 定义了获取(从索引器(缓存)中get/list)obj的接口接口// Lister 获取资源和获取NamespaceLister。type Lister interface { // List 列出索引器(缓存)中的所有资源。 List(selector labels.Selector) (ret [
2021-07-19 17:51:20
571
1
原创 client-go之dynamic包(上篇)源码分析
@TOCdynamic包用于动态生成informer/lister/client等interface.go接口.go// ResourceInterface的工厂模式,方法Resource可以获取对应gvr的ResourceInterface接口type Interface interface { Resource(resource schema.GroupVersionResource) NamespaceableResourceInterface}// 操作对应obj的接口type
2021-07-19 13:36:30
654
1
原创 client-go之discovery包(下篇)源码分析
@TOCdiscovery包用于发现服务器支持的API 组、版本和资源的方法及服务端支持的swagger apicachedlegacy.go 主要用途是兼容老版本// NewMemCacheClient 已弃用。直接使用 memory.NewMemCacheClient 。func NewMemCacheClient(delegate discovery.DiscoveryInterface) discovery.CachedDiscoveryInterface { return memo
2021-07-16 17:33:42
382
1
原创 client-go之discovery包(上篇)源码分析
@TOCdiscovery包用于发现服务器支持的API 组、版本和资源的方法及服务端支持的swagger apidiscovery_client.godiscovery_client.go定义全局变量const ( // 如果动态获取resource失败,重试的次数 defaultRetries = 2 // protobuf mime 类型 mimePb = "application/com.github.proto-openapi.spec.v2@v1.0+prot
2021-07-16 15:11:04
547
3
原创 client-go之applyconfigurations包源码分析
applyconfigurations包总览applyconfigurations包admissionregistration包utils.goapplyconfigurations包用于构建服务端 Apply requests(类似于kubectl apply 但是kubectl的是客户端),通过源码来看,其实和kubernetes/api的各种类型的结构体相似(方法不同),不妨大胆猜测下,估计是想用户apply时的对象和k8s隔离,防腐层的效果。admissionregistration包
2021-07-16 10:17:09
873
3
原创 kubernetes之client-go总览
client-go总览[可参考][k8s-client-go-0.21.2]client-go总览client-go总览[可参考][k8s-client-go-0.21.2]client-go总览applyconfigurations包discovery包dynamic包 用于动态生成informer/lister/client等informer包kubernetes包listers包metadata包pkg包pkg包plugin包rest包restmapper包scale包third_party包too
2021-07-15 17:51:36
367
2
原创 controller-runtime之controllerManager启动流程
上篇分享了controller-runtime之controllerManager创建流程,本篇是controllerManager启动流程的流程图解,帮助大家更清晰的理解其执行过程。
2021-07-14 13:47:54
335
2
转载 南北流量和东西流量——它们是什么意思?
在Service Mesh微服务架构中,我们常常会听到东西流量和南北流量两个术语。南北流量(NORTH-SOUTH traffic)和东西流量(EAST-WEST traffic)是数据中心环境中的网络流量模式。下面我们通过一个例子来理解这两个术语。假设我们尝试通过浏览器访问某些Web应用。Web应用部署在位于某个数据中心的应用服务器中。在多层体系结构中,典型的数据中心不仅包含应用服务器,还包含其他服务器,如负载均衡器、数据库等,以及路由器和交换机等网络组件。假设应用服务器是负载均衡器的前端。当我们访
2021-07-07 14:42:54
4206
原创 informer机制在controller-runtime的执行流程
相信大家在学习k8s的informer机制时,会有很多疑惑。本文笔者使用controller-runtime带大家领略informer的设计魅力。
2021-07-03 11:39:14
324
2
原创 sigs.k8s.io controller-runtime系列之十二 health分析
简介之前介绍过sigs.k8s.io controller-runtime系列之十一 finalizer分析sigs.k8s.io controller-runtime-finalizer 。本文主要介绍pkg/health的源码分析。目录结构health.go函数// getExcludedChecks 提取要从查询参数中排除的健康检查名称。func getExcludedChecks(r *http.Request) sets.String { checks, found :=
2021-06-30 16:28:16
299
1
原创 sigs.k8s.io controller-runtime系列之十一 finalizer分析
简介之前介绍过sigs.k8s.io controller-runtime系列之十 sourceeventhandler分析sigs.k8s.io controller-runtime-sourceeventhandler 。本文主要介绍pkg/finalizer的源码分析。目录结构types.goRegisterer接口// Registerer持有Register方法,它将检查key是否已经注册,如果已存在,返回异常;如果未注册,它会将Finalizer添加到终结器map中作为提供的
2021-06-29 09:29:54
462
原创 sigs.k8s.io controller-runtime系列之十 sourceeventhandler分析
简介之前介绍过sigs.k8s.io controller-runtime系列之九 config分析sigs.k8s.io controller-runtime-config 。本文主要介绍pkg/source和pkg/event和pkg/handler的源码分析。主要为controllerManager中的属性提供默认配置目录结构source/source.goSource结构体// 源是事件的源(eh.g。对Kubernetes对象、Webhook回调等创建、更新、删除操作)//
2021-06-28 14:27:54
942
1
原创 sigs.k8s.io controller-runtime系列之九 config分析
简介之前介绍过sigs.k8s.io controller-runtime系列之八 cluster分析sigs.k8s.io controller-runtime-cluster 。本文主要介绍pkg/config的源码分析。主要为controllerManager中的属性提供默认配置目录结构config.goControllerManagerConfiguration结构体// 定义了解析config文件必须的方法并且为ctrl.Manager配置Optionstype Contro
2021-06-25 11:21:11
613
1
原创 sigs.k8s.io controller-runtime系列之八 cluster分析
简介之前介绍过sigs.k8s.io controller-runtime系列之七 certwatcher分析sigs.k8s.io controller-runtime-certwatcher 。本文主要介绍pkg/cluster的源码分析。目录结构cluster.goCluster结构体 提供了与集群交互的各种方法。type Cluster interface { // SetFields将设置对象已实现inject接口的对象上的任何依赖项,例如inject.Client。 S
2021-06-24 08:46:12
666
原创 sigs.k8s.io controller-runtime系列之七 certwatcher分析
简介之前介绍过sigs.k8s.io controller-runtime系列之六 webhook分析sigs.k8s.io controller-runtime-webhook 。本文主要介绍pkg/certwatcher的源码分析。目录结构certwatcher.goCertWatcher结构体 监视证书和密钥文件的更改。当任何一个文件更改时,它调用读取和解析这两个函数,并使用新的证书。type CertWatcher struct { sync.RWMutex
2021-06-23 08:52:29
308
1
原创 sigs.k8s.io controller-runtime系列之六 webhook分析
简介之前介绍过sigs.k8s.io controller-runtime系列之五 cache分析[sigs.k8s.io controller-runtime-cache] 。本文主要介绍pkg/webhook的源码分析。目录结构alias.go 为webhook常用到的obj定义别名server.goServer结构体// Server 是一个准入 webhook 服务器,可以为流量提供服务, 生成相关的 k8s 资源进行部署。type Server struct { //
2021-06-22 10:43:51
1266
2
原创 sigs.k8s.io controller-runtime系列之五 cache分析
简介之前介绍过sigs.k8s.io controller-runtime系列之四 client分析sigs.k8s.io controller-runtime-client 。本文主要介绍pkg/cache的源码分析。目录结构cache_suite_test.go 注册测试GVK 校验k8s环境 获取client config依赖ginkgo做集成测试,表示该文件夹内的测试例执行之前执行,BeforeSuite和AfterSuite,会在所有测试例执行之前和之后执行如果BeforeS
2021-06-03 16:35:47
1617
原创 sigs.k8s.io controller-runtime系列之四 client分析
简介之前介绍过sigs.k8s.io controller-runtime系列之三 controller分析sigs.k8s.io controller-runtime-controller 。本文主要介绍pkg/client的源码分析。目录结构interfaces.goPatch接口 是可以应用于Kubernetes对象的补丁type Patch interface { // Patch的类型(字符串形式 "application/json-patch+json"/"applic
2021-04-28 17:14:29
4530
5
原创 sigs.k8s.io controller-runtime系列之三 controller分析
简介之前介绍过sigs.k8s.io controller-runtime系列之二 manager分析sigs.k8s.io controller-runtime-manager 。本文主要介绍pkg/controller的源码分析。目录结构controller_suite_test.go 注册测试GVK 校验k8s环境 获取client config依赖ginkgo做集成测试,表示该文件夹内的测试例执行之前执行,BeforeSuite和AfterSuite,会在所有测试例执行之前和之后
2021-04-23 17:10:10
1918
1
原创 sigs.k8s.io controller-runtime系列之二 manager分析
简介之前介绍过sigs.k8s.io controller-runtime系列之一 builder分析sigs.k8s.io controller-runtime-builder 。本文主要介绍pkg/manager的源码分析。目录结构manager_suite_test.go 校验k8s环境 获取client config依赖ginkgo做集成测试,表示该文件夹内的测试例执行之前执行,BeforeSuite和AfterSuite,会在所有测试例执行之前和之后执行如果BeforeSu
2021-04-18 00:00:05
1456
1
原创 sigs.k8s.io controller-runtime系列之一 builder分析
简介之前介绍过controller-runtime总览sigs.k8s.io controller-runtime总览 。本文主要介绍pkg/builder的源码分析。目录结构builder_suite_test.go 校验k8s环境 获取client config依赖ginkgo做集成测试,表示该文件夹内的测试例执行之前执行,BeforeSuite和AfterSuite,会在所有测试例执行之前和之后执行如果BeforeSuite执行失败,则这个测试集都不会被执行control
2021-04-16 17:21:29
1494
2
原创 sigs.k8s.io controller-runtime总览
controller-runtime总览可参考examples 官方给出的例子hack 官方给出的可执行文件,代码检查,ci等pkg controller-runtime 的具体代码实现examplesbuiltins本示例为已存在的ReplicaSet资源实现自定义控制器和webhooksmain.go 例子的入口函数创建一个manager(pkg/manager)[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1Erz66K1-161847902
2021-04-15 17:32:12
2443
5
转载 Hot Redeploy:"schema change not implemented"
Hot Swap failedServer Debug: schema change not implemented; Server Debug: Operation not supported by VM原因:这是正常的jvm hotswap限制,因为它只允许修改方法体,不能有方法或属性的添加和删除。...
2019-03-14 16:05:14
5090
转载 JAVA IO 以及 NIO 理解
由于Netty,了解了一些异步IO的知识,JAVA里面NIO就是原来的IO的一个补充,本文主要记录下在JAVA中IO的底层实现原理,以及对Zerocopy技术介绍。IO,其实意味着:数据不停地搬入搬出缓冲区而已(使用了缓冲区)。比如,用户程序发起读操作,导致“ syscall read ”系统调用,就会把数据搬入到 一个buffer中;用户发起写操作,导致 “syscall write ”系统...
2018-09-14 08:55:25
135
系统集成项目管理工程师官方指定教材 第二版
2018-09-06
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人