检查初始化容器中批处理作业的状态



我的要求是在特定批处理作业完成时启动 pod。

批处理作业 yaml 文件

apiVersion: batch/v1
kind: Job
metadata:
name: topics
spec:
ttlSecondsAfterFinished: 100
template:
metadata:
labels:
app: topics
spec:
containers:
- env:
name: topics
image: confluentinc/cp-kafka:5.3.0
command:
- sh
- -c
- {{.Values.KafkaTopics}}

2 部署 yaml

apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: opp
spec:
replicas: 1
strategy: {}
template:
metadata:
labels:
app: opp
initContainers:
- name: init
image: busybox
command: ['sh', '-c', 'until nc -z someservice:8093; do echo waiting for init; sleep 2; done;']

当我检查某些服务是否启动时,初始化容器很好。无法弄清楚批处理作业。

启动一个 pod

您用Deployment描述的是服务的部署,而不仅仅是启动Pod。

监视 Kubernetes 对象的状态

当特定批处理作业完成时。

如果你想观察 Kubernetes 对象并根据特定对象的状态变化执行操作,你需要与 Kubernetes API 服务器进行交互。

使用 Kubernetes 客户端

与 Kubernetes API 交互的最简单方法,特别是对于手表,是使用预构建的客户端,例如 client-go 或 kubernetes-client Java。

使用 Kubernetes REST API

或者,您也可以直接使用 Kubernetes REST API。

API 身份验证和授权

请注意,应使用服务帐户进行身份验证,并正确设置用于授权的 RBAC 规则。

夫卡消费者

另一种解决方案,因为您的Job暗示您正在使用 Kafka。您的Job可以在 Kafka 上发布事件,您可以让Kafka 使用者订阅这些事件并对其执行操作。但是,如果使用者应该在事件上部署服务,它还需要一个服务帐户来与 Kubernetes API 服务器进行交互。

最新更新