Create a pod on a Kubernetes cluster, wait until the pod stops and collect its logs.

yaml
type: "io.kestra.plugin.kubernetes.core.PodCreate"

Launch a Pod

yaml
id: kubernetes_pod_create
namespace: company.team

tasks:
  - id: pod_create
    type: io.kestra.plugin.kubernetes.core.PodCreate
    namespace: default
    metadata:
      labels:
        my-label: my-value
    spec:
      containers:
      - name: unittest
        image: debian:stable-slim
        command:
          - 'bash'
          - '-c'
          - 'for i in {1..10}; do echo $i; sleep 0.1; done'
      restartPolicy: Never

Launch a Pod with input files and gather its output files.

yaml
id: kubernetes_pod_create
namespace: company.team

inputs:
  - id: file
    type: FILE

tasks:
  - id: pod_create
    type: io.kestra.plugin.kubernetes.core.PodCreate
    spec:
      containers:
      - name: unittest
        image: centos
        command:
          - cp
          - "{{workingDir}}/data.txt"
          - "{{workingDir}}/out.txt"
      restartPolicy: Never
    waitUntilRunning: PT3M
    inputFiles:
      data.txt: "{{inputs.file}}"
    outputFiles:
      - out.txt

Launch a Pod with input files and gather its output files limiting resources for the init and sidecar containers.

yaml
id: kubernetes_pod_create
namespace: company.team

inputs:
  - id: file
    type: FILE

tasks:
  - id: pod_create
    type: io.kestra.plugin.kubernetes.core.PodCreate
    fileSidecar:
      resources:
        limits:
          cpu: "300m"
          memory: "512Mi"
    spec:
      containers:
      - name: unittest
        image: centos
        command:
          - cp
          - "{{workingDir}}/data.txt"
          - "{{workingDir}}/out.txt"
      restartPolicy: Never
    waitUntilRunning: PT3M
    inputFiles:
      data.txt: "{{inputs.file}}"
    outputFiles:
      - out.txt
Properties

The YAML spec of the pod

The connection parameters to the Kubernetes cluster

If no connection is defined, we try to load the connection from the current context in the following order:

  1. System properties
  2. Environment variables
  3. Kube config file
  4. Service account token and a mounted CA certificate.

You can pass a full configuration with all options if needed.

Default true

Whether the pod should be deleted upon completion

Default { "image": "busybox" }

The configuration of the file sidecar container that handles the download and upload of files

SubType string

The files to create on the local filesystem – it can be a map or a JSON object.

The files will be available inside the kestra/working-dir directory of the container. You can use the special variable {{workingDir}} in your command to refer to it.

Default false

The YAML metadata of the pod

Default default

The namespace where the pod will be created

SubType string

The files from the container filesystem to send to Kestra's internal storage

Only files created inside the kestra/working-dir directory of the container can be retrieved. Must be a list of glob expressions relative to the current working directory, some examples: my-dir/**, my-dir/*/** or my-dir/my-file.txt..

Default true

Whether to reconnect to the current pod if it already exists

Default PT30S
Format duration

Additional time after the pod ends to wait for late logs

After deterministic log collection completes, wait this duration to allow any remaining logs to arrive through the async queue. Useful as a safety net for high-throughput scenarios.

Default PT1H
Format duration

The maximum duration to wait for the job completion

Default PT10M
Format duration

The maximum duration to wait until the job and the pod is created

This timeout is the maximum time that Kubernetes scheduler will take to

  • schedule the job
  • pull the pod image
  • and start the pod.

The pod metadata

SubType string

The output files URI in Kestra's internal storage

The pod status

The output variables extracted from the logs of the commands

Default v1

The API version

CA certificate as data

CA certificate as file path

Client certificate as data

Client certificate as a file path

Default RSA

Client key encryption algorithm

default is RSA

Client key as data

Client key as a file path

Client key passphrase

Disable hostname verification

Key store file

Key store passphrase

Default https://kubernetes.default.svc

The URL to the Kubernetes API

The namespace used

Oauth token

Oauth token provider

Password

Trust all certificates

Truststore file

Truststore passphrase

Username

SubType
SubType
SubType
SubType
SubType
Format date-time
Default busybox

The image used for the file sidecar container

The resource requirements applied to the file sidecar container

SubType
SubType string

List of all annotations of the resource

Name of the current cluster

Format date-time

Creation datetime

Deletetion grace period in seconds

Format date-time

Deletion datetime

SubType string

List of finalizers

Generate name of the resource

Generation

SubType string

List of labels

List of managed fields

Name of the resource

Namespace of the resource

List of owner reference

Resource version

Generated UUID of this resource

SubType integer