#!/bin/bash # script that runs # https://kubernetes.io/docs/setup/production-environment/container-runtime # changes March 14 2023: introduced $PLATFORM to have this work on amd64 as well as arm64 # setting MYOS variable MYOS=$(hostnamectl | awk '/Operating/ { print $3 }') OSVERSION=$(hostnamectl | awk '/Operating/ { print $4 }') # beta: building in ARM support [ $(arch) = aarch64 ] && PLATFORM=arm64 [ $(arch) = x86_64 ] && PLATFORM=amd64 sudo apt install -y jq curl wget vim git if [ $MYOS = "Ubuntu" ] then ### setting up container runtime prereq cat <<- EOF | sudo tee /etc/modules-load.d/containerd.conf overlay br_netfilter EOF sudo modprobe overlay sudo modprobe br_netfilter # Setup required sysctl params, these persist across reboots. cat <<- EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf net.bridge.bridge-nf-call-iptables = 1 net.ipv4.ip_forward = 1 net.bridge.bridge-nf-call-ip6tables = 1 EOF # Apply sysctl params without reboot sudo sysctl --system # (Install containerd) # getting rid of hard coded version numbers CONTAINERD_VERSION=$(curl -s https://api.github.com/repos/containerd/containerd/releases/latest | jq -r '.tag_name') CONTAINERD_VERSION=${CONTAINERD_VERSION#v} wget https://github.com/containerd/containerd/releases/download/v${CONTAINERD_VERSION}/containerd-${CONTAINERD_VERSION}-linux-${PLATFORM}.tar.gz sudo tar xvf containerd-${CONTAINERD_VERSION}-linux-${PLATFORM}.tar.gz -C /usr/local # Configure containerd sudo mkdir -p /etc/containerd cat <<- TOML | sudo tee /etc/containerd/config.toml version = 2 [plugins] [plugins."io.containerd.grpc.v1.cri"] [plugins."io.containerd.grpc.v1.cri".containerd] discard_unpacked_layers = true [plugins."io.containerd.grpc.v1.cri".containerd.runtimes] [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] runtime_type = "io.containerd.runc.v2" [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] SystemdCgroup = true TOML RUNC_VERSION=$(curl -s https://api.github.com/repos/opencontainers/runc/releases/latest | jq -r '.tag_name') wget https://github.com/opencontainers/runc/releases/download/${RUNC_VERSION}/runc.${PLATFORM} sudo install -m 755 runc.${PLATFORM} /usr/local/sbin/runc # Restart containerd wget https://raw.githubusercontent.com/containerd/containerd/main/containerd.service sudo mv containerd.service /usr/lib/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now containerd fi sudo ln -s /etc/apparmor.d/runc /etc/apparmor.d/disable/ sudo apparmor_parser -R /etc/apparmor.d/runc touch /tmp/container.txt exit