Skip to content

Commit debc20a

Browse files
authored
Merge pull request #558 from andyzhangx/statfs-cache
fix: add VolumeStats cache to avoid massive statfs calls
2 parents 2efce69 + 432a3b9 commit debc20a

File tree

207 files changed

+22849
-5210
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

207 files changed

+22849
-5210
lines changed

cmd/nfsplugin/main.go

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,12 +26,13 @@ import (
2626
)
2727

2828
var (
29-
endpoint = flag.String("endpoint", "unix://tmp/csi.sock", "CSI endpoint")
30-
nodeID = flag.String("nodeid", "", "node id")
31-
mountPermissions = flag.Uint64("mount-permissions", 0, "mounted folder permissions")
32-
driverName = flag.String("drivername", nfs.DefaultDriverName, "name of the driver")
33-
workingMountDir = flag.String("working-mount-dir", "/tmp", "working directory for provisioner to mount nfs shares temporarily")
34-
defaultOnDeletePolicy = flag.String("default-ondelete-policy", "", "default policy for deleting subdirectory when deleting a volume")
29+
endpoint = flag.String("endpoint", "unix://tmp/csi.sock", "CSI endpoint")
30+
nodeID = flag.String("nodeid", "", "node id")
31+
mountPermissions = flag.Uint64("mount-permissions", 0, "mounted folder permissions")
32+
driverName = flag.String("drivername", nfs.DefaultDriverName, "name of the driver")
33+
workingMountDir = flag.String("working-mount-dir", "/tmp", "working directory for provisioner to mount nfs shares temporarily")
34+
defaultOnDeletePolicy = flag.String("default-ondelete-policy", "", "default policy for deleting subdirectory when deleting a volume")
35+
volStatsCacheExpireInMinutes = flag.Int("vol-stats-cache-expire-in-minutes", 10, "The cache expire time in minutes for volume stats cache")
3536
)
3637

3738
func main() {
@@ -48,12 +49,13 @@ func main() {
4849

4950
func handle() {
5051
driverOptions := nfs.DriverOptions{
51-
NodeID: *nodeID,
52-
DriverName: *driverName,
53-
Endpoint: *endpoint,
54-
MountPermissions: *mountPermissions,
55-
WorkingMountDir: *workingMountDir,
56-
DefaultOnDeletePolicy: *defaultOnDeletePolicy,
52+
NodeID: *nodeID,
53+
DriverName: *driverName,
54+
Endpoint: *endpoint,
55+
MountPermissions: *mountPermissions,
56+
WorkingMountDir: *workingMountDir,
57+
DefaultOnDeletePolicy: *defaultOnDeletePolicy,
58+
VolStatsCacheExpireInMinutes: *volStatsCacheExpireInMinutes,
5759
}
5860
d := nfs.NewDriver(&driverOptions)
5961
d.Run(false)

go.mod

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ require (
2121
k8s.io/mount-utils v0.28.4
2222
k8s.io/pod-security-admission v0.0.0
2323
k8s.io/utils v0.0.0-20230406110748-d93618cff8a2
24+
sigs.k8s.io/cloud-provider-azure v1.28.4
2425
sigs.k8s.io/yaml v1.4.0
2526
)
2627

@@ -37,9 +38,9 @@ require (
3738
github.com/davecgh/go-spew v1.1.1 // indirect
3839
github.com/docker/distribution v2.8.2+incompatible // indirect
3940
github.com/emicklei/go-restful/v3 v3.9.0 // indirect
40-
github.com/evanphx/json-patch v4.12.0+incompatible // indirect
41-
github.com/felixge/httpsnoop v1.0.3 // indirect
42-
github.com/fsnotify/fsnotify v1.6.0 // indirect
41+
github.com/evanphx/json-patch v5.7.0+incompatible // indirect
42+
github.com/felixge/httpsnoop v1.0.4 // indirect
43+
github.com/fsnotify/fsnotify v1.7.0 // indirect
4344
github.com/go-logr/logr v1.3.0 // indirect
4445
github.com/go-logr/stdr v1.2.2 // indirect
4546
github.com/go-openapi/jsonpointer v0.19.6 // indirect
@@ -55,7 +56,7 @@ require (
5556
github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1 // indirect
5657
github.com/google/uuid v1.3.1 // indirect
5758
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect
58-
github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3 // indirect
59+
github.com/grpc-ecosystem/grpc-gateway/v2 v2.16.0 // indirect
5960
github.com/imdario/mergo v0.3.6 // indirect
6061
github.com/inconshreveable/mousetrap v1.1.0 // indirect
6162
github.com/josharian/intern v1.0.0 // indirect
@@ -75,22 +76,21 @@ require (
7576
github.com/prometheus/client_model v0.4.0 // indirect
7677
github.com/prometheus/common v0.44.0 // indirect
7778
github.com/prometheus/procfs v0.10.1 // indirect
78-
github.com/spf13/cobra v1.7.0 // indirect
79+
github.com/spf13/cobra v1.8.0 // indirect
7980
github.com/spf13/pflag v1.0.5 // indirect
8081
github.com/stoewer/go-strcase v1.2.0 // indirect
8182
go.etcd.io/etcd/api/v3 v3.5.9 // indirect
8283
go.etcd.io/etcd/client/pkg/v3 v3.5.9 // indirect
8384
go.etcd.io/etcd/client/v3 v3.5.9 // indirect
84-
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.35.0 // indirect
85-
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.35.1 // indirect
86-
go.opentelemetry.io/otel v1.10.0 // indirect
87-
go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.10.0 // indirect
88-
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.10.0 // indirect
89-
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.10.0 // indirect
90-
go.opentelemetry.io/otel/metric v0.31.0 // indirect
91-
go.opentelemetry.io/otel/sdk v1.10.0 // indirect
92-
go.opentelemetry.io/otel/trace v1.10.0 // indirect
93-
go.opentelemetry.io/proto/otlp v0.19.0 // indirect
85+
go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.46.0 // indirect
86+
go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.0 // indirect
87+
go.opentelemetry.io/otel v1.20.0 // indirect
88+
go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.20.0 // indirect
89+
go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.20.0 // indirect
90+
go.opentelemetry.io/otel/metric v1.20.0 // indirect
91+
go.opentelemetry.io/otel/sdk v1.20.0 // indirect
92+
go.opentelemetry.io/otel/trace v1.20.0 // indirect
93+
go.opentelemetry.io/proto/otlp v1.0.0 // indirect
9494
go.uber.org/atomic v1.10.0 // indirect
9595
go.uber.org/multierr v1.11.0 // indirect
9696
go.uber.org/zap v1.19.0 // indirect
@@ -120,7 +120,7 @@ require (
120120
k8s.io/kms v0.28.4 // indirect
121121
k8s.io/kube-openapi v0.0.0-20230717233707-2695361300d9 // indirect
122122
k8s.io/kubectl v0.0.0 // indirect
123-
k8s.io/kubelet v0.0.0 // indirect
123+
k8s.io/kubelet v0.28.4 // indirect
124124
sigs.k8s.io/apiserver-network-proxy/konnectivity-client v0.1.2 // indirect
125125
sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd // indirect
126126
sigs.k8s.io/structured-merge-diff/v4 v4.2.3 // indirect

0 commit comments

Comments
 (0)