[Linux] How To Install RKE
Tags: rke, rancherkubernetesengine, k8s, kubernetes
Published: 2023-12-30 12:56:24

---
title: [Linux] How To Install RKE
published: true
date: 2022-12-04 15:33:08 UTC
tags: 
- RKE
- RancherKubernetesEngine
- K8S
- Kubernetes
canonical_url: https://www.kmp.tw/post/installrke/
---

# What Is RKE
### Rancher Kubernetes Engine (RKE) is a CNCF-certified Kubernetes distribution that runs entirely within Docker containers. It works on bare-metal and virtualized servers. RKE solves the problem of installation complexity, a common issue in the Kubernetes community.
## Download RKE Binary
### Go To [Here](https://github.com/rancher/rke/releases) Download Binary

```
# Linux Platform
wget https://github.com/rancher/rke/releases/download/v1.4.1-rc2/rke_linux-amd64

mv rke_linux-amd64 rke && chmod +x rke
```

## Create RKE Configuration
### Option 1 : Use [minimal cluster.yml](https://rancher.com/docs/rke/latest/en/example-yamls/#minimal-cluster-yml-example) config from rancher
```
# cluster.yml
nodes:
    - address: 1.2.3.4
      user: ubuntu
      role:
        - controlplane
        - etcd
        - worker
```
### Option 2 : Use `rke config` Create New Config
```
# ./rke config --name cluster.yml
[+] Cluster Level SSH Private Key Path [~/.ssh/id_rsa]:
[+] Number of Hosts [1]:
[+] SSH Address of host (1) [none]:
[+] SSH Port of host (1) [22]:
[+] SSH Private Key Path of host () [none]:
[-] You have entered empty SSH key path, trying fetch from SSH key parameter
[+] SSH Private Key of host () [none]:
[-] You have entered empty SSH key, defaulting to cluster level SSH key: ~/.ssh/id_rsa
[+] SSH User of host () [ubuntu]:
[+] Is host () a Control Plane host (y/n)? [y]:
[+] Is host () a Worker host (y/n)? [n]:
[+] Is host () an etcd host (y/n)? [n]:
[+] Override Hostname of host () [none]:
.
.
.
.
```

## Create RKE Cluster
### Attentions !!! You Need Close Node's `swap`, Install `docker`, and Make Sure The `master node` & `work node` Can Access Each Other Before Create
```
# ./rke up

INFO[0000] Building Kubernetes cluster
INFO[0000] [dialer] Setup tunnel for host [10.0.0.1]
INFO[0000] [network] Deploying port listener containers
INFO[0000] [network] Pulling image [alpine:latest] on host [10.0.0.1]
...
INFO[0101] Finished building Kubernetes cluster successfully
```


## Install `kubectl`
### Download
```
curl -LO "https://dl.k8s.io/release/$(curl -L -s \
https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
```


### Install Command
```
install -o root -g root -m 0755 kubectl /usr/local/bin/kubectl
```


### Verify Command
```
./kubectl version --client
#or
kubectl version --client
```

### Check RKE Cluster Status
```
./kubectl --kubeconfig kube_config_cluster.yml get nodes
#or
cat kube_config_cluster.yml > ~/.kube/config
kubectl version --client
```


### Try Deploy Pod To RKE Cluster
```
cat demo/nginx.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    # pod metadata
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx
        ports:
        - containerPort: 80
```

### Deployment
```
# kubectl apply -f demo/nginx.yml

deployment.apps/nginx-deployment created
```

### Check Pods
```
~ # kubectl get po
NAME                                READY   STATUS    RESTARTS   AGE
nginx-deployment-6c8b449b8f-6mds6   1/1     Running   0          59s
nginx-deployment-6c8b449b8f-ct6lx   1/1     Running   0          59s
nginx-deployment-6c8b449b8f-j8lrf   1/1     Running   0          59s
```

### Remove Deployment
```
# kubectl delete deployment nginx-deployment
```