文档首页> 应用服务网格 ASM> 常见问题> 添加服务> 如何为普通任务(Job)和定时任务(CronJob)类型负载注入sidecar
更新时间:2024-05-21 GMT+08:00
分享

如何为普通任务(Job)和定时任务(CronJob)类型负载注入sidecar

前置条件

  1. 确认使用ASM1.15.5-r3及以上版本创建网格。
  2. 默认场景下,对普通任务(Job)和定时任务(CronJob)类型负载创建的Pod不进行sidecar注入,如果需要注入请在创建工作负载时,设置高级参数“标签与注解> Pod标签”sidecar.istio.io/inject: 'true'。如下图:

    参考CronJob示例:

    kind: CronJob
    apiVersion: batch/v1
    metadata:
      name: mycronjob
      namespace: default
    spec:
      schedule: '*/1 * * * *'
      jobTemplate:
        spec:
          template:
            metadata:
              creationTimestamp: null
              labels:
                app: mycronjob
                sidecar.istio.io/inject: 'true'
    ...
  3. 了解Job/CronJob类型使用的约束,需要在容器中使用指令退出sidecar。

任务完成后sidecar退出

通过调用istio-proxy接口curl -sf -XPOST http://127.0.0.1:15000/quitquitquit,在Job工作完成后退出istio-proxy。

参考CronJob示例:

kind: CronJob
apiVersion: batch/v1
metadata:
  name: mycronjob
  namespace: default
spec:
  schedule: '*/1 * * * *'
  concurrencyPolicy: Forbid
  suspend: false
  jobTemplate:
    metadata:
      creationTimestamp: null
    spec:
      template:
        metadata:
          creationTimestamp: null
          labels:
            app: cronjob1
            sidecar.istio.io/inject: 'true'
            version: v1
        spec:
          containers:
            - name: mycronjob-1
              image: 'busybox:latest'
              command:
                - /bin/bash
                - '-c'
              args:
                - |
                  trap "curl --max-time 2 -s -f -XPOST http://127.0.0.1:15000/quitquitquit" EXIT
                  while ! curl -s -f http://127.0.0.1:15020/healthz/ready; do sleep 1;done
                  sleep 2
                  date; echo Hello from the Kubernetes cluster<Your Job command/真实业务运行命令>
...
分享:

添加服务 所有常见问题

more