anaconda-storage
and anaconda-persistence
, then you should consolidate to a
single PersistentVolume, as discussed in the
general storage requirements.async
export option.
root_squash
option. While
a seemingly sensible option for security reasons, in practice we find that
it too often leads to unexpected permissions issues. That said, a
similar and more reliable option is to use the all_squash
option
along with anonuid
and anonguid
. This effectively forces all
remote access to be translated to the same UID and GID on the server.
In summary, in order of preference, Anaconda recommends:
no_root_squash
for maximum administration flexibility, and to
allow the containers to utilize GID 0, the Kubernetes default.all_squash
/ anon_uid
/ anon_gid
for a reliable option
that avoids UID 0 & GID 0;root_squash
only if there is no other alternative.rsize=65536
,
wsize=65536
. The reason smaller block sizes are preferred
is because the creation of conda environments frequently involves
the manipulation of thousands of smaller files. Large block sizes
result in significant inefficiency.noatime
option. This eliminates
the updating of file access times over NFS, further reducing
network overhead. Note that file modification times are still
preserved.pv.yaml
:
<NAME>
: you can give this any name you wish, or adhere to our
conventions of anaconda-storage
and/or anaconda-persistence
.
This name will ultimately be supplied to the Helm chart values. Note
that <NAME>
appears in three places; use the same value for all.<GID>
: this is the group ID which has write access to the volume.
As discussed above, the recommended value is 0
; but if you are forced
to use root_squash
or all_squash
, make sure this has the value
of the selected GID. The quotes must be preserved.<ADDRESS>
: the FQDN or numeric IP address of the NFS server.<PATH>
: the exported path from the NFS server.size
entry in both resources does not need to be changed, even if
your volume is (as is likely) significantly larger. All that matters in this
case is that the values are the same.
Once this template is properly populated, you can create the
resources with the command:
anaconda-storage
and anaconda-persistence
, repeat this template for each.