Skip to content

Commit 3a015cd

Browse files
kate-goldenringMossaka
authored andcommitted
Default to cgroupsfs for MicroK8s
Signed-off-by: Kate Goldenring <[email protected]>
1 parent 8d46095 commit 3a015cd

File tree

2 files changed

+34
-23
lines changed

2 files changed

+34
-23
lines changed

node-installer/script/installer.sh

Lines changed: 29 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -11,27 +11,6 @@ IS_MICROK8S=false
1111
IS_K3S=false
1212
IS_RKE2_AGENT=false
1313
IS_K0S_WORKER=false
14-
SYSTEMD_CGROUP=true
15-
16-
# Install D-Bus if it's not available but systemd cgroups are requested
17-
if [ "$SYSTEMD_CGROUP" = "true" ]; then
18-
if ! nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- which dbus-daemon >/dev/null 2>&1; then
19-
if nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- which apt-get >/dev/null 2>&1; then
20-
nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- apt-get update -y
21-
nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- apt-get install -y dbus
22-
elif nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- which yum >/dev/null 2>&1; then
23-
nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- yum install -y dbus
24-
elif nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- which dnf >/dev/null 2>&1; then
25-
nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- dnf install -y dbus
26-
elif nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- which apk >/dev/null 2>&1; then
27-
nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- apk add dbus
28-
else
29-
echo "WARNING: Could not install D-Bus. No supported package manager found."
30-
SYSTEMD_CGROUP=false
31-
echo "SYSTEMD_CGROUP is now set to $SYSTEMD_CGROUP"
32-
fi
33-
fi
34-
fi
3514

3615
if pgrep -f snap/microk8s > /dev/null; then
3716
CONTAINERD_CONF=/var/snap/microk8s/current/args/containerd-template.toml
@@ -56,6 +35,34 @@ elif pgrep -f /var/lib/k0s/bin/kubelet > /dev/null; then
5635
touch $NODE_ROOT$CONTAINERD_CONF
5736
fi
5837

38+
# If SYSTEMD_CGROUP is not set, default to true except for distros that do not default to systemd
39+
# TODO: detect k3d which defaults to cgroupfs
40+
if [ -z "${SYSTEMD_CGROUP+x}" ] && [ "$IS_MICROK8S" = "true" ]; then
41+
SYSTEMD_CGROUP=false
42+
else
43+
: "${SYSTEMD_CGROUP:=true}"
44+
fi
45+
46+
# Install D-Bus if it's not available but systemd cgroups are requested
47+
if [ "$SYSTEMD_CGROUP" = "true" ]; then
48+
if ! nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- which dbus-daemon >/dev/null 2>&1; then
49+
if nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- which apt-get >/dev/null 2>&1; then
50+
nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- apt-get update -y
51+
nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- apt-get install -y dbus
52+
elif nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- which yum >/dev/null 2>&1; then
53+
nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- yum install -y dbus
54+
elif nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- which dnf >/dev/null 2>&1; then
55+
nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- dnf install -y dbus
56+
elif nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- which apk >/dev/null 2>&1; then
57+
nsenter -m/$NODE_ROOT/proc/1/ns/mnt -- apk add dbus
58+
else
59+
echo "WARNING: Could not install D-Bus. No supported package manager found."
60+
SYSTEMD_CGROUP=false
61+
echo "SYSTEMD_CGROUP is now set to $SYSTEMD_CGROUP"
62+
fi
63+
fi
64+
fi
65+
5966
mkdir -p $NODE_ROOT$KWASM_DIR/bin/
6067

6168
cp /assets/containerd-shim-spin-v2 $NODE_ROOT$KWASM_DIR/bin/
@@ -83,7 +90,7 @@ if ! grep -q 'runtimes.spin.options' $NODE_ROOT$CONTAINERD_CONF; then
8390
echo "Setting SystemdCgroup to $SYSTEMD_CGROUP in Spin containerd configuration"
8491
if $IS_K3S; then
8592
echo '
86-
[plugins."io.containerd.cri.v1.runtime".containerd.runtimes.spin.options]
93+
[plugins."io.containerd.cri.v1.runtime".containerd.runtimes."spin".options]
8794
SystemdCgroup = '$SYSTEMD_CGROUP'
8895
' >> $NODE_ROOT$CONTAINERD_CONF
8996
else

node-installer/tests/integration-test-microk8s.sh

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,11 @@ echo "=== Step 4: Apply the workload ==="
7575
kubectl apply -f ./tests/workloads/workload.yaml
7676

7777
echo "Waiting for deployment to be ready..."
78-
kubectl wait --for=condition=Available deployment/wasm-spin --timeout=120s
78+
if kubectl wait --for=condition=Available deployment/wasm-spin --timeout=120s; then
79+
echo "Deployment failed to become ready!"
80+
kubectl describe deployment wasm-spin
81+
exit 1
82+
fi
7983

8084
echo "Checking pod status..."
8185
kubectl get pods

0 commit comments

Comments
 (0)