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