Innan du rör Proxmox måste moderkortet tillåta det.
Starta om servern och gå in i BIOS/UEFI.
Leta efter VT-d (för Intel) eller AMD-Vi / IOMMU (för AMD).
Sätt detta till Enabled.
Spara och starta om.
Logga in i Proxmox webbgränssnitt, välj noden "Hercules" och klicka på >_ Shell.
Vi måste berätta för Linux-kärnan att den ska aktivera IOMMU vid uppstart.
Öppna GRUB-konfigurationen:
nano /etc/default/grub
Leta upp raden GRUB_CMDLINE_LINUX_DEFAULT.
Ändra den så att den ser ut så här (beroende på din CPU):
För Intel CPU:
GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"
För AMD CPU:
GRUB_CMDLINE_LINUX_DEFAULT="quiet amd_iommu=on iommu=pt"
( iommu=pt förbättrar prestandan genom att låta enheter som inte används passera igenom utan översättning).
Spara (Ctrl+O, Enter) och stäng (Ctrl+X).
Uppdatera GRUB:
Bash
update-grub
Vi behöver ladda kärnmoduler som hanterar passthrough.
Öppna filen /etc/modules:
nano /etc/modules
Lägg till dessa rader i slutet av filen:
vfio
vfio_iommu_type1
vfio_pci
vfio_virqfd
Eftersom du har 8st A12-kort vill Proxmox gärna ladda sina egna drivrutiner för dem. Det får inte hända – VM:en ska ha ensamrätt. Vi måste blockera ("blacklist") drivrutinerna på hosten.
Skapa en blacklist-fil:
Bash
nano /etc/modprobe.d/blacklist.conf
Klistra in detta:
blacklist rancher
blacklist nouveau
blacklist nvidia
blacklist nvidia*
options nouveau modeset=0
För att ändringarna (särskilt blacklisting) ska slå igenom måste vi bygga om initramfs och starta om noden.
update-initramfs -u -k all
reboot
När Hercules har startat om är den redo att dela ut korten.
Gå till din Kubernetes/Rancher-VM (den som ska vara gpu-node).
Välj Hardware -> Add -> PCI Device.
I listan "Device", leta upp dina Nvidia A12-kort.
Gör följande inställningar i dialogrutan:
All Functions: [x] Kryssa i (Detta tar med ev. ljud/USB-delar på kortet, vilket ofta krävs för att det ska funka, även om A12 är ett beräkningskort).
ROM-Bar: [x] Kryssa i (Standard).
PCI-Express: [x] Kryssa i (Viktigt för prestanda och för att kortet ska ses som PCIe).
Primary GPU: [ ] Låt vara urkryssad (Annars tappar du konsolen till VM:en i Proxmox).
Repetera detta för så många kort du vill ge till just denna VM.
Nu startar du din VM.
Öppna konsolen till VM:en.
Kör kommandot:
lspci -nnk | grep -i nvidia
Du ska nu se dina kort listade. Det ska stå något i stil med "Kernel driver in use: vfio-pci" (innan du installerat drivrutiner i VM:en) eller bara att enheten finns där.
Att sätta upp NVIDIA vGPU (där du delar upp ett fysiskt kort till flera virtuella maskiner) är mer komplext än PCI Passthrough. Det kräver specifika drivrutiner och strikt licensiering.
⚠️ Varning: "The NVIDIA Tax"
Till skillnad från Passthrough (som är gratis), kräver vGPU:
- NVIDIA Enterprise-konto: För att ladda ner mjukvaran.
- Licensserver: Du måste köra en lokal licensserver (DLS) eller ansluta till Nvidias molnlicens (CLS). Utan en aktiv licens kommer prestandan i dina VM:ar att strypas kraftigt efter 20 minuter.
Om du vill köra vGPU måste Proxmox (hosten) ha Nvidia-drivrutiner installerade (till skillnad från Passthrough där hosten inte får ha dem).
1. Installera beroenden
Proxmox måste kunna bygga kärnmoduler.
apt update
apt install pve-headers-$(uname -r) build-essential dkms unzip
echo "blacklist nouveau" >> /etc/modprobe.d/blacklist.conf
echo "options nouveau modeset=0" >> /etc/modprobe.d/blacklist.conf
update-initramfs -u
reboot
Du kan inte använda de vanliga drivrutinerna (apt install nvidia-driver...). Du måste använda NVIDIA vGPU Software for Linux KVM.
Ladda ner: Logga in på NVIDIA Licensing Portal och ladda ner ZIP-filen för "Linux KVM" (innehåller både Host och Guest drivers).
Ladda upp: Lägg .run-filen (t.ex. NVIDIA-Linux-x86_64-xxx.xx-vgpu-kvm.run) på din Proxmox-server via SCP/SFTP.
Installera:
chmod +x NVIDIA-Linux-x86_64-xxx.xx-vgpu-kvm.run
./NVIDIA-Linux-x86_64-xxx.xx-vgpu-kvm.run
Svara Yes på att registrera modulen med DKMS.
Svara No om den frågar om att uppdatera X-konfigurationen (Proxmox har inget GUI).
Verifiera:
Kör nvidia-smi. Nu ska du se dina 8 kort listade direkt i Proxmox-shellen!
Aktivera tjänsten:
systemctl enable nvidia-vgpu-mgr.service
systemctl start nvidia-vgpu-mgr.service
Nu när hosten "äger" korten kan den dela ut skivor av dem (Mediated Devices / MDev).
Gå till din VM i Proxmox.
Välj Hardware -> Add -> PCI Device.
Välj ett av dina NVIDIA-kort som Raw Device.
Nu bör alternativet MDev Type bli valbart.
Välj en profil: Profilnamnen (t.ex. nvidia-256 eller A10-8Q) avgör hur mycket VRAM varje "slice" får.
* Q-profiler: För Quadro/Workstation (Grafik + Compute).
* C-profiler: För Compute (Bäst för LLM/AI).
* A-profiler: För Applikationer/VDI.
Starta din VM. Den kommer se ett NVIDIA-kort, men det fungerar inte än.
chmod +x NVIDIA-Linux-x86_64-xxx.xx-grid.run
sudo ./NVIDIA-Linux-x86_64-xxx.xx-grid.run
Redigera konfigurationsfilen (ofta /etc/nvidia/gridd.conf).
Lägg in IP-adressen till din License Server.
Starta om tjänsten:
sudo systemctl restart nvidia-gridd
Med 8 fysiska kort och färre än 8 noder som behöver GPU-kraft, använd Passthrough. Det sparar dig enormt mycket huvudvärk med licenser och konfiguration.
Översikt av VMs i Proxmox
Du bör skapa minst två (helst tre) virtuella maskiner i Proxmox på "Hercules"-noden:
VM 1: rancher-server (Liten VM)
Roll: Styr klustret. Kör Rancher UI.
Resurser: 2 vCPU, 4-8 GB RAM. Ingen GPU.
VM 2 (och fler): gpu-node-01 (Stor VM)
Roll: Kör dina LLM:er.
Resurser: Mycket RAM, bra med CPU.
Hårdvara: Här gör du GPU Passthrough av dina Nvidia A12-kort.
Vi börjar med att få upp själva Rancher-gränssnittet på den lilla VM:en.
SSH:a in i rancher-server.
Installera Docker (om du inte redan gjort det):
curl https://releases.rancher.com/install-docker/24.0.sh | sh
sudo usermod -aG docker $USER
Starta Rancher:
sudo docker run -d --restart=unless-stopped \
-p 80:80 -p 443:443 \
--privileged \
rancher/rancher:latest
Gå till IP-adressen för denna VM i din webbläsare. Sätt upp admin-lösenordet. Nu har du kontrollpanelen.
Innan du kopplar in denna VM i Rancher måste GPU:n vara redo.
I Proxmox: Gör PCI Passthrough av Nvidia-korten till gpu-node-01. (Se till att "All Functions" är ikryssat om det behövs, och att IOMMU är på).
I Linux (inuti VM:en):
Starta VM:en (t.ex. Ubuntu 22.04/24.04).
Verifiera att korten syns: lspci | grep -i nvidia.
VIKTIGT VÄGVAL:
Väg A (Enklast för nybörjare): Installera Nvidia Drivers och Nvidia Container Toolkit manuellt på VM:en.
Väg B (Rancher-sättet): Låt "Nvidia GPU Operator" installera drivrutinerna automatiskt senare. (Kräver att du blacklist:ar nouveau drivrutinen manuellt först).
Vi kör på Väg A då det ofta är mindre strul med versioner:
Bash
### På gpu-node-01ash
sudo apt install nvidia-driver-535-server # Eller lämplig version för A12
sudo apt install nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=containerd
sudo systemctl restart containerd
Nu ska vi skapa själva Kubernetes-klustret som gpu-node-01 ska tillhöra.
I Rancher UI, klicka på Cluster Management -> Create.
Välj Custom. (Detta betyder att vi har egna VMs vi vill använda).
Ge klustret ett namn (t.ex. "hercules-cluster").
Under Kubernetes Options, välj RKE2 (inte RKE1 eller K3s) för bäst prestanda och säkerhet.
Klicka Next.
Nu får du ett val för "Node Roles". Eftersom du kanske bara har en stor GPU-nod till att börja med, kryssa i alla tre:
Kopiera "Registration Command" som visas längst ner (börjar med curl ... | sh -).
Gå tillbaka till terminalen på gpu-node-01.
Klistra in kommandot du kopierade från Rancher.
Noden kommer nu ladda ner RKE2, installera sig själv och dyka upp i Rancher UI.
Vänta tills klustret är "Active" i Rancher (kan ta 5-10 minuter).
För att Kubernetes ska förstå att "Här finns 8 GPU:er", måste du installera ett plugin.
I Rancher UI, gå in i ditt nya kluster ("hercules-cluster").
I menyn till vänster, välj Apps -> Charts.
Sök efter "Nvidia GPU Operator".
Klicka Install.
OBS: Om du installerade drivrutinerna manuellt i Steg 2, måste du i inställningarna för Chart:en (YAML-filen eller formuläret) sätta driver.enabled: false. Om du inte installerade drivrutiner manuellt, låt den vara true.
När installationen är klar ska du kunna se GPU:erna.
Testa så här:
Gå till Cluster -> Nodes -> Klicka på din nod -> Titta under fliken "Allocated". Du ska se en resurs som heter nvidia.com/gpu med värdet 8 (eller antalet kort du skickade vidare).