上图是整个 client-go 的完整架构图,或者说是我们要去实现一个自定义的控制器的一个整体流程,其中黄色图标是开发者需要自行开发的部分,而其它的部分是 client-go 已经提供的,直接使用即可。 由于 client-go 实现非常复杂,我们这里先对上图中最核心的部分 Informer 进行说明。在 Informer 的架构中包含如下几个核心…
5 Informer 使用 前面我们在使用 Clientset 的时候了解到我们可以使用 Clientset 来获取所有的原生资源对象,那么如果我们想要去一直获取集群的资源对象数据呢?岂不是需要用一个轮询去不断执行 List() 操作?这显然是不合理的,实际上除了常用的 CRUD 操作之外,我们还可以进行 Watch 操作,可以监听资源对象的增、删…
3 ClientSet 使用 3.1 介绍 Clientset 是调用 Kubernetes 资源对象最常用的客户端,可以操作所有的资源对象。 前面我们说了在 staging/src/k8s.io/api 下面定义了各种类型资源的规范,然后将这些规范注册到了全局的 Scheme 中,这样就可以在 Clientset 中使用这些资源了。那么我们应该如…
2 资源类型 Scheme 本节主要讲解 Kubernetes 核心的资源类型 Scheme 的定义和用途。 现在我们知道我们的 yaml 文件是通过 api 的一个转换来发起一个网络请求,那么整个的资源类型他是怎么样在 K8S 当中来定义的呢? 就是平时我们在 yaml 中写的一个 deployment 的资源类型为什么 K8S 能够识别?这些资…
1 环境准备 1 源码下载 直接 Clone 官方 Kubernetes 源码即可获得代码: $ git clone https://github.com/kubernetes/kubernetes.git 但是由于 Kubernetes 源码非常大,而且我们访问 GitHub 又比较慢,为解决这个问题我们可以使用加速器进行 Clone,只需要将 …
[TOC] KUBERNETES API 接口模型 1 介绍 Kubernetes 中最核心的就是 kube-apiserver 组件,其他组件都是和 kube-apiserver 进行通信的,本节主要就来研究下 Kubernetes API 接口的模型。 2 API 对象 在 Kubernetes 集群中,Kubernetes 对象是我们持久化的…
K8S 二次开发 我们在对一个东西进行二次开发的时候,我们需要有以下两点需要注意: 知道各个组件的使用,这里我就不在介绍 K8S 和 docker 的一些使用 熟悉对应的 api 在 K8S 中 api 也是对应的 http reset api ,这里使用的是 go-client 这里主要介绍的是开发 deployment+service 1 do…
go 语言流程控制语句 程序流程控制介绍: 在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句。 1) 顺序控制 2) 分支控制(有判断条件) 3) 循环控制 在 GO 中流程控制语句有以下几个: if 语句 switch语句 for循环 break与continue goto语句与Label 1 if 语句…
结构体 结构体创建、访问与修改 结构体指针 结构体嵌套 深拷贝与浅拷贝 1 结构体创建、访问与修改 1.定义结构体 //定义user结构体 type user struct { id int score float32 enrollment time.Time name, addr string // 多个字段类型相同时可以简写到一行里 } // …
[TOC] 2 复合数据类型 2.1 数组 数组特点: 声明之后长度固定不可修改 数组首元素地址就是数组地址 每个元素之间的地址都是根据数据类型的占位来有序扩张。如 int 占用 8 字节,那么他的下一个元素会在上一个元素的地址基础上 +8 数组先在内存根据类型和 index 的总数计算出所需空间,并开辟内存空间,在将每个 index 的元素放入 …