Skip to navigation

nemo_gym.orchestration.executors.kubernetes

View as Markdown

Kubernetes executor: one kubectl apply per benchmark, no SSH/rsync.

Assumes the kubeconfig is already set up (e.g. tsh kube login <cluster>) the same way the Slurm executor assumes SSH keys/agent are already set up — this executor does not drive cluster auth.

Module Contents

Classes

NameDescription
KubernetesExecutorKubernetes executor. One Job per benchmark; see kubernetes_script.py for the pod shape.

Functions

Data

_KUBECTL_TIMEOUT_SECONDS

_VALID_BENCHMARK_NAME

API

class nemo_gym.orchestration.executors.kubernetes.KubernetesExecutor()

Bases: BaseExecutor

Kubernetes executor. One Job per benchmark; see kubernetes_script.py for the pod shape.

name
= 'kubernetes'
nemo_gym.orchestration.executors.kubernetes.KubernetesExecutor._build_manifests(
gym_job_id: str,
now: datetime.datetime,
base_run_dir: pathlib.Path,
benchmark_names: list[str]
) -> list[tuple[str, dict]]
nemo_gym.orchestration.executors.kubernetes.KubernetesExecutor._dry_run(
manifests: list[tuple[str, dict]],
gym_job_id: str
) -> None
nemo_gym.orchestration.executors.kubernetes.KubernetesExecutor.resubmit(
benchmark: str
nemo_gym.orchestration.executors.kubernetes.KubernetesExecutor.run(
dry_run: bool = False
nemo_gym.orchestration.executors.kubernetes._kubectl(
args: str = (),
input: str | None = None
) -> subprocess.CompletedProcess
nemo_gym.orchestration.executors.kubernetes._validate_benchmark_names(
benchmarks: list[str]
) -> None
nemo_gym.orchestration.executors.kubernetes._KUBECTL_TIMEOUT_SECONDS = 60
nemo_gym.orchestration.executors.kubernetes._VALID_BENCHMARK_NAME = re.compile('^[a-z0-9][a-z0-9._-]*$')