Cleanup k8s states after upgrade

This commit is contained in:
2026-04-15 04:53:28 +08:00
parent 9225857db6
commit f1a7074528
4 changed files with 46 additions and 2 deletions

View File

@@ -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 &

View File

@@ -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

View File

@@ -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
})

View File

@@ -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
}