k8x/systemd/init_metal.sh
2024-05-18 04:45:52 +03:00

85 lines
2.4 KiB
Bash
Executable file

#!/bin/bash
echo ""
echo "... ] INIT METAL \\m/ [ ..."
HOME=$( cd "$(dirname "$0")" && pwd )
source $HOME/../config
echo "] prepare system repositories"
apt update -q
apt upgrade -y
echo "] installing common tools"
apt install -y sudo software-properties-common apt-transport-https daemonize htop iotop strace mc vim-nox openssl ca-certificates gnupg2 vim-nox attr jq tree apache2-utils
echo "] install network tools"
apt install -y iptables arptables ebtables conntrack ipset bridge-utils socat ipip rsync iftop nmap dnsutils wget curl
echo "] installing network storage clients"
apt install -y open-iscsi nfs-common lvm2 thin-provisioning-tools ceph-common
echo "] remove swap because kubernetes doesnt like it"
swapoff -a
sed -i '/ swap / s/^/#/' /etc/fstab
echo "] execute modprobe on node - workaround for heketi gluster"
modprobe dm_snapshot
modprobe dm_thin_pool
modprobe dm_mirror
echo "] prepare iptables"
modprobe ipip
modprobe xt_set
cat <<EOF > /etc/sysctl.d/k8s.conf
net.ipv4.ip_forward=1
net.ipv4.conf.all.forwarding=1
net.ipv4.ip_nonlocal_bind=1
net.bridge.bridge-nf-call-iptables=1
net.bridge.bridge-nf-call-ip6tables=1
net.netfilter.nf_conntrack_max=1000000
net.ipv6.conf.all.forwarding=1
# Disable IPv6
net.ipv6.conf.all.disable_ipv6=1
net.ipv6.conf.default.disable_ipv6=1
net.ipv6.conf.lo.disable_ipv6=1
# Increase the inotify limits
fs.inotify.max_user_instances=1024
fs.inotify.max_user_watches=65536
EOF
sysctl --system
echo "] unpacking kubectl"
gzip -v -c -d $HOME/../blobs/kubectl.gz > /usr/local/bin/kubectl
chmod +x /usr/local/bin/kubectl
echo "] unpacking etcdctl"
gzip -v -c -d $HOME/../blobs/etcdctl.gz > /usr/local/bin/etcdctl
chmod +x /usr/local/bin/etcdctl
echo "] unpacking calicoctl"
gzip -v -c -d $HOME/../blobs/calicoctl.gz > /usr/local/bin/calicoctl
chmod +x /usr/local/bin/calicoctl
echo "] unpacking helm chart manager"
gzip -v -c -d $HOME/../blobs/helm.gz > /usr/local/bin/helm
chmod +x /usr/local/bin/helm
echo "] unpacking k9s cli tool"
gzip -v -c -d $HOME/../blobs/k9s.gz > /usr/local/bin/k9s
chmod +x /usr/local/bin/k9s
echo "] copy some additional scripts"
cp -v $HOME/../tools/k /usr/local/bin
cp -v $HOME/../tools/logs-proxy /usr/local/bin
cp -v $HOME/../tools/tcp-proxy /usr/local/bin
echo "] create k8s service dirs"
mkdir -p ${CONF_DIR}/{kube-controller-manager,kubelet,kube-proxy,kube-scheduler}
mkdir -p ${CONF_DIR}
mkdir -p ${CONF_DIR}/manifests