Skip to content

Conversation

@elijah-rou
Copy link

Implements DaemonSet deployment mode for JuiceFS mount pods when using StorageClass with mount sharing enabled. This provides better resource management and control over which nodes run mount pods.

Key features:

  • Three deployment modes: per-pvc, shared-pod, and daemonset
  • ConfigMap-based configuration for existing StorageClasses
  • Node affinity support to control mount pod placement
  • Reference tracking via DaemonSet annotations
  • Automatic lifecycle management of DaemonSets
  • Backward compatibility with existing deployments

Configuration:

  • Enable via STORAGE_CLASS_DAEMONSET=true environment variable
  • Configure node affinity via ConfigMap or StorageClass parameters
  • MountSelector dynamically chooses the appropriate mount implementation

The implementation includes comprehensive unit tests and documentation to guide users through the configuration process.

Implements DaemonSet deployment mode for JuiceFS mount pods when using
StorageClass with mount sharing enabled. This provides better resource
management and control over which nodes run mount pods.

Key features:
- Three deployment modes: per-pvc, shared-pod, and daemonset
- ConfigMap-based configuration for existing StorageClasses
- Node affinity support to control mount pod placement
- Reference tracking via DaemonSet annotations
- Automatic lifecycle management of DaemonSets
- Backward compatibility with existing deployments

Configuration:
- Enable via STORAGE_CLASS_DAEMONSET=true environment variable
- Configure node affinity via ConfigMap or StorageClass parameters
- MountSelector dynamically chooses the appropriate mount implementation

The implementation includes comprehensive unit tests and documentation
to guide users through the configuration process.
- Capitalize 'Mount Pod' and 'Mount Pods' consistently per enhanced-proper-names rule
- Fix all occurrences in daemonset-mount.md and mount-pod-configuration.md
- Comply with .markdownlint-cli2.jsonc configuration
@jonoirwinrsa
Copy link

@elijah-rou is the idea to make a PR into Juice after we merge into our own?

@elijah-rou
Copy link
Author

@elijah-rou is the idea to make a PR into Juice after we merge into our own?

yes

apiVersion: v1
kind: ConfigMap
metadata:
name: juicefs-daemonset-config

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

rename to juicefs-mountpod-config

… support

- Implement three mount modes: per-pvc, shared-pod, and daemonset
- Add ConfigMap-based configuration for per-StorageClass mount settings
- Support DaemonSet deployment with flexible nodeAffinity configuration
- Add automatic fallback from DaemonSet to shared pod when node scheduling fails
- Rename daemonset_config to mount_config for clarity
- Add node compatibility checking before DaemonSet scheduling
- Include comprehensive tests for mount selection and fallback behavior
- Update documentation with configuration examples and best practices

This allows users to optimize mount pod deployment based on their specific
needs without modifying existing StorageClasses, with automatic fallback
ensuring workloads never fail due to mount pod scheduling issues.
… ECR

- Add ci_release.yml for production releases with auto-versioning
- Add ci_update_dev.yml for development and PR builds
- Configure Depot for multi-arch builds (amd64/arm64)
- Build CSI driver, mount images (CE/EE), and dashboard
- Push to ECR with region-specific naming (virginia/london)
- Use specific EE image version ee-5.2.8-1305e8c
@elijah-rou elijah-rou changed the base branch from master to release-v0.29.2c1 September 3, 2025 01:06
…ONSET flag

- Remove separate STORAGE_CLASS_DAEMONSET environment variable
- DaemonSet mode is now automatically available when STORAGE_CLASS_SHARE_MOUNT is enabled
- Changed LoadDaemonSetNodeAffinity to assert mount sharing is enabled rather than conditionally check
- Updated documentation to reflect the simplified configuration
- Updated all tests to work without the removed flag

This simplifies the configuration model - when mount sharing is enabled,
users can choose between shared-pod (default) and daemonset modes via ConfigMap
without needing a separate environment variable.
@elijah-rou elijah-rou merged commit 78f0672 into release-v0.29.2c1 Sep 3, 2025
1 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants