Giter VIP home page Giter VIP logo

csi-wekafs's People

Contributors

alex-old-user avatar renovate[bot] avatar sergeyberezansky avatar tigrawap avatar wekabot avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

csi-wekafs's Issues

Dependency Dashboard

This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.

Open

These updates have all been created already. Click a checkbox below to force a retry/rebase of any.

Detected dependencies

dockerfile
Dockerfile
  • golang 1.22-alpine
  • alpine 3.18
github-actions
.github/workflows/draft.yaml
  • actions/checkout v4@692973e3d937129bcbf40652eb9f2f61becf3332
  • softprops/action-gh-release v2
.github/workflows/lint_pr.yaml
  • amannn/action-semantic-pull-request v5
.github/workflows/pull-request.yaml
  • actions/checkout v4@692973e3d937129bcbf40652eb9f2f61becf3332
  • codacy/git-version 2.8.0
  • docker/setup-buildx-action v3
  • docker/login-action v3
  • docker/build-push-action v6
  • addnab/docker-run-action v3
  • azure/setup-helm v4
  • actions/setup-python v5
  • helm/chart-testing-action v2.6.1
  • helm/kind-action v1.10.0
  • unfor19/install-aws-cli-action v1
  • rtCamp/action-slack-notify v2
.github/workflows/push-dev.yaml
  • actions/checkout v4@692973e3d937129bcbf40652eb9f2f61becf3332
  • codacy/git-version 2.8.0
  • docker/setup-buildx-action v3
  • docker/login-action v3
  • docker/build-push-action v6
  • addnab/docker-run-action v3
  • azure/setup-helm v4
  • actions/setup-python v5
  • helm/chart-testing-action v2.6.1
  • helm/kind-action v1.10.0
.github/workflows/release.yaml
  • actions/checkout v4@692973e3d937129bcbf40652eb9f2f61becf3332
  • codacy/git-version 2.8.0
  • docker/setup-buildx-action v3
  • docker/login-action v3
  • docker/build-push-action v6
  • addnab/docker-run-action v3
  • stefanzweifel/git-auto-commit-action v5
  • helm/chart-releaser-action v1.6.0
.github/workflows/renovate_jira.yaml
  • atlassian/gajira-login v3
  • atlassian/gajira-create v3
.github/workflows/sanity.yaml
  • actions/checkout v4@692973e3d937129bcbf40652eb9f2f61becf3332
  • docker/setup-buildx-action v3
  • docker/build-push-action v6
  • actions/checkout v4@692973e3d937129bcbf40652eb9f2f61becf3332
  • actions/checkout v4@692973e3d937129bcbf40652eb9f2f61becf3332
  • actions/checkout v4@692973e3d937129bcbf40652eb9f2f61becf3332
  • actions/checkout v4@692973e3d937129bcbf40652eb9f2f61becf3332
  • actions/checkout v4@692973e3d937129bcbf40652eb9f2f61becf3332
  • actions/checkout v4@692973e3d937129bcbf40652eb9f2f61becf3332
gomod
go.mod
  • go 1.22.0
  • go 1.22.4
  • github.com/container-storage-interface/spec v1.9.0
  • github.com/google/go-querystring v1.1.0
  • github.com/google/uuid v1.6.0
  • github.com/hashicorp/go-version v1.7.0
  • github.com/kubernetes-csi/csi-lib-utils v0.18.1
  • github.com/pkg/xattr v0.4.9
  • github.com/prometheus/client_golang v1.19.1
  • github.com/rs/zerolog v1.33.0
  • github.com/showa-93/go-mask v0.6.1
  • go.opentelemetry.io/otel v1.27.0
  • go.opentelemetry.io/otel/exporters/jaeger v1.17.0
  • go.opentelemetry.io/otel/sdk v1.27.0
  • go.opentelemetry.io/otel/trace v1.27.0
  • golang.org/x/exp v0.0.0-20240613232115-7f521ea00fb8@7f521ea00fb8
  • golang.org/x/sync v0.7.0
  • google.golang.org/grpc v1.64.0
  • google.golang.org/protobuf v1.34.2
  • k8s.io/apimachinery v0.30.2
  • k8s.io/helm v2.17.0+incompatible
  • k8s.io/mount-utils v0.30.2

  • Check this box to trigger a request for Renovate to run again on this repository

Unable to attach or mount volumes, timed out waiting for the condition

Hello,
I faced issue that PVC mount get timed out when one pod requests multiple PVC mount.
Pod trys to mount but any volume can't be mounted, these PVC mounts are retried several times and finally pod can't be startup.

Here's my condition.
I made two PV (hereby static provision I used), and these two PV are sharing same sub-directory path.

I ran an model and this model create its log in same path dir/v1/storageclass-test/jslouisyou/model/ in this case, and below two PV are attached.

spec:
  accessModes:
  - ReadWriteMany
  capacity:
    storage: "1"
  claimRef:
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: pv-output-model
    namespace: default
    resourceVersion: "27069727"
    uid: 3f985fdd-966b-452c-97c1-81d10cdc2e2b
  csi:
    driver: csi.weka.io
    volumeHandle: dir/v1/storageclass-test/jslouisyou/model/
  persistentVolumeReclaimPolicy: Retain
  volumeMode: Filesystem
spec:
  accessModes:
  - ReadWriteMany
  capacity:
    storage: "1"
  claimRef:
    apiVersion: v1
    kind: PersistentVolumeClaim
    name: pv-output-log
    namespace: default
    resourceVersion: "27069647"
    uid: 1b558ff7-b2c3-4052-a013-8340d2ae1d47
  csi:
    driver: csi.weka.io
    volumeHandle: dir/v1/storageclass-test/jslouisyou/model/
  persistentVolumeReclaimPolicy: Retain
  volumeMode: Filesystem

but when I tried to create a new pod, then Unable to attach or mount volumes, timed out waiting for the condition issue occurs and pod can't be started.

$ kubectl describe pod -n default test-0
...
Volumes:
  model:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  pv-output-model
    ReadOnly:   false
  log:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  pv-output-log
    ReadOnly:   false

...
Events:
  Type     Reason       Age                    From     Message
  ----     ------       ----                   ----     -------
  Warning  FailedMount  67s (x156 over 5h52m)  kubelet  (combined from similar events): Unable to attach or mount volumes: unmounted volumes=[log model], unattached volumes=[${REDACTED} log model]: timed out waiting for the condition

I found that PVC mount can be done when I try to mount just one PV mount, but multiple mount with same subpath is failed.

This issue also happens in longhorn (NFS filesystem),
And people have similar issues with multiple mounts:
kubernetes/kubernetes#110158
https://stackoverflow.com/questions/53383994/error-marking-master-timed-out-waiting-for-the-condition-kubernetes

and this issue also happens in EFS CSI driver:
kubernetes-sigs/aws-efs-csi-driver#100 (comment)

I think that many CSI drivers share this issue but EFS CSI driver resolved it by itself.

So I'm wondering that is this expected behavior?
If any user try to mount multiple volume, then these multiple volume should have different sub-directory path?

Thanks.

Support for High Availbility

Hello,
Recently I faced some issues while using csi-wekafs plugin, which csi-wekafs-controller POD stucked by some reason and then all csi-wekafs-node PODs can't communicate with csi-wekafs-controller POD.

And It seems that csi-wekafs-controller POD which was spawned from statefulset is not configured as supporting HA, only number of replicas is set to 1.

I'm wondering that If I change replicas: 1 to replicas: 3 or something else, then all behaviors like attaching, resizing, mounting, unpublishing, ... are working well?

Thanks.

Per PVC statistics unavailable

I don't seem to be able to get metrics for each PVC mounted by the system from the Weka CSI driver, such as:

kubelet_volume_stats_capacity_bytes - the per-PVC capacity in bytes.
kubelet_volume_stats_used_bytes - the per-PVC space usage in bytes.
kubelet_volume_stats_available_bytes - the per-PVC free space in bytes.

Is there a specific configuration option needed to enable these, or is it not currently supported by the driver at present?

How to make a volume read-only?

Suppose the following use-case: A Kubernetes-user creates a Weka FileSystem (either dynamically via PVC or statically). The user populates the volume with some data and later wants to share that volume with other users. But before sharing it, the volume should be marked read-only to prevent modification to the data. How to achieve this?

Options we have considered:

  1. Changing the accessMode of the PV and the PVC to ReadOnlyMany does not seem to prevent a pod from writing data into the mounted weka filesystem. The wekafs is mounted rw anyhow, and files can be created, changed, deleted.
  2. Changing the .spec.csi.readOnly to true in the PV is forbidden, because the spec is immutable.
  3. Setting read-only mounts and volumes in Pod.spec.containers.volumeMounts[x].readOnly and Pod.spec.volumes.persistentVolumeClaim.readOnly resp. might work, but doesn't prevent a user from accidentally not setting it and therefore modifying data.
  4. Using a Weka-user with "Read-Only" user role is not supported, because as per documentation at least an OrgaAdmin is required.
  5. One could recursively go through the filesystem and mark every single file and directory read-only. Given that we're dealing with several 100000 files, this would take awful long and is no guarantee that a file isn't deleted accidentally by a root-user in a Kubernetes pod.
  6. The Weka web UI doesn't seem to provide an option for marking a filesystem read-only.

Is there any other option to prevent modifications to an entire Weka filesystem?

Action Required: Fix Renovate Configuration

There is an error with this repository's Renovate configuration that needs to be fixed. As a precaution, Renovate will stop PRs until it is resolved.

Location: renovate.json
Error type: Invalid JSON (parsing failed)
Message: Syntax error near // Renovat

General limitation for mounting WEKA volume

Hello,

Are there any general limitations for mounting WEKA volume in k8s? I can't find any of these in kubernetes documentations or anywhere.

For example,

  1. The maximum number of PersistentVolume or PersistentVolumeClaim can be created within same StorageClass across all nodes, is limited?
  2. The maximum number of mounted filesystem limits within one node limited? (I'm using Ubuntu 20.04)

Thanks!

Allow overriding of fsGroupPolicy in HelmChart

Hi Sergey,

as discussed, we would like to be able to override the value for fsGroupPolicy of the CSIDriver:

Currently this is hardcoded to File. This causes a serious problem: Consider a statically provisioned volume with a few million files in it. If that volume is mounted by many users in many pods, the kubelet will chmod / chown all the files in that volume when starting pods. This can take a very long time, during which the kubelet is busy and not willing to e.g. terminate other pods.

This problem even occurs, when people do not specify fsGroup in their pod spec. In this case it just defaults to some value. And if that default owner / file mode doesn't match with the one in the volume (because e.g. someone as made a modification to a file or directory), the kubelet will chmod / chmown again.

Kubernetes suggests setting the fsGroupChangePolicy in each pod manifest to OnRootMismatch. But this is not sufficient either, because if a mismatch is detected in the root directory, the kubelet will still do chmod / chown on everything.

Hence, the only option we see is to set the fsGroupPolicy of the CSIDriver to None, to prevent the kubelet from messing with the permissions. So having a way to specify that in the Helm chart would be nice :)

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.