commit f1a7074528ca4d6b60c4ee3b9eec933a28b5cd248ef3eff025bd30679bcff77d
| author | 斟酌 鵬兄 <tgckpg@gmail.com> |
| date | 2026-04-14T20:53:28Z |
| subject | Cleanup k8s states after upgrade |
commit f1a7074528ca4d6b60c4ee3b9eec933a28b5cd248ef3eff025bd30679bcff77d
Author: 斟酌 鵬兄 <tgckpg@gmail.com>
Date: 2026-04-14T20:53:28Z
Cleanup k8s states after upgrade
---
alpine/rootfs-extra/etc/local.d/monok8s.start | 17 +++++++++++++++++
build.env | 4 ++--
clitools/pkg/controller/osupgrade/progress.go | 2 ++
clitools/pkg/node/fs.go | 25 +++++++++++++++++++++++++
4 files changed, 46 insertions(+), 2 deletions(-)
diff --git a/alpine/rootfs-extra/etc/local.d/monok8s.start b/alpine/rootfs-extra/etc/local.d/monok8s.start
index 0f39ebb..2f88bd9 100755
--- a/alpine/rootfs-extra/etc/local.d/monok8s.start
+++ b/alpine/rootfs-extra/etc/local.d/monok8s.start
@@ -1,4 +1,7 @@
#!/bin/sh
+set -eu
+
+exec >>/var/log/monok8s/boot.log 2>&1
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
@@ -6,4 +9,18 @@ mkdir -p /dev/hugepages
mountpoint -q /dev/hugepages || mount -t hugetlbfs none /dev/hugepages
echo 640 > /proc/sys/vm/nr_hugepages
+CUR=$(grep '^BOOT_PART=' /run/monok8s/boot-state.env | cut -d= -f2-)
+LAST=$(cat /opt/monok8s/config/.bootpart 2>/dev/null || true)
+
+if [ "$CUR" != "$LAST" ]; then
+ echo "Slot changed ($LAST -> $CUR), cleaning runtime state"
+
+ rm -rf /var/lib/containers \
+ /var/lib/kubelet/pods \
+ /var/lib/kubelet/plugins \
+ /var/lib/kubelet/device-plugins
+
+ mkdir -p /var/lib/containers /var/lib/kubelet
+fi
+
/usr/local/bin/ctl init --env-file /opt/monok8s/config/cluster.env >>/var/log/monok8s/bootstrap.log 2>&1 &
diff --git a/build.env b/build.env
index 35cdff0..d0e760a 100644
--- a/build.env
+++ b/build.env
@@ -11,8 +11,8 @@ DPDK_VERSION=lf-6.18.2-1.0.0
VPP_VERSION=lf-6.18.2-1.0.0
VPP_UPSTREAM_VERSION=23.10
-CRIO_VERSION=cri-o.arm64.v1.33.3
-KUBE_VERSION=v1.33.3
+CRIO_VERSION=cri-o.arm64.v1.35.2
+KUBE_VERSION=v1.35.3
# Mono's tutorial said fsl-ls1046a-rdb.dtb but our shipped board is not that one
# We need fsl-ls1046a-rdb-sdk.dtb here
diff --git a/clitools/pkg/controller/osupgrade/progress.go b/clitools/pkg/controller/osupgrade/progress.go
index 71a79aa..40771fe 100644
--- a/clitools/pkg/controller/osupgrade/progress.go
+++ b/clitools/pkg/controller/osupgrade/progress.go
@@ -326,6 +326,8 @@ func markProgressCompleted(
cur.Status.Phase = monov1alpha1.OSUpgradeProgressPhaseCompleted
cur.Status.Message = message
+ cur.Status.CurrentVersion = osup.Status.CurrentVersion
+ cur.Status.TargetVersion = osup.Status.TargetVersion
cur.Status.LastUpdatedAt = &now
cur.Status.CompletedAt = &now
})
diff --git a/clitools/pkg/node/fs.go b/clitools/pkg/node/fs.go
index fbb1032..8eab227 100644
--- a/clitools/pkg/node/fs.go
+++ b/clitools/pkg/node/fs.go
@@ -29,6 +29,31 @@ func ReleaseControlGate(ctx context.Context, nctx *NodeContext) error {
return fmt.Errorf("relate control gate: %w", err)
}
+ return WriteLastState(ctx, nctx)
+}
+
+// Required for detecting bootslot changes
+func WriteLastState(ctx context.Context, nctx *NodeContext) error {
+ stBootPart := filepath.Join(monov1alpha1.EnvConfigDir, ".bootpart")
+
+ state, err := osimage.ReadBootState()
+ if err != nil {
+ return fmt.Errorf("read boot state: %w", err)
+ }
+
+ bootPart := state["BOOT_PART"]
+ if bootPart == "" {
+ return fmt.Errorf("BOOT_PART missing")
+ }
+
+ tmp := stBootPart + ".tmp"
+ if err := os.WriteFile(tmp, []byte(bootPart+"\n"), 0o644); err != nil {
+ return err
+ }
+ if err := os.Rename(tmp, stBootPart); err != nil {
+ return err
+ }
+
return nil
}