From 304a040a17591d9b860f3cf0a330cad335ad7255 Mon Sep 17 00:00:00 2001 From: David Porter Date: Mon, 18 Jul 2022 16:06:30 -0700 Subject: [PATCH] cluster: use systemd cgroup driver for cgroupv2 * Detect if image is using cgroupv2 * Configure both kubelet and containerd to use systemd cgroup driver when running under cgroupv2 Systemd cgroup driver is recommended to be used when running on cgroupv2. It is also the default in moby https://github.com/moby/moby/pull/40846 Signed-off-by: David Porter --- cluster/gce/gci/configure-helper.sh | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/cluster/gce/gci/configure-helper.sh b/cluster/gce/gci/configure-helper.sh index 7dfd2c18a4a..4e22bc84f8e 100644 --- a/cluster/gce/gci/configure-helper.sh +++ b/cluster/gce/gci/configure-helper.sh @@ -1621,7 +1621,13 @@ function start-kubelet { echo "Using kubelet binary at ${kubelet_bin}" local -r kubelet_env_file="/etc/default/kubelet" - local kubelet_opts="${KUBELET_ARGS} ${KUBELET_CONFIG_FILE_ARG:-}" + + local kubelet_cgroup_driver="" + if [[ "${CGROUP_CONFIG-}" == "cgroup2fs" ]]; then + kubelet_cgroup_driver="--cgroup-driver=systemd" + fi + + local kubelet_opts="${KUBELET_ARGS} ${KUBELET_CONFIG_FILE_ARG:-} ${kubelet_cgroup_driver:-}" echo "KUBELET_OPTS=\"${kubelet_opts}\"" > "${kubelet_env_file}" echo "KUBE_COVERAGE_FILE=\"/var/log/kubelet.cov\"" >> "${kubelet_env_file}" @@ -2967,6 +2973,11 @@ function override-kubectl { fi } +function detect-cgroup-config { + CGROUP_CONFIG=$(stat -fc %T /sys/fs/cgroup/) + echo "Detected cgroup config as ${CGROUP_CONFIG}" +} + function override-pv-recycler { if [[ -z "${PV_RECYCLER_OVERRIDE_TEMPLATE:-}" ]]; then echo "PV_RECYCLER_OVERRIDE_TEMPLATE is not set" @@ -3060,6 +3071,13 @@ EOF cni_template_path="" fi fi + + # Use systemd cgroup driver when running on cgroupv2 + local systemdCgroup="false" + if [[ "${CGROUP_CONFIG-}" == "cgroup2fs" ]]; then + systemdCgroup="true" + fi + cat > "${config_path}" <