proud-answer-87162
10/28/2025, 12:03 PMPodTemplate via k8s yaml, and any task annotations required to use that template in all tasks in a workflow. show an example of defining the defaults for new tasks and an example of how to override the defaults for a specific taskancient-wolf-19325
10/28/2025, 12:03 PMPodTemplate via Kubernetes YAML, create a PodTemplate resource with the desired limits. To use this template for all tasks in a workflow, set the default-pod-template-name in the FlytePropeller config. No special task annotation is required unless you want to override the default for a specific task. For task-level overrides, use the pod_template argument in the @task decorator. According to FlytePropeller PodTemplate docs and Flyte 1.4 release notes, here are examples:
1. PodTemplate YAML with resource limits:
apiVersion: v1
kind: PodTemplate
metadata:
name: flyte-default-template
namespace: flyte
template:
spec:
containers:
- name: default
image: docker.io/rwgrim/docker-noop
resources:
limits:
cpu: "2"
memory: "4Gi"
requests:
cpu: "1"
memory: "2Gi"
2. FlytePropeller config to use the template by default:
plugins:
k8s:
default-pod-template-name: flyte-default-template
3. Task definition using platform defaults:
from flytekit import task
@task
def my_task():
...
4. Override PodTemplate for a specific task:
from flytekit import task
from flytekitplugins.kubernetes.pod import PodTemplate
from kubernetes.client import V1PodSpec, V1Container, V1ResourceRequirements
custom_pod_template = PodTemplate(
primary_container_name="primary",
pod_spec=V1PodSpec(
containers=[
V1Container(
name="primary",
resources=V1ResourceRequirements(
limits={"cpu": "4", "memory": "8Gi"},
requests={"cpu": "2", "memory": "4Gi"},
),
),
]
),
)
@task(pod_template=custom_pod_template)
def special_task():
...
This setup uses the default PodTemplate for all tasks unless overridden at the task level. Would you like more detail on how Flyte merges these configurations?
Sources:
- FlytePropeller PodTemplate docs
- Flyte 1.4 release notes 👍 0 button 👎 0 button 💡 Hint: Mention @runllm in the thread for followups.proud-answer-87162
10/28/2025, 12:11 PMk8sPlugin:
default-pod-template-name: default-pod-template
default-env-vars:
- FLYTE_AZURE_STORAGE_ACCOUNT_NAME: asdfasdf
taskResources:
defaults:
cpu: 250m
memory: 2Gi
limits:
cpu: null
memory: 8Gi
I want to be able to override those resource values in specific namespaces, so i created a default pot template and apply it. here is an example:
spec:
serviceAccountName: flyte-task-default
volumes:
- name: ingest-config
configMap:
name: ingest-config
containers:
- name: default
image: cr.flyte.org/flyteorg/flytekit:py3.11-1.13.0
resources:
requests:
memory: "8Gi"
limits:
memory: "16Gi"
However, when a pod in that namespace is spun up for a task, the resource definition is the flyte propeller defined defaults; i.e., it doesn't use the pod template override. why? how can i fix it?ancient-wolf-19325
10/28/2025, 12:11 PMtaskResources.defaults and taskResources.limits take precedence over values set in a namespace's default PodTemplate, unless you explicitly override them at the task level. PodTemplate resource requests/limits for CPU and memory are ignored if taskResources are set, but extended resources (like GPUs) from the PodTemplate are preserved. This is a known limitation and is discussed in Flyte Issue #6482.
To override resource values per-namespace using a PodTemplate, you must remove or unset the corresponding taskResources.defaults and taskResources.limits in your FlytePropeller config for that namespace, or explicitly set the resources at the task level. Otherwise, Flyte will always use the config defaults for CPU and memory, not the PodTemplate values. Would you like more detail on how to structure your configs for per-namespace overrides?
Sources:
- Flyte Issue #6482 👍 0 button 👎 0 button 💡 Hint: Mention @runllm in the thread for followups.proud-answer-87162
10/28/2025, 12:17 PMflytekitplugins? i'm using 1.13 and don't see that dependencyancient-wolf-19325
10/28/2025, 12:17 PMflytekitplugins namespace and separately installable plugin packages were introduced starting with flytekit version 0.16.0b1. This change allowed plugins to be installed independently from the core SDK. If you are using flytekit 1.13, you should see and be able to install flytekitplugins-* packages, as this namespace and packaging structure is present in all 1.x releases and later. If you do not see the dependency, ensure you are installing the plugin (e.g., pip install flytekitplugins-spark) separately, as plugins are not bundled with the core flytekit package by default. See Flytekit plugin separation issue.
Would you like more detail on how to install or use these plugins?
Sources:
- Flytekit plugin separation issue 👍 0 button 👎 0 button 💡 Hint: Mention @runllm in the thread for followups.proud-answer-87162
10/28/2025, 12:54 PMflytekitplugins.pod introduced?ancient-wolf-19325
10/28/2025, 12:54 PMflytekitplugins.pod plugin was introduced in Flytekit version 0.16.0b1, when plugins were separated into their own packages and the flytekitplugins namespace was established. This allowed users to install the pod plugin independently as flytekitplugins-pod. See Flytekit plugin separation issue.
Would you like more detail on its usage or history?
Sources:
- Flytekit plugin separation issue 👍 0 button 👎 0 button 💡 Hint: Mention @runllm in the thread for followups.