Files
treasuremap/tools/fixes/hanging-cgroup-release.sh
Sergiy Markin b1e0493b1c Add Maas and Drydock deployment to Airskiff
This commit adds MAAS and Drydock deployment to
Airskiff profile. It may be used as an integration
test gate for MAAS and Drydock.

Change-Id: Ib89a2e29182587e56034c46a83934d819ad2b430
Signed-off-by: Sergiy Markin <smarkin@mirantis.com>
2025-08-20 22:13:00 +00:00

97 lines
2.5 KiB
Bash
Executable File

#!/bin/bash
set -ex
CLUSTER_DNS=${CLUSTER_DNS:-10.96.0.10}
KUBECTL_IMAGE=${KUBECTL_IMAGE:-registry.k8s.io/kubectl:v1.32.0}
UBUNTU_IMAGE=${UBUNTU_IMAGE:-docker.io/ubuntu:16.04}
cat > /tmp/hanging-cgroup-release.yaml << 'EOF'
---
apiVersion: v1
kind: ConfigMap
metadata:
name: hanging-cgroup-release
namespace: kube-system
labels:
hotfix: 'true'
data:
singleshot.sh: |+
#!/bin/bash
set -ex
while [ 1 ];
do
cgroup_count() {
echo "Current cgroup count: $(find /sys/fs/cgroup/*/system.slice -name tasks | wc -l)"
}
DATE=$(date)
echo "$(cgroup_count)"
echo # Stop systemd mount unit that isn't actually mounted
echo "Stopping Kubernetes systemd mount units that are not mounted to the system."
systemctl list-units --state=running| \
sed -rn '/Kubernetes.transient.mount/s,(run-\S+).+(/var/lib/kubelet/pods/.+),\1 \2,p' | \
xargs -r -l1 sh -c 'test -d $2 || echo $1' -- | \
xargs -r -tl1 systemctl stop |& wc -l
echo "$(cgroup_count)"
sleep 3600
done;
EOF
cat >> /tmp/hanging-cgroup-release.yaml << EOF
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: hanging-cgroup-release
namespace: kube-system
spec:
template:
metadata:
labels:
name: hanging-cgroup-release
spec:
hostNetwork: true
hostPID: true
nodeSelector:
ucp-control-plane: enabled
containers:
- resources:
requests:
cpu: 0.1
securityContext:
privileged: true
image: ${UBUNTU_IMAGE}
name: hanging-cgroup-release
command: ["/bin/bash", "-cx"]
args:
- >
cp -p /tmp/singleshot.sh /host/tmp;
nsenter -t 1 -m -u -n -i /tmp/singleshot.sh;
volumeMounts:
- name: host
mountPath: /host
- name: hanging-cgroup-release
subPath: singleshot.sh
mountPath: /tmp/singleshot.sh
volumes:
- name: host
hostPath:
path: /
- name: hanging-cgroup-release
configMap:
name: hanging-cgroup-release
defaultMode: 0555
EOF
docker run --rm -i \
--net host \
-v /tmp:/work \
-v /etc/kubernetes/admin:/etc/kubernetes/admin \
-e KUBECONFIG=/etc/kubernetes/admin/kubeconfig.yaml \
${KUBECTL_IMAGE} \
kubectl apply -f /work/hanging-cgroup-release.yaml