1. Setting Environment Variables
| |
2. The Dataset Will Not Become Ready
2.1 Fluid Component Problems
| |
There may be cases where something did not start up properly.
2.2 Abnormally Terminated Datasets
Abnormal resources can cause Fluid resources to restart repeatedly, and manual intervention is required to delete them.
2.3 Checking the Worker \ Fuse Replicas
- worker replicas
| |
| |
- fuse replicas
| |
| |
3. Fuse Problems, the PVC Cannot Be Used
3.1 No Fuse Pod Created
The node is missing a label. The following command labels all nodes:
| |
The label format is as follows:
| |
3.2 Problems with the Fuse Mount
| |
- could not find the requested resource
| |
- fuse reports an error
Force delete the fuse pod.
3.3 Fuse Reports WithTimeout
The error log looks like this:
| |
First check connectivity to the metadata and object storage services, then check whether any residue from a previous Fuse Pod is left on the host.
3.4 Fuse Reports RequestTimeTooSkewed
| |
Check whether there is a time offset between the nodes, and install the chronyd service to synchronize the time automatically.
| |
4. Worker Problems, Abnormal Cache
4.1 Worker PartialReady
- Check the status of the JuiceFSRuntime
| |
- Check the Worker logs
| |
- Delete the abnormal Worker
This kind of Worker may have started normally, but Fluid cannot get its stats status and therefore judges it as not ready.
| |
- Remove the label of the abnormal Worker’s node
If the worker selected its node using a nodeSelector, you should remove the label from that node.
4.2 Some Workers Are Abnormal
| |
In this case, you can delete the Worker and let it restart.
4.3 Insufficient Worker Resources
| |
Check the Worker’s resource usage to see whether it is close to the Limit configuration.
5. Speeds Fluctuate Wildly
Speed fluctuation is mainly a cache problem. First refer to https://juicefs.com/docs/zh/cloud/guide/distributed-cache/#troubleshooting for troubleshooting.
5.1 Workers Across Regions Formed a Distributed Cache
| |
In the Worker logs, add peer lets you find all the cache nodes; check whether there are any nodes that do not match expectations. Nodes in the same cache group should be in the same region.
5.2 No Prewarming on the Worker Nodes
JuiceFS has two levels of cache. If you prewarm on the Fuse, the cache can only be used on the current node; you should prewarm on the Worker nodes so that the cache can be provided to other nodes.
5.3 a Full Disk Causes the Cache to Be Cleaned
JuiceFS Enterprise Edition has a monitoring dashboard; check whether the Block Cache Eviction Rate is abnormal.
When the disk is full or the threshold configured in the JuiceRuntime is reached, the cache is cleaned up, which causes the speed to fluctuate.
In this case, you can clean up cache older than 30d based on the creation time of the cache directories.
| |
5.4 The low Parameter Is Set Unreasonably
low indicates the minimum space that should be kept on the disk. If it is set too high, JuiceFS will keep cleaning the cache.
In this case, the JuiceFS monitoring shows a low cache hit rate and a high cache cleanup rate.
The solution is to lower the low parameter; the default value is 0.2.
5.5 Some Nodes Are Slow
In the JuiceFS monitoring dashboard you can find Remote Cache Latency to check whether any node is abnormal.
6. Slow Access Speeds
6.1 Inconsistent Cache-Group
When configuring JuiceFS Enterprise Edition with Fluid 1.0.0, if Cache is configured in the DataSet, the Cache-Group of the Fuse and the Worker will be inconsistent.
The JuiceFS monitoring shows a low cache hit rate, only around 30%, whereas normally after prewarming it should be above 80%.
It is best not to configure Cache-Group and let Fluid configure it automatically.
6.2 Pods Take Too Long to Wait When Using the PVC
Set the Fuse cleanPolicy to OnRuntimeDeleted.
cleanPolicy has two possible values:
- OnDemand, clean up when the node no longer needs it
- OnRuntimeDeleted, clean up when the cache is cleaned
If Pods are constantly being created and used, using OnRuntimeDeleted can reduce the Fuse startup time.
7. Operations Recommendations
7.1 Pin the Node Where Each Worker Runs
Pinning the node where a Worker runs prevents cache loss after the Worker restarts.
The specific method is to set the NodeSelector to a specific label, so that the number of labeled nodes equals the number of Worker replicas.
Since the Worker is deployed as a StatefulSet, it starts up one by one in order on each restart, which guarantees that each Worker runs on a fixed node.
8. Installation
- Create the namespace
| |
- Add the Helm repository
| |
- Install Fluid
| |
Enabling the FuseRecovery feature allows the mount to be recovered automatically when the Fuse restarts. If the feature was not enabled at installation time, you can add the - --feature-gates=FuseRecovery=true startup argument to the CSI configuration.
9. Version Upgrade
Upgrading from 1.0.0 to 1.0.4
- Download Fluid 1.0.4
| |
- Check the available parameters
| |
| |
- Start the upgrade
| |
Because Fluid pulls images from DockerHub by default, the component-related Deployments and StatefulSets may end up in ImagePullBackOff, which can be solved by changing the image addresses.
During the restart, the cache workers will be restarted and the Fuse needs to be restarted forcefully by hand. Note that restarting the Fuse makes storage unavailable, and the application needs to be restarted to mount it again.
10. The Storage Bucket’s Domain Name Changes
In the Worker and the Fuse, the /root/.juicefs directory holds the complete configuration file, which records the full domain name configuration.
In JuiceFS Community Edition, when we create a Volume, we only enter the same name for the bucket, not the full domain name.
JuiceFS Enterprise Edition automatically selects the internal or public domain name based on the environment, or even the cloud vendor’s endpoint. If the domain name of the storage bucket being accessed changes, it means the network environment has changed.
There are two ways to pin the storage bucket’s domain name:
- In the JuiceFS Volume configuration, fill in the complete storage bucket domain name, for example http://bucketname.region.aliyuncs.com
- Specify the endpoint in the client configuration file, for example by mounting the complete
/root/.juicefs/my-volume.conffile and indicating the complete storage bucket domain name.
