From 5c2015e88576ac574dc0b1628a3858b6b41b7d6f Mon Sep 17 00:00:00 2001
From: Peter Toth <peter.toth@univie.ac.at>
Date: Mon, 21 Nov 2022 14:16:28 +0000
Subject: [PATCH] setup shell for kubectl, kubeadm, kubelet, containerd

---
 kube8s-containerd/k8s-setup-master.sh | 86 +++++++++++++++++++++++++++
 1 file changed, 86 insertions(+)
 create mode 100644 kube8s-containerd/k8s-setup-master.sh

diff --git a/kube8s-containerd/k8s-setup-master.sh b/kube8s-containerd/k8s-setup-master.sh
new file mode 100644
index 0000000..857c543
--- /dev/null
+++ b/kube8s-containerd/k8s-setup-master.sh
@@ -0,0 +1,86 @@
+#!/usr/bin/env bash
+
+#set -Eeuo pipefail
+#trap cleanup SIGINT SIGTERM ERR EXIT
+
+
+IFNAME=$1
+ADDRESS="$(ip -4 addr show $IFNAME | grep "inet" | head -1 |awk '{print $2}' | cut -d/ -f1)"
+sed -e "s/^.*${HOSTNAME}.*/${ADDRESS} ${HOSTNAME} ${HOSTNAME}.local/" -i /etc/hosts
+
+# remove ubuntu-jammy entry
+sed -e '/^.*ubuntu-jammy.*/d' -i /etc/hosts
+sed -i -e 's/#DNS=/DNS=8.8.8.8/' /etc/systemd/resolved.conf
+
+# Update /etc/hosts about other hosts
+cat >> /etc/hosts <<EOF
+192.168.56.9 hapr-node
+192.168.56.10 master-node
+192.168.56.11 worker-node1
+192.168.56.12 worker-node2
+EOF
+
+# the following package are used by kubeadm and are not part of jammy
+apt-get update && apt-get install -y socat conntrack
+
+#containerd
+curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
+echo \
+  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
+  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
+
+apt-get update
+apt-get install -y containerd.io
+#runc is part of containerd.io
+
+# the following package are used by kubeadm and are not part of jammy
+apt-get install -y socat conntrack net-tools
+
+mkdir -p /etc/containerd
+# if config.toml exists kubeadm will not work (doc is wrong)
+# containerd config default > /etc/containerd/config.toml
+# details about cgroup change https://kubernetes.io/docs/setup/production-environment/container-runtimes/#containerd-systemd
+# sed -i -e 's/SystemdCgroup = false/SystemdCgroup = true/' /etc/containerd/config.toml
+
+curl -fsSLo /etc/apt/keyrings/kubernetes-archive-keyring.gpg https://packages.cloud.google.com/apt/doc/apt-key.gpg
+echo "deb [signed-by=/etc/apt/keyrings/kubernetes-archive-keyring.gpg] https://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list
+#install kubectl ...
+apt-get update
+apt-get install -y kubelet kubeadm kubectl bash-completion
+apt-mark hold kubelet kubeadm kubectl bash-completion
+
+# install plugins for container network interface (CNI)
+cd /opt/cni/bin/
+wget https://github.com/containernetworking/plugins/releases/download/v1.1.1/cni-plugins-linux-amd64-v1.1.1.tgz
+tar -zxvf cni-plugins-linux-amd64-v1.1.1.tgz
+rm cni-plugins-linux-amd64-v1.1.1.tgz
+
+echo 'source <(kubectl completion bash)' >>~/.bashrc
+#source /usr/share/bash-completion/bash_completion
+kubectl completion bash >/etc/bash_completion.d/kubectl
+
+# Set modules to load during boot
+cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
+overlay
+br_netfilter
+EOF
+
+# Set iptables bridging
+cat <<EOF | sudo tee /etc/sysctl.d/k8s.conf
+net.bridge.bridge-nf-call-iptables  = 1
+net.bridge.bridge-nf-call-ip6tables = 1
+net.ipv4.ip_forward                 = 1
+EOF
+
+#load a couple of necessary modules
+sudo modprobe overlay
+sudo modprobe br_netfilter
+
+sudo sysctl --system
+
+
+#disable swaping
+sudo swapoff -a
+sed 's/#   /swap.*/#swap.img/' /etc/fstab
+
+service systemd-resolved restart
-- 
GitLab