:py:mod:`airflow.providers.cncf.kubernetes.operators.kubernetes_pod`
====================================================================

.. py:module:: airflow.providers.cncf.kubernetes.operators.kubernetes_pod

.. autoapi-nested-parse::

   Executes task in a Kubernetes POD



Module Contents
---------------

Classes
~~~~~~~

.. autoapisummary::

   airflow.providers.cncf.kubernetes.operators.kubernetes_pod.KubernetesPodOperator




.. py:exception:: PodReattachFailure

   Bases: :py:obj:`airflow.exceptions.AirflowException`

   When we expect to be able to find a pod but cannot.


.. py:class:: KubernetesPodOperator(*, kubernetes_conn_id = None, namespace = None, image = None, name = None, random_name_suffix = True, cmds = None, arguments = None, ports = None, volume_mounts = None, volumes = None, env_vars = None, env_from = None, secrets = None, in_cluster = None, cluster_context = None, labels = None, reattach_on_restart = True, startup_timeout_seconds = 120, get_logs = True, image_pull_policy = None, annotations = None, container_resources = None, affinity = None, config_file = None, node_selectors = None, node_selector = None, image_pull_secrets = None, service_account_name = None, is_delete_operator_pod = True, hostnetwork = False, tolerations = None, security_context = None, container_security_context = None, dnspolicy = None, schedulername = None, full_pod_spec = None, init_containers = None, log_events_on_failure = False, do_xcom_push = False, pod_template_file = None, priority_class_name = None, pod_runtime_info_envs = None, termination_grace_period = None, configmaps = None, resources = None, **kwargs)

   Bases: :py:obj:`airflow.models.BaseOperator`

   Execute a task in a Kubernetes Pod

   .. seealso::
       For more information on how to use this operator, take a look at the guide:
       :ref:`howto/operator:KubernetesPodOperator`

   .. note::
       If you use `Google Kubernetes Engine <https://cloud.google.com/kubernetes-engine/>`__
       and Airflow is not running in the same cluster, consider using
       :class:`~airflow.providers.google.cloud.operators.kubernetes_engine.GKEStartPodOperator`, which
       simplifies the authorization process.

   :param kubernetes_conn_id: The :ref:`kubernetes connection id <howto/connection:kubernetes>`
       for the Kubernetes cluster.
   :param namespace: the namespace to run within kubernetes.
   :param image: Docker image you wish to launch. Defaults to hub.docker.com,
       but fully qualified URLS will point to custom repositories. (templated)
   :param name: name of the pod in which the task will run, will be used (plus a random
       suffix if random_name_suffix is True) to generate a pod id (DNS-1123 subdomain,
       containing only [a-z0-9.-]).
   :param random_name_suffix: if True, will generate a random suffix.
   :param cmds: entrypoint of the container. (templated)
       The docker images's entrypoint is used if this is not provided.
   :param arguments: arguments of the entrypoint. (templated)
       The docker image's CMD is used if this is not provided.
   :param ports: ports for the launched pod.
   :param volume_mounts: volumeMounts for the launched pod.
   :param volumes: volumes for the launched pod. Includes ConfigMaps and PersistentVolumes.
   :param env_vars: Environment variables initialized in the container. (templated)
   :param env_from: (Optional) List of sources to populate environment variables in the container.
   :param secrets: Kubernetes secrets to inject in the container.
       They can be exposed as environment vars or files in a volume.
   :param in_cluster: run kubernetes client with in_cluster configuration.
   :param cluster_context: context that points to kubernetes cluster.
       Ignored when in_cluster is True. If None, current-context is used.
   :param reattach_on_restart: if the worker dies while the pod is running, reattach and monitor
       during the next try. If False, always create a new pod for each try.
   :param labels: labels to apply to the Pod. (templated)
   :param startup_timeout_seconds: timeout in seconds to startup the pod.
   :param get_logs: get the stdout of the container as logs of the tasks.
   :param image_pull_policy: Specify a policy to cache or always pull an image.
   :param annotations: non-identifying metadata you can attach to the Pod.
       Can be a large range of data, and can include characters
       that are not permitted by labels.
   :param container_resources: resources for the launched pod.
   :param affinity: affinity scheduling rules for the launched pod.
   :param config_file: The path to the Kubernetes config file. (templated)
       If not specified, default value is ``~/.kube/config``
   :param node_selectors: (Deprecated) A dict containing a group of scheduling rules.
       Please use node_selector instead.
   :param node_selector: A dict containing a group of scheduling rules.
   :param image_pull_secrets: Any image pull secrets to be given to the pod.
       If more than one secret is required, provide a
       comma separated list: secret_a,secret_b
   :param service_account_name: Name of the service account
   :param is_delete_operator_pod: What to do when the pod reaches its final
       state, or the execution is interrupted. If True (default), delete the
       pod; if False, leave the pod.
   :param hostnetwork: If True enable host networking on the pod.
   :param tolerations: A list of kubernetes tolerations.
   :param security_context: security options the pod should run with (PodSecurityContext).
   :param container_security_context: security options the container should run with.
   :param dnspolicy: dnspolicy for the pod.
   :param schedulername: Specify a schedulername for the pod
   :param full_pod_spec: The complete podSpec
   :param init_containers: init container for the launched Pod
   :param log_events_on_failure: Log the pod's events if a failure occurs
   :param do_xcom_push: If True, the content of the file
       /airflow/xcom/return.json in the container will also be pushed to an
       XCom when the container completes.
   :param pod_template_file: path to pod template file (templated)
   :param priority_class_name: priority class name for the launched Pod
   :param pod_runtime_info_envs: (Optional) A list of environment variables,
       to be set in the container.
   :param termination_grace_period: Termination grace period if task killed in UI,
       defaults to kubernetes default
   :param configmaps: (Optional) A list of names of config maps from which it collects ConfigMaps
       to populate the environment variables with. The contents of the target
       ConfigMap's Data field will represent the key-value pairs as environment variables.
       Extends env_from.

   .. py:attribute:: BASE_CONTAINER_NAME
      :annotation: = base

      

   .. py:attribute:: POD_CHECKED_KEY
      :annotation: = already_checked

      

   .. py:attribute:: template_fields
      :annotation: :Sequence[str] = ['image', 'cmds', 'arguments', 'env_vars', 'labels', 'config_file', 'pod_template_file', 'namespace']

      

   .. py:attribute:: template_fields_renderers
      

      

   .. py:method:: pod_manager()


   .. py:method:: get_hook()


   .. py:method:: hook()


   .. py:method:: client()


   .. py:method:: find_pod(namespace, context, *, exclude_checked = True)

      Returns an already-running pod for this task instance if one exists.


   .. py:method:: get_or_create_pod(pod_request_obj, context)


   .. py:method:: await_pod_start(pod)


   .. py:method:: extract_xcom(pod)

      Retrieves xcom value and kills xcom sidecar container


   .. py:method:: execute(context)

      This is the main method to derive when creating an operator.
      Context is the same dictionary used as when rendering jinja templates.

      Refer to get_template_context for more context.


   .. py:method:: cleanup(pod, remote_pod)


   .. py:method:: process_pod_deletion(pod)


   .. py:method:: patch_already_checked(pod)

      Add an "already checked" annotation to ensure we don't reattach on retries


   .. py:method:: on_kill()

      Override this method to cleanup subprocesses when a task instance
      gets killed. Any use of the threading, subprocess or multiprocessing
      module within an operator needs to be cleaned up or it will leave
      ghost processes behind.


   .. py:method:: build_pod_request_obj(context = None)

      Returns V1Pod object based on pod template file, full pod spec, and other operator parameters.

      The V1Pod attributes are derived (in order of precedence) from operator params, full pod spec, pod
      template file.


   .. py:method:: dry_run()

      Prints out the pod definition that would be created by this operator.
      Does not include labels specific to the task instance (since there isn't
      one in a dry_run) and excludes all empty elements.



