Skip to content

Commit 65a3f53

Browse files
Add DRA support for GPU pod eviction during driver upgrades
Signed-off-by: Karthik Vetrivel <[email protected]>
1 parent cb72f97 commit 65a3f53

File tree

606 files changed

+49679
-32194
lines changed

Some content is hidden

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

606 files changed

+49679
-32194
lines changed

go.mod

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,9 @@ require (
77
github.com/sirupsen/logrus v1.9.3
88
github.com/urfave/cli/v2 v2.27.7
99
golang.org/x/sys v0.36.0
10-
k8s.io/api v0.33.2
11-
k8s.io/apimachinery v0.33.2
12-
k8s.io/client-go v0.33.2
10+
k8s.io/api v0.34.0
11+
k8s.io/apimachinery v0.34.0
12+
k8s.io/client-go v0.34.0
1313
k8s.io/kubectl v0.33.2
1414
)
1515

@@ -20,18 +20,17 @@ require (
2020
github.com/chai2010/gettext-go v1.0.2 // indirect
2121
github.com/cpuguy83/go-md2man/v2 v2.0.7 // indirect
2222
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect
23-
github.com/emicklei/go-restful/v3 v3.11.0 // indirect
23+
github.com/emicklei/go-restful/v3 v3.12.2 // indirect
2424
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f // indirect
25-
github.com/fxamacker/cbor/v2 v2.7.0 // indirect
25+
github.com/fxamacker/cbor/v2 v2.9.0 // indirect
2626
github.com/go-errors/errors v1.4.2 // indirect
2727
github.com/go-logr/logr v1.4.2 // indirect
2828
github.com/go-openapi/jsonpointer v0.21.0 // indirect
2929
github.com/go-openapi/jsonreference v0.20.2 // indirect
3030
github.com/go-openapi/swag v0.23.0 // indirect
3131
github.com/gogo/protobuf v1.3.2 // indirect
3232
github.com/google/btree v1.1.3 // indirect
33-
github.com/google/gnostic-models v0.6.9 // indirect
34-
github.com/google/go-cmp v0.7.0 // indirect
33+
github.com/google/gnostic-models v0.7.0 // indirect
3534
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect
3635
github.com/google/uuid v1.6.0 // indirect
3736
github.com/gorilla/websocket v1.5.4-0.20250319132907-e064f32e3674 // indirect
@@ -46,18 +45,20 @@ require (
4645
github.com/moby/sys/mountinfo v0.7.2 // indirect
4746
github.com/moby/term v0.5.0 // indirect
4847
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
49-
github.com/modern-go/reflect2 v1.0.2 // indirect
48+
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee // indirect
5049
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 // indirect
5150
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
5251
github.com/mxk/go-flowrate v0.0.0-20140419014527-cca7078d478f // indirect
5352
github.com/peterbourgon/diskv v2.0.1+incompatible // indirect
5453
github.com/pkg/errors v0.9.1 // indirect
5554
github.com/russross/blackfriday/v2 v2.1.0 // indirect
5655
github.com/spf13/cobra v1.8.1 // indirect
57-
github.com/spf13/pflag v1.0.5 // indirect
56+
github.com/spf13/pflag v1.0.6 // indirect
5857
github.com/x448/float16 v0.8.4 // indirect
5958
github.com/xlab/treeprint v1.2.0 // indirect
6059
github.com/xrash/smetrics v0.0.0-20240521201337-686a1a2994c1 // indirect
60+
go.yaml.in/yaml/v2 v2.4.2 // indirect
61+
go.yaml.in/yaml/v3 v3.0.4 // indirect
6162
golang.org/x/net v0.38.0 // indirect
6263
golang.org/x/oauth2 v0.27.0 // indirect
6364
golang.org/x/sync v0.12.0 // indirect
@@ -71,12 +72,12 @@ require (
7172
k8s.io/cli-runtime v0.33.2 // indirect
7273
k8s.io/component-base v0.33.2 // indirect
7374
k8s.io/klog/v2 v2.130.1 // indirect
74-
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff // indirect
75-
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 // indirect
76-
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 // indirect
75+
k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b // indirect
76+
k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 // indirect
77+
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 // indirect
7778
sigs.k8s.io/kustomize/api v0.19.0 // indirect
7879
sigs.k8s.io/kustomize/kyaml v0.19.0 // indirect
7980
sigs.k8s.io/randfill v1.0.0 // indirect
80-
sigs.k8s.io/structured-merge-diff/v4 v4.6.0 // indirect
81-
sigs.k8s.io/yaml v1.4.0 // indirect
81+
sigs.k8s.io/structured-merge-diff/v6 v6.3.0 // indirect
82+
sigs.k8s.io/yaml v1.6.0 // indirect
8283
)

go.sum

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,12 @@ github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs
1818
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
1919
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM=
2020
github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
21-
github.com/emicklei/go-restful/v3 v3.11.0 h1:rAQeMHw1c7zTmncogyy8VvRZwtkmkZ4FxERmMY4rD+g=
22-
github.com/emicklei/go-restful/v3 v3.11.0/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
21+
github.com/emicklei/go-restful/v3 v3.12.2 h1:DhwDP0vY3k8ZzE0RunuJy8GhNpPL6zqLkDf9B/a0/xU=
22+
github.com/emicklei/go-restful/v3 v3.12.2/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc=
2323
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f h1:Wl78ApPPB2Wvf/TIe2xdyJxTlb6obmF18d8QdkxNDu4=
2424
github.com/exponent-io/jsonpath v0.0.0-20210407135951-1de76d718b3f/go.mod h1:OSYXu++VVOHnXeitef/D8n/6y4QV8uLHSFXX4NeXMGc=
25-
github.com/fxamacker/cbor/v2 v2.7.0 h1:iM5WgngdRBanHcxugY4JySA0nk1wZorNOpTgCMedv5E=
26-
github.com/fxamacker/cbor/v2 v2.7.0/go.mod h1:pxXPTn3joSm21Gbwsv0w9OSA2y1HFR9qXEeXQVeNoDQ=
25+
github.com/fxamacker/cbor/v2 v2.9.0 h1:NpKPmjDBgUfBms6tr6JZkTHtfFGcMKsw3eGcmD/sapM=
26+
github.com/fxamacker/cbor/v2 v2.9.0/go.mod h1:vM4b+DJCtHn+zz7h3FFp/hDAI9WNWCsZj23V5ytsSxQ=
2727
github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA=
2828
github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og=
2929
github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
@@ -42,9 +42,8 @@ github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
4242
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
4343
github.com/google/btree v1.1.3 h1:CVpQJjYgC4VbzxeGVHfvZrv1ctoYCAI8vbl07Fcxlyg=
4444
github.com/google/btree v1.1.3/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4=
45-
github.com/google/gnostic-models v0.6.9 h1:MU/8wDLif2qCXZmzncUQ/BOfxWfthHi63KqpoNbWqVw=
46-
github.com/google/gnostic-models v0.6.9/go.mod h1:CiWsm0s6BSQd1hRn8/QmxqB6BesYcbSZxsz9b0KuDBw=
47-
github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY=
45+
github.com/google/gnostic-models v0.7.0 h1:qwTtogB15McXDaNqTZdzPJRHvaVJlAl+HVQnLmJEJxo=
46+
github.com/google/gnostic-models v0.7.0/go.mod h1:whL5G0m6dmc5cPxKc5bdKdEN3UjI7OUGxBlw57miDrQ=
4847
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
4948
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
5049
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
@@ -90,8 +89,9 @@ github.com/moby/term v0.5.0/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3
9089
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
9190
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
9291
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
93-
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
9492
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
93+
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee h1:W5t00kpgFdJifH4BDsTlE89Zl93FEloxaWZfGcifgq8=
94+
github.com/modern-go/reflect2 v1.0.3-0.20250322232337-35a7c28c31ee/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
9595
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00 h1:n6/2gBQ3RWajuToeY6ZtZTIKv2v7ThUy5KKusIT0yc0=
9696
github.com/monochromegane/go-gitignore v0.0.0-20200626010858-205db1a8cc00/go.mod h1:Pm3mSP3c5uWn86xMLZ5Sa7JB9GsEZySvHYXCTK4E9q4=
9797
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 h1:C3w9PqII01/Oq1c1nUAm88MOHcQC9l5mIlSMApZMrHA=
@@ -118,8 +118,9 @@ github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ
118118
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
119119
github.com/spf13/cobra v1.8.1 h1:e5/vxKd/rZsfSJMUX1agtjeTDf+qv1/JdBF8gg5k9ZM=
120120
github.com/spf13/cobra v1.8.1/go.mod h1:wHxEcudfqmLYa8iTfL+OuZPbBZkmvliBWKIezN3kD9Y=
121-
github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
122121
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
122+
github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
123+
github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
123124
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
124125
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
125126
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
@@ -145,6 +146,10 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de
145146
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
146147
go.uber.org/goleak v1.3.0 h1:2K3zAYmnTNqV73imy9J1T3WC+gmCePx2hEGkimedGto=
147148
go.uber.org/goleak v1.3.0/go.mod h1:CoHD4mav9JJNrW/WLlf7HGZPjdw8EucARQHekz1X6bE=
149+
go.yaml.in/yaml/v2 v2.4.2 h1:DzmwEr2rDGHl7lsFgAHxmNz/1NlQ7xLIrlN2h5d1eGI=
150+
go.yaml.in/yaml/v2 v2.4.2/go.mod h1:081UH+NErpNdqlCXm3TtEran0rJZGxAYx9hb/ELlsPU=
151+
go.yaml.in/yaml/v3 v3.0.4 h1:tfq32ie2Jv2UxXFdLJdh3jXuOzWiL1fo0bu/FbuKpbc=
152+
go.yaml.in/yaml/v3 v3.0.4/go.mod h1:DhzuOOF2ATzADvBadXxruRBLzYTpT36CKvDb3+aBEFg=
148153
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
149154
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
150155
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
@@ -200,34 +205,33 @@ gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
200205
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
201206
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
202207
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
203-
k8s.io/api v0.33.2 h1:YgwIS5jKfA+BZg//OQhkJNIfie/kmRsO0BmNaVSimvY=
204-
k8s.io/api v0.33.2/go.mod h1:fhrbphQJSM2cXzCWgqU29xLDuks4mu7ti9vveEnpSXs=
205-
k8s.io/apimachinery v0.33.2 h1:IHFVhqg59mb8PJWTLi8m1mAoepkUNYmptHsV+Z1m5jY=
206-
k8s.io/apimachinery v0.33.2/go.mod h1:BHW0YOu7n22fFv/JkYOEfkUYNRN0fj0BlvMFWA7b+SM=
208+
k8s.io/api v0.34.0 h1:L+JtP2wDbEYPUeNGbeSa/5GwFtIA662EmT2YSLOkAVE=
209+
k8s.io/api v0.34.0/go.mod h1:YzgkIzOOlhl9uwWCZNqpw6RJy9L2FK4dlJeayUoydug=
210+
k8s.io/apimachinery v0.34.0 h1:eR1WO5fo0HyoQZt1wdISpFDffnWOvFLOOeJ7MgIv4z0=
211+
k8s.io/apimachinery v0.34.0/go.mod h1:/GwIlEcWuTX9zKIg2mbw0LRFIsXwrfoVxn+ef0X13lw=
207212
k8s.io/cli-runtime v0.33.2 h1:koNYQKSDdq5AExa/RDudXMhhtFasEg48KLS2KSAU74Y=
208213
k8s.io/cli-runtime v0.33.2/go.mod h1:gnhsAWpovqf1Zj5YRRBBU7PFsRc6NkEkwYNQE+mXL88=
209-
k8s.io/client-go v0.33.2 h1:z8CIcc0P581x/J1ZYf4CNzRKxRvQAwoAolYPbtQes+E=
210-
k8s.io/client-go v0.33.2/go.mod h1:9mCgT4wROvL948w6f6ArJNb7yQd7QsvqavDeZHvNmHo=
214+
k8s.io/client-go v0.34.0 h1:YoWv5r7bsBfb0Hs2jh8SOvFbKzzxyNo0nSb0zC19KZo=
215+
k8s.io/client-go v0.34.0/go.mod h1:ozgMnEKXkRjeMvBZdV1AijMHLTh3pbACPvK7zFR+QQY=
211216
k8s.io/component-base v0.33.2 h1:sCCsn9s/dG3ZrQTX/Us0/Sx2R0G5kwa0wbZFYoVp/+0=
212217
k8s.io/component-base v0.33.2/go.mod h1:/41uw9wKzuelhN+u+/C59ixxf4tYQKW7p32ddkYNe2k=
213218
k8s.io/klog/v2 v2.130.1 h1:n9Xl7H1Xvksem4KFG4PYbdQCQxqc/tTUyrgXaOhHSzk=
214219
k8s.io/klog/v2 v2.130.1/go.mod h1:3Jpz1GvMt720eyJH1ckRHK1EDfpxISzJ7I9OYgaDtPE=
215-
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff h1:/usPimJzUKKu+m+TE36gUyGcf03XZEP0ZIKgKj35LS4=
216-
k8s.io/kube-openapi v0.0.0-20250318190949-c8a335a9a2ff/go.mod h1:5jIi+8yX4RIb8wk3XwBo5Pq2ccx4FP10ohkbSKCZoK8=
220+
k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b h1:MloQ9/bdJyIu9lb1PzujOPolHyvO06MXG5TUIj2mNAA=
221+
k8s.io/kube-openapi v0.0.0-20250710124328-f3f2b991d03b/go.mod h1:UZ2yyWbFTpuhSbFhv24aGNOdoRdJZgsIObGBUaYVsts=
217222
k8s.io/kubectl v0.33.2 h1:7XKZ6DYCklu5MZQzJe+CkCjoGZwD1wWl7t/FxzhMz7Y=
218223
k8s.io/kubectl v0.33.2/go.mod h1:8rC67FB8tVTYraovAGNi/idWIK90z2CHFNMmGJZJ3KI=
219-
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738 h1:M3sRQVHv7vB20Xc2ybTt7ODCeFj6JSWYFzOFnYeS6Ro=
220-
k8s.io/utils v0.0.0-20241104100929-3ea5e8cea738/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
221-
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3 h1:/Rv+M11QRah1itp8VhT6HoVx1Ray9eB4DBr+K+/sCJ8=
222-
sigs.k8s.io/json v0.0.0-20241010143419-9aa6b5e7a4b3/go.mod h1:18nIHnGi6636UCz6m8i4DhaJ65T6EruyzmoQqI2BVDo=
224+
k8s.io/utils v0.0.0-20250604170112-4c0f3b243397 h1:hwvWFiBzdWw1FhfY1FooPn3kzWuJ8tmbZBHi4zVsl1Y=
225+
k8s.io/utils v0.0.0-20250604170112-4c0f3b243397/go.mod h1:OLgZIPagt7ERELqWJFomSt595RzquPNLL48iOWgYOg0=
226+
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8 h1:gBQPwqORJ8d8/YNZWEjoZs7npUVDpVXUUOFfW6CgAqE=
227+
sigs.k8s.io/json v0.0.0-20241014173422-cfa47c3a1cc8/go.mod h1:mdzfpAEoE6DHQEN0uh9ZbOCuHbLK5wOm7dK4ctXE9Tg=
223228
sigs.k8s.io/kustomize/api v0.19.0 h1:F+2HB2mU1MSiR9Hp1NEgoU2q9ItNOaBJl0I4Dlus5SQ=
224229
sigs.k8s.io/kustomize/api v0.19.0/go.mod h1:/BbwnivGVcBh1r+8m3tH1VNxJmHSk1PzP5fkP6lbL1o=
225230
sigs.k8s.io/kustomize/kyaml v0.19.0 h1:RFge5qsO1uHhwJsu3ipV7RNolC7Uozc0jUBC/61XSlA=
226231
sigs.k8s.io/kustomize/kyaml v0.19.0/go.mod h1:FeKD5jEOH+FbZPpqUghBP8mrLjJ3+zD3/rf9NNu1cwY=
227-
sigs.k8s.io/randfill v0.0.0-20250304075658-069ef1bbf016/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
228232
sigs.k8s.io/randfill v1.0.0 h1:JfjMILfT8A6RbawdsK2JXGBR5AQVfd+9TbzrlneTyrU=
229233
sigs.k8s.io/randfill v1.0.0/go.mod h1:XeLlZ/jmk4i1HRopwe7/aU3H5n1zNUcX6TM94b3QxOY=
230-
sigs.k8s.io/structured-merge-diff/v4 v4.6.0 h1:IUA9nvMmnKWcj5jl84xn+T5MnlZKThmUW1TdblaLVAc=
231-
sigs.k8s.io/structured-merge-diff/v4 v4.6.0/go.mod h1:dDy58f92j70zLsuZVuUX5Wp9vtxXpaZnkPGWeqDfCps=
232-
sigs.k8s.io/yaml v1.4.0 h1:Mk1wCc2gy/F0THH0TAp1QYyJNzRm2KCLy3o5ASXVI5E=
233-
sigs.k8s.io/yaml v1.4.0/go.mod h1:Ejl7/uTz7PSA4eKMyQCUTnhZYNmLIl+5c2lQPGR2BPY=
234+
sigs.k8s.io/structured-merge-diff/v6 v6.3.0 h1:jTijUJbW353oVOd9oTlifJqOGEkUw2jB/fXCbTiQEco=
235+
sigs.k8s.io/structured-merge-diff/v6 v6.3.0/go.mod h1:M3W8sfWvn2HhQDIbGWj3S099YozAsymCo/wrT5ohRUE=
236+
sigs.k8s.io/yaml v1.6.0 h1:G8fkbMSAFqgEFgh4b1wmtzDnioxFCUgTZhlbj5P9QYs=
237+
sigs.k8s.io/yaml v1.6.0/go.mod h1:796bPqUfzR/0jLAl6XjHl3Ck7MiyVv8dbTdyT3/pMf4=

internal/kubernetes/client.go

Lines changed: 61 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ import (
2626

2727
"github.com/sirupsen/logrus"
2828
corev1 "k8s.io/api/core/v1"
29+
resourcev1 "k8s.io/api/resource/v1"
2930
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
3031
"k8s.io/apimachinery/pkg/labels"
3132
"k8s.io/apimachinery/pkg/types"
@@ -40,6 +41,7 @@ const (
4041
nvidiaDomainPrefix = "nvidia.com"
4142
nvidiaResourceNamePrefix = nvidiaDomainPrefix + "/" + "gpu"
4243
nvidiaMigResourcePrefix = nvidiaDomainPrefix + "/" + "mig-"
44+
nvidiaDRADriverName = "gpu." + nvidiaDomainPrefix // "gpu.nvidia.com"
4345
)
4446

4547
// Client represents a Kubernetes client wrapper use to perform all the Kubernetes operations required by k8s-driver-manager
@@ -196,7 +198,12 @@ func (c *Client) DeleteOrEvictPods(nodeName string, drainOpts DrainOptions) erro
196198
c.log.Infof("Draining node %s of any GPU pods", nodeName)
197199

198200
customDrainFilter := func(pod corev1.Pod) drain.PodDeleteStatus {
201+
// Check for traditional GPU resource requests
199202
deletePod := gpuPodSpecFilter(pod)
203+
// Check for DRA-based GPU claims
204+
if !deletePod {
205+
deletePod = c.podUsesGPUResourceClaims(pod)
206+
}
200207
if !deletePod {
201208
return drain.MakePodDeleteStatusSkip()
202209
}
@@ -231,7 +238,8 @@ func (c *Client) DeleteOrEvictPods(nodeName string, drainOpts DrainOptions) erro
231238
// Get number of GPU pods on the node which require deletion
232239
numPodsToDelete := 0
233240
for _, pod := range podList.Items {
234-
if gpuPodSpecFilter(pod) {
241+
// Count pods with traditional GPU resources or DRA-based GPU claims
242+
if gpuPodSpecFilter(pod) || c.podUsesGPUResourceClaims(pod) {
235243
numPodsToDelete += 1
236244
}
237245
}
@@ -282,3 +290,55 @@ func gpuPodSpecFilter(pod corev1.Pod) bool {
282290
}
283291
return false
284292
}
293+
294+
// podUsesGPUResourceClaims checks if a pod uses NVIDIA GPU resources via DRA ResourceClaims
295+
func (client *Client) podUsesGPUResourceClaims(pod corev1.Pod) bool {
296+
for _, podClaim := range pod.Spec.ResourceClaims {
297+
claimName := client.getResourceClaimName(pod, podClaim)
298+
if claimName == "" {
299+
continue
300+
}
301+
302+
// Fetch and check if claim uses NVIDIA GPU driver
303+
claim, err := client.clientset.ResourceV1().ResourceClaims(pod.Namespace).Get(client.ctx, claimName, metav1.GetOptions{})
304+
if err != nil {
305+
client.log.Debugf("Failed to get ResourceClaim %s/%s: %v", pod.Namespace, claimName, err)
306+
continue
307+
}
308+
309+
if client.isNvidiaGPUClaim(claim) {
310+
return true
311+
}
312+
}
313+
return false
314+
}
315+
316+
// getResourceClaimName extracts the ResourceClaim name from a pod's claim reference
317+
func (c *Client) getResourceClaimName(pod corev1.Pod, podClaim corev1.PodResourceClaim) string {
318+
// Direct reference
319+
if podClaim.ResourceClaimName != nil {
320+
return *podClaim.ResourceClaimName
321+
}
322+
323+
// Template reference - look up generated name in pod status
324+
for _, status := range pod.Status.ResourceClaimStatuses {
325+
if status.Name == podClaim.Name && status.ResourceClaimName != nil {
326+
return *status.ResourceClaimName
327+
}
328+
}
329+
return ""
330+
}
331+
332+
// isNvidiaGPUClaim checks if a ResourceClaim is allocated by the NVIDIA GPU DRA driver
333+
func (c *Client) isNvidiaGPUClaim(claim *resourcev1.ResourceClaim) bool {
334+
if claim.Status.Allocation == nil {
335+
return false
336+
}
337+
338+
for _, result := range claim.Status.Allocation.Devices.Results {
339+
if result.Driver == nvidiaDRADriverName {
340+
return true
341+
}
342+
}
343+
return false
344+
}

vendor/github.com/emicklei/go-restful/v3/CHANGES.md

Lines changed: 21 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/emicklei/go-restful/v3/README.md

Lines changed: 2 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/emicklei/go-restful/v3/compress.go

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)