mirror of https://github.com/k3d-io/k3d
fix/workaround: add workaround for cgroupv2 until fixed in k3s (#579)
special thanks to @AkihiroSuda for the support on this!pull/587/head
parent
a576a0e295
commit
0b7de65ebd
@ -0,0 +1,22 @@ |
|||||||
|
#!/bin/sh |
||||||
|
|
||||||
|
set -o errexit |
||||||
|
set -o nounset |
||||||
|
set -o pipefail |
||||||
|
|
||||||
|
######################################################################################################################################### |
||||||
|
# DISCLAIMER # |
||||||
|
# Copied from https://github.com/moby/moby/blob/ed89041433a031cafc0a0f19cfe573c31688d377/hack/dind#L28-L37 # |
||||||
|
# Permission granted by Akihiro Suda <akihiro.suda.cz@hco.ntt.co.jp> (https://github.com/rancher/k3d/issues/493#issuecomment-827405962) # |
||||||
|
# Moby License Apache 2.0: https://github.com/moby/moby/blob/ed89041433a031cafc0a0f19cfe573c31688d377/LICENSE # |
||||||
|
######################################################################################################################################### |
||||||
|
if [ -f /sys/fs/cgroup/cgroup.controllers ]; then |
||||||
|
# move the processes from the root group to the /init group, |
||||||
|
# otherwise writing subtree_control fails with EBUSY. |
||||||
|
mkdir -p /sys/fs/cgroup/init |
||||||
|
busybox xargs -rn1 < /sys/fs/cgroup/cgroup.procs > /sys/fs/cgroup/init/cgroup.procs || : |
||||||
|
# enable controllers |
||||||
|
sed -e 's/ / +/g' -e 's/^/+/' <"/sys/fs/cgroup/cgroup.controllers" >"/sys/fs/cgroup/cgroup.subtree_control" |
||||||
|
fi |
||||||
|
|
||||||
|
exec /bin/k3s "$@" |
@ -0,0 +1,52 @@ |
|||||||
|
/* |
||||||
|
Copyright © 2020 The k3d Author(s) |
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy |
||||||
|
of this software and associated documentation files (the "Software"), to deal |
||||||
|
in the Software without restriction, including without limitation the rights |
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
||||||
|
copies of the Software, and to permit persons to whom the Software is |
||||||
|
furnished to do so, subject to the following conditions: |
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in |
||||||
|
all copies or substantial portions of the Software. |
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
||||||
|
THE SOFTWARE. |
||||||
|
*/ |
||||||
|
package fixes |
||||||
|
|
||||||
|
import ( |
||||||
|
_ "embed" |
||||||
|
"os" |
||||||
|
"strconv" |
||||||
|
) |
||||||
|
|
||||||
|
/* NOTE |
||||||
|
* This file includes types used for workarounds and hotfixes which are subject to change |
||||||
|
* and may disappear anytime, e.g. when the fix was included in an upstream project |
||||||
|
*/ |
||||||
|
|
||||||
|
/* |
||||||
|
* Cgroupv2 fix as per https://github.com/k3s-io/k3s/pull/3237 & https://github.com/k3s-io/k3s/pull/3242
|
||||||
|
* FIXME: FixCgroupV2 - to be removed when fixed upstream |
||||||
|
*/ |
||||||
|
|
||||||
|
// EnvFixCgroupV2 is the environment variable that k3d will check for to enable/disable the cgroupv2 workaround
|
||||||
|
const EnvFixCgroupV2 = "K3D_FIX_CGROUPV2" |
||||||
|
|
||||||
|
//go:embed assets/cgroupv2-entrypoint.sh
|
||||||
|
var CgroupV2Entrypoint []byte |
||||||
|
|
||||||
|
func FixCgroupV2Enabled() bool { |
||||||
|
enabled, err := strconv.ParseBool(os.Getenv(EnvFixCgroupV2)) |
||||||
|
if err != nil { |
||||||
|
return false |
||||||
|
} |
||||||
|
return enabled |
||||||
|
} |
Loading…
Reference in new issue