반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Archives
Today
Total
관리 메뉴

/var/log/messages

SLES 15SP4에서 docker 기반 Rancher(랜처) 2.7v 설치하기 본문

Rancher

SLES 15SP4에서 docker 기반 Rancher(랜처) 2.7v 설치하기

로만로만 2023. 6. 5. 14:34
반응형

이번 시간에는 랜처를 쿠버네티스와 비교를 한 후, 설치를 해보려고 한다.

  Rancher Kubernetes
정의 컨테이너 오케스트레이션 플랫폼으로서, Kubernetes,
Docker Swarm 등 여러 오케스트레이션 엔진을
사용할 수 있는 중앙 관리 툴입니다.
자체적으로 컨테이너 오케스트레이션 시스템으로
컨테이너 배포, 스케일링, 네트워킹, 로드밸런싱 등의
기능을 제공합니다.
목적 여러 클러스터를 중앙에서 관리하고, 다양한 컨테이너
오케스트레이션 플랫폼을 통합 관리하는 것을 목표로
합니다.
애플리케이션을 효과적으로 배포, 관리하고
스케일링하는 것을 목표로 합니다.
사용성 사용자 친화적인 웹 UI를 제공하여 쿠버네티스
클러스터를 쉽게 설정하고 관리할 수 있습니다.
CLI(Command Line Interface)를 주로 사용하며, 복잡한 설정과 학습 곡선이 있습니다. 하지만,
쿠버네티스 대시보드와 같은 웹 UI도 제공합니다.
기능 여러 오케스트레이션 플랫폼을 지원하며, 사용자 권한
관리, 카탈로그 서비스 등 추가 기능을 제공합니다.
컨테이너 배포, 서비스 디스커버리, 로드 밸런싱,
스케일링 등의 주요 컨테이너 오케스트레이션 기능을 제공합니다.
통합 Prometheus, Grafana, Alertmanager 등과 같은 통합
모니터링 및 경고 도구를 제공합니다.
다양한 오픈소스 도구와 통합할 수 있지만,
이러한 통합은 대부분 수동으로 설정해야 합니다.

이 블로그는 도커를 바탕으로 Rancher를 구축할 것이다. 이때 랜처 공식사이트에서 권장하는 최소 스펙이다.

Deployment size Clusters Nodes vCPUs RAM
Small Up to 5 Up to 50 1 4 GB
Medium Up to 15 Up to 200 2 8 GB

 

자세한 것은 Rancher 공식 사이트를 참고하길 바란다:
https://ranchermanager.docs.rancher.com/pages-for-subheaders/installation-requirements

 

Installation Requirements | Rancher

Learn the node requirements for each node running Rancher server when you’re configuring Rancher to run either in a Docker or Kubernetes setup

ranchermanager.docs.rancher.com

그리고 이 블로그에서는 TUI 환경으로 구축을 할 것이다. 랜처는 GUI 환경에서 이루어지기에, 웹 브라우저가 필요하다. 기본 OS는 파이어폭스지만, 우리에게는 익숙한 웹 브라우저가 크롬이기에, 크롬도 설치해보는 시간을 가져보려고 한다.

실습 환경은 버츄얼박스에서 이루어질것이다. 버츄얼박스에서의 권장사항도 추천하겠다.

1. 버츄얼박스 포트 포워딩 설장하기

네트워크 탭에서 NAT를 선택하고, Advanced를 클릭하면 가장 밑에 포트 포워딩이란 버튼이 보인다. 
이 버튼을 클릭해보자,

원래는 아무것도 없을 것이다. 이때 우측에 있는 '+' 모양의 버튼을 클릭하면 입력해야 할 항목들이 출력 될 것이다.
이때 어떻게 적어야 하는 지는 위 사진으로 예시를 적어 놓았다. ipconfig의 ip는 물리 컴퓨터의 ip, 즉 실제 컴퓨터에서 ipconfig를 입력했을 때 나타난 ip를 적어야 하는 것이다. 그리고 xshell, putty 같은 원격 접속 터미널을 이용할 때 포트를 8022로 적어야 접속할 수 있다. 8022는 임의 포트이니, 다른 포트로 적어도 무관하다. 접속할 ip는 ipconfjg의 ip를 적어주면 된다. 게스트 ip는 가상머신이 생성되면 기본 ip가 10.0.2.15라서 적어준 것이다. 만약, 이렇게 했는데도 되지 않으면, 다음 글을 참조하는 것을 권장한다. 가장 이상적인 네트워크 구성이기도 하다.

 

2. ping google.com이 잘 되는지 확인하기
Rancher를 수세 공식 홈페이지에서 파일을 다운 받아서 설치할 수는 있다. 그러나 2달의 사용 제한이 존재하기에,인터넷을 이용해서 설치하고자 한다. ping google.com을 입력해서 되는 지 확인해야 한다. 간혹, 자동으로 ipv4가 아닌 ipv6로 도메인 변환을 시도하려고 하니, ping google.com이 아닌 ping -4 google.com을 입력해서 ipv4로 테스트 하자는 옵션도 줘야한다. 이때도 안 되면, 구글 도메인 주소인 ping 8.8.8.8을 입력해서 네트워크 문제인지, 도메인 문제인지 확인해야 한다.

ping 8.8.8.8이 되는데 ping -4 google.com이 되지 않으면 cat /etc/resolv.conf를 확인해야 한다.

잘 된다면 아래와 같이 나올 것이다.

ping google.com
ping -4 google.com


3. 레포지토리 확인하기

sudo zypper repos를 입력하면, 현재의 레포지토리를 확인할 수 있다. 아래 사진처럼 출력이 될 것이다.

3번은 없어도 될 것 같다. 그러나 1, 2번은 존재해야 한다. 1번은 기본적인 것들을 다운받을 수 있는 레포지토리이고, 2번인 Containers-Module_15.4-0은 docker를 설치하기 위해서 필요하다. Refresh가 No라는 의미는 레포지토리가 최신 버전으로 동기화가 되고 있는지의 여부를 표현한 것이다. 우리의 실습에 영향을 끼치진 않는다.

4. docker 설치하기( 밑에 요약본 존재 )
sudo zypper in docker를 입력해서 docker를 설치한다. 아래 사진 처럼 진행이 될 것이다.
in -y로 설치를 할 수 있었다. 그러나 실무에서는 본인도 모르는 패키지들이 설치가 되어 있어서 정리하기가 힘들어진다.
그러니, 웬만하면 y는 자제하도록 하자.

sudo systemctl enable --now docker.service; sudo systemctl status docker.service;를 입력해보자.
';'에 의해 명령어가 연속적으로 동작을 할 수 있기에 서비스를 자동 재시작과 상태 확인까지 연속적으로 할 수 있다.
결과는 다음과 같다.

active 상태인 것을 확인 할 수 있다. 그러나 밑에 로그 메세지를 보면 에러가 출력이 된 것을 볼 수 있다.
full 에러 메세지는 다음과 같다.
'failed to load plugin io.containerd.snapshotter.v1.devmapper" error="devmapper not configured' 

이 에러 메세지는 스토리지 드라이버가 기본 값과 다르다는 로그 메세지이다.

docker는 기본적으로 overlay2 스토리지 드라이버를 사용한다. 그러나 파일시스템이 btrfs인 경우에는
btrfs 스토리지 드라이버도 사용하려고 한다. sudo docker info | sudo grep Storage를 입력해보면 알 수 있다.

Storage Dirver의 기본값을 btrfs로 수정하고 싶으면, sudo vi /etc/docker/daemon.json에서 파일을 편집할 수 있다.

원본   

편집본
 

그러나 수정 후 sudo systemctl restart docker.service; sudo systemctl status docker.service; 를 입력해도 메세지는 그대로 출력이 될 것이다. 왜냐하면, Docker는 시작 시 사용 가능한 모든 스냅샷 플러그인을 로드하려고 시도한다. 이렇게 설정을 해도 마찬가지이다.

Docker에서의 스냅샷과 플러그인의 의미
스냅샷 컨테이너의 파일 시스템 상태를 로드한다. 
여기서의 파일 시스템은 컨테이너 내의 모든 파일 및 디렉터리의 상태를 스냅샷을 만든 해당 시점으로
기록한다는 것이다.
플러그인 docker가 확장할 수 있는 기능을 말한다.
예를 들면 네트워킹, 스토리지 같이 기본적인 기능부터 추가적으로 설치할 수 있는 프로그램들을 의미한다.

결론은, active라면 문제는 없다라는 것이다.

즉, docker를 설치할 때 파일 시스템이 btrfs인지, xfs인지로 구분할 수 있겠다.
xfs는 btrfs를 제외 하고는 가장 대중적인 파일시스템이기에 비교 한 것이다.
다른 파일 시스템도 xfs와 큰 차이는 없을 것이다. 

XFS BTRFS
1. zypper in docker 1. zypper in docker
2. systemctl enable --now docker.serivce 2. sudo vi /etc/docer/daemon.json
3. systemctl status docker.service 3. 편집본 확인
  4. systemctl enable --now docker.serivce
5. systemctl status docker.service

5. Rancher 도커 이미지 다운로드

sudo docker pull rancher/rancher:v2.7.0를 입력하면, 도커 이미지 파일을 다운 받을 수 있다.
( 도커 이미지는 도커에서 컨테이너를 실행하는데 필요한 모든 파일을 패키지 화를 한 것이다. )

이 이미지를 바탕으로 컨테이너를 생성하고 실행한다.

Pull complete는 다운로드가 완료 된 것이고, Download complete는 아직 다운로드가 되지 않은 것이다.

docker pull이란?
docker hub라는 공개 레지스트리에서 이미지를 다운로드를 한다.
이 레지스트리는 많은 오픈소스 프로젝트와 벤더들이 이미지를 호스팅 하는 곳이다.
docker는 기본적으로 docker hub에서 이미지를 가져오도록 설정이 되어 있다.

이미지 파일을 먼저 다운로들 한 후, Rancher 서버 역할을 하게 해주는 프로그램을 다운 받을 수 있다.
그러나 한가지 더 검토를 할 것이 있다.

 

6. 방화벽 확인

systemctl status firewalld.service로 방화벽이 active인지를 확인하고, 방화벽이 active라면 어떤 포트가 방화벽에 등록 되었는지 확인해야 한다. 필자는 inactive이다.

 

7. Rancher 서버 프로그램 다운로드
sudo docker run -d --privileged --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:v2.7.0

docker run Docker에서 이미지를 실행하는 명령어입니다.
Docker 이미지를 컨테이너로 실행시킵니다
-d 'detached mode'를 의미합니다.
백 그라운드에서 컨테이너를 실행하도록 설정합니다.
--privileged 컨테이너 내부의 프로세스가 호스트 시스템에 거의 제한 없이 액세스할 수 있음을 나타냅니다.
--restart=unless-stopped 컨테이너가 멈추지 않은 한 항상 재시작되도록 설정합니다.
-p 80:80 -p 443:443 호스트의 포트를 컨테이너의 포트에 바인딩합니다.
rancher/rancher:v2.7.0 실행하려는 Docker 이미지의 이름입니다.

실행하면 다음과 같이 나타난다.

구축을 끝났다. 이제 chrome을 설치 후 접속해보자.