control plane 과 etcd 를 한 노드에만 두는 RKE 1.x 구성이다. 작업용 호스트에서 cluster.yml 을 쓰고 rke up 을 실행하면 RKE 가 SSH 로 대상 노드에 들어가 Kubernetes 구성 요소를 Docker 컨테이너로 띄운다. 노드 쪽에 필요한 것은 Docker 와 SSH 뿐이고, kubelet · kubeadm 같은 호스트 패키지를 깔지 않는다.
RKE 1.x 는 2025-07-31 자로 지원이 끝났다.[1] v1.8 이 마지막 계열이며 최종 릴리스는 v1.8.14(2025-06-03)다. Rancher 2.12.0 부터는 downstream RKE1 클러스터의 프로비저닝과 관리도 지원하지 않는다. Docker 런타임 의존이 정리 사유다 — dockershim 은 Kubernetes 1.24 에서 제거됐다. SUSE 는 RKE2 로 재플랫폼하라고 안내한다. 새로 만드는 클러스터는 RKE2 로 한다. 아래 절차는 이미 돌고 있는 RKE1 환경을 재현하거나 손볼 때를 위해 남긴다.
net.bridge.bridge-nf-call-iptables=1sshd_config 에 AllowTcpForwarding yes 가 있어야 한다 — RKE 가 SSH 터널로 원격 Docker 소켓에 붙는다.docker 그룹에 넣는다. docker 그룹 소속은 사실상 root 권한이다.swapoff -a
sed -i '/ swap / s/^/#/' /etc/fstab
echo net.bridge.bridge-nf-call-iptables=1 >> /etc/sysctl.conf
sysctl -p
usermod -aG docker rke
싱글 마스터 노드는 controlplane 과 etcd 를 겸하므로 두 역할의 인바운드 포트를 모두 연다. 같은 노드에 worker 까지 얹으면 worker 몫도 더한다.
| 역할 | 인바운드 |
|---|---|
| controlplane | 6443/tcp (apiserver), 10250/tcp (kubelet), 8472/udp (Canal · Flannel VXLAN), 80 · 443/tcp (ingress) |
| etcd | 2379/tcp (client), 2380/tcp (peer), 8472/udp |
| worker | 10250/tcp, 8472/udp, 80 · 443/tcp, 30000-32767/tcp · udp (NodePort) |
rke 바이너리를 실행할 자리다. 노드와 별개여도 되고 노드 중 하나여도 된다. SSH 개인키와 cluster.yml · cluster.rkestate · kube_config_cluster.yml 이 여기 남으므로 클러스터 수명 동안 유지되는 곳을 고른다.
GitHub 릴리스에서 OS · 아키텍처에 맞는 바이너리를 받아 rke 로 이름을 바꾸고 $PATH 안에 둔다.
chmod +x rke
mv rke /usr/local/bin/rke
rke --version
macOS 는 brew install rke 로도 설치된다.
rke config --name cluster.yml 은 대화형으로 물어보며 파일을 만든다. 물어보는 항목이 많아 손으로 쓰는 편이 빠르다.
rke config --name cluster.yml
노드 한 대에 세 역할을 모두 얹는 최소 형태다.
nodes:
- address: 192.168.1.11
user: rke
role:
- controlplane
- etcd
- worker
ssh_key_path: /home/user/.ssh/id_rsa
일반적인 싱글 마스터 구성이다. controlplane 과 etcd 를 한 노드에 묶고 worker 를 따로 둔다.
nodes:
- address: 192.168.1.11
internal_address: 10.0.0.11
user: rke
role:
- controlplane
- etcd
ssh_key_path: /home/user/.ssh/id_rsa
- address: 192.168.1.21
internal_address: 10.0.0.21
user: rke
role:
- worker
ssh_key_path: /home/user/.ssh/id_rsa
- address: 192.168.1.22
internal_address: 10.0.0.22
user: rke
role:
- worker
ssh_key_path: /home/user/.ssh/id_rsa
cluster_name: mycluster
network:
plugin: canal
ingress:
provider: nginx
노드 항목에서 쓸 만한 필드는 다음과 같다.
| 필드 | 뜻 |
|---|---|
address |
RKE 가 SSH 로 붙을 주소. IP 또는 DNS 이름 |
internal_address |
노드 간 통신에 쓸 주소. 공인 · 사설 인터페이스가 갈리면 명시한다 |
user |
SSH 사용자. docker 그룹 소속이어야 한다 |
role |
controlplane · etcd · worker 조합 |
port |
SSH 포트가 22 가 아닐 때 |
ssh_key_path |
SSH 개인키 경로 |
hostname_override |
노드 이름을 주소 대신 다른 값으로 등록할 때 |
docker_socket |
Docker 소켓 경로가 /var/run/docker.sock 이 아닐 때 |
kubernetes_version 은 생략할 수 있다. 명시한다면 그 RKE 릴리스가 지원하는 값이어야 하므로 쓰려는 값은 support matrix 에서 확인한다. 값의 형식은 v<k8s 버전>-rancher<n> 이다.
cluster.yml 이 있는 디렉터리에서 실행한다.
rke up --config cluster.yml
끝까지 가면 마지막 줄이 이렇게 나온다.
Finished building Kubernetes cluster successfully
실행이 끝나면 같은 디렉터리에 세 파일이 놓인다. 셋 다 보관한다. 유지보수 · 문제 해결 · 업그레이드에 모두 필요하고, cluster.rkestate 에는 인증서가 들어 있다.
| 파일 | 내용 |
|---|---|
cluster.yml |
클러스터 설정. 노드를 더하거나 뺄 때 여기를 고치고 rke up 을 다시 돌린다 |
cluster.rkestate |
클러스터 상태와 인증서. RKE v0.2.0 부터 생긴다 |
kube_config_cluster.yml |
클러스터에 붙을 kubeconfig |
설정을 고치고 rke up 을 다시 돌리면 달라진 부분만 반영된다.
kube_config_cluster.yml 을 KUBECONFIG 로 가리키면 바로 kubectl 이 붙는다.
export KUBECONFIG=$(pwd)/kube_config_cluster.yml
kubectl get nodes
kubectl -n kube-system get pods
계속 쓸 자리라면 기본 경로로 옮긴다.
mkdir -p ~/.kube
cp kube_config_cluster.yml ~/.kube/config
chmod 600 ~/.kube/config
이 kubeconfig 의 서버 주소는 cluster.yml 첫 controlplane 노드의 주소다. 마스터가 한 대뿐이므로 그 주소가 곧 단일 접점이 된다.
rke etcd snapshot-save 로 스냅샷을 따서 노드 밖으로 뺀다.control plane 을 여럿으로 가려면 RKE HA 를 본다. 새로 만드는 것이라면 RKE1 HA 가 아니라 RKE2 로 간다.
RKE 1.x 지원 종료 2025-07-31 · 최종 릴리스 v1.8.14 · Rancher 2.12.0 부터 downstream RKE1 미지원 — 2026-09-20 확인. https://rke.docs.rancher.com/ · https://github.com/rancher/rke/releases · https://www.suse.com/c/rke-end-of-life-by-july-2025-replatform-to-rke2-or-k3s/ · 노드 요구사항 https://rke.docs.rancher.com/os · 설치 절차 https://rke.docs.rancher.com/installation ↩︎