从Deployment开始
在解释什么是Operator之前,让我们先从最熟悉的Deployment开始。
当我们写好一个Deployment的yaml之后,然后运行kubectl apply -f deployment.yaml
,我们就可以看到pod们被创建出来。
然后我们手动删掉一个pod后,又会有一个新的pod被创建出来。
这一切都是怎样发生的?Deployment背后的工作原理是怎样的?
让我们以程序员的直觉来猜一猜,当我们执行完kubectl apply -f my_deployment.yaml
之后,大概发生了以下事情:
- deployment.yaml的文件内容被kubectl发送到了kubernetes server。
- kubernetes server收到deployment.yaml之后,把它丢给一个专门处理Deployment对象的处理器(我们就叫它DeploymentController好了)。
- DeploymentController解析deployment.yaml,根据yaml中的的replica以及image之类的信息调用kubernetes创建pod的接口创建出符合期望的pod。
- 当我们执行
kubectl delete pod xxx
时,kubectl调用了kubernetes delete pod 的接口,kubernetes删掉pod的同时,把删除pod的事件也通知给DeploymentController。 - DeploymentController得知一个pod被删掉了,立马再创建一个出来,使得pod的数量和deployment.yaml中的replicas保持一致。
好吧,就算是我们猜