쿠버네티스 시작하기 [인프라 세상 속으로]
- 원서명Kubernetes: Up and Running: Dive into the Future of Infrastructure (ISBN 9781491935675)
- 지은이켈시 하이타워(Kelsey Hightower), 조 베다(Joe Beda), 브렌던 번스(Brendan Burns)
- 옮긴이김경호, 차연철, 차원호
- ISBN : 9791161751733
- 20,000원
- 2018년 06월 20일 펴냄
- 페이퍼백 | 272쪽 | 188*235mm
- 시리즈 : 소프트웨어 아키텍처
판매처
개정판책 소개
소스 코드 파일은 여기에서 내려 받으실 수 있습니다.
요약
구글은 일주일에 20억 개의 애플리케이션 컨테이너를 배포한다. 어떻게 이러한 일이 가능할까? 구글은 클라우드에서 확장 가능한 분산 시스템을 구축, 배포, 유지 관리하는 작업을 근본적으로 단순화하는 쿠버네티스 프로젝트를 공개했다. 쿠버네티스 프로젝트는 내부적으로 Borg 시스템을 기반으로 오픈소스 클러스터의 조정자 역할을 한다. 이 실용적인 가이드는 쿠버네티스와 컨테이너 기술이 어떻게 새로운 수준의 속도, 민첩성, 신뢰성, 효율성을 달성하는지 보여준다.
이 책에서 다루는 내용
█ 쿠버네티스가 다루는 분산 시스템 문제에 대한 탐구
█ 도커 같은 컨테이너를 사용해 컨테이너화된 애플리케이션 개발
█ 도커 이미지 포맷과 컨테이너 런타임을 사용해 쿠버네티스에서 컨테이너 생성 및 실행
█ 운영 환경에서 애플리케이션을 실행하는 데 필수적인 핵심 쿠버네티스 개념 API 객체 탐구
█ 다운타임과 오류 없이 새로운 소프트웨어 버전을 안전하게 배포
█ 쿠버네티스에서 실제 애플리케이션을 개발하고 배포하는 방법에 대한 예제 참조
이 책의 대상 독자
분산 시스템에 입문하려는 사람이든 이미 클라우드 기반 시스템을 개발해본 경험이 있는 사람이든 관계없이, 컨테이너와 쿠버네티스는 모두에게 새로운 수준의 속도, 민첩성, 신뢰성, 효율성을 가져다 줄 것이다. 이 책은 쿠버네티스 클러스터 오케스트레이터(Orchestrator) 및 그 도구와 API를 사용해 분산 애플리케이션의 개발, 배포, 유지 관리를 향상하는 방법에 관한 지침을 전달한다. 쿠버네티스에 대한 경험이 없는 상태에서 이 책을 최대한 활용하려면 서버 기반 애플리케이션의 개발과 배포에 대한 지식을 갖추고 있어야 한다. 로드밸런서(Load Balancer)나 네트워크 스토리지(Network Storage) 같은 용어는 필수는 아니지만 익숙하다면 도움이 된다. 마찬가지로 리눅스, 리눅스 컨테이너, 도커(Docker)에 대한 이해 역시 필수는 아니지만 알고 있다면 이 책을 좀 더 효율적으로 이용할 수 있다
이 책의 구성
1장은 쿠버네티스의 장점을 개념적인 상위 수준에서 설명한다. 쿠버네티스를 처음 접하는 경우 이 책의 나머지 부분을 모두 읽어야 하는 이유에 대해서도 알 수 있다.
2장은 컨테이너와 컨테이너 애플리케이션에 대해 소개한다. 도커 관련 경험이 없는 경우라면 도커에 대한 유용한 소개를 얻게 될 것이며, 이미 도커를 경험해봤다면 복습하는 기회가 될 것이다.
3장은 쿠버네티스 배포에 대해 다룬다. 이 책의 대부분에서 쿠버네티스 사용에 대해 설명하지만 사용 전에 클러스터를 동작시켜야 한다. 운영 환경에서 클러스터를 동작시키는 것은 이 책의 범위를 벗어나지만, 쿠버네티스 사용에 대한 이해를 높이고자 이 장에서는 클러스터를 생성하는 쉬운 방법 몇 가지를 보여줄 것이다.
5장을 시작으로 쿠버네티스를 사용해 애플리케이션을 배포하는 방법을 자세히 다룬다. 5장에서는 포드(Pod), 6장에서는 라벨(Label)과 애노테이션(Annotation), 7장에서는 서비스(Service), 8장에서는 레플리카세트(ReplicaSet)에 대해 각각 다룬다. 방금 소개한 개념들은 쿠버네티스에서 서비스 배포의 핵심적인 기본 사항이다.
이후 좀 더 쿠버네티스에 특화된 주제를 다룬다. 9장에서는 데몬세트(DeamonSet), 10장에서는 잡(Job), 11장에서는 ConfigMap과 시크릿(Secret)을 다룬다. 이 개념들은 많은 운영 환경 애플리케이션에서 핵심 사항이다. 그렇지만 이제 막 쿠버네티스를 배우는 중이라면 우선 이 부분은 건너뛰고 좀 더 많은 경험과 전문 지식을 쌓은 후 다시 학습할 것을 권장한다.
12장에서는 애플리케이션의 생명주기와 밀접한 관련이 있는 디플로이먼트(Deployment)에 대해 다루며, 13장에서는 쿠버네티스로 스토리지(Storage) 연계에 대해 알아본다. 마지막으로 쿠버네티스를 사용해 실제 애플리케이션을 개발하고 배포하는 예제로 이 책을 마무리하고자 한다.
목차
목차
- 1장. 쿠버네티스 소개
- 속도
- 불변성의 가치
- 선언형 설정
- 자가 치유 시스템
- 서비스와 팀의 확장성
- 분리
- 애플리케이션과 클러스터를 위한 쉬운 확장
- 마이크로서비스로 개발 팀 확장
- 일관성과 확장성에 대한 고려사항 분리
- 인프라 추상화
- 효율성
- 요약
- 속도
- 2장. 컨테이너 생성과 실행
- 컨테이너 이미지
- 도커 이미지 포맷
- 도커를 활용한 애플리케이션 이미지 생성
- 도커 파일
- 이미지 보안
- 이미지 크기 최적화
- 원격 레지스트리에 이미지 저장
- 도커 컨테이너 런타임
- 도커로 컨테이너 실행
- kuard 애플리케이션 탐색
- 자원 사용량 제한
- 정리
- 요약
- 컨테이너 이미지
- 3장. 쿠버네티스 클러스터 배포
- 공용 클라우드 제공자 서비스에 쿠버네티스 설치하기
- 구글 컨테이너 서비스
- 애저 컨테이너 서비스에 쿠버네티스 설치하기
- 아마존 AWS에 쿠버네티스 설치하기
- minikube를 사용해 로컬에 쿠버네티스 설치하기
- 라즈베리파이에서 쿠버네티스 운영
- 쿠버네티스 클라이언트
- 클러스터 상태 확인
- 쿠버네티스 워커 노드 목록 조회
- 클러스터 구성요소
- 쿠버네티스 프록시
- 쿠버네티스 DNS
- 쿠버네티스 UI
- 요약
- 공용 클라우드 제공자 서비스에 쿠버네티스 설치하기
- 4장. 일반적인 kubectl 명령
- 네임스페이스
- 컨텍스트
- 쿠버네티스 API 객체 보기
- 쿠버네티스 객체의 생성, 업데이트, 삭제
- 라벨과 애노테이션
- 디버깅 명령
- 요약
- 5장. 포드
- 쿠버네티스에서의 포드
- 포드에 대한 고찰
- 포드 매니페스트
- 포드 생성
- 포드 매니페스트 생성
- 포드 실행
- 포드 목록
- 포드 세부사항
- 포드 삭제
- 포드 접속
- 포트 포워딩 사용
- 로그에서 더 많은 정보 확인
- 컨테이너에서 exec로 명령 실행
- 컨테이너 내외부로의 파일 복사
- 상태 검사
- 활성 프로브
- 준비 프로브
- 상태 검사 유형
- 자원 관리
- 자원 요청: 최소 필요 자원
- limits로 자원 사용 제한
- 볼륨에서 데이터 유지
- 포드로 볼륨 사용
- 포드에서 볼륨을 사용하는 다른 방법
- 원격 디스크를 사용한 영구 데이터
- 종합
- 요약
- 6장. 라벨과 애노테이션
- 라벨
- 라벨 적용
- 라벨 수정
- 라벨 선택기
- API 객체의 라벨 선택기
- 애노테이션
- 애노테이션 정의
- 정리
- 요약
- 라벨
- 7장. 서비스 탐색
- 서비스 탐색
- 서비스 객체
- 서비스 DNS
- 준비 상태 검사
- 클러스터 외부로의 서비스
- 클라우드 연계
- 고급 세부 정보
- 엔드포인트
- 수동 서비스 탐색
- kube-proxy와 클러스터 IP
- 클러스터 IP 환경 변수
- 정리
- 요약
- 8장. 레플리카세트
- 조정 루프
- 포드와 레플리카세트 관계
- 기존 컨테이너 수용
- 컨테이너 격리
- 레플리카세트 설계
- 레플리카세트 명세
- 포드 템플릿
- 라벨
- 레플리카세트 생성
- 레플리카세트 검사
- 포드에서 레플리카세트 확인
- 레플리카세트에 대한 포드 집합 찾기
- 레플리카세트 확장
- kubectl scale을 사용한 명령형 확장
- kubectl apply를 사용한 선언형 확장
- 레플리카세트 자동 확장
- 레플리카세트 삭제
- 요약
- 9장. 데몬세트
- 데몬세트 스케줄러
- 데몬세트 생성
- 특정 노드로 데몬세트 제한
- 노드에 라벨 추가
- 노드 선택기
- 데몬세트 업데이트
- 개별 노드를 삭제해 데몬세트 업데이트
- 데몬세트 롤링 업데이트
- 데몬세트 삭제
- 요약
- 10장. 잡
- 잡 객체
- 잡 패턴
- 원샷
- 병렬성
- 작업 대기열
- 요약
- 11장. ConfigMap과 시크릿
- ConfigMap
- ConfigMap 생성
- ConfigMap 사용
- 시크릿
- 시크릿 생성
- 시크릿 사용
- 사설 도커 레지스트리
- 명명 규칙
- ConfigMap과 시크릿 관리
- 목록 조회
- 생성
- 업데이트
- 요약
- ConfigMap
- 12장. 디플로이먼트
- 디플로이먼트와의 첫 만남
- 디플로이먼트 내부
- 디플로이먼트 생성
- 디플로이먼트 관리
- 디플로이먼트 업데이트
- 디플로이먼트 확장
- 컨테이너 이미지 업데이트
- 롤아웃 이력
- 디플로이먼트 전략
- 재생성 전략
- 롤링업데이트 전략
- 서비스 안정을 위한 느린 롤아웃
- 디플로이먼트 삭제
- 요약
- 디플로이먼트와의 첫 만남
- 13장. 스토리지 솔루션과 쿠버네티스 연계
- 외부 서비스 가져오기
- 선택기 비사용 서비스
- 외부 서비스의 제약사항: 상태 검사
- 신뢰 가능한 싱글톤 운영
- MySQL 싱글톤 운영
- 동적 볼륨 프로비저닝
- 스테이트풀세트를 사용한 쿠버네티스 기반 스토리지
- 스테이트풀세트 속성
- 스테이트풀세트를 사용한 수동 복제 몽고DB
- 몽고DB 클러스터 자동 생성
- 영구 볼륨과 스테이트풀세트
- 마지막 단계: 준비 프로브
- 요약
- 외부 서비스 가져오기
- 14장. 실제 애플리케이션 배포
- Parse
- 사전 준비
- Parse 서버 구축
- Parse 서버 배포
- Parse 테스트
- Ghost
- Ghost 구성
- Ghost + MySQL
- Redis
- Redis 구성
- Redis 서비스 생성
- Redis 배포
- Redis 클러스터 사용
- 요약
- Parse
- 부록 A. 라즈베리파이 쿠버네티스 클러스터 구축
- 부품 목록
- 이미지 굽기
- 첫 번째 부팅: 마스터
- 네트워크 설정
- 쿠버네티스 설치
- 클러스터 설정