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

时间:2019-12-04 13:13:16

标签: kubernetes

我的要求是在完成特定批处理作业时启动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;']

在我检查一些服务是否正常时,初始化容器很好。无法解决批处理作业。

1 个答案:

答案 0 :(得分:1)

  

启动广告连播

您用Deployment描述的是一项服务的部署,而不仅仅是启动一个pod。

观看Kubernetes对象的状态

  

完成特定批处理作业时。

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

使用Kubernetes客户端

与Kubernetes API交互的最简单方法(特别是对于 watch 而言)是使用预构建的客户端,例如client-gokubernetes-client Java

使用Kubernetes REST API

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

API身份验证和授权

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

Kafka消费者

一种替代解决方案,因为您的Job暗示您正在使用Kafka。您的Job可以在Kafka上发布活动,并且您可以让 Kafka消费者进行订阅并采取措施。但是,如果消费者应该在事件中部署服务,则它还需要一个服务帐户才能与Kubernetes API服务器进行交互。