Wire through CRI ContainerCheckpoint RPC

This connects the new CRI ContainerCheckpoint RPC to the existing
internal checkpoint functions. With this commit it is possible
to checkpoint a container in Kubernetes using the Forensic Container
Checkpointing KEP (#2008):

 # curl X POST "https://localhost:10250/checkpoint/namespace/podId/container"

Which will result in containerd creating a checkpoint in the location
specified by Kubernetes (usually /var/lib/kubelet/checkpoints).

This is a Linux only feature because CRIU only exists on Linux.

Rewritten with the help of Phil Estes.

Signed-off-by: Phil Estes <estesp@gmail.com>
Signed-off-by: Adrian Reber <areber@redhat.com>
This commit is contained in:
Adrian Reber
2022-05-20 06:38:33 +00:00
parent e53663cca7
commit f25770e48d
20 changed files with 4085 additions and 1 deletions

View File

@@ -565,7 +565,7 @@ func (in *instrumentedService) CheckpointContainer(ctx context.Context, r *runti
}
}()
res, err = in.c.CheckpointContainer(ctx, r)
res, err = in.c.CheckpointContainer(ctrdutil.WithNamespace(ctx), r)
return res, errdefs.ToGRPC(err)
}