Skip to content
This repository was archived by the owner on Oct 15, 2025. It is now read-only.

Commit 1c65b9a

Browse files
authored
Merge pull request #30 from nerdalert/minikube-storage
Replaced broken glusterfs for single node hostPath
2 parents a458aee + 7e06711 commit 1c65b9a

3 files changed

Lines changed: 27 additions & 50 deletions

File tree

helpers/k8s/model-storage-rwx-pvc-minikube.yaml

Lines changed: 0 additions & 12 deletions
This file was deleted.

quickstart/README-minikube.md

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -216,17 +216,16 @@ completions are working.
216216

217217
```bash
218218
NAMESPACE=llm-d
219-
POD_IP=$(kubectl get pods -n ${NAMESPACE} -o jsonpath='{range .items[*]}{.metadata.name}{" "}{.status.podIP}{"\n"}{end}' | grep llama-32-3b-instruct-model-service-decode | awk '{print $2}')
220-
kubectl run --rm -i curl-temp --image=curlimages/curl --restart=Never -- \
221-
curl -X POST \
222-
"http://${POD_IP}:8000/v1/chat/completions" \
223-
-H 'accept: application/json' \
224-
-H 'Content-Type: application/json' \
225-
-d '{
226-
"model": "Llama-3.2-3B-Instruct",
227-
"messages": [{"content": "Who won the World Series in 1986?", "role": "user"}],
228-
"stream": false
229-
}'
219+
POD=$(kubectl get pods -n "$NAMESPACE" -l llm-d.ai/role=decode -o jsonpath='{.items[0].metadata.name}')
220+
kubectl exec -n "$NAMESPACE" -c vllm "$POD" -- \
221+
curl -sS -X POST http://localhost:8000/v1/chat/completions \
222+
-H 'accept: application/json' \
223+
-H 'Content-Type: application/json' \
224+
-d '{
225+
"model": "Llama-32-3B-Instruct",
226+
"messages": [{"role":"user","content":"Who won the World Series in 1986?"}],
227+
"stream": false
228+
}'
230229
```
231230

232231
After the p/d pods are running, you can view the models being run on the GPUs on the host to verify activity.
@@ -248,3 +247,9 @@ make a change, simply uninstall and then run the installer again with any change
248247
```bash
249248
./llmd-installer.sh --uninstall
250249
```
250+
251+
To remove the minikube cluster this simply wraps the minikube command for convenience.
252+
253+
```bash
254+
./llmd-installer.sh --delete-minikube
255+
```

quickstart/llmd-installer-minikube.sh

Lines changed: 11 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ NAMESPACE="llm-d"
88
PROVISION_MINIKUBE=false
99
PROVISION_MINIKUBE_GPU=false
1010
USE_MINIKUBE_STORAGE=false
11-
STORAGE_SIZE="7Gi"
11+
STORAGE_SIZE="15Gi"
1212
STORAGE_CLASS="efs-sc"
1313
DELETE_MINIKUBE=false
1414
ACTION="install"
@@ -158,7 +158,7 @@ validate_hf_token() {
158158
### MINIKUBE HANDLERS ###
159159
provision_minikube() {
160160
log_info "🌱 Provisioning Minikube cluster..."
161-
minikube start --nodes=3
161+
minikube start
162162
log_success "🚀 Minikube started."
163163
}
164164

@@ -167,8 +167,7 @@ provision_minikube_gpu() {
167167
minikube start \
168168
--driver docker \
169169
--container-runtime docker \
170-
--gpus all \
171-
--nodes=3
170+
--gpus all
172171
log_success "🚀 Minikube GPU cluster started."
173172
}
174173

@@ -248,10 +247,8 @@ install() {
248247
fi
249248
log_success "✅ Job manifest patched"
250249

251-
# This is where all minicube scenarios use glusterfs sc and existing kube clusters use model-storage-rwx-pvc.yaml
252250
log_info "💾 Provisioning model storage…"
253251
if [[ "${USE_MINIKUBE_STORAGE}" == "true" ]]; then
254-
ensure_gluster_addon_enabled
255252
# this creates both the hostPath PV and the matching PVC
256253
setup_minikube_storage
257254
log_success "✅ PVC created from model-storage-rwx-pvc-minikube.yaml"
@@ -307,7 +304,7 @@ kind: PersistentVolume
307304
metadata:
308305
name: redis-hostpath-pv
309306
spec:
310-
storageClassName: glusterfile
307+
storageClassName: manual
311308
capacity:
312309
storage: 5Gi
313310
accessModes:
@@ -320,10 +317,10 @@ spec:
320317
apiVersion: v1
321318
kind: PersistentVolumeClaim
322319
metadata:
323-
name: redis-pvc
320+
name: redis-data-redis-master
324321
namespace: ${NAMESPACE}
325322
spec:
326-
storageClassName: glusterfile
323+
storageClassName: manual
327324
accessModes:
328325
- ReadWriteMany
329326
resources:
@@ -340,17 +337,17 @@ EOF
340337
}
341338

342339
setup_minikube_storage() {
343-
log_info "📦 Setting up Minikube Gluster RWX Shared Storage..."
340+
log_info "📦 Setting up Minikube hostPath RWX Shared Storage..."
344341
log_info "🔄 Creating PV and PVC for llama model..."
345342
kubectl apply -f - <<EOF
346343
apiVersion: v1
347344
kind: PersistentVolume
348345
metadata:
349346
name: llama-hostpath-pv
350347
spec:
351-
storageClassName: glusterfile
348+
storageClassName: manual
352349
capacity:
353-
storage: 7Gi
350+
storage: ${STORAGE_SIZE}
354351
accessModes:
355352
- ReadWriteMany
356353
persistentVolumeReclaimPolicy: Retain
@@ -364,30 +361,17 @@ metadata:
364361
name: llama-3.2-3b-instruct-pvc
365362
namespace: ${NAMESPACE}
366363
spec:
367-
storageClassName: glusterfile
364+
storageClassName: manual
368365
accessModes:
369366
- ReadWriteMany
370367
resources:
371368
requests:
372-
storage: 7Gi
369+
storage: ${STORAGE_SIZE}
373370
volumeName: llama-hostpath-pv
374371
EOF
375372
log_success "✅ llama model PV and PVC created."
376373
}
377374

378-
ensure_gluster_addon_enabled() {
379-
if [[ "${USE_MINIKUBE_STORAGE}" == "true" ]]; then
380-
log_info "🔍 Checking if Gluster addon is enabled in Minikube..."
381-
if ! minikube addons list | grep -q 'storage-provisioner-gluster.*disabled'; then
382-
log_success "✅ Gluster addon already enabled."
383-
else
384-
log_info "📦 Enabling Gluster addon for Minikube..."
385-
minikube addons enable storage-provisioner-gluster
386-
log_success "✅ Gluster addon enabled."
387-
fi
388-
fi
389-
}
390-
391375
clone_gaie_repo() {
392376
if [[ ! -d gateway-api-inference-extension ]]; then
393377
git clone https://github.com/neuralmagic/gateway-api-inference-extension.git

0 commit comments

Comments
 (0)