From e89a0f2b42e723aa25685a792a496ab98f37fe12 Mon Sep 17 00:00:00 2001 From: Julian Vassev Date: Mon, 13 May 2024 19:58:25 +0300 Subject: [PATCH] Support k3s-agent deployment --- k8s/scripts/kubelet-config-helper.sh | 40 +++++++++++++++++++++++++++- 1 file changed, 39 insertions(+), 1 deletion(-) diff --git a/k8s/scripts/kubelet-config-helper.sh b/k8s/scripts/kubelet-config-helper.sh index d23f74d..dfde109 100755 --- a/k8s/scripts/kubelet-config-helper.sh +++ b/k8s/scripts/kubelet-config-helper.sh @@ -1480,6 +1480,41 @@ function do_config_kubelet() { fi } +############################################################################### +# Scenario 6: k3s worker +############################################################################### +function kubelet_k3s_deploymet() { + if systemctl is-active --quiet k3s-agent; then + return + fi + + return 1 +} + +function do_config_kubelet_k3s_systemd() { + local unit_file="/etc/systemd/system/k3s-agent.service" + + if grep -q '.--container-runtime-endpoint=/var/run/crio/crio.sock' $unit_file; then + echo "k3s-agent.service already modified" + return + fi + + # TODO check if pause image is set in k3s + local crio_conf='/etc/crio/crio.conf' + if ! grep -q 'rancher/mirrored-pause' $crio_conf; then + sed 's|\[crio\.image\]|[crio.image]\n pause_image = "rancher/mirrored-pause:3.1"|' -i $crio_conf + systemctl restart crio || true + fi + + # same options as k8s/config/crio-kubelet-options + sed 's| agent | agent --kubelet-arg=--runtime-request-timeout=6m --kubelet-arg=--runtime-cgroups=/system.slice/crio.service --kubelet-arg=--image-service-endpoint=unix:///var/run/crio/crio.sock --kubelet-arg=--cgroup-driver=systemd --container-runtime-endpoint=/var/run/crio/crio.sock |' -i $unit_file + systemctl daemon-reload + systemctl stop k3s-agent || true + clean_runtime_state "unix:///run/k3s/containerd/containerd.sock" + clean_cgroups_kubepods + systemctl start k3s-agent +} + function main() { euid=$(id -u) @@ -1500,7 +1535,8 @@ function main() { # * RKE2: Host-based kubelet managed by rke2-agent's systemd service (Rancher's RKE2 approach). # * Systemd+Docker: Docker-based kubelet managed by a systemd service (Lokomotive's approach). # * Systemd: Host-based kubelet managed by a systemd service (most common approach). - # + # * Systemd: k3s: when run as agent-only (if k3s is run as control plane + node (i.e., k3s.service) it won't work) + if kubelet_snap_deployment; then do_config_kubelet_snap elif kubelet_rke_deployment; then @@ -1509,6 +1545,8 @@ function main() { do_config_kubelet_rke2 elif kubelet_docker_systemd_deployment; then do_config_kubelet_docker_systemd + elif kubelet_k3s_deploymet; then + do_config_kubelet_k3s_systemd else do_config_kubelet fi