我有一个简单的工作,它在 YAML 文件中定义类似于以下内容:
apiVersion: batch/v1
kind: Job
metadata:
name: check_deps
spec:
template:
spec:
containers:
- name: production-container
image: registry.company.com/app:master
imagePullPolicy: Always
envFrom:
- configMapRef:
name: production
args:
- python
- check_dependencies
restartPolicy: Never
我想从 CI 触发此作业,并在其失败或成功时收到信息。
只需一个简单的命令,例如:
kubectl run job --name=check_deps --watch
这文档说我需要从 yaml 创建作业,读取其输出,然后分 3 个步骤将其删除。我可以创建一个脚本来执行此操作,但也许有一个内置解决方案可以让我实现我的目标?
我在裸机 CentOs 上运行 kubernetes,客户端和服务器的版本都是 1.11。
答案1
Kubernetes 中没有这样的内置功能。您可以使用kubectl create
命令,但仍必须编写自己的脚本来运行它并检查状态。
答案2
您可以运行kubectl wait --for=condition=complete job/check_deps
。您仍然需要在之前和之后创建和删除作业,但使用该命令,您最终会得到一个相当干净和简单的方法。