1. Worker Operations
  2. Kubernetes worker
  3. Kubernetes requirements
Website
  • Worker operations
  • Kubernetes requirements
  • CPU and memory for workers and Jobs
  • Install a worker
  • Configure a worker
  • Scratch storage
  • Networking and egress
  • Worker security model
  • Worker health
  • Upgrade a worker
  • Troubleshooting

Kubernetes requirements

Verify the Kubernetes version, permissions, storage, networking, DNS, and capacity required by a RestoreTrust project worker.

Loading documentation…

Worker operations< PreviousCPU and memory for workers and JobsNext >

Powered by heyo

On this page

Cluster baselineOperator permissionsNamespace planStorage requirementsNetwork requirementsAgent Pod capacityRestore Job resourcesPreflight checks

Use this page to prepare a cluster before creating a project worker.

Cluster baseline

RequirementSupported baseline
Kubernetes1.29 or newer. Restore Jobs use native sidecar containers.
Recommended Kubernetes1.30 or newer to apply the optional egress ValidatingAdmissionPolicy generated by the console.
Workload APIsapps/v1 Deployments, batch/v1 Jobs, generic ephemeral volumes, and networking.k8s.io/v1 NetworkPolicies
Pod SecurityBuilt-in Pod Security admission. The generated job namespace enforces the restricted profile.
NetworkPolicyA CNI that enforces ingress and egress NetworkPolicies for Pods
StorageA CSI-backed StorageClass that dynamically provisions ReadWriteOnce filesystem volumes
DNSCluster DNS reachable on UDP and TCP port 53 from the job namespace

Kubernetes 1.29 is the minimum supported version. On 1.29, skip the optional egress admission step; the namespace egress floor and per-execution NetworkPolicies still apply.

Operator permissions

The person applying the generated manifests must be able to create:

  • two namespaces;
  • ServiceAccounts, Roles, and RoleBindings;
  • Secrets and a Deployment in the agent namespace;
  • NetworkPolicies in the job namespace.

Applying the optional egress admission manifest additionally requires permission to manage cluster-scoped ValidatingAdmissionPolicy and ValidatingAdmissionPolicyBinding resources.

Review admission controls before installation

Existing admission policies must permit the generated agent Deployment and restore Jobs. Do not weaken cluster-wide policy to make the install pass. Review the generated manifests and add a narrowly scoped exception only when your own policy requires one.

Namespace plan

Each worker needs two different DNS-1123 namespace names:

  • Agent namespace — contains the agent Deployment, its ServiceAccount, and the worker identity Secret.
  • Job namespace — contains restore Jobs, local source Secrets, temporary PVCs, and execution NetworkPolicies.

The console suggests restoretrust-workers-<project> and restoretrust-jobs-<project>. Choose unique names for every worker identity installed in the same cluster. Names may contain lowercase letters, digits, and hyphens and must be at most 63 characters.

Storage requirements

The scratch StorageClass must:

  • provision volumes dynamically;
  • use reclaimPolicy: Delete;
  • provide ReadWriteOnce filesystem volumes;
  • apply the Pod fsGroup so non-root containers can write;
  • use WaitForFirstConsumer when storage is topology-bound;
  • support enough attached volumes for the worker's parallel capacity;
  • provide encryption at rest when required by your data policy.

See Scratch storage for sizing and quota guidance.

Network requirements

Allow:

  • the agent Pod to connect outbound to the exact host and TCP port in the generated WORKER_GRPC_TARGET;
  • cluster nodes to pull every image referenced by the generated Deployment and restore Jobs;
  • the agent Pod to reach the Kubernetes API;
  • restore Jobs to reach cluster DNS and the backup source host and port.

No inbound connection from RestoreTrust to your cluster is required. See Networking and egress for protocol ports and CIDR guardrails.

Agent Pod capacity

The generated Deployment sets CPU, memory, and ephemeral-storage requests and limits for the agent according to Max parallel jobs. These settings are separate from restore Job resources.

Max parallel jobsCPU request / limitMemory request / limitEphemeral storage request / limit
1150m / 400m192Mi / 384Mi256Mi / 512Mi
2–4400m / 1000m384Mi / 768Mi512Mi / 1Gi
5–161200m / 3000m1Gi / 2Gi1Gi / 2Gi
17–644000m / 8000m3Gi / 6Gi2Gi / 4Gi

These values cover the agent only. Restore Jobs need additional CPU, memory, image-pull bandwidth, and one scratch volume each. Ensure the cluster can schedule the configured number of Jobs concurrently. Changing the worker's parallel-job capacity requires saving the worker record and applying its generated Deployment patch.

Restore Job resources

By default a restore Job sets no CPU or memory requests or limits, so Kubernetes reserves nothing for it and, unless cluster admission adds defaults, treats it as BestEffort: under memory pressure it is among the first Pods evicted. There is no separate BestEffort option; leave all database-resource fields empty to retain this behavior.

A database schedule can set requests and limits for the database container, the one that imports the dump and answers the health probes. All four values are optional and independent: CPU request and limit in millicores (1000 = one CPU), memory request and limit in MiB. RestoreTrust sets exactly what the schedule contains and derives nothing; when only a limit is set, Kubernetes uses it as the request too. The other containers of the Job keep no requests or limits. File checks have no database container.

The values only reserve and cap resources; they do not tune the database itself. If no node has the requested CPU or memory free for five minutes by default, the check fails with exit code 49 (insufficient compute). A memory limit below what the restore needs can end with the database container OOM-killed. See CPU and memory for workers and Jobs for configuration and capacity examples.

Preflight checks

Replace the placeholders with your planned names:

bash
kubectl versionkubectl get storageclasskubectl get nodeskubectl auth can-i create namespaceskubectl auth can-i create deployments -n <AGENT_NAMESPACE>kubectl auth can-i create roles -n <JOB_NAMESPACE>kubectl auth can-i create networkpolicies.networking.k8s.io -n <JOB_NAMESPACE>

If your cluster uses NodeLocal DNSCache or a custom resolver, record the resolver IPs now. You may need to add them to the generated egress floor.

Related topics

  • Install a Kubernetes worker
  • CPU and memory for workers and Jobs
  • Configure scratch storage
  • Plan network egress