团队,
我们需要在K8s集群的工作节点上推出一些驱动程序,我们的流程如下:
- 警戒线节点[不再安排]
- 等待作业完成
- 破坏
有没有一种方法可以使用K8s选项本身实现自动化,而不是每次都编写一些bash脚本来进行这些检查,因为我们不知道pod何时完成。那么,如果主API服务器没有运行作业,我们可以配置它来检查警戒节点并销毁它吗?
您可以使用Go Client、Python Client或Java Client编写自己的应用程序,基本上可以这样做:
$ kubectl apply -f yourjob.yaml
$ kubectl cordon <nodename>
$ kubectl wait --for=condition=complete job/myjob
$ kubectl drain <nodename>
# Terminate your node if drain returns successfully
如果这是一种常见的模式,您也可以利用具有自定义资源定义(CRD(的自定义控制器(操作员(来实现这一点。您必须嵌入与API服务器对话的应用程序代码。