From 9a01fd4657c59240003d763e1f8a68d74f40d6aa Mon Sep 17 00:00:00 2001 From: wangbo Date: Sun, 2 Aug 2026 10:41:16 +0800 Subject: [PATCH] =?UTF-8?q?fix(k3s):=20=E4=BF=AE=E6=AD=A3=E7=A3=81?= =?UTF-8?q?=E7=9B=98=E8=B0=83=E5=BA=A6=20unit=20=E5=90=AF=E5=8A=A8?= =?UTF-8?q?=E5=91=BD=E4=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit systemd 会展开 unit 命令中的百分号 specifier,导致原 oneshot 启动失败。改用 echo 写入调度器,并强制校验 unit 为 active;bash -n、ShellCheck、manual-release-test.sh 通过。 --- scripts/cluster/configure-control-plane-io.sh | 6 ++++-- tests/release/manual-release-test.sh | 1 + 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/scripts/cluster/configure-control-plane-io.sh b/scripts/cluster/configure-control-plane-io.sh index 3209faf..42bd2fe 100755 --- a/scripts/cluster/configure-control-plane-io.sh +++ b/scripts/cluster/configure-control-plane-io.sh @@ -55,8 +55,8 @@ Before=k3s.service [Service] Type=oneshot -ExecStart=/bin/sh -c 'printf "%s\\n" mq-deadline > /sys/block/$device/queue/scheduler' -ExecStop=/bin/sh -c 'printf "%s\\n" none > /sys/block/$device/queue/scheduler' +ExecStart=/bin/sh -c 'echo mq-deadline > /sys/block/$device/queue/scheduler' +ExecStop=/bin/sh -c 'echo none > /sys/block/$device/queue/scheduler' RemainAfterExit=yes [Install] @@ -65,7 +65,9 @@ EOF chmod 0644 "$temporary" install -o root -g root -m 0644 "$temporary" "$unit_path" systemctl daemon-reload + systemctl reset-failed "$unit_name" >/dev/null 2>&1 || true systemctl enable --now "$unit_name" >/dev/null + [[ $(systemctl is-active "$unit_name") == active ]] [[ $(current_scheduler) == mq-deadline ]] printf 'control_plane_io=APPLIED node=hongkong device=%s scheduler=mq-deadline restart=false\n' "$device" ;; diff --git a/tests/release/manual-release-test.sh b/tests/release/manual-release-test.sh index 46fc326..d0cf7ec 100755 --- a/tests/release/manual-release-test.sh +++ b/tests/release/manual-release-test.sh @@ -309,6 +309,7 @@ grep -Fq 'wal_sender_timeout: 30s' "$root/deploy/kubernetes/production/database. grep -Fq 'wal_receiver_timeout: 30s' "$root/deploy/kubernetes/production/database.yaml" bash -n "$root/scripts/cluster/configure-control-plane-io.sh" grep -Fq 'Before=k3s.service' "$root/scripts/cluster/configure-control-plane-io.sh" +grep -Fq "ExecStart=/bin/sh -c 'echo mq-deadline" "$root/scripts/cluster/configure-control-plane-io.sh" grep -Fq 'restart=false' "$root/scripts/cluster/configure-control-plane-io.sh" grep -Fq 'configure-control-plane-io.sh apply' "$root/docs/operations/k3s-ha-runbook.md"