kyma-project / kyma-project/gpu

Namespace GPU quotas (spec.namespaceQuotas)

Open
#71 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Go
Stars
2
Forks
3
PR merge metrics
No merged PRs in 30d

Description

Allow platform teams to limit how many GPUs each namespace can use directly from the GPU CR. Operator manages Kubernetes ResourceQuota objects automatically - users never touch them directly.

On shared clusters, without quotas one team can consume all GPUs and starve others. NVIDIA GPU Operator has no namespace concept - this is unique value only our operator can provide.

User experience

Platform engineer configures GPU budgets per team once:

spec:
  namespaceQuotas:
    - namespace: ml-team-a
      gpus: 4
    - namespace: ml-team-b
      gpus: 2

That's it. Now:

  • ml-team-a can run pods requesting up to 4 GPUs total
  • ml-team-b can run pods requesting up to 2 GPUs total
  • If ml-team-a tries to exceed their budget, Kubernetes rejects the pod immediately with a clear error — no scheduling, no pending, instant feedback
  • No kubectl, no ResourceQuota YAML, no per-namespace manual work

When a team is removed, delete the entry from the CR - quota is cleaned up automatically.

Note on time-slicing

If time-slicing is enabled with replicas: 4, quota values are in virtual GPUs. A quota of 4 means 4 virtual slices, not 4 physical GPUs. This will be clearly documented.

New RBAC needed

// +kubebuilder:rbac:groups="",resources=resourcequotas,verbs=get;list;watch;create;update;patch;delete

Acceptance criteria

  • Quota defined in CR -> ResourceQuota created in that namespace
  • Quota removed from CR -> ResourceQuota deleted
  • Pod exceeding quota -> rejected immediately with clear error
  • Namespace deleted -> quota cleaned up automatically
  • Quota manually deleted by user -> operator restores it on next reconcile

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Locate the GPU CR schema and reconciliation logic, then trace how the operator creates and cleans up cluster resources. Check the RBAC marker for ResourceQuota access and determine how quota values should map to GPU requests, including time-slicing. Done means all listed acceptance criteria are covered, including restoration after manual deletion and cleanup when a namespace is removed.

Written by the indexing model from the issue text.

Assessment

Tech stack
go
Domain
infrastructure
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
55/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.