Research-Stack/4-Infrastructure/kube/raycluster.yaml
Brandon Schneider 63093f56da feat(infra): Ray VCN transport + cluster restoration
- ray_vcn_transport.py: @ray.remote wrappers for braid VCN encode/decode
  - Distributed encode on CPU workers, compute on GPU workers
  - RayVCNTransport actor with frame counter + ObjectRef storage
  - FAMM-gated encode task, batch encode/decode helpers
  - 20 strands in 576ms (28.8ms/strand), 20/20 CRC ok

- raycluster.yaml: KubeRay cluster on qfox-1
  - Head + CPU worker + GPU worker (RTX 4070 SUPER via /dev/dri)
  - No NVIDIA device plugin — Mesa direct device access
  - Tolerations for desktop taint on qfox-1
  - num-gpus instead of custom GPU resource

- fix-nftables-k3s.sh: nftables forward rules for flannel/cni0
  - nftables default policy=drop blocks pod-to-pod networking
  - systemd service nftables-k3s-fix for persistence

- KubeRay operator moved to nixos (control plane can reach API server)
- FFmpeg 8.0 + reedsolo installed in Ray head pod via conda
2026-05-30 19:42:39 -05:00

130 lines
3 KiB
YAML

apiVersion: ray.io/v1
kind: RayCluster
metadata:
name: raycluster
namespace: ray
spec:
rayVersion: "2.41.0.dev0"
headGroupSpec:
serviceType: ClusterIP
rayStartParams:
num-cpus: "2"
dashboard-host: "0.0.0.0"
template:
spec:
tolerations:
- key: "desktop"
operator: "Equal"
value: "true"
effect: "NoSchedule"
containers:
- name: ray-head
image: rayproject/ray:nightly-py313-gpu
ports:
- containerPort: 6379
name: gcs
- containerPort: 8265
name: dashboard
- containerPort: 10001
name: client
- containerPort: 8000
name: serve
resources:
requests:
cpu: "2"
memory: "4Gi"
limits:
cpu: "4"
memory: "8Gi"
volumeMounts:
- name: dshm
mountPath: /dev/shm
- name: dri
mountPath: /dev/dri
volumes:
- name: dshm
emptyDir:
medium: Memory
sizeLimit: 2Gi
- name: dri
hostPath:
path: /dev/dri
nodeSelector:
kubernetes.io/hostname: qfox-1
workerGroupSpecs:
- replicas: 1
minReplicas: 0
maxReplicas: 4
groupName: cpu-workers
rayStartParams:
num-cpus: "4"
template:
spec:
tolerations:
- key: "desktop"
operator: "Equal"
value: "true"
effect: "NoSchedule"
containers:
- name: ray-worker
image: rayproject/ray:nightly-py313-gpu
resources:
requests:
cpu: "4"
memory: "4Gi"
limits:
cpu: "8"
memory: "8Gi"
volumeMounts:
- name: dshm
mountPath: /dev/shm
- name: dri
mountPath: /dev/dri
volumes:
- name: dshm
emptyDir:
medium: Memory
sizeLimit: 2Gi
- name: dri
hostPath:
path: /dev/dri
nodeSelector:
kubernetes.io/hostname: qfox-1
- replicas: 1
minReplicas: 0
maxReplicas: 1
groupName: gpu-worker
rayStartParams:
num-gpus: "1"
template:
spec:
tolerations:
- key: "desktop"
operator: "Equal"
value: "true"
effect: "NoSchedule"
containers:
- name: ray-worker
image: rayproject/ray:nightly-py313-gpu
resources:
requests:
cpu: "2"
memory: "8Gi"
limits:
cpu: "4"
memory: "16Gi"
volumeMounts:
- name: dshm
mountPath: /dev/shm
- name: dri
mountPath: /dev/dri
volumes:
- name: dshm
emptyDir:
medium: Memory
sizeLimit: 4Gi
- name: dri
hostPath:
path: /dev/dri
nodeSelector:
kubernetes.io/hostname: qfox-1