길벗·이지톡

도서 IT전문서/IT입문서 임베디드/시스템/네트워크

만들고, 망가뜨리고, 고치며 체득하는 운영 역량과 실무 감각

[간단한 책 소개]

클러스터 장애, OOMKilled, kubectl 디버깅까지, 실제 문제 해결 과정을 경험하자.

만들고, 망가뜨리고, 고치며 체득하는 운영 실무 감각 & 문제 해결 능력!

풍부한 만화와 도해 & 실습 위주의 접근과 단계적 구성으로 쉽게 실전 감각을 키우자!


 

쿠버네티스는 현대 IT 인프라의 핵심 기술로, 애플리케이션을 안정적으로 운영할 수 있는 강력한 도구다. 그러나 안정적이라는 특징 때문에 트러블슈팅 경험을 쌓기가 쉽지 않다. 이 책에서는 고장난 쿠버네티스를 고치면서, 자연스럽게 문제를 마주하고 해결하는 과정을 경험한다. 컨테이너를 만들고, 클러스터에 애플리케이션을 배포한 뒤 장애를 일으켜 복구하는 시나리오를 반복하면서 쿠버네티스의 동작 원리를 몸으로 익힌다. OOMKilled 오류나 서비스 연결 문제처럼 현업에서 자주 발생하는 상황을 그대로 재현해 보며, 실제 운영에 필요한 감각을 키운다. 단순한 구축과 운영을 넘어 시스템 내부 상태를 들여다보고 한 단계 높은 운영 역량을 갖추기 위해 ‘관측 가능성’과 ‘모니터링’처럼 문제를 조기에 감지할 수 있는 도구와 방법도 설명한다. 풍부한 만화와 도해로 난해한 개념을 시각적으로 풀어내고 실습으로 이론과 실제를 긴밀히 연결하여, 쿠버네티스의 원리를 깊이 이해하고 실제 문제 해결 능력을 체득할 수 있게 구성했다.

 

목차

1부 쿠버네티스 만들어 보기


1장 도커 컨테이너 만들어 보기

1.1 쿠버네티스는 왜 도커가 필요한가?

1.2 도커 알아보기

____1.2.1 도커란?

____1.2.2 컨테이너란?

____1.2.3 왜 컨테이너인가?

____1.2.4 그래서 도커란?

____1.2.5 준비: 도커 환경 만들기

____1.2.6 컨테이너 실행하기

____1.2.7 컨테이너의 틀이 되는 도커 이미지

____1.2.8 컨테이너 이미지의 설계서인 Dockerfile

____1.2.9 도커 이미지 빌드하기

____1.2.10 직접 만든 도커 이미지로 컨테이너 실행하기

____1.2.11 도커 이미지 공개하기

____1.2.12 Dockerfile 작성 팁

1.3 [만들기] 나만의 http server 컨테이너 실행하기

 

 

2장 쿠버네티스 클러스터 만들어 보기

2.1 쿠버네티스란?

____2.1.1 컨테이너를 쉽게 만들고 파기할 수 있게 된 이후의 상황

____2.1.2 쿠버네티스의 특징

____2.1.3 쿠버네티스 아키텍처 개요

____2.1.4 다양한 쿠버네티스 클러스터 구축 방법

2.2 [만들고 고치기] 쿠버네티스 클러스터 만들고 지우기

 

 

3장 전체적인 설명

3.1 학습 흐름

3.2 사용하는 애플리케이션에 대해

 

 

4장 쿠버네티스 클러스터 위에 애플리케이션 만들기

4.1 쿠버네티스 클러스터 위에 애플리케이션 실행하기

____4.1.1 리소스의 사양을 담은 매니페스트

____4.1.2 컨테이너를 실행하기 위한 최소 구성 리소스: Pod

____4.1.3 리소스가 만들어지는 공간: 네임스페이스

4.2 [만들기] Pod 만들기

____4.2.1 준비: Pod를 만들기 전에 쿠버네티스 클러스터가 준비되었는지 확인하기

____4.2.2 매니페스트 사용해 보기

____4.2.3 매니페스트를 쿠버네티스 클러스터에 적용하기

 

 

2부 애플리케이션을 망가뜨리면서 배우는 쿠버네티스


5장 트러블 슈팅 가이드와 kubectl 명령어 사용법

5.1 트러블 슈팅 가이드

____5.1.1 트러블 슈팅에 도움이 되는 Pod의 STATUS 컬럼

5.2 kubectl로 현황 파악하기

____5.2.1 리소스 확인하기: kubectl get

____5.2.2 리소스 상세 정보 출력하기: kubectl describe

____5.2.3 컨테이너의 로그 출력하기: kubectl logs

5.3 kubectl 명령어로 상세 정보 출력하기

____5.3.1 디버그용 사이드카 컨테이너 시작하기: kubectl debug

____5.3.2 컨테이너를 그 자리에서 실행하기 kubectl run

____5.3.3 컨테이너에 로그인하기: kubectl exec

____5.3.4 포트 포워딩으로 애플리케이션에 접속하기

5.4 장애를 해결하기 위한 kubectl 명령어

____5.4.1 매니페스트를 그 자리에서 편집하기: kubectl edit

____5.4.2 리소스를 삭제하기: kubectl delete

5.5 터미널을 더 편리하게 사용하기 위한 팁

____5.5.1 자동 완성 설정하기

____5.5.2 kubectl의 별명 설정하기

____5.5.3 리소스 이름 축약하기

____5.5.4 kubectl 작업을 도와주는 도구

____5.5.5 kubectl 플러그인 사용해 보기

5.6 [고치기] 디버그해 보기

____5.6.1 준비: Pod가 실행 중인 것을 확인하기

____5.6.2 애플리케이션 망가뜨리기

____5.6.3 애플리케이션 조사하기

 

6장 쿠버네티스 리소스 만들고 망가뜨리기

6.1 Pod의 라이프사이클 알기

6.2 Pod의 다중화를 위한 ReplicaSet과 Deployment

____6.2.1 ReplicaSet

____6.2.2 Deployment

____6.2.3 [만들고 고치기] Deployment를 만들고 망가뜨리기

6.3 Pod로의 접속을 도와주는 Service

____6.3.1 Service의 Type 알기

____6.3.2 Service를 사용한 DNS

____6.3.3 [망가뜨리기] Service 망가뜨리기

6.4 Pod의 외부에서 정보를 읽어들이는 ConfigMap

____6.4.1 환경 변수로 읽어들이기

____6.4.2 볼륨을 통해 설정 파일 읽어들이기

____6.4.3 [망가뜨리기] ConfigMap 설정으로 인한 장애!

6.5 기밀 데이터를 다루기 위한 Secret

____6.5.1 환경 변수로 읽어들이기

____6.5.2 볼륨을 사용해서 컨테이너의 설정 파일 읽어들이기

6.6 한 번만 실행하는 태스크를 위한 Job

6.7 Job을 정기적으로 실행하는 CronJob

 

 

7장 무상태 애플리케이션을 안전하게 만들기

7.1 애플리케이션의 헬스 체크

____7.1.1 Readiness probe

____7.1.2 Liveness probe

____7.1.3 Startup probe

____7.1.4 [망가뜨리기] State는 Running이지만…

7.2 애플리케이션에 적절한 리소스 지정하기

____7.2.1 Resource requests로 컨테이너의 리소스 사용량 요구하기

____7.2.2 Resource limits로 컨테이너의 리소스 사용량 제어하기

____7.2.3 리소스의 단위

____7.2.4 Pod의 Quality of Service(QoS) 클래스

____7.2.5 [망가뜨리기] 또 Pod가 고장났다

7.3 Pod 스케줄링의 편리한 기능 이해하기

____7.3.1 Node selector로 노드 지정하기

____7.3.2 Affinity와 Anti-affinity로 Pod 스케줄링을 유연하게 지정하기

____7.3.3 Pod 분산을 위한 Pod Topology Spread Constraints 설정하기

____7.3.4 Taint와 Toleration

____7.3.5 Tips: Pod Priority와 Preemption

____7.3.6 [망가뜨리기] Pod 스케줄링 실패

7.4 애플리케이션 스케일링하기

____7.4.1 수평 스케일링

____7.4.2 수직 스케일링

7.5 노드 정지에 대비하기

____7.5.1 애플리케이션의 가용성을 보증하는 PodDisruptionBudget(PDB)

 

 

8장 전체 복습: 애플리케이션 고치기

8.1 준비 환경 만들기

8.2 애플리케이션 환경 구축하기

8.3 애플리케이션 업데이트하기

8.4 정상 상태 확인하기

8.5 원인 조사하기

 

 

3부 고장나도 움직이는 쿠버네티스


9장 쿠버네티스의 구조와 아키텍처 이해하기

9.1 쿠버네티스의 아키텍처에 대하여

9.2 아키텍처 개요

9.3 쿠버네티스 클러스터의 핵심인 컨트롤 플레인

9.4 애플리케이션 실행을 담당하는 워커 노드

9.5 쿠버네티스 클러스터에 접근하기 위한 CLI: kubectl

9.6 kubectl apply 이후 컨테이너가 실행될 때까지의 흐름

9.7 [만들고, 망가뜨리기] 쿠버네티스는 부서지지 않는다?

____9.7.1 준비: 클러스터 구축하기

____9.7.2 hello-server 실행하기

____9.7.3 컨트롤 플레인 정지하기

9.8 쿠버네티스를 확장하는 방법

 

 

10장 쿠버네티스 개발 워크플로 이해하기

10.1 쿠버네티스에 배포하기

____10.1.1 Push형 배포 방법: CIOps

____10.1.2 Pull형 배포 방법: GitOps

10.2 쿠버네티스 매니페스트 관리

____10.2.1 Helm

____10.2.2 Jsonnet

____10.2.3 자체 템플릿

____10.2.4 Kustomize

____10.2.5 [만들기] Kustomize로 매니페스트를 이해하기 쉽게 만들기

 

 

11장 옵저버빌리티와 모니터링 다루기

11.1 관측 가능성에 대해 알아보자

____11.1.1 정보 수집하기: 로그

____11.1.2 측정값 처리하기: 메트릭스

____11.1.3 통신 추적하기: 트레이스

11.2 모니터링에 대해 알아보기

____11.2.1 정보를 시각화하기: 대시보드

____11.2.2 이상 경보: 알림

11.3 [만들기] 모니터링 시스템 구축하기

____11.3.1 Prometheus/Grafana 설치하기

____11.3.2 메트릭스 수집 애플리케이션 실행하기

____11.3.3 메트릭스 수집을 위한 설정

____11.3.4 Prometheus에 접속하기

____11.3.5 Grafana에 접속하기

 

 

12장 이 책 이후의 학습에 대하여

12.1 자격증 취득하기

12.2 쿠버네티스에서의 애플리케이션 운영 지식 넓히기

12.3 쿠버네티스의 장애 대응에 강해지기

12.4 쿠버네티스 커미터 되기

12.5 실력을 향상시키는 방법

____12.5.1 공식 문서 읽기

____12.5.2 내부 구현 코드 읽기

____12.5.3 책으로 쿠버네티스에 대한 지식 넓히기

____12.5.4 직접 쿠버네티스 클러스터 구축하기

____12.5.5 커스텀 컨트롤러 만들기

 

더보기접기

저자&기여자

ㆍ지은이 타카하시 아오이

소개
대형 제조업체에서 소프트웨어 엔지니어로 근무한 후, IT 기업의 SRE로 옮겼다. 기술 동인지 『만화로 시작하는 쿠버네티스』 등을 집필했으며, 사람들에게 쿠버네티스 관련 기술을 어떻게 쉽게 전할 수 있을지 매일 고민하고 있다. 취미는 만화 읽기와 그리기, 음악 듣기와 맥주 마시기. (X: @_a0i)

ㆍ옮긴이 이동규

소개
도쿄에 살면서 소프트웨어 엔지니어로 일하고 있다. 컴퓨터학을 석사까지 공부하고 개발자와 데이터 엔지니어로 일한 지 어느덧 10년이 넘었다. 번역하며 공부하는 것이 즐거워 꾸준히 번역 활동을 하고 있다. 지은 책으로는 『함수형 언어 산책』이 있으며, 옮긴 책으로는 『15단계로 배우는 도커와 쿠버네티스』(제이펍, 2020), 『모두를 위한 리눅스 프로그래밍』(제이펍, 2018), 『처음 만나는 파이썬』(제이펍, 2017), 『자바스크립트와 Node.js를 이용한 웹 크롤링 테크닉』(제이펍, 2016), 『모두의 리눅스』(길벗, 2021), 『그림으로 이해하는 알고리즘』(길벗, 2024) 등이 있다.

ㆍ감수 이가라시 아야

소개
Preferred Networks, Inc.에서 쿠버네티스를 기반으로 한 머신러닝 인프라 개발 및 운영을 담당하고 있다. 이전에는 통신사에서 OpenStack 기반 클라우드 서비스 인프라 개발, Yahoo! Japan을 위한 쿠버네티스 인프라 연구 개발, 미국 스타트업에서 쿠버네티스 비용 최적화 업무를 수행했다. 쿠버네티스 관련 OSS 개발과 쿠버네티스 Meetup Tokyo의 공동 운영을 맡고 있으며, 저서로는 『리눅스 부트캠프(기술평론사)』, 『도커/쿠버네티스 개발·운용을 위한 보안 실천 가이드(마이나비출판)』, 『모두의 도커 쿠버네티스(기술평론사)』, 『쿠버네티스 실천 입문(기술평론사)』이 있다. (X: @Ladicle)

보도자료

저작권 안내

모든 자료는 저작권법의 보호를 받는 저작물로, 허락 없이 편집하거나 다른 매체에 옮겨 실을 수 없습니다.
인공지능(AI) 기술 또는 시스템을 훈련하기 위해 자료의 전체 내용은 물론 일부도 사용하는 것을 금지합니다.

All materials are protected by copyright law and may not be edited or reproduced in other media without permission.
It is prohibited to use all or part of the materials, including for training artificial intelligence (AI) technologies or systems, without authorization.

연관 프로그램

아래 프로그램은 길벗출판사가 제공하는 것이 아닙니다.
무료로 사용할 수 있는 정보를 안내해 드리니, 지원이 필요하면 해당 프로그렘 제작사로 문의해 주세요.