From fd28c0a82a56da127ad8e77d34941b57e9e46065 Mon Sep 17 00:00:00 2001 From: Christian Albrecht Date: Fri, 1 Mar 2019 10:23:34 +0100 Subject: [PATCH] nixos/kubernetes: Seed docker images before kubelet service start to speed up startup time because it can be parallelized. --- .../services/cluster/kubernetes/kubelet.nix | 23 ++++++++++++++----- 1 file changed, 17 insertions(+), 6 deletions(-) diff --git a/nixos/modules/services/cluster/kubernetes/kubelet.nix b/nixos/modules/services/cluster/kubernetes/kubelet.nix index b3f3c036564..0b1d2a67565 100644 --- a/nixos/modules/services/cluster/kubernetes/kubelet.nix +++ b/nixos/modules/services/cluster/kubernetes/kubelet.nix @@ -257,12 +257,7 @@ in before = [ "kubelet.target" ]; path = with pkgs; [ gitMinimal openssh docker utillinux iproute ethtool thin-provisioning-tools iptables socat ] ++ top.path; preStart = '' - ${concatMapStrings (img: '' - echo "Seeding docker image: ${img}" - docker load <${img} - '') cfg.seedDockerImages} - - rm /opt/cni/bin/* || true + rm -f /opt/cni/bin/* || true ${concatMapStrings (package: '' echo "Linking cni package: ${package}" ln -fs ${package}/bin/* /opt/cni/bin @@ -328,6 +323,22 @@ in systemd.services.docker.before = [ "kubelet.service" ]; + systemd.services.docker-seed-images = { + wantedBy = [ "docker.service" ]; + after = [ "docker.service" ]; + before = [ "kubelet.service" ]; + path = with pkgs; [ docker ]; + preStart = '' + ${concatMapStrings (img: '' + echo "Seeding docker image: ${img}" + docker load <${img} + '') cfg.seedDockerImages} + ''; + script = "echo Ok"; + serviceConfig.Type = "oneshot"; + serviceConfig.Slice = "kubernetes.slice"; + }; + systemd.services.node-online = { wantedBy = [ "node-online.target" ]; after = [ "flannel.target" "kubelet.target" ];