From 913e73ec4d353f6c704143ba31b57d601fe67b5a Mon Sep 17 00:00:00 2001 From: xiongww Date: Wed, 11 Oct 2023 15:40:06 +0800 Subject: [PATCH] release docker and containerd parent-child process relationship in k8s docker runtime --- cmd/kk/pkg/container/docker.go | 13 +++++++++ cmd/kk/pkg/container/module.go | 29 +++++++++++++++++++ .../pkg/container/templates/docker_service.go | 2 +- 3 files changed, 43 insertions(+), 1 deletion(-) diff --git a/cmd/kk/pkg/container/docker.go b/cmd/kk/pkg/container/docker.go index cce726607..7e2f673b4 100644 --- a/cmd/kk/pkg/container/docker.go +++ b/cmd/kk/pkg/container/docker.go @@ -64,6 +64,19 @@ func (s *SyncDockerBinaries) Execute(runtime connector.Runtime) error { return nil } +type EnableContainerdForDocker struct { + common.KubeAction +} + +func (e *EnableContainerdForDocker) Execute(runtime connector.Runtime) error { + if _, err := runtime.GetRunner().SudoCmd( + "systemctl daemon-reload && systemctl enable containerd && systemctl start containerd", + false); err != nil { + return errors.Wrap(errors.WithStack(err), fmt.Sprintf("enable and start containerd failed")) + } + return nil +} + type EnableDocker struct { common.KubeAction } diff --git a/cmd/kk/pkg/container/module.go b/cmd/kk/pkg/container/module.go index 3cdab21a3..ba8a8b688 100644 --- a/cmd/kk/pkg/container/module.go +++ b/cmd/kk/pkg/container/module.go @@ -73,6 +73,21 @@ func InstallDocker(m *InstallContainerModule) []task.Interface { Retry: 2, } + generateContainerdService := &task.RemoteTask{ + Name: "GenerateContainerdService", + Desc: "Generate containerd service", + Hosts: m.Runtime.GetHostsByRole(common.K8s), + Prepare: &prepare.PrepareCollection{ + &kubernetes.NodeInCluster{Not: true}, + &ContainerdExist{Not: true}, + }, + Action: &action.Template{ + Template: templates.ContainerdService, + Dst: filepath.Join("/etc/systemd/system", templates.ContainerdService.Name()), + }, + Parallel: true, + } + generateDockerService := &task.RemoteTask{ Name: "GenerateDockerService", Desc: "Generate docker service", @@ -109,6 +124,18 @@ func InstallDocker(m *InstallContainerModule) []task.Interface { Parallel: true, } + enableContainerdForDocker := &task.RemoteTask{ + Name: "EnableContainerd", + Desc: "Enable containerd", + Hosts: m.Runtime.GetHostsByRole(common.K8s), + Prepare: &prepare.PrepareCollection{ + &kubernetes.NodeInCluster{Not: true}, + &ContainerdExist{Not: true}, + }, + Action: new(EnableContainerdForDocker), + Parallel: true, + } + enableDocker := &task.RemoteTask{ Name: "EnableDocker", Desc: "Enable docker", @@ -136,8 +163,10 @@ func InstallDocker(m *InstallContainerModule) []task.Interface { return []task.Interface{ syncBinaries, + generateContainerdService, generateDockerService, generateDockerConfig, + enableContainerdForDocker, enableDocker, dockerLoginRegistry, } diff --git a/cmd/kk/pkg/container/templates/docker_service.go b/cmd/kk/pkg/container/templates/docker_service.go index 55dfc7dd8..b79cafcb0 100644 --- a/cmd/kk/pkg/container/templates/docker_service.go +++ b/cmd/kk/pkg/container/templates/docker_service.go @@ -34,7 +34,7 @@ Type=notify # the default is not to use systemd for cgroups because the delegate issues still # exists and systemd currently does not support the cgroup feature set required # for containers run by docker -ExecStart=/usr/bin/dockerd +ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock ExecReload=/bin/kill -s HUP $MAINPID TimeoutSec=0 RestartSec=2