Recommanded Free YOUTUBE Lecture: <% selectedImage[1] %>

Contents

Rancher 2.0 설치 환경

Rancher 1.x 설치는 Rancher 설치문서를 참고하자. 크게 달라질 건 없다고 생각하긴 하는데, 아무래도 직접 설치를 해봐야 할 것 같다. 설치환경은 아래와 같다.
  • 호스트 운영체제 : 우분투 리눅스 17.10
  • VirtualBox
  • 게스트 운영체제 : 우분투 리눅스 18.04
  • Kubernetes : Rancher 2.0은 K8s가 기본 환경으로 Rancher이 알아서 K8s를 구성한다. 편한세상이다.
테스트 환경은 아래와 같다.

 테스트 환경

  • rancher-server : Rancher 서버가 설치된다. Rancher 클러스터를 관리한다.
  • rancher-01 ~ rancher-03 : Rancher 클러스터를 구성하는 노드들

도커 설치

docker install 문서 참고

테스트에 사용한 도커 버전이다.
# docker version
Client:
 Version:      18.03.1-ce
 API version:  1.37
 Go version:   go1.9.5
 Git commit:   9ee9f40
 Built:        Wed Jun 20 21:43:51 2018
 OS/Arch:      linux/amd64
 Experimental: false
 Orchestrator: swarm

Server:
 Engine:
  Version:      18.03.1-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.5
  Git commit:   9ee9f40
  Built:        Wed Jun 20 21:42:00 2018
  OS/Arch:      linux/amd64
  Experimental: false

Rancher 서버 설치

실 서비스에서는 HA 구성을 해야 겠으나 테스트이니 만큼 Single 노드로 설치한다. 간단하게 도커로 설치 할 수 있다.
# docker run -d --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher
Unable to find image 'rancher/rancher:latest' locally
latest: Pulling from rancher/rancher
6b98dfc16071: Pull complete 
4001a1209541: Pull complete 
...
80번과 443 포트를 설정했다. 이제 웹 브라우저로 접근 할 수 있다.

처음 로그인일 경우 admin 계정에 대한 패스워드를 설정한다.

Rancher Server URL을 설정한다. Rancher 노드를 추가 할 때 사용한다.

첫 번째 클러스터를 만들어보자.

클러스터의 타입을 설정 할 수 있다. Google Cloud Engine, AWS EKS, Azure Kubernetes Service 등의 주요 클라우드 프로바이더에 전개 할 수 있다. AWS EKS를 선택할 경우 설치할 리전(Region), Access key, secret key등을 설정 할 수 있다. 언젠가 사용해 보고 싶기는 한데, 지금은 직접 구성하는 처지라서 CUSTOM을 선택했다.

Custom을 선택하면 나오는 옵션들이다. Cluster Name은 JoincCluster로 했다. Cluster Options에서 가장 중요한 것은 Network Provider를 선택하는게 될 것이다. Calico, Canal, Flannel 중에 선택할 수 있다. Canal은 Flannel+Calico이다. 기능이 많다는 이야기니, 이녀석으로 하기로 했다.

이쯤에서 눈치챘겠지만 Rancher 2.0은 Kubernetes를 기본 플랫폼으로 한다. Kubernetes를 설치하지 않았다고 걱정 할 필요 없다. Rancher가 알아서 설치해 준다.

Rancher Node 추가하기

Add cluster 화면이다. 빨간 부분에 있는 도커 명령어를 추가할 Rancher Node(rancher-01, rancher-02, rancher-03)에서 그대로 실행해주면 된다. Node는 3가지 Role을 가지고 있다.
  • etcd : etcd 노드는 etcd 데이터베이스를 실행하는데 사용한다. 여기에는 쿠버네티스가 관리하는 모든 클러스터의 데이터를 저장된다. 단일 노드에서 etcd를 실행 할 수도 있지만, 중복 저장을 위해서 3, 5 개 이상의 노드를 설정한다.
  • Control Plane : Control Plane 노드는 Kubernetes API 서버, 스케줄러 및 컨트롤러 관리자를 실행하는데 사용한다. 단일 노드에서 실행 할 수 있지만, 2개 이상의 노드에서 실행 할 것을 권장한다.
  • Worker : Worker 노드는 kubelet및 작업을 실행하는데 사용한다. 필요한 경우 스토리지 및 네트워킹 드라이버와 ingress 드라이버도 실행한다.
적어도 하나 이상의 etcd 노드와 Control Plane 노드가 필요하다. 나는 rancher-01을 etcd+Control Plane+Worker 노드로 설정했다. 나머지 노드는 Worker 노드로만 설정했다.

클러스터 대시보드에서 노드 와 클러스트 상태를 확인 할 수 있다.

3개의 노드로 구성된 클러스터를 확인 할 수 있다. 관리자는 전체 CPU Core, 메모리, Pod의 상태를 볼 수 있다.

정리

  • 다음 번에는 지금 구성한 클러스터에에 애플리케이션을 전개해 볼 생각이다.
  • AWS에 EC2 기반으로 전개해 봐야 겠다. EKS는 아직 서울리전에 없기 때문이다. 굳이 하려고 마음 먹으면 북미리전에서 테스트 할 수는 있겠지만.