K8S 二次开发


一、概念篇

1、什么是CRD

平时写的yaml文件有deployment,daemonset,storageclass,等等,这些都是kubernetes当中内置好的,除了这些,能不能自定义开发这些资源呢?

答案是:能,使用k8s的CustomResourceDefinition就可以定义出属于自己的kind。CRD通俗讲就是自定义K8S资源类型

2、什么是Controller

K8S通过Apiserver,在etcd中注册一种新的资源类型,通过Custom Controller来监听资源对象的事件变化,

controller的作用就是监听指定对象的新增、删除、修改等变化,针对这些变化做出相应的响应,做出相应的操作

3、什么是Operator

Operator = CRD+Controller

4、什么是CR

CR:Custom Resource,CRD的具体实例

5、什么是Informer

informer可以注册一写function, 比如add,update ,delete 对象的事件,当对象变化时候,这个informer 会吧这些事件放入到 controller 的事件队列中

6、什么是webhook?

7、什么是sandbox? 

sandbox 是 CRI 规范中的一环,CRI 规范规定了容器启动之前必须要有个 sandbox,网络资源以及存储资源的承载,sandbox 就是一个容器,它在 k8s 里被叫做 "pause"

8、什么是声明式API

声明式api不是命令式api,他需要一个控制逻辑,根据当前的状态决定做什么,比如pod挂了一个,那么controller就会新建一个