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就会新建一个