328 sao GitHub và vẫn tăng — seaweedfs/seaweedfs-csi-driver là dự án Go mà TopGit đang theo dõi trên nền tảng. SeaweedFS CSI Driver https://github.com/seaweedfs/seaweedfs
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
Container storage interface is an industry standard that enables storage vendors to develop a plugin once and have it work across a number of container orchestration systems.
SeaweedFS is a simple and highly scalable distributed file system, to store and serve billions of files fast!
Deployment
Kubernetes (kubectl)
Kubernetes (helm)
Update (Safe rollout)
Testing
Static and dynamic provisioning
DataLocality
License
Code of conduct
Deployment
Kubernetes (kubectl)
Prerequisites:
Already have a working Kubernetes cluster (includes kubectl)
Check the kubelet root directory ,Execute the following command
ps -ef | grep kubelet | grep root-dir
If the result returned from the previous check command is not empty, the root directory (eg:--root-dir=/data/k8s/kubelet/data) representing the kubelet is not the default value (/var/lib/kubelet), so you need to update the kubelet root-dir in the CSI driven deployment file and deploy:
sed 's+/var/lib/kubelet+/data/k8s/kubelet/data+g' deploy/kubernetes/seaweedfs-csi.yaml | kubectl apply -f -
If the result returned by the previous check command is null, you can directly deploy it without modifying the configuration:
The provided static manifest deploy/kubernetes/seaweedfs-csi.yaml does not include TLS configuration by default. To enable TLS, it is recommended to use Helm with tlsSecret configured. If you must use static manifests, you will need to manually patch the seaweedfs-mount and seaweedfs-node DaemonSets to include the necessary TLS environment variables and volume mounts.
Updating seaweed-csi-driver DaemonSet (DS) will break processeses who implement fuse mount:
newly created pods will not remount net device.
For safe update set node.updateStrategy.type: OnDelete for manual update. Steps:
delete DS pods on the node where there is no seaweedfs PV
cordon or taint node
evict or delete pods with seaweedfs PV
delete DS pod on node
uncordon or remove taint on node
repeat all steps on [all nodes]
Testing
Create a persistent volume claim for 5GiB with name seaweedfs-csi-pvc and storage class seaweedfs-storage. The requested size is applied as a quota to the SeaweedFS collection used by the mount.
For dynamically provisioned volumes, resources.requests.storage is enforced by
the SeaweedFS FUSE mount and reported by df. Once the mount observes that the
quota has been reached, further writes fail with ENOSPC. PVC expansion updates
the mount quota.
The quota is collection-based and enforced by each CSI-managed mount, rather
than stored as an authoritative server-side limit. By default, every dynamic
volume gets its own collection, so its quota is isolated. If multiple volumes
are configured to use the same collection, their usage is shared and they do
not have independent per-directory quotas. Writes through another SeaweedFS
client that does not use the quota-configured mount are not restricted by this
CSI quota.
Because enforcement is mount-side, concurrent writers on different mounts can
briefly exceed the configured capacity before collection usage is refreshed.
For statically provisioned Kubernetes volumes, the driver reads
spec.capacity.storage from the PersistentVolume matching
spec.csi.volumeHandle. Other orchestrators receive volumeCapacity from
dynamic CreateVolume calls; static integrations can provide the same value in
bytes through the volume context.
Static and dynamic provisioning
By default, driver will create separate folder (/buckets/<volume-id>) and will use separate collection (volume-id)
for each request. Sometimes we need to use exact collection name or change replication options.
It can be done via creating separate storage class with options:
There is another use case when we need to access one folder from different pods with ro/rw access.
In this case we do not need additional StorageClass. We need to create PersistentVolume:
DataLocality (inspired by Longhorn) allows instructing the storage-driver which volume-locations will be used or preferred in Pods to read & write.
It auto-sets mount-options based on the location a pod is scheduled in and the locality-option wanted.
The option can be set and overridden in Driver, StorageClass and PersistentVolume.
Sets the DataCenter-mount-option to the current Node-DataCenter, making writes local and allowing reads to occur wherever read data is stored. More Details
Requirements
Volume-Servers and the CSI-Driver-Node need to have the locality-option DataCenter correctly set (currently only this option is required).
This can be done manually (although quite tedious) or injected by the Container-Orchestration.
Automatic injection
Kubernetes
Unfortunately Kubernetes doesnt allow grabbing node-labels, which contain well-known region-labels, and setting them as environment-variables.
The DownwardAPI is very limited in that regard. (see #40610)
Therefore a workaround must be used. KubeMod can be used based on this comment. This of course requires KubeMod to be installed.
You can activate it in the Helm-Chart values.yaml -> node.injectTopologyInfoFromNodeLabel.enabled.
node.injectTopologyInfoFromNodeLabel.labels decides which labels are grabbed from the node.
It is recommended to use well-known labels to avoid confusion.
License
Apache v2 license
Code of conduct
Participation in this project is governed by Kubernetes/CNCF code of conduct
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/seaweedfs/seaweedfs-csi-driver là nguồn chính thức.
seaweedfs/seaweedfs-csi-driver có bao nhiêu sao?
seaweedfs/seaweedfs-csi-driver có 328 sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/seaweedfs/seaweedfs-csi-driver. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
seaweedfs/seaweedfs-csi-driver có phải mã nguồn mở không?
Có — seaweedfs/seaweedfs-csi-driver phát hành theo license Apache-2.0, nghĩa là mã nguồn mở để đọc, fork và (tùy license) tái sử dụng. Mã: github.com/seaweedfs/seaweedfs-csi-driver.
seaweedfs/seaweedfs-csi-driver có website riêng không?
TopGit chưa ghi nhận URL trang chủ cho seaweedfs/seaweedfs-csi-driver. Phần README ở tab phía trên thường có link demo, hoặc xem mô tả GitHub của repo.
seaweedfs/seaweedfs-csi-driver là gì?
seaweedfs/seaweedfs-csi-driver (seaweedfs/seaweedfs-csi-driver) là dự án Go trên GitHub. Theo mô tả gốc: SeaweedFS CSI Driver https://github.com/seaweedfs/seaweedfs
Đọc đầy đủ README ở tab phía trên.
Muốn nghe thêm một ý kiến về seaweedfs-csi-driver?
Hỏi một AI đọc được trang này — một cú bấm là có ngay nhận định về seaweedfs-csi-driver.