From 22514fe1740204f1dd9e1960f77494fe2609177c Mon Sep 17 00:00:00 2001 From: yanxuean Date: Tue, 31 Jul 2018 10:17:07 +0800 Subject: [PATCH 1/3] support containerd v1.2.0-beta.0 Signed-off-by: yanxuean --- deploy/iso/minikube-iso/package/Config.in | 1 + .../package/containerd-bin/Config.in | 18 +++++ .../package/containerd-bin/config.toml | 69 +++++++++++++++++++ .../containerd-bin/containerd-bin.hash | 1 + .../package/containerd-bin/containerd-bin.mk | 56 +++++++++++++++ .../package/containerd-bin/containerd.service | 29 ++++++++ 6 files changed, 174 insertions(+) create mode 100644 deploy/iso/minikube-iso/package/containerd-bin/Config.in create mode 100644 deploy/iso/minikube-iso/package/containerd-bin/config.toml create mode 100644 deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.hash create mode 100644 deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.mk create mode 100644 deploy/iso/minikube-iso/package/containerd-bin/containerd.service diff --git a/deploy/iso/minikube-iso/package/Config.in b/deploy/iso/minikube-iso/package/Config.in index 140fa4cb29bf..c7dbb16d9892 100644 --- a/deploy/iso/minikube-iso/package/Config.in +++ b/deploy/iso/minikube-iso/package/Config.in @@ -11,4 +11,5 @@ menu "System tools" source "$BR2_EXTERNAL_MINIKUBE_PATH/package/hv-kvp-daemon/Config.in" source "$BR2_EXTERNAL_MINIKUBE_PATH/package/gluster/Config.in" source "$BR2_EXTERNAL_MINIKUBE_PATH/package/vbox-guest/Config.in" + source "$BR2_EXTERNAL_MINIKUBE_PATH/package/containerd-bin/Config.in" endmenu diff --git a/deploy/iso/minikube-iso/package/containerd-bin/Config.in b/deploy/iso/minikube-iso/package/containerd-bin/Config.in new file mode 100644 index 000000000000..988ab2c4dbdc --- /dev/null +++ b/deploy/iso/minikube-iso/package/containerd-bin/Config.in @@ -0,0 +1,18 @@ +config BR2_PACKAGE_CONTAINERD_BIN + bool "containerd-bin" + default y + depends on BR2_x86_64 + depends on BR2_PACKAGE_HOST_GO_ARCH_SUPPORTS + depends on BR2_PACKAGE_HOST_GO_CGO_LINKING_SUPPORTS + depends on BR2_TOOLCHAIN_HAS_THREADS + depends on BR2_USE_MMU # lvm2 + depends on !BR2_STATIC_LIBS # lvm2 + depends on !BR2_TOOLCHAIN_USES_MUSL # lvm2 + select BR2_PACKAGE_RUNC_MASTER + select BR2_PACKAGE_BTRFS_PROGS + select BR2_PACKAGE_LIBSECCOMP + select BR2_PACKAGE_LIBGPGME + select BR2_PACKAGE_LVM2 + select BR2_PACKAGE_LVM2_APP_LIBRARY + select BR2_PACKAGE_UTIL_LINUX_LIBMOUNT + select BR2_PACKAGE_LIBGLIB2 diff --git a/deploy/iso/minikube-iso/package/containerd-bin/config.toml b/deploy/iso/minikube-iso/package/containerd-bin/config.toml new file mode 100644 index 000000000000..ae7fe958038a --- /dev/null +++ b/deploy/iso/minikube-iso/package/containerd-bin/config.toml @@ -0,0 +1,69 @@ +root = "/var/lib/containerd" +state = "/run/containerd" +oom_score = 0 + +[grpc] + address = "/run/containerd/containerd.sock" + uid = 0 + gid = 0 + max_recv_message_size = 16777216 + max_send_message_size = 16777216 + +[debug] + address = "" + uid = 0 + gid = 0 + level = "" + +[metrics] + address = "" + grpc_histogram = false + +[cgroup] + path = "" + +[plugins] + [plugins.cgroups] + no_prometheus = false + [plugins.cri] + stream_server_address = "" + stream_server_port = "10010" + enable_selinux = false + sandbox_image = "k8s.gcr.io/pause:3.1" + stats_collect_period = 10 + systemd_cgroup = false + enable_tls_streaming = false + max_container_log_line_size = 16384 + [plugins.cri.containerd] + snapshotter = "overlayfs" + no_pivot = true + [plugins.cri.containerd.default_runtime] + runtime_type = "io.containerd.runtime.v1.linux" + runtime_engine = "" + runtime_root = "" + [plugins.cri.containerd.untrusted_workload_runtime] + runtime_type = "" + runtime_engine = "" + runtime_root = "" + [plugins.cri.cni] + bin_dir = "/opt/cni/bin" + conf_dir = "/etc/cni/net.d" + conf_template = "" + [plugins.cri.registry] + [plugins.cri.registry.mirrors] + [plugins.cri.registry.mirrors."docker.io"] + endpoint = ["https://registry-1.docker.io"] + [plugins.diff-service] + default = ["walking"] + [plugins.linux] + shim = "containerd-shim" + runtime = "runc" + runtime_root = "" + no_shim = false + shim_debug = false + [plugins.scheduler] + pause_threshold = 0.02 + deletion_threshold = 0 + mutation_threshold = 100 + schedule_delay = "0s" + startup_delay = "100ms" \ No newline at end of file diff --git a/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.hash b/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.hash new file mode 100644 index 000000000000..5a2730ba92f6 --- /dev/null +++ b/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.hash @@ -0,0 +1 @@ +sha256 5eecd50a9aee472535d1e5564df72225a9e0447f11d36fb7d72e4a8bd74b065d v1.2.0-beta.0.tar.gz diff --git a/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.mk b/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.mk new file mode 100644 index 000000000000..6d75ab3fa0e8 --- /dev/null +++ b/deploy/iso/minikube-iso/package/containerd-bin/containerd-bin.mk @@ -0,0 +1,56 @@ +################################################################################ +# +# containerd +# +################################################################################ +CONTAINERD_BIN_VERSION = v1.2.0-beta.0 +CONTAINERD_BIN_SITE = https://github.com/containerd/containerd/archive +CONTAINERD_BIN_SOURCE = $(CONTAINERD_BIN_VERSION).tar.gz +CONTAINERD_BIN_DEPENDENCIES = host-go libgpgme +CONTAINERD_BIN_GOPATH = $(@D)/_output +CONTAINERD_BIN_ENV = \ + CGO_ENABLED=1 \ + GOPATH="$(CONTAINERD_BIN_GOPATH)" \ + GOBIN="$(CONTAINERD_BIN_GOPATH)/bin" \ + PATH=$(CONTAINERD_BIN_GOPATH)/bin:$(BR_PATH) + +CONTAINERD_BIN_COMPILE_SRC = $(CONTAINERD_BIN_GOPATH)/src/github.com/containerd/containerd + +define CONTAINERD_BIN_USERS + - -1 containerd-admin -1 - - - - - + - -1 containerd -1 - - - - - +endef + +define CONTAINERD_BIN_CONFIGURE_CMDS + mkdir -p $(CONTAINERD_BIN_GOPATH)/src/github.com/containerd + ln -sf $(@D) $(CONTAINERD_BIN_COMPILE_SRC) +endef + +define CONTAINERD_BIN_BUILD_CMDS + PWD=$(CONTAINERD_BIN_COMPILE_SRC) $(CONTAINERD_BIN_ENV) $(MAKE) $(TARGET_CONFIGURE_OPTS) -C $(@D) binaries +endef + +define CONTAINERD_BIN_INSTALL_TARGET_CMDS + $(INSTALL) -Dm755 \ + $(@D)/bin/containerd \ + $(TARGET_DIR)/usr/bin + $(INSTALL) -Dm755 \ + $(@D)/bin/containerd-shim \ + $(TARGET_DIR)/usr/bin + $(INSTALL) -Dm755 \ + $(@D)/bin/ctr \ + $(TARGET_DIR)/usr/bin + $(INSTALL) -Dm644 \ + $(BR2_EXTERNAL_MINIKUBE_PATH)/package/containerd-bin/config.toml \ + $(TARGET_DIR)/etc/containerd/config.toml +endef + +define CONTAINERD_BIN_INSTALL_INIT_SYSTEMD + $(INSTALL) -Dm755 \ + $(BR2_EXTERNAL_MINIKUBE_PATH)/package/containerd-bin/containerd.service \ + $(TARGET_DIR)/usr/lib/systemd/system/containerd.service + $(call link-service,containerd.service) + $(call link-service,containerd-shutdown.service) +endef + +$(eval $(generic-package)) diff --git a/deploy/iso/minikube-iso/package/containerd-bin/containerd.service b/deploy/iso/minikube-iso/package/containerd-bin/containerd.service new file mode 100644 index 000000000000..97758f26bb89 --- /dev/null +++ b/deploy/iso/minikube-iso/package/containerd-bin/containerd.service @@ -0,0 +1,29 @@ +[Unit] +Description=containerd container runtime +Documentation=https://containerd.io +After=network-online.target minikube-automount.service +Requires=minikube-automount.service + +[Service] +EnvironmentFile=-/etc/sysconfig/containerd +EnvironmentFile=-/etc/sysconfig/containerd.minikube +EnvironmentFile=/var/run/minikube/env +Environment=GOTRACEBACK=crash +ExecStartPre=/sbin/modprobe overlay +ExecStart=/usr/bin/containerd \ + $CONTAINERD_OPTIONS \ + $CONTAINERD_MINIKUBE_OPTIONS \ + --root ${PERSISTENT_DIR}/var/lib/containerd +TasksMax=8192 +Delegate=yes +KillMode=process +LimitNOFILE=1048576 +# Having non-zero Limit*s causes performance problems due to accounting overhead +# in the kernel. We recommend using cgroups to do container-local accounting. +LimitNPROC=infinity +LimitCORE=infinity +TimeoutStartSec=0 +Restart=on-abnormal + +[Install] +WantedBy=multi-user.target From 8a889d4db8d3703b2482be8be3578cbadfd0e98a Mon Sep 17 00:00:00 2001 From: yanxuean Date: Thu, 2 Aug 2018 19:39:55 +0800 Subject: [PATCH 2/3] support to conveniently use containerd Signed-off-by: yanxuean --- pkg/minikube/bootstrapper/kubeadm/kubeadm.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go index 494311ff1e4d..5455f984c7ae 100644 --- a/pkg/minikube/bootstrapper/kubeadm/kubeadm.go +++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm.go @@ -222,6 +222,11 @@ func SetContainerRuntime(cfg map[string]string, runtime string) map[string]strin cfg["container-runtime-endpoint"] = "/var/run/crio/crio.sock" cfg["image-service-endpoint"] = "/var/run/crio/crio.sock" cfg["runtime-request-timeout"] = "15m" + case "containerd": + cfg["container-runtime"] = "remote" + cfg["container-runtime-endpoint"] = "unix:///run/containerd/containerd.sock" + cfg["image-service-endpoint"] = "unix:///run/containerd/containerd.sock" + cfg["runtime-request-timeout"] = "15m" default: cfg["container-runtime"] = runtime } From 2dffcd6ae4a39f7b771bbc369af78f13a16dc268 Mon Sep 17 00:00:00 2001 From: yanxuean Date: Thu, 2 Aug 2018 19:58:40 +0800 Subject: [PATCH 3/3] add example in docs for containerd Signed-off-by: yanxuean --- docs/alternative_runtimes.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/docs/alternative_runtimes.md b/docs/alternative_runtimes.md index 73443624ac2d..fa39b8fe3bf8 100644 --- a/docs/alternative_runtimes.md +++ b/docs/alternative_runtimes.md @@ -30,3 +30,25 @@ $ minikube start \ --extra-config=kubelet.image-service-endpoint=/var/run/crio/crio.sock \ --bootstrapper=kubeadm ``` + +### Using containerd + +To use [containerd](https://github.com/containerd/containerd) as the container runtime, run: + +```shell +$ minikube start \ + --network-plugin=cni \ + --container-runtime=containerd \ + --bootstrapper=kubeadm +``` + +Or you can use the extended version: + +```shell +$ minikube start \ + --network-plugin=cni \ + --extra-config=kubelet.container-runtime=remote \ + --extra-config=kubelet.container-runtime-endpoint=unix:///run/containerd/containerd.sock \ + --extra-config=kubelet.image-service-endpoint=unix:///run/containerd/containerd.sock \ + --bootstrapper=kubeadm +``` \ No newline at end of file