-
-
한 권으로 배우는 도커 & 쿠버네티스 - 컨테이너 개념부터 쿠버네티스를 활용한 배포까지
장철원 지음 / 한빛미디어 / 2024년 4월
평점 :
도커와 쿠버네티스에 대해서 많이 들어보기는 했지만 실무적으로
어떻게 쓰이는지에 대해서는 아는 바가 없는 상태에서 “한 권으로 배우는 도커 & 쿠버네티스”라는 책을 접하고, 컨테이너 개념부터 쿠버네티스를 활용한 배포까지의 전 과정을 두루 살펴보게 된 것같다. 출판사 홈페이지에서 안내하듯이 본 도서는 “초중급자”를 대상으로 하고 있다. 그래서인지 도커와 쿠버네티스 등의 설치와
운영에 필요한 스크립트와 간단한 설명에 집중하고 있다. 우분투 리눅스 운영체제하에서 “curl”와 같은 명령어를 실행하는 부분이 있는데, CLI(Command
Line Interface)환경에서 URL 데이터를 요청하고 가져오는 명령어라는 설명은
없는 부분을 예로 들 수 있다.
업무 서비스 구성요소간 유기적인 동작의 이해를 돕기 위해 흐름도로
도식화해서 제공하기도 한다.
책의 구성은 실습환경 구축, 도커, 쿠버네티스로 되어 있다.
1장 실습환경 구축하기에서는 우분투 이미지 다운로드, 버추얼박스
설치, 가상머신 생성 등 실습에 필요한 환경 구축을 안내하고 있다. 버추얼박스에서
가상머신을 3개 만드는데, 가상머신별로 기본 메모리는 8192MB이상, CPU 개수는 4이상으로
설정할 것을 권장하고 있다. 본 독자는 컴퓨팅 환경이 열악해서 서브로 사용하는 노트북에 윈도우를 새로
설치하고, 본 도서 실습 전용 환경으로 사용하였다. 서브
노트북 하드웨어는 Intel Core i3-7020U, 램 8GB, 디스크는
SSD 500GB이고, 운영체제는 윈도우11 홈이다(윈도우10 usb로
설치했으나 중간에 네트워크 연결하고 마이크로소프트 계정 로그인을 강요하더니 윈도우11이 설치됨). 가상머신별로 램 7GB, CPU 2개로 설정했다. 도커 관련 실습할 때는 가상머신 1개만 필요해서 문제가 없었으나, 쿠버네티스 관련 실습할 때는 가상머신 2개까지는 메모리 사용률이
99%에 육박하고 돌아는 갔다. 3번째 가상머신을 구동할
때 응답없음 상태가 되어서 결국 램 8GB를 추가로 구매해서 장착해서 책의 마지막까지 실습을 따라갈
수 있었다. 책에 안내되어 있듯이 모든 실습을 따라가려면 물리적으로 램 16GB는 필요하겠다.
1부 도커에서는 2장부터 6장에
걸쳐 도커의 개념, 설치, 기초와 도커를 활용한 django와 Flask 실행을 다루고 있다. django와 Flask도 이름은 들어봤는데 웹프레임워크라고 한다.
2부 쿠버네티스에서는 7장부터 10장까지는 쿠버네티스의 기본 구조, 실습환경 구축, 기초, 웹서비스 배포를 다루고 있다. 11장은 CI(Continuous Integration)/CD(Continuous
Delivery)를 위해 깃허브 액션과 ArgoCD를 설명하고 있고, 12장은 쿠버네티스 클러스터 모니터링을 위한 도구로 메트릭 서버, 프로메테우스, 그라파나, 로키를 간략하게 설명하고 있다.
여러 학습 도서를 읽어 보았지만 개인적으로 이번 도서는
실습하면서 에러가 났을 때 원인을 파악하기가 유독 힘들었던 것같다. 에러의 대부분 원인은 타이핑 실수로
인한 오탈자로 귀결되었는데, 인터넷에서 유사 오류 사례와 해결방법을 찾기가 쉽지 않았던 것같다. 아울러 도커와 쿠버네티스를 처음 따라하다 보니 중간에 스크립트를 놓치는 실수가 있진 않았는지 신경이 많이 쓰였던
것같다. 직접 코드를 따라 타이핑하는 것이 내재화시키는데 더 도움이 된다고 생각하지만, 결국에는 타이핑 실수로 인한 오류가 많아져 저자의 깃허브에서 소스코드를 가져와 실습하는 것도 괜찮았겠다는 생각이
든다. 책에도 나와 있지만 사용되는 소스 및 첨부파일은 다음의 주소에서 참고할 수 있다. https://github.com/losskastsu/DockerKubernetes
오픈소스를 포함한 요즘 응용프로그램의 특성중 하나로 빈번한
기능 개선을 들 수 있겠다. 그래서 책에 포함된 실습 시점은 작년말 정도로 보이고, 책을 보고 있는 시점이 5개월 정도 지났기 때문에 버추얼박스, 우분투, 도커, 파이썬
등 실습에 필요한 거의 모든 응용프로그램의 버전이 변경되었다고 보면 된다. 그래서 버전 변경으로 인해
책의 실습 내용과 달라지는 부분이 있을까봐 걱정했는데, 책에서 명시된 버전을 꼭 지키거나 최근 버전을
사용해 실습해도 결과에는 크게 문제는 없었던 것같다.
실습 진행에 필요한 기본적인 개념 설명을 간략하게 하고 있고, 다음의 pyyaml 설치에 앞서 파이썬가상환경인 pyenv의 python 버전에서 보이듯이 작년말경에 실습이 진행된
걸 알 수 있다.
도커 부분은 실습에 크게 무리가 없었는데, 쿠버네티스 부분부터는 대부분 타이핑 실수였지만 실습하면서 오류도 발생하고 원인을 찾는데도 시간이 많이 걸렸다. 저자도 쿠버네티스 시작 부분에서 도커보다 규모가 크기 때문에 처음에는 다소 어렵게 느껴질 수 있다면서 한 번에
전체를 이해한다는 느낌보다는 조금씩 익혀 나가는 것이 더 도움이 될 것이라고 안내하고 있다.
나름대로 쿠버네티스 실습중에 발생한 오류를 해결했던 경험을 적고자
한다.
쿠버네티스 실습을 위해 마스터노드 1개, 워커노드 2개가 필요하므로 기존 가상머신을 복제해서 2개의 가상머신을 더 만들어야 했다. 복제한 후에 IP 주소가 동일하기 때문에 새로 만든 가상머신의 IP 주소를 책에서
안내하는대로 바꿔주었다. 책에서는 /etc/netplan/00-installer-config.yaml
파일을 각각의 가상머신에서 수정해서 가상머신2는 10.0.2.5/24로
가상머신3은 10.0.2.6/24로 변경하라고 되어 있다. 그리고, DNS설정도 각각의 가상머신에 맞게 10.0.2.4 myserver01, 10.0.2.5 myserver02, 10.0.2.6 myserver03으로
설정하였다. 그런데 가상머신1에서 가상머신2나 가상머신3으로 ping과
ssh 연결을 시도했을 때 타임아웃나고 동작하지 않았다. /ect/netplan/
디렉토리에 00-installer-config.yaml외에 50-cloud-init.yaml 파일도 있었는데 50-cloud-init.yaml
파일에서 IP를 dhcp로 설정하고, 00-installer-config.yaml에서 정적으로 IP를
설정하도록 되어 있어 결과적으로 가상머신의 enp0s3 어댑터에 IP가
10.0.2.4와 10.0.2.5 2개가 설정되어 있었다(가상머신2의 경우). 그래서
임의로 50-cloud-init.yaml파일을 50-colud-init.yaml.bak로
이름을 바꿔 실행되지 않게 하니 가상머신의 enp0s3 어댑터에 IP가
유일하게 1개만 설정되고, 가상머신간 ping과 ssh 연결이 정상적으로 수행되었다. 실습에 사용한 우분투가 최신 버전인 24.04 LTS이고 책에서
사용한 버전은 22.04.3 LTS인데, 확인해 본 건 아니지만
우분투 버전 차이로 네트워크 환경 관련 파일이 달라서 발생했던 문제가 아닌가 싶다.
12장 쿠버네티스 클러스터 모니터링 관련해서 쿠버네티스 환경에서
로그를 수집, 저장, 조회하기 위한 오픈소스 로깅 시스템인
로키(Loki) 설정 관련해서도 문제가 발생했다. 해결하지는
못했다. 프로메테우스 스택(prometheus-stack)으로
같이 설치된 시각화도구인 그라파나(grafana)를 통해 데이터소스 연결하는 방식으로 로키 파드에 접속하는
방식으로 되어 있다. 책의 실습 과정에서 놓친 부분은 없는데 그라파나에서 로키 파드에 데이터소스 접속할
때 에러가 나고 접속이 되지 않아 로그가 쌓이는 모습은 볼 수 없었다. 인터넷을 검색해 보니 영어로
그라파나와 로키 버전에 따라 접속이 되지 않는 사례가 있었는데 해결하지 못했다. 실습에 사용한 Prometheus-stack 버전은 58.7.0이고 로키 버전은 2.10.2이다. 책에서 사용된 prometheus-stack
버전은 54.0.1이고, 로키 버전은 2.9.11이다. 원인을 알 수가 없어 버전 차이로 인한 문제인가 하고
생각하고 있다.
실습이 포함된 IT 기술도서를
읽을때마다 느끼는 거지만 도커와 쿠버네티스의 기본적인 사항을 전반적으로 서술하고 있다고 생각한다. 차후에
실무에서 활용할 일이 생긴다면 꺼내서 기본적인 내용을 참고하기에 좋은 도서라고 생각한다.
"한빛미디어 <나는 리뷰어다>
활동을 위해서 책을 제공받아 작성된 서평입니다."