@@ -12,10 +12,6 @@ import (
1212 "sync/atomic"
1313 "time"
1414
15- "github.com/castai/kvisor/cmd/agent/daemon/metrics"
16- "github.com/castai/kvisor/pkg/cgroup"
17- "github.com/castai/kvisor/pkg/logging"
18- "github.com/castai/kvisor/pkg/proc"
1915 "github.com/containerd/containerd"
2016 "github.com/containerd/containerd/api/services/tasks/v1"
2117 "github.com/containerd/containerd/content"
@@ -25,6 +21,11 @@ import (
2521 "google.golang.org/grpc/backoff"
2622 "google.golang.org/grpc/credentials/insecure"
2723 criapi "k8s.io/cri-api/pkg/apis/runtime/v1"
24+
25+ "github.com/castai/kvisor/cmd/agent/daemon/metrics"
26+ "github.com/castai/kvisor/pkg/cgroup"
27+ "github.com/castai/kvisor/pkg/logging"
28+ "github.com/castai/kvisor/pkg/proc"
2829)
2930
3031var (
@@ -82,6 +83,7 @@ type Client struct {
8283 cgroupClient cgroupsClient
8384 criRuntimeServiceClient criClient
8485 containerContentStoreClient containerContentStoreClient
86+ containerdDisabled bool
8587
8688 containerCreatedListeners []ContainerCreatedListener
8789 containerDeletedListeners []ContainerDeletedListener
@@ -98,9 +100,27 @@ type Client struct {
98100 inactiveContainersDuration time.Duration
99101}
100102
101- func NewClient (log * logging.Logger , cgroupClient * cgroup.Client , containerdSock string , procHandler * proc.Proc , criRuntimeServiceClient criapi.RuntimeServiceClient ,
103+ func NewClient (log * logging.Logger , cgroupClient * cgroup.Client , containerdSock string , disableContainerd bool , procHandler * proc.Proc , criRuntimeServiceClient criapi.RuntimeServiceClient ,
102104 labels , annotations []string ) (* Client , error ) {
103105
106+ client := & Client {
107+ log : log .WithField ("component" , "cgroups" ),
108+ cgroupClient : cgroupClient ,
109+ containersByCgroup : map [uint64 ]* Container {},
110+ containersByID : map [string ]* Container {},
111+ procHandler : procHandler ,
112+ criRuntimeServiceClient : criRuntimeServiceClient ,
113+ forwardedLabels : labels ,
114+ forwardedAnnotations : annotations ,
115+ inactiveContainersDuration : 2 * time .Minute ,
116+ containerdDisabled : disableContainerd ,
117+ }
118+
119+ if disableContainerd {
120+ log .Info ("containerd features disabled" )
121+ return client , nil
122+ }
123+
104124 backoffConfig := backoff .DefaultConfig
105125 backoffConfig .MaxDelay = 3 * time .Second
106126 connParams := grpc.ConnectParams {
@@ -128,23 +148,17 @@ func NewClient(log *logging.Logger, cgroupClient *cgroup.Client, containerdSock
128148 return nil , fmt .Errorf ("failed connecting to containerd client: %w" , err )
129149 }
130150
131- return & Client {
132- log : log .WithField ("component" , "cgroups" ),
133- containerdClient : containerdClient ,
134- containerContentStoreClient : containerdClient .ContentStore (),
135- cgroupClient : cgroupClient ,
136- containersByCgroup : map [uint64 ]* Container {},
137- containersByID : map [string ]* Container {},
138- procHandler : procHandler ,
139- criRuntimeServiceClient : criRuntimeServiceClient ,
140- forwardedLabels : labels ,
141- forwardedAnnotations : annotations ,
142- inactiveContainersDuration : 2 * time .Minute ,
143- }, nil
151+ client .containerdClient = containerdClient
152+ client .containerContentStoreClient = containerdClient .ContentStore ()
153+
154+ return client , nil
144155}
145156
146157func (c * Client ) Close () error {
147- return c .containerdClient .Close ()
158+ if c .containerdClient != nil {
159+ return c .containerdClient .Close ()
160+ }
161+ return nil
148162}
149163
150164type ContainerProcess struct {
@@ -153,6 +167,10 @@ type ContainerProcess struct {
153167}
154168
155169func (c * Client ) LoadContainerTasks (ctx context.Context ) ([]ContainerProcess , error ) {
170+ if c .containerdClient == nil {
171+ return nil , nil
172+ }
173+
156174 resp , err := c .containerdClient .TaskService ().List (ctx , nil )
157175 if err != nil {
158176 return nil , err
@@ -324,11 +342,13 @@ func (c *Client) addContainerWithCgroup(container *criapi.Container, cg *cgroup.
324342 }
325343 cont .markAccessed ()
326344
327- imageDigest , err := c .findImageDigest (container )
328- if err != nil {
329- c .log .Warnf ("finding image digest for container %v: %v" , container .Id , err )
345+ if ! c .containerdDisabled {
346+ imageDigest , err := c .findImageDigest (container )
347+ if err != nil {
348+ c .log .Warnf ("finding image digest for container %v: %v" , container .Id , err )
349+ }
350+ cont .ImageDigest = imageDigest
330351 }
331- cont .ImageDigest = imageDigest
332352
333353 getSandboxCtx , cancel := context .WithTimeout (context .Background (), 3 * time .Second )
334354 defer cancel ()
0 commit comments