Skip to content

Instantly share code, notes, and snippets.

@cg-manish
Created May 6, 2025 05:19
Show Gist options
  • Save cg-manish/35cabee351d91288a5f895938287860b to your computer and use it in GitHub Desktop.
Save cg-manish/35cabee351d91288a5f895938287860b to your computer and use it in GitHub Desktop.
Bash script to initialize oracle cloud VM for running Kubernetes
#!/usr/bin/env bash
set -e
# Disable swap
sudo swapoff -a
sudo sed -i '/swap/d' /etc/fstab
# Load necessary kernel modules
sudo modprobe overlay
sudo modprobe br_netfilter
# Set up required sysctl params for Kubernetes
sudo tee /etc/sysctl.d/k8s.conf<<EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
EOF
## --system flag loads kernel modules immediately
sudo sysctl --system
# Install containerd
sudo yum-config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
sudo yum install containerd.io -y
# Update cgroup driver in containerd
cp /etc/containerd/config.toml /etc/containerd/config.toml.bak
sudo rm /etc/containerd/config.toml
sudo tee /etc/containerd/config.toml <<EOF
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc]
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
EOF
sudo systemctl restart containerd
sudo systemctl enable containerd
# Set SELinux in disabled mode (effectively disabling it)
sudo setenforce 0 # this temporaily disables selinux lost after reboot.
sudo sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
# Install Kubernetes components
# This overwrites any existing configuration in /etc/yum.repos.d/kubernetes.repo
sudo tee /etc/yum.repos.d/kubernetes.repo<<EOF
[kubernetes]
name=Kubernetes
baseurl=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/
enabled=1
gpgcheck=1
gpgkey=https://pkgs.k8s.io/core:/stable:/v1.31/rpm/repodata/repomd.xml.key
exclude=kubelet kubeadm kubectl cri-tools kubernetes-cni
EOF
sudo firewall-cmd --zone=public --permanent --add-port=10250/tcp
sudo firewall-cmd --zone=public --permanent --add-port=6443/tcp
sudo firewall-cmd --zone=public --permanent --add-port=10249/tcp
sudo firewall-cmd --zone=public --permanent --add-port=80/tcp
sudo firewall-cmd --zone=public --permanent --add-port=443/tcp
sudo firewall-cmd --reload
sudo yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
sudo systemctl enable kubelet && sudo systemctl start kubelet
sudo systemctl status kubelet >&1
sudo systemctl status containerd
exit 0
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment