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

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

前置条件

  • 确认使用ASM1.15.5-r3及以上版本创建网格。
  • 默认场景下,对普通任务(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'
...
  • 要使用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/真实业务运行命令>
...

相关文档