#!/usr/bin/env bash set -e set -o noglob [ $(id -u) -eq 0 ] || exec sudo $0 $@ K0S_HOSTNAME="$1" # Prepare sudo apt-get update -y # Hostname if [ -n "${K0S_HOSTNAME}" ] && [ "$(hostnamectl hostname)" != "${K0S_HOSTNAME}" ]; then hostnamectl set-hostname "${K0S_HOSTNAME}" cat >/etc/hosts < /etc/resolv.conf search {{ nodes.search_domain|default('.', true) }} {% for item in nodes.dns_servers | default(['1.1.1.1', '1.0.0.1']) %} nameserver {{ item }} {% endfor %} EOF chattr +i /etc/resolv.conf # Kernel Modules for module in br_netfilter ceph ip_vs ip_vs_rr nbd overlay rbd; do if ! test -f /etc/modules-load.d/$module.conf; then echo $module > /etc/modules-load.d/$module.conf fi done systemctl restart systemd-modules-load.service # Sysctls cat < /etc/sysctl.d/99-kubernetes.conf fs.inotify.max_queued_events = 65536 fs.inotify.max_user_watches = 524288 fs.inotify.max_user_instances = 8192 EOF sysctl -p /etc/sysctl.d/99-kubernetes.conf # Disable swap swapoff -a # Disable AppArmor if systemctl is-enabled apparmor.service; then systemctl mask apparmor.service fi # Create containerd config mkdir -p /etc/k0s/containerd.d cat < /etc/k0s/containerd.d/default.toml [plugins."io.containerd.grpc.v1.cri"] enable_unprivileged_ports = true enable_unprivileged_icmp = true [plugins."io.containerd.grpc.v1.cri".registry] config_path = "/var/lib/k0s/containerd/certs.d" [plugins."io.containerd.grpc.v1.cri".containerd] discard_unpacked_layers = false [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] discard_unpacked_layers = false EOF