mirror of
https://github.com/ryan4yin/nix-config.git
synced 2026-04-10 19:26:52 +02:00
67 lines
2.1 KiB
Nix
67 lines
2.1 KiB
Nix
{
|
|
config,
|
|
pkgs,
|
|
mylib,
|
|
myvars,
|
|
disko,
|
|
...
|
|
}: let
|
|
hostName = "kubevirt-youko"; # Define your hostname.
|
|
|
|
coreModule = mylib.genKubeVirtHostModule {
|
|
inherit pkgs hostName;
|
|
inherit (myvars) networking;
|
|
};
|
|
k3sModule = mylib.genK3sServerModule {
|
|
inherit pkgs;
|
|
kubeconfigFile = "/home/${myvars.username}/.kube/config";
|
|
tokenFile = "/run/media/nixos_k3s/kubevirt-k3s-token";
|
|
# use my own domain & kube-vip's virtual IP for the API server
|
|
# so that the API server can always be accessed even if some nodes are down
|
|
masterHost = "kubevirt-cluster-1.writefor.fun";
|
|
kubeletExtraArgs = [
|
|
"--cpu-manager-policy=static"
|
|
# https://kubernetes.io/docs/tasks/administer-cluster/reserve-compute-resources/
|
|
# we have to reserve some resources for for system daemons running as pods or system services
|
|
# when cpu-manager's static policy is enabled
|
|
# the memory we reserved here is also for the kernel, since kernel's memory is not accounted in pods
|
|
"--system-reserved=cpu=1,memory=2Gi,ephemeral-storage=2Gi"
|
|
];
|
|
nodeLabels = [
|
|
"node-purpose=kubevirt"
|
|
];
|
|
disableFlannel = false;
|
|
};
|
|
in {
|
|
imports =
|
|
(mylib.scanPaths ./.)
|
|
++ [
|
|
disko.nixosModules.default
|
|
../disko-config/kubevirt-disko-fs.nix
|
|
../kubevirt-shoryu/hardware-configuration.nix
|
|
../kubevirt-shoryu/impermanence.nix
|
|
coreModule
|
|
k3sModule
|
|
];
|
|
|
|
boot.kernelParams = [
|
|
# disable transparent hugepage(allocate hugepages dynamically)
|
|
"transparent_hugepage=never"
|
|
|
|
# https://kubevirt.io/user-guide/compute/hugepages/
|
|
#
|
|
# pre-allocate hugepages manually(for kubevirt guest vms)
|
|
# NOTE: the hugepages allocated here can not be used for other purposes!
|
|
# so we should left some memory for the host OS and other vms that don't use hugepages
|
|
"hugepagesz=1G"
|
|
"hugepages=15" # use 15/24 of the total memory for hugepages
|
|
|
|
# https://kubevirt.io/user-guide/compute/host-devices/
|
|
#
|
|
# PCI passthrough
|
|
# "amd_iommu=on" # enable IOMMU
|
|
# "iommu=pt" # use passthrough mode
|
|
# "pcie_acs_override=downstream" # enable ACS override
|
|
];
|
|
}
|