Created
May 6, 2025 05:19
-
-
Save cg-manish/35cabee351d91288a5f895938287860b to your computer and use it in GitHub Desktop.
Bash script to initialize oracle cloud VM for running Kubernetes
This file contains hidden or 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
#!/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