kubernetes, bare metaling

This commit is contained in:
BOTAlex 2026-05-07 13:47:57 +02:00
parent fc6edfa41b
commit 1409710022
10 changed files with 253 additions and 156 deletions

69
kubenetes/containerd.nix Normal file
View file

@ -0,0 +1,69 @@
{ config, lib, pkgs, ... }: let
nvidiaEnabled = builtins.elem "nvidia" config.services.xserver.videoDrivers;
in {
config = lib.mkMerge [
(lib.mkIf nvidiaEnabled {
virtualisation.docker.enableNvidia = true;
virtualisation.docker.enable = true;
hardware.nvidia-container-toolkit = {
enable = true;
mount-nvidia-executables = true;
mount-nvidia-docker-1-directories = true;
extraArgs = [ "--device-name-strategy=uuid" ];
};
environment.systemPackages = with pkgs; [ nvidia-docker (lib.getOutput "tools" config.hardware.nvidia-container-toolkit.package) runc ];
services.envfs.enable = true;
virtualisation.docker.daemon.settings.features.cdi = true;
virtualisation.containerd = {
enable = true;
settings = {
plugins = {
"io.containerd.grpc.v1.cri" = {
# enable_cdi = true;
# cdi_spec_dirs = [ "/etc/cdi" "/var/run/cdi" ];
containerd = {
# default_runtime_name = "runc";
runtimes.runc.options = { SystemdCgroup = false; };
default_runtime_name = "nvidia";
runtimes = {
nvidia = {
privileged_without_host_devices = false;
runtime_type = "io.containerd.runc.v2";
options = {
BinaryName = "${lib.getOutput "tools" config.hardware.nvidia-container-toolkit.package}/bin/nvidia-container-runtime";
};
};
};
};
};
};
};
};
})
(lib.mkIf (!nvidiaEnabled ) {
virtualisation.containerd = {
enable = true;
settings = {
version = 2;
plugins."io.containerd.grpc.v1.cri" = {
# This is the critical part for Kubeadm
containerd.runtimes.runc = {
runtime_type = "io.containerd.runc.v2";
options.SystemdCgroup = true;
};
# # Keep your existing settings
# containerd.snapshotter = lib.mkIf config.boot.zfs.enabled (lib.mkOptionDefault "zfs");
# cni.bin_dir = lib.mkOptionDefault "${pkgs.cni-plugins}/bin";
};
};
};
})
];
# # Tell the Kubelet to use containerd
# services.kubernetes.kubelet.containerRuntimeEndpoint = "unix:///run/containerd/containerd.sock";
}