Rancher Kubernetes Engine 2 (RKE2) Installation
Prerequisites
Section titled “Prerequisites”TBD
Setup Kubernetes “First” Master Node
Section titled “Setup Kubernetes “First” Master Node”XXXXXXXXXXXXXXXXXXXXX
-
XXXX
-
XXXX
Terminal window sudo -i -
XXXX
XXXXXXXXXXXXXXXXXX
export INSTALL_RKE2_VERSION="v1.32.5+rke2r1"XXXXXXXXXXXXXXXXXX
Terminal window curl -sfL https://get.rke2.io | sh - -
XXXX
Terminal window cp -f /usr/local/share/rke2/rke2-cis-sysctl.conf /etc/sysctl.d/60-rke2-cis.confsystemctl restart systemd-sysctl -
XXXX
Terminal window useradd -r -c "etcd user" -s /sbin/nologin -M etcd -Umkdir -p /var/lib/rancher/rke2/server/db/etcdchown etcd:etcd /var/lib/rancher/rke2/server/db/etcd -
Create Configuration for Master Node
Create necessary directory
Terminal window mkdir -p /etc/rancher/rke2/Anything not mentioned below will accept defaults from RKE2, See Server Configuration Reference.
The following configuration will:
- Add Node Taint to Master Nodes.
- Using Container Network Interface (CNI) Plugin with
calico. - Disable Cloud Controller Manager
- Validate system configuration against the selected benchmark with CIS Benchmark.
- Write Kubeconfig file with the
600file permission.
Terminal window cat <<EOF > /etc/rancher/rke2/config.yamlnode-taint:- "CriticalAddonsOnly=true:NoExecute"- "node-role.kubernetes.io/control-plane:NoSchedule"- "node-role.kubernetes.io/etcd:NoExecute"cni: calicodisable-cloud-controller: trueprofile: "cis"write-kubeconfig-mode: "0600"EOFIF you will have multiple Master Nodes and distribute traffic through a Load Balancer. (See Load Balancers section)
You need to also include that endpoint/domain in TLS as Subject Alternative Name (SAN) as well.
export KUBERNETES_API_HA_ENDPOINT="XXX.YYY.ZZZ.AAA"Terminal window cat <<EOF >> /etc/rancher/rke2/config.yamltls-san:- "${KUBERNETES_API_HA_ENDPOINT}"EOF -
XXXXX
Terminal window systemctl enable rke2-server.servicesystemctl start rke2-server.service -
WAIT XXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXX
Terminal window systemctl status rke2-server.service● rke2-server.service - Rancher Kubernetes Engine v2 (server)Loaded: loaded (/usr/local/lib/systemd/system/rke2-server.service; enabled; preset: enabled)Active: active (running) since Tue XXXX-XX-XX XX:XX:XX UTC; XXs agoDocs: https://github.com/rancher/rke2#readmeProcess: 23765 ExecStartPre=/bin/sh -xc ! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service (code=exited, status=0/SUCCESS)Process: 23767 ExecStartPre=/sbin/modprobe br_netfilter (code=exited, status=0/SUCCESS)Process: 23770 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)... (deducted)Terminal window journalctl -xe -u rke2-server.service... (deducted)MON XX XX:XX:XX <your-master-node-name> systemd[1]: Started rke2-server.service - Rancher Kubernetes Engine v2 (server).░░ Subject: A start job for unit rke2-server.service has finished successfully░░ Defined-By: systemd░░ Support: http://www.ubuntu.com/support░░░░ A start job for unit rke2-server.service has finished successfully.░░░░ The job identifier is XXXX.XXX XX XX:XX:XX <your-master-node-name> rke2[23773]: time="XXXX-XX-XXTXX:XX:XXZ" level=info msg="Reconciliation of ETCDSnapshotFile resources complete"XXX XX XX:XX:XX <your-master-node-name> rke2[23773]: time="XXXX-XX-XXTXX:XX:XXZ" level=info msg="Reconciling ETCDSnapshotFile resources"XXX XX XX:XX:XX <your-master-node-name> rke2[23773]: time="XXXX-XX-XXTXX:XX:XXZ" level=info msg="Starting k3s.cattle.io/v1, Kind=Addon controller"XXX XX XX:XX:XX <your-master-node-name> rke2[23773]: time="XXXX-XX-XXTXX:XX:XXZ" level=info msg="Creating deploy event broadcaster"XXX XX XX:XX:XX <your-master-node-name> rke2[23773]: time="XXXX-XX-XXTXX:XX:XXZ" level=info msg="Reconciliation of ETCDSnapshotFile resources complete"... (deducted) -
XXXXXX
Terminal window export KUBECONFIG=/etc/rancher/rke2/rke2.yaml/var/lib/rancher/rke2/bin/kubectl get nodesNAME STATUS ROLES AGE VERSION<your-master-node-name> Ready control-plane,etcd,master XmXs v1.32.5+rke2r1 -
XXXXXXXXXXXX
Terminal window cat /var/lib/rancher/rke2/server/node-token
Setup Kubernetes Master Nodes (Peer Nodes)
Section titled “Setup Kubernetes Master Nodes (Peer Nodes)”XXXXXXXXXXXXXXXXXXXXX
-
XXXX
-
XXXX
Terminal window sudo -i -
XXXX
XXXXXXXXXXXXXXXXXX
export INSTALL_RKE2_VERSION="v1.32.5+rke2r1"XXXXXXXXXXXXXXXXXX
Terminal window curl -sfL https://get.rke2.io | sh - -
XXXX
Terminal window cp -f /usr/local/share/rke2/rke2-cis-sysctl.conf /etc/sysctl.d/60-rke2-cis.confsystemctl restart systemd-sysctl -
XXXX
Terminal window useradd -r -c "etcd user" -s /sbin/nologin -M etcd -Umkdir -p /var/lib/rancher/rke2/server/db/etcdchown etcd:etcd /var/lib/rancher/rke2/server/db/etcd -
Create Configuration for Master Node
Create necessary directory
Terminal window mkdir -p /etc/rancher/rke2/Anything not mentioned below will accept defaults from RKE2, See Server Configuration Reference.
The following configuration will:
- Add Node Taint to Master Nodes.
- Using Container Network Interface (CNI) Plugin with
calico. - Disable Cloud Controller Manager
- Validate system configuration against the selected benchmark with CIS Benchmark.
- Write Kubeconfig file with the
600file permission.
Terminal window cat <<EOF > /etc/rancher/rke2/config.yamlnode-taint:- "CriticalAddonsOnly=true:NoExecute"- "node-role.kubernetes.io/control-plane:NoSchedule"- "node-role.kubernetes.io/etcd:NoExecute"cni: calicodisable-cloud-controller: trueprofile: "cis"write-kubeconfig-mode: "0600"EOFIF you will have multiple Master Nodes and distribute traffic through a Load Balancer. (See Load Balancers section)
You need to also include that endpoint/domain in TLS as Subject Alternative Name (SAN) as well.
export KUBERNETES_API_HA_ENDPOINT="XXX.YYY.ZZZ.AAA"Terminal window cat <<EOF >> /etc/rancher/rke2/config.yamltls-san:- "${KUBERNETES_API_HA_ENDPOINT}"server: https://${KUBERNETES_API_HA_ENDPOINT}:9345EOF -
XXXXX
export KUBERNETES_JOIN_TOKEN="CHANGEME-to-RandomSecret"Terminal window cat <<EOF >> /etc/rancher/rke2/config.yamltoken: ${KUBERNETES_JOIN_TOKEN}EOF -
XXXXX
Terminal window systemctl enable rke2-server.servicesystemctl start rke2-server.service -
WAIT XXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXX
Terminal window systemctl status rke2-server.service● rke2-server.service - Rancher Kubernetes Engine v2 (server)Loaded: loaded (/usr/local/lib/systemd/system/rke2-server.service; enabled; preset: enabled)Active: active (running) since Tue XXXX-XX-XX XX:XX:XX UTC; XXs agoDocs: https://github.com/rancher/rke2#readmeProcess: 23765 ExecStartPre=/bin/sh -xc ! /usr/bin/systemctl is-enabled --quiet nm-cloud-setup.service (code=exited, status=0/SUCCESS)Process: 23767 ExecStartPre=/sbin/modprobe br_netfilter (code=exited, status=0/SUCCESS)Process: 23770 ExecStartPre=/sbin/modprobe overlay (code=exited, status=0/SUCCESS)... (deducted)Terminal window journalctl -xe -u rke2-server.service... (deducted)MON XX XX:XX:XX <your-master-node-name> systemd[1]: Started rke2-server.service - Rancher Kubernetes Engine v2 (server).░░ Subject: A start job for unit rke2-server.service has finished successfully░░ Defined-By: systemd░░ Support: http://www.ubuntu.com/support░░░░ A start job for unit rke2-server.service has finished successfully.░░░░ The job identifier is XXXX.XXX XX XX:XX:XX <your-master-node-name> rke2[23773]: time="XXXX-XX-XXTXX:XX:XXZ" level=info msg="Reconciliation of ETCDSnapshotFile resources complete"XXX XX XX:XX:XX <your-master-node-name> rke2[23773]: time="XXXX-XX-XXTXX:XX:XXZ" level=info msg="Reconciling ETCDSnapshotFile resources"XXX XX XX:XX:XX <your-master-node-name> rke2[23773]: time="XXXX-XX-XXTXX:XX:XXZ" level=info msg="Starting k3s.cattle.io/v1, Kind=Addon controller"XXX XX XX:XX:XX <your-master-node-name> rke2[23773]: time="XXXX-XX-XXTXX:XX:XXZ" level=info msg="Creating deploy event broadcaster"XXX XX XX:XX:XX <your-master-node-name> rke2[23773]: time="XXXX-XX-XXTXX:XX:XXZ" level=info msg="Reconciliation of ETCDSnapshotFile resources complete"... (deducted) -
XXXXXX
Terminal window export KUBECONFIG=/etc/rancher/rke2/rke2.yaml/var/lib/rancher/rke2/bin/kubectl get nodesNAME STATUS ROLES AGE VERSION<your-master-node-name-1> Ready control-plane,etcd,master XmXs v1.32.5+rke2r1<your-master-node-name-2> Ready control-plane,etcd,master XmXs v1.32.5+rke2r1<your-master-node-name-3> Ready control-plane,etcd,master XmXs v1.32.5+rke2r1
Setup Kubernetes Worker Nodes
Section titled “Setup Kubernetes Worker Nodes”XXXXXXXXXXXXXXXXXXXXX
-
XXXX
-
XXXX
Terminal window sudo -i -
XXXX
XXXXXXXXXXXXXXXXXX
export INSTALL_RKE2_VERSION="v1.32.5+rke2r1"export INSTALL_RKE2_TYPE="agent"XXXXXXXXXXXXXXXXXX
Terminal window curl -sfL https://get.rke2.io | sh - -
XXXX
Terminal window sudo cp -f /usr/local/share/rke2/rke2-cis-sysctl.conf /etc/sysctl.d/60-rke2-cis.confsudo systemctl restart systemd-sysctl -
XXXX
Terminal window mkdir -p /etc/rancher/rke2/ -
XXXXX
export KUBERNETES_API_HA_ENDPOINT="XXX.YYY.ZZZ.AAA"export KUBERNETES_JOIN_TOKEN="CHANGEME-to-RandomSecret"Terminal window cat <<EOF >> /etc/rancher/rke2/config.yamlserver: https://${KUBERNETES_API_HA_ENDPOINT}:9345token: ${KUBERNETES_JOIN_TOKEN}EOF -
XXXXX
Terminal window systemctl enable rke2-agent.servicesystemctl start rke2-agent.service -
WAIT XXXXXXXXXXXXXXXXXXXXXXXXX
XXXXXXXXXXXXXXXXXXXXXXXXXX
Terminal window systemctl status rke2-agent.serviceTBD... (deducted)Terminal window journalctl -xe -u rke2-agent.service... (deducted)TBD... (deducted)
Ensure Connection for All Master Nodes and Worker Nodes
Section titled “Ensure Connection for All Master Nodes and Worker Nodes”-
XXXXXX
-
XXXXXX
Terminal window export KUBECONFIG=/etc/rancher/rke2/rke2.yaml/var/lib/rancher/rke2/bin/kubectl get nodesNAME STATUS ROLES AGE VERSION<your-master-node-name-1> Ready control-plane,etcd,master XmXs v1.32.5+rke2r1<your-master-node-name-2> Ready control-plane,etcd,master XmXs v1.32.5+rke2r1<your-master-node-name-3> Ready control-plane,etcd,master XmXs v1.32.5+rke2r1<your-worker-node-name-1> Ready <none> XmXs v1.32.5+rke2r1<your-worker-node-name-2> Ready <none> XmXs v1.32.5+rke2r1<your-worker-node-name-3> Ready <none> XmXs v1.32.5+rke2r1... (deducted)
Finished?
Section titled “Finished?”Next step, will begin the Kubernetes Preparations, Good luck! … 🚀