feat(host/k8s,lib): nodeLabels & nodeTaints for k8s

This commit is contained in:
Ryan Yin
2024-03-30 22:42:21 +08:00
parent e85712ca53
commit d9c804acca
5 changed files with 19 additions and 7 deletions

View File

@@ -22,6 +22,9 @@
# use my own domain & kube-vip's virtual IP for the API server # 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 # so that the API server can always be accessed even if some nodes are down
masterHost = "kubevirt-cluster-1.writefor.fun"; masterHost = "kubevirt-cluster-1.writefor.fun";
nodeLabels = [
"node-purpose=kubevirt"
];
}; };
in { in {
imports = imports =

View File

@@ -20,6 +20,9 @@
# use my own domain & kube-vip's virtual IP for the API server # 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 # so that the API server can always be accessed even if some nodes are down
masterHost = "kubevirt-cluster-1.writefor.fun"; masterHost = "kubevirt-cluster-1.writefor.fun";
nodeLabels = [
"node-purpose=kubevirt"
];
}; };
in { in {
imports = imports =

View File

@@ -20,6 +20,9 @@
# use my own domain & kube-vip's virtual IP for the API server # 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 # so that the API server can always be accessed even if some nodes are down
masterHost = "kubevirt-cluster-1.writefor.fun"; masterHost = "kubevirt-cluster-1.writefor.fun";
nodeLabels = [
"node-purpose=kubevirt"
];
}; };
in { in {
imports = imports =

View File

@@ -2,6 +2,7 @@
pkgs, pkgs,
masterHost, masterHost,
tokenFile, tokenFile,
nodeLabels ? [],
... ...
}: let }: let
package = pkgs.k3s_1_29; package = pkgs.k3s_1_29;
@@ -15,10 +16,11 @@ in {
serverAddr = "https://${masterHost}:6443"; serverAddr = "https://${masterHost}:6443";
# https://docs.k3s.io/cli/agent # https://docs.k3s.io/cli/agent
extraFlags = let extraFlags = let
flagList = [ flagList =
"--node-label=node-type=worker" [
"--data-dir /var/lib/rancher/k3s" "--data-dir /var/lib/rancher/k3s"
]; ]
++ (map (label: "--node-label=${label}") nodeLabels);
in in
pkgs.lib.concatStringsSep " " flagList; pkgs.lib.concatStringsSep " " flagList;
}; };

View File

@@ -10,7 +10,8 @@
# this can be a domain name or an IP address(such as kube-vip's virtual IP) # this can be a domain name or an IP address(such as kube-vip's virtual IP)
masterHost, masterHost,
clusterInit ? false, clusterInit ? false,
addTaints ? false, nodeLabels ? [],
nodeTaints ? [],
... ...
}: let }: let
package = pkgs.k3s_1_29; package = pkgs.k3s_1_29;
@@ -56,8 +57,8 @@ in {
"--disable-network-policy" "--disable-network-policy"
"--tls-san=${masterHost}" "--tls-san=${masterHost}"
] ]
# prevent workloads from running on the master ++ (map (label: "--node-label=${label}") nodeLabels)
++ (pkgs.lib.optionals addTaints ["--node-taint=CriticalAddonsOnly=true:NoExecute"]); ++ (map (taint: "--node-taint=${taint}") nodeTaints);
in in
pkgs.lib.concatStringsSep " " flagList; pkgs.lib.concatStringsSep " " flagList;
}; };