kubeflow / kubeflow/docs-agent

docs(kagent): Add Milvus resource constraints and WSL2 memory prerequisites for local Kind setup

Open
#92 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Python
Stars
42
Forks
111
Avg merge
6d 23m
Merged PRs (30d)
2

Description

Problem

Following kagent-feast-mcp/README.md

Step 1, deploying Milvus via Helm on a local Kind cluster running on WSL2 with ≤8GB RAM causes the Linux OOM killer to terminate the entire WSL VM.

Root cause chain:

  1. The Milvus standalone Helm chart deploys 3 containers simultaneously: milvus-etcd, milvus-minio, and milvus-standalone
  2. Without resource constraints, these containers request unbounded memory, baseline ~4-6GB combined
  3. On WSL2 with default .wslconfig (50% of host RAM or ~4-8GB), this memory spike triggers the kernel OOM killer
  4. The OOM killer reaps the WSL integration service itself, severing the Host-to-VM connection
  5. The error surfaces as: Error code: Wsl/Service/0x8007274c — no Kubernetes logs are captured

Who this blocks: Any contributor on Windows/WSL2 with ≤16GB host RAM attempting to reproduce the Kagent PoC locally.

Reproduction

# 1. Start Kind cluster
kind create cluster --name docs-agent

# 2. Deploy Milvus per README Step 1
helm repo add zilliztech https://zilliztech.github.io/milvus-helm/
helm repo update
helm upgrade --install milvus zilliztech/milvus -n docs-agent \
  --set cluster.enabled=false \
  --set standalone.enabled=true \
  --set etcd.replicaCount=1 \
  --set etcd.persistence.enabled=false \
  --set minio.mode=standalone \
  --set minio.replicas=1 \
  --set pulsar.enabled=false \
  --set pulsarv3.enabled=false

# → WSL VM becomes unresponsive within 30-60s
# → Windows may hard restart
# → Error: Wsl/Service/0x8007274c

Proposed Fix

1. Add a values-local.yaml for constrained environments

Provide a Helm values override file that caps resource requests for local development:

# manifests/overlays/dev/values-local.yaml (or kagent-feast-mcp/values-local.yaml)
standalone:
  resources:
    requests:
      memory: "512Mi"
      cpu: "250m"
    limits:
      memory: "1Gi"
      cpu: "500m"

etcd:
  resources:
    requests:
      memory: "128Mi"
      cpu: "100m"
    limits:
      memory: "256Mi"
      cpu: "200m"

minio:
  resources:
    requests:
      memory: "128Mi"
      cpu: "100m"
    limits:
      memory: "256Mi"
      cpu: "200m"

Usage:

helm upgrade --install milvus zilliztech/milvus -n docs-agent \
  -f values-local.yaml \
  --set cluster.enabled=false \
  --set standalone.enabled=true \
  # ... rest of flags

2. Add WSL2 prerequisites to README

Add to kagent-feast-mcp/README.md Prerequisites section:

Windows/WSL2 Users

Ensure your .wslconfig allocates sufficient memory:

# %USERPROFILE%\.wslconfig
[wsl2]
memory=4GB
swap=2GB

For hosts with ≤8GB RAM, use the constrained Milvus Helm values:

helm upgrade --install milvus zilliztech/milvus -n docs-agent \
  -f values-local.yaml \
  # ... flags from Step 1

Validated

Successfully deployed and sustained all 3 Milvus pods (Running, 1/1) on an 8GB Windows host with memory=4GB WSL limit using the constrained values above. The pods survived host sleep/wake cycles and WSL restarts without triggering OOMKill.

Files

  • kagent-feast-mcp/README.md — Prerequisites section + Step 1
  • New file: kagent-feast-mcp/values-local.yaml (or appropriate location per repo convention)

Context

Discovered during local Kagent PoC validation — #59 (comment)

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

Start with kagent-feast-mcp/README.md, especially the Prerequisites section and Step 1, then check the repository convention for the proposed kagent-feast-mcp/values-local.yaml location. Done means the README documents WSL2 memory prerequisites and constrained Helm usage, and the values file supports the local Milvus deployment described in the issue.

Written by the indexing model from the issue text.

Assessment

Tech stack
helm, kubernetes, yaml
Domain
devops, documentation, infrastructure
Issue type
Documentation
Difficulty
2/5
Estimated time
Half a day
Activity status
Stale
Clarity
Clearly specified
Newbie friendliness
52/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.