配置主api服务器以检查cordon节点,并在没有作业运行的情况下销毁该节点



团队,

我们需要在K8s集群的工作节点上推出一些驱动程序,我们的流程如下:

  1. 警戒线节点[不再安排]
  2. 等待作业完成
  3. 破坏

有没有一种方法可以使用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服务器对话的应用程序代码。

相关内容

  • 没有找到相关文章

最新更新