Setup Kubernetes [Kubeadm] Cluster (Version: 1.29)

Setup Kubernetes [Kubeadm] Cluster (Version: 1.29)

$ sudo su

  • Create a shell script 1.sh and paste the below code and run it :

#!/bin/bash
# disable swap
sudo swapoff -a

# Create the .conf file to load the modules at bootup
cat <<EOF | sudo tee /etc/modules-load.d/k8s.conf
overlay
br_netfilter
EOF

sudo modprobe overlay
sudo modprobe br_netfilter

# sysctl params required by setup, params persist across reboots
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

# Apply sysctl params without reboot
sudo sysctl --system

## Install CRIO Runtime
sudo apt-get update -y
sudo apt-get install -y software-properties-common curl apt-transport-https ca-certificates gpg

sudo curl -fsSL https://pkgs.k8s.io/addons:/cri-o:/prerelease:/main/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/cri-o-apt-keyring.gpg
echo "deb [signed-by=/etc/apt/keyrings/cri-o-apt-keyring.gpg] https://pkgs.k8s.io/addons:/cri-o:/prerelease:/main/deb/ /" | sudo tee /etc/apt/sources.list.d/cri-o.list

sudo apt-get update -y
sudo apt-get install -y cri-o

sudo systemctl daemon-reload
sudo systemctl enable crio --now
sudo systemctl start crio.service

echo "CRI runtime installed successfully"

# Add Kubernetes APT repository and install required packages
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.29/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
echo 'deb [signed-by=/etc/apt/keyrings/kubernetes-apt-keyring.gpg] https://pkgs.k8s.io/core:/stable:/v1.29/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list

sudo apt-get update -y
sudo apt-get install -y kubelet="1.29.0-*" kubectl="1.29.0-*" kubeadm="1.29.0-*"
sudo apt-get update -y
sudo apt-get install -y jq

sudo systemctl enable --now kubelet
sudo systemctl start kubelet        

$ sudo apt install docker.io -y

$ sudo chmod 777 /var/run/docker.sock

..............................................................................................................................................................................................

On Master node

  • Create a shell script 2.sh and paste the below code and run it

sudo kubeadm config images pull

sudo kubeadm init

mkdir -p "$HOME"/.kube
sudo cp -i /etc/kubernetes/admin.conf "$HOME"/.kube/config
sudo chown "$(id -u)":"$(id -g)" "$HOME"/.kube/config


# Network Plugin = calico
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.26.0/manifests/calico.yaml

kubeadm token create --print-join-command        

On Worker node

  • Paste the join command you got from the master node and append --v=5 at the end

<join-command> --v=5
$ kubectl get nodes
        
Diego Burbano

AWS Certified Solutions Architect | Cloud Engineer | Master in Systems Management | 2 x AWS | I specialize in AWS Services, Architecture Design, Security, Networking, Kubernetes, and Terraform.

1 个月

Good afternoon Ravi, I hope you're doing well. I have installed the Kubernetes [Kubeadm] Cluster and Kiali on an EC2 instance with a private IP (192.168.4.5). The Kiali service is running as follows: NAME?????????TYPE??????CLUSTER-IP????EXTERNAL-IP????PORT(S)?????AGE kiali-loadbalancer??LoadBalancer??10.96.173.144??<NLB-EXTERNAL-IP>?20001:31360/TCP?5m How can I expose the Kiali page (port 20001) through the EC2 instance, and then publish it using the EC2 public IP? Thanks in advance for your help! Best regards1

回复

要查看或添加评论,请登录

Ravi Kant的更多文章

社区洞察

其他会员也浏览了