feat(k8s-wheatley): Prepare for GPU nodes

This commit is contained in:
Peter 2026-01-03 13:05:56 +01:00
parent fbbfee32a4
commit c6d4143df2
Signed by: Peter
SSH key fingerprint: SHA256:B5tYaxBExaDm74r1px9iVeZ6F/ZDiyiy9SbBqfZYrvg
7 changed files with 25 additions and 4 deletions

View file

@ -71,16 +71,19 @@ locals {
name = "worker01"
ip_address = "10.13.37.21"
storage_address = "10.0.69.21"
gpu_enabled = false
},
{
name = "worker02"
ip_address = "10.13.37.22"
storage_address = "10.0.69.22"
gpu_enabled = false
},
{
name = "worker03"
ip_address = "10.13.37.23"
storage_address = "10.0.69.23"
gpu_enabled = false
},
]
}
@ -122,6 +125,7 @@ module "workers" {
name = format("k8s-wheatley-%s", each.value.name)
ipv4_address = each.value.ip_address
cpu = local.workers.cpu
gpu = each.value.gpu_enabled
memory = local.workers.memory
disk = local.workers.disk
storagepool = local.workers.storagepool
@ -171,6 +175,7 @@ module "talos-bootstrap" {
ipv4_address = node.ip_address
storage_address = node.storage_address
pvc_disks = local.workers.pvc_disks
gpu_enabled = node.gpu_enabled
}
]
)

View file

@ -54,7 +54,6 @@ resource "talos_machine_configuration_apply" "config_apply_cp" {
vip_address = var.node_config.cluster_endpoint
node_name = format("%s.wheatley.in", var.node_config.proxmox_node)
machine_type = each.value.type
talos_version = var.node_config.talos_version
gateway-api_version = var.node_config.gateway_api_version
cilium_version = var.node_config.cilium_version
cilium_install_file = file("${path.module}/templates/cilium-install.yaml.tmpl")
@ -84,6 +83,7 @@ resource "talos_machine_configuration_apply" "config_apply_worker" {
cilium_version = var.node_config.cilium_version
cilium_install_file = file("${path.module}/templates/cilium-install.yaml.tmpl")
pvc_disks = each.value.pvc_disks
gpu_enabled = each.value.gpu_enabled
})
]
}

View file

@ -3,7 +3,6 @@ machine:
type: ${machine_type}
install:
disk: /dev/vda
image: factory.talos.dev/nocloud-installer-secureboot/ce4c980550dd2ab1b17bbf2b08801c7eb59418eafe8f279833297925d67c7515:v${talos_version}
network:
hostname: ${hostname}
nameservers:

View file

@ -3,7 +3,9 @@ machine:
type: ${machine_type}
install:
disk: /dev/vda
image: factory.talos.dev/nocloud-installer-secureboot/6adc7e7fba27948460e2231e5272e88b85159da3f3db980551976bf9898ff64b:v${talos_version}
%{ if gpu_enabled != false ~}
image: factory.talos.dev/nocloud-installer-secureboot/29d29d87bf3b88fe13caf73c20c7a8b6a4355d8177d0d690d5c9f85d4ddb67b7:v${talos_version}
%{ endif ~}
network:
hostname: ${hostname}
nameservers:
@ -32,6 +34,9 @@ machine:
- usermode_helper=disabled
- name: drbd_transport_tcp
- name: dm_thin_pool
%{ if gpu_enabled != false ~}
- name: i915
%{ endif ~}
nodeLabels:
topology.kubernetes.io/region: ${cluster_name}
topology.kubernetes.io/zone: ${node_name}

View file

@ -21,6 +21,7 @@ variable "talos_nodes" {
type = string
ipv4_address = string
storage_address = optional(string)
pvc_disks = optional(list(number)),
pvc_disks = optional(list(number))
gpu_enabled = optional(bool, false)
}))
}

View file

@ -61,6 +61,16 @@ resource "proxmox_virtual_environment_vm" "talos-node" {
}
}
dynamic "hostpci" {
for_each = var.node.gpu == true ? [1] : []
content {
device = "hostpci0"
mapping = "A380_GPU"
pcie = true
rombar = true
}
}
initialization {
datastore_id = var.node.storagepool
ip_config {

View file

@ -7,6 +7,7 @@ variable "node" {
ipv4_address = string
ipv4_gateway = string
cpu = number
gpu = optional(bool, false)
memory = number
disk = string
storagepool = string