RKE2 v1.32 and Rancher v2.11 Deployment

3 min read
Table of contents

In this article I will show you how to deploy RKE2 cluster and rancher manager. RKE2 (Rancher Kubernetes Engine 2) is Rancher's next-generation Kubernetes distribution, designed as a fully conformant Kubernetes platform with enhanced security and simplified operations. Rancher is a comprehensive Kubernetes management platform that provides a unified interface for deploying, managing, and scaling Kubernetes clusters across any infrastructure. Rancher is a complete container management platform for Kubernetes, giving you the tools to successfully run Kubernetes anywhere.
So, let's get started…
Environment
Hostname | at-rke2-1 |
Operating System | Ubuntu 22.04 (Jammy) |
vCPU | 8 (too large for testing) |
Memory | 12 GB (too large for testing) |
Disk | 60 GB |
Network | 172.20.20.65 |
RKE2 v1.32 Deployment
- Mapping hosts
nano /etc/hosts
---
172.20.20.65 at-rke2-1 at-rke2-1.at.lab rancher.at.lab
- Update and upgrade packages
apt-get update -y && apt-get upgrade -y
- Disable swap
systemctl disable --now swap.target
swapoff -a
- Enable containerd modules
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
modprobe overlay
modprobe br_netfilter
- Configure kernel settings
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
sysctl --system
- Create rke2 configuration file
mkdir -p /etc/rancher/rke2
nano /etc/rancher/rke2/config.yaml
---
write-kubeconfig-mode: "0644"
token: [REDACTED]
tls-san:
- rancher.at.lab
- at-rke2-1.at.lab
### Used for Monitoring
etcd-expose-metrics: "true"
kube-controller-manager-arg: "bind-address=0.0.0.0"
kube-scheduler-arg: "bind-address=0.0.0.0"
- Bootstrap rke2 cluster
curl -sfL https://get.rke2.io | INSTALL_RKE2_VERSION=v1.32.7+rke2r1 sh -
- Enable and start rke2-server
systemctl enable rke2-server.service
systemctl start rke2-server.service
- Export kubeconfig file
cat<<EOF >> ~/.bashrc
export PATH=$PATH:/var/lib/rancher/rke2/bin
export KUBECONFIG=/etc/rancher/rke2/rke2.yaml
EOF
source ~/.bashrc
- Configure server cluster
nano /etc/rancher/rke2/rke2.yaml
---
clusters:
- cluster:
server: https://rancher.at.lab:6443
- Install kubectl tools
apt-get install -y apt-transport-https ca-certificates curl gnupg
curl -fsSL https://pkgs.k8s.io/core:/stable:/v1.32/deb/Release.key | sudo gpg --dearmor -o /etc/apt/keyrings/kubernetes-apt-keyring.gpg
chmod 644 /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.32/deb/ /' | sudo tee /etc/apt/sources.list.d/kubernetes.list
chmod 644 /etc/apt/sources.list.d/kubernetes.list
apt-get update
apt-get install -y kubectl
- Verification
kubectl get all --all-namespaces
- Operational Test
kubectl create deployment nginx-test --image=nginx --replicas=3
kubectl expose deployment nginx-test --port=80 --target-port=80
kubectl create ingress nginx-test-ingress --class=nginx --rule="nginx-test.at.lab/*=nginx-test:80"
nano /etc/hosts
---
172.20.20.65 nginx-test.at.lab
curl http://nginx-test.at.lab
Rancher Manager v2.11 Deployment
- Install helm
curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bash
- Add rancher helm repository
helm repo add rancher-stable https://releases.rancher.com/server-charts/stable
helm repo update
helm repo list
- Add cert manager helm repository
kubectl create namespace cattle-system
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.18.0/cert-manager.crds.yaml
helm repo add jetstack https://charts.jetstack.io
helm repo update
helm repo list
- Install cert manager
helm install cert-manager jetstack/cert-manager \
--namespace cert-manager \
--create-namespace \
--version v1.18.0
kubectl get all -n cert-manager
- Install rancher
helm install rancher rancher-stable/rancher \
--namespace cattle-system \
--version=2.11.1 \
--set bootstrapPassword=[REDACTED] \
--set hostname=rancher.at.lab
kubectl get all -n cattle-system
# check boostrap password
kubectl get secret --namespace cattle-system bootstrap-secret -o go-template='{{.data.bootstrapPassword|base64decode}}{{ "\n" }}'
- Verification
- Operational test from rancher
Thank You.
0
Subscribe to my newsletter
Read articles from Muhammad Alfian Tirta Kusuma directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
