Skip to content

feat(skillfs): supervise sidecar mounts - #2701

Draft
kongche-jbw wants to merge 1 commit into
alibaba:mainfrom
kongche-jbw:feature/skillfs/auto-remount-supervisor
Draft

feat(skillfs): supervise sidecar mounts#2701
kongche-jbw wants to merge 1 commit into
alibaba:mainfrom
kongche-jbw:feature/skillfs/auto-remount-supervisor

Conversation

@kongche-jbw

Copy link
Copy Markdown
Collaborator

Why

On ACS, an unrelated container restart can leave the propagated SkillFS FUSE
session returning I/O errors while the SkillFS worker remains alive. The
existing kubelet liveness probe eventually restarts the sidecar, but it cannot
repair the mount in place and may leave a longer availability gap.

What changed

Add a PID 1 sidecar supervisor that reuses the existing real-I/O mount probe
and exact residual-FUSE cleanup path. It restarts unhealthy foreground mount
workers with consecutive-failure detection, a stable-health reset window,
bounded exponential backoff, and signal-safe shutdown. Keep kubelet probes as
the outer recovery boundary when in-container recovery is exhausted.

Related issue

no-issue: ACS sidecar recovery validation

User / Agent impact

The Kubernetes sidecar can now recover a failed SkillFS FUSE session without
waiting for the whole container to restart. Default in-container detection uses
a 2-second interval and two consecutive failures; after five consecutive failed
recovery cycles, the supervisor exits so kubelet liveness can restart it.

Risk and compatibility

  • Public CLI, API, configuration, or documented behavior changed
  • Privileged or security-sensitive behavior changed
  • Migration or rollback guidance is needed

The change introduces sidecar supervisor environment variables and moves PID 1
from the SkillFS worker to the supervisor. Cleanup remains restricted to a FUSE
filesystem at the exact configured mountpoint, and foreground and managed CLI
semantics are unchanged. The main residual risk is behavior under real ACS
mount propagation, which requires cluster validation.

Validation

  • cargo +1.86.0 fmt --all -- --check
  • cargo +1.86.0 clippy --workspace --all-targets -- -D warnings
  • cargo +1.86.0 test --workspace
  • scripts/test.sh
  • Sidecar supervisor integration suite repeated 10 times
  • Bash syntax checks for all container scripts
  • Kubernetes manifest parsed as YAML
  • Docker build attempted; base-image metadata retrieval timed out against
    Docker Hub before Dockerfile execution

Documentation and rollback

Container defaults and the reference Kubernetes manifest document the new
supervisor controls inline. Roll back by deploying the previous SkillFS image
and manifest, or by reverting commit 229321454; no persisted state migration
is involved.

- monitor real FUSE I/O and remount failed sidecar sessions
- reuse preflight cleanup with bounded retries and signal forwarding
- cover recovery and shutdown without requiring /dev/fuse

Signed-off-by: kongche-jbw <kongche.jbw@alibaba-inc.com>
@github-actions github-actions Bot added the component:skillfs src/skillfs label Aug 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant