Created
February 26, 2023 05:00
-
-
Save tonyprawiro/2003cd96a0589f974d575a3b4ec86038 to your computer and use it in GitHub Desktop.
install_worker.sh
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/sh | |
# Source: http://kubernetes.io/docs/getting-started-guides/kubeadm | |
set -e | |
source /etc/lsb-release | |
if [ "$DISTRIB_RELEASE" != "20.04" ]; then | |
echo "################################# " | |
echo "############ WARNING ############ " | |
echo "################################# " | |
echo | |
echo "This script only works on Ubuntu 20.04!" | |
echo "You're using: ${DISTRIB_DESCRIPTION}" | |
echo "Better ABORT with Ctrl+C. Or press any key to continue the install" | |
read | |
fi | |
KUBE_VERSION=1.26.1 | |
### setup terminal | |
apt-get update | |
apt-get install -y bash-completion binutils | |
echo 'colorscheme ron' >> ~/.vimrc | |
echo 'set tabstop=2' >> ~/.vimrc | |
echo 'set shiftwidth=2' >> ~/.vimrc | |
echo 'set expandtab' >> ~/.vimrc | |
echo 'source <(kubectl completion bash)' >> ~/.bashrc | |
echo 'alias k=kubectl' >> ~/.bashrc | |
echo 'alias c=clear' >> ~/.bashrc | |
echo 'complete -F __start_kubectl k' >> ~/.bashrc | |
sed -i '1s/^/force_color_prompt=yes\n/' ~/.bashrc | |
### disable linux swap and remove any existing swap partitions | |
swapoff -a | |
sed -i '/\sswap\s/ s/^\(.*\)$/#\1/g' /etc/fstab | |
### remove packages | |
kubeadm reset -f || true | |
crictl rm --force $(crictl ps -a -q) || true | |
apt-mark unhold kubelet kubeadm kubectl kubernetes-cni || true | |
apt-get remove -y docker.io containerd kubelet kubeadm kubectl kubernetes-cni || true | |
apt-get autoremove -y | |
systemctl daemon-reload | |
### install podman | |
. /etc/os-release | |
echo "deb https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/ /" | sudo tee /etc/apt/sources.list.d/devel:kubic:libcontainers:testing.list | |
curl -L "https://download.opensuse.org/repositories/devel:/kubic:/libcontainers:/stable/xUbuntu_${VERSION_ID}/Release.key" | sudo apt-key add - | |
apt-get update -qq | |
apt-get -qq -y install podman cri-tools containers-common | |
rm /etc/apt/sources.list.d/devel:kubic:libcontainers:testing.list | |
cat <<EOF | sudo tee /etc/containers/registries.conf | |
[registries.search] | |
registries = ['docker.io'] | |
EOF | |
### install packages | |
cat /tmp/apt-key.gpg | apt-key add - | |
cat <<EOF > /etc/apt/sources.list.d/kubernetes.list | |
deb http://apt.kubernetes.io/ kubernetes-xenial main | |
EOF | |
apt-get update | |
apt-get install -y docker.io containerd kubelet=${KUBE_VERSION}-00 kubeadm=${KUBE_VERSION}-00 kubectl=${KUBE_VERSION}-00 kubernetes-cni | |
apt-mark hold kubelet kubeadm kubectl kubernetes-cni | |
### install containerd 1.6 over apt-installed-version | |
wget https://github.com/containerd/containerd/releases/download/v1.6.12/containerd-1.6.12-linux-amd64.tar.gz | |
tar xvf containerd-1.6.12-linux-amd64.tar.gz | |
systemctl stop containerd | |
mv bin/* /usr/bin | |
rm -rf bin containerd-1.6.12-linux-amd64.tar.gz | |
systemctl unmask containerd | |
systemctl start containerd | |
### containerd | |
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf | |
overlay | |
br_netfilter | |
EOF | |
sudo modprobe overlay | |
sudo modprobe br_netfilter | |
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 | |
sudo sysctl --system | |
sudo mkdir -p /etc/containerd | |
### containerd config | |
cat > /etc/containerd/config.toml <<EOF | |
disabled_plugins = [] | |
imports = [] | |
oom_score = 0 | |
plugin_dir = "" | |
required_plugins = [] | |
root = "/var/lib/containerd" | |
state = "/run/containerd" | |
version = 2 | |
[plugins] | |
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes] | |
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc] | |
base_runtime_spec = "" | |
container_annotations = [] | |
pod_annotations = [] | |
privileged_without_host_devices = false | |
runtime_engine = "" | |
runtime_root = "" | |
runtime_type = "io.containerd.runc.v2" | |
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] | |
BinaryName = "" | |
CriuImagePath = "" | |
CriuPath = "" | |
CriuWorkPath = "" | |
IoGid = 0 | |
IoUid = 0 | |
NoNewKeyring = false | |
NoPivotRoot = false | |
Root = "" | |
ShimCgroup = "" | |
SystemdCgroup = true | |
EOF | |
### crictl uses containerd as default | |
{ | |
cat <<EOF | sudo tee /etc/crictl.yaml | |
runtime-endpoint: unix:///run/containerd/containerd.sock | |
EOF | |
} | |
### kubelet should use containerd | |
{ | |
cat <<EOF | sudo tee /etc/default/kubelet | |
KUBELET_EXTRA_ARGS="--container-runtime remote --container-runtime-endpoint unix:///run/containerd/containerd.sock" | |
EOF | |
} | |
### start services | |
systemctl daemon-reload | |
systemctl enable containerd | |
systemctl restart containerd | |
systemctl enable kubelet && systemctl start kubelet | |
### init k8s | |
kubeadm reset -f | |
systemctl daemon-reload | |
service kubelet start | |
echo | |
echo "EXECUTE ON MASTER: kubeadm token create --print-join-command --ttl 0" | |
echo "THEN RUN THE OUTPUT AS COMMAND HERE TO ADD AS WORKER" | |
echo |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment