Problem

问题是这样的,我写了个脚本来list出所有的Aurora job然后逐一killall来删除所有的job。然而执行完脚本后,过了一段时间发现还有一个job还在Mesos里run。

这不是要逆天了嘛,速速kill掉:

[root@pica-service bin]# aurora job killall main/root/devel/source_nike_test_test_0

No tasks to kill found for job main/root/devel/source_nike_test_test_0

Job killall succeeded

显示kill成功了啊,但是回去mesos上一看,job还在那run的好好的呢。

于是我灵机一动,先创建一个同名的job再删除不就行了(感觉自己好机智)。

然而:


[root@pica-service bin]# aurora job create main/root/devel/source_nike_test_test0 /tmp/aurora708374195

 INFO] Creating job source_nike_test_test_0

Job creation failed due to error:

        Job root/devel/source_nike_test_test_0 already exists

就在我看着Aurora job的页面发呆的时候,突然发现这个job和别的job不太一样啊,它是cron的job!再联想下aurora命令是单独有一个cron的选项的,要删除cron的job需要走这个选项才行:

[root@pica-service bin]# aurora cron deschedule main/root/devel/source_nike_test_test_0

 INFO] Removing cron schedule for job main/root/devel/source_nike_test_test_0

Cron descheduling succeeded.

Conclusion

Aurora的job分两种:普通job和cron job。普通job又可以由它的service属性分为service job和adhoc job。普通job都可以通过aurora job killall来删除,而cron job则需要通过aurora cron deschedule来删除。

顺便说一下Aurora和Mesos之间的关系:Mesos提供了Api来创建它的task,而Aurora会根据自己的job去调用Mesos的Api(比如说一个cron job就是定期去call这个Api)。所以如果看到Mesos上有一个Task一直在run,那可不是Mesos的问题,它只是一个任劳任怨地小工头,后面的大老板说啥它做啥而已。