Skip to main content
Skip table of contents

RKE2 Single-Node Installation ( Without HA )

Purpose

The purpose of this document is to describe the additional system requirements and steps to deploy the Single-Node RKE2 Kubernetes Distribution.

Pre-requisites for Single-Node Installation

The prerequisites and pre-deployment phases are describe in the RKE2 Pre-Deployment & Installation Guide (Single & Multi Node). Please complete the steps before proceeding with Single-Node Installation.


Quick Links

Installation Steps

Customize the RKE2 Deployment for your Environment

Click here to see customization steps.....

Below given options can also be used for customized environment setup:

OptionSwitchDefaultDescription
Default Deployment Directory of RKE2 (Not recommended)

--data-dir value, -d value

/var/lib/rancher/rke2 or ${HOME}/.rancher/rke2 if not rootImportant Note: Moving the default destination folder to another location is not recommended. However, if there is need for storing the containers in different partition, it is recommended to deploy the containerd separately and change its destination to  the partition where you have space available using --root  flag in containerd.server manifest, and subsequently adding #container-runtime-endpoint: "/path/to/containerd.sock" switch in RKE2 config.yaml file. 
Default POD IP Assignment Range
--cluster-cidr value
"10.42.0.0/16"IPv4/IPv6 network CIDRs to use for pod IPs
Default Service IP Assignment Range--service-cidr value"10.43.0.0/16"IPv4/IPv6 network CIDRs to use for service IPs

If any of the above option is required, add it in the next step.

cluster-cidr and service-cidr are independently evaluated. Decide wisely well before the the cluster deployment. This option is not configurable once the cluster is deployed and workload is running.

Step 1: Enable Customization for Ingress-Nginx

This step is required for the Nginx Ingress Controller to allow customized configurations:

1. Create the destination folder

BASH
mkdir -p  /var/lib/rancher/rke2/server/manifests/

2. Generate the ingress-nginx controller config file so that the RKE2 server bootstraps it accordingly.

BASH
cat<<EOF| tee /var/lib/rancher/rke2/server/manifests/rke2-ingress-nginx-config.yaml
---
apiVersion: helm.cattle.io/v1
kind: HelmChartConfig
metadata:
  name: rke2-ingress-nginx
  namespace: kube-system
spec:
  valuesContent: |-
    controller:
      metrics:
        service:
          annotations:
            prometheus.io/scrape: "true"
            prometheus.io/port: "10254"
      config:
        use-forwarded-headers: "true"
      allowSnippetAnnotations: "true"
EOF

Step 2: Download the RKE2 binaries and start Installation

1. Run the below command on the master node. RKE2 will be installed on the master node.

BASH
curl -sfL https://get.rke2.io |INSTALL_RKE2_TYPE=server  sh - 

2. Enable the rke2-server service

BASH
systemctl enable rke2-server.service

3. Start the service

BASH
systemctl start rke2-server.service

RKE2 server requires 10-15 minutes (at least) to bootstrap completely  You can check the status of the RKE2 Server using systemctl status rke2-server;  once it reports as running, please proceed with the rest of the steps as given below.

4. By default, RKE2 deploys all the binaries in /var/lib/rancher/rke2/bin  path.  Add this path to the system's default PATH for kubectl utility to work appropriately.

BASH
export PATH=$PATH:/var/lib/rancher/rke2/bin
export KUBECONFIG=/etc/rancher/rke2/rke2.yaml

5. Also, append these lines into the current user's .bashrc  file

BASH
echo "export PATH=$PATH:/var/lib/rancher/rke2/bin" >> $HOME/.bashrc
echo "export KUBECONFIG=/etc/rancher/rke2/rke2.yaml"  >> $HOME/.bashrc 

6. and source your ~/.bashrc  

BASH
source ~/.bashrc

Step 3: Bash Completion for kubectl

1. Install bash-completion package

BASH
yum install bash-completion -y

2. Set-up autocomplete in bash into the current shell, bash-completion package should be installed first.

BASH
source <(kubectl completion bash) 
echo "source <(kubectl completion bash)" >> ~/.bashrc 

3. Also, add alias for short notation of kubectl

BASH
echo "alias k=kubectl"  >> ~/.bashrc 
echo "complete -o default -F __start_kubectl k"  >> ~/.bashrc 

4. and source your ~/.bashrc  

BASH
source ~/.bashrc

Step 4: Install helm

1. Add this command in ~/.bashrc file.

BASH
echo "export KUBECONFIG=/etc/rancher/rke2/rke2.yaml" >> ~/.bashrc


2. run this in the command prompt.

BASH
source ~/.bashrc

3. Helm is a super tool to deploy external components. In order to install helm on cluster, execute the following command: 

BASH
curl -fsSL https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3|bash
BASH
cd /usr/local/bin
mkdir -p $HOME/bin && cp ./helm $HOME/bin/helm && export PATH=$HOME/bin:$PATH

4. Move to the root

BASH
 cd /root

Step 5: Enable bash completion for helm

1. Generate the scripts for help bash completion

BASH
helm completion bash > /etc/bash_completion.d/helm

2. Either re-login or run this command to enable the helm bash completion instantly.

BASH
source <(helm completion bash)

Step 6: Clone the CIM Repo

Use the following command for CIM Repo:

BASH
git clone -b <branch-name>  https://efcx:RecRpsuH34yqp56YRFUb@gitlab.expertflow.com/cim/cim-solution.git

and replace the branch name with actual release.


Step 7: Storage for RKE2 Single-Node Installation

The recommended storage option for RKE2 Single-Node Installation is to use OpenEBS. The details of deployment of OpenEBS can be found in this document.

Step 8: CIM Deployment on Kubernetes

Please follow the steps in the document, Expertflow CX Deployment on Kubernetes to deploy Expertflow CX Solution.


JavaScript errors detected

Please note, these errors can depend on your browser setup.

If this problem persists, please contact our support.