Code Monkey home page Code Monkey logo

gluster-subvol's Issues

Add block-based subvol type

Gluster-fuse (upon which gluster-subvol is based) struggles with metadata-intensive and small-file workloads.

We would like to have a subvol type that in analogous to gluster-block. It needs to preserve the original objectives of gluster-subvol (i.e., large PV count, thin provisioning to allow overcommit, etc.)

Create version tags for volrecycler image

Docker cloud is used to build the recycler pod image. The only tag currently supported is "latest" which is derived from master.
Augment the build rules to pick up version tags from this repo to build actual version labels so that any deployment using this image can control their version/upgrade cycle.

Break up CRD

Currently there is a single CRD for both the recycler and the plugin. The recycler fields additionally allow specifying an arbitrary number of volumes to recycle.

The CRD should be split into two:

  • recycler: This should support recycling exactly 1 supervol
  • plugin: This should deploy the flex plugin

Capture flex plugin logs

The flex DS should have a sidecar(s) that:

  • provides the flex logfile to stdout
  • provides the fuse log to stdout
  • properly rotates the log files to prevent space exhaustion

Investigate ReadWriteMany PVs

Having seen some documentation that Flex doesn't support RWX, the current PVs are created as ReadWriteOnce. Test whether ReadWriteMany can be used and potentially change volcreator to provision RWX volumes.

Create PVs as dual RWO, RWX

Change creator.sh to create the PV manifests with both RWO and RWX access modes so that the gluster-subvol PVs can be used as either type.

Set empty StorageClass for recycler PVs

The PVs created when deploying the recycler don't have a StorageClass set, so they get tagged with the cluster default. While there are no ill effects, it can be confusing when viewing PVs in the cluster.

Change the deployment scripts to set a blank class so the default does not get assigned.

Limit permissions of volrecycler

Currently, the volrecycler-sa has cluster-admin. Figure out what the real set of permissions are that it should have and adjust the sa appropriately.

Limit operator & operands to Linux hosts

gluster-subvol will only work on Linux hosts. Apply proper nodeAffinity to ensure it is only scheduled there. This also requires properly merging in other nodeAffinity specs from the CR.

Increase robustness of recycler pod

Currently, the recycler pod is just a pod, so it will not get properly restarted upon node failure.

volrecycler.yml needs to be reworked so that the recycler is a Deployment, ensuring it will get respawned should the pod fail or be killed.

Clean up bash scripts

Fix the errors produced by shellcheck

  • glfs-subvol/glfs-subvol
  • volcreator/creator.sh
  • volrecycler/locker.sh
  • volrecycler/recycler.sh

Add resource requests

Each pod should have appropriate resource requests/limits for:

  • memory
  • cpu
  • ephemeral storage

Prevent fsgroup relabeling in flex plugin

kubernetes/kubernetes#68680 added a new flag on the init call fsGroup that, when set to false, will skip the recursive change group of all the files in the PV on each mount.

We should return fsGroup:false from the init call to prevent the chown.

The main Gluster driver already skips it, so this change would make the behavior consistent with the main implementation of Gluster and greatly speed the mount operation for volumes with a high file count.

Pods stuck in "terminating" state if fuse dies

If the fuse process dies, pods get stuck and won't terminate. The error commonly seen is 'transport endpoint not connected'. The state that the system is left in results in kubelet being confused about the state of the mount.

Investigate (and implement) whether auto_unmount will provide better error recovery.

Switch base image to UBI

Currently, they are available at:

  • registry.access.redhat.com/ubi7-dev-preview/ubi-minimal
  • registry.access.redhat.com/ubi8-dev-preview/ubi-minimal

We should use ubi8

Improve safety of recycler

Currently, the recycler has cluster IP and volume name passed in as arguments, and these must match the PV/PVC to which it gets attached. If an admin misconfigures this, there is a possibility of either data loss (wrong directory being wiped) or data leakage (failing to wipe the directory).

volcreator could be enhanced to annotate the root directory with the cluster IP and volume name such that we avoid having to pass it to the recycler. On startup, the recycler could read these parameters and use them when looking up the PVs.

This would reduce the amount of configuration as well as improve safety.

Add 'current' timestamps to the log file

We should add current timestamps to the log file in addition to the existing invocation timestamps so that we can tell if the script execution is slow for some reason.

I propose making the change to the log function to add the new timestamp as the first field on the line, moving the current one to 2nd. This is more in keeping w/ a standard logging style.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.