쿠버네티스 마스터 2/e [강력한 쿠버네티스를 이용한 컨테이너 관리]
- 원서명Mastering Kubernetes: Master the art of container management by using the power of Kubernetes, 2nd Edition (ISBN 9781788999786)
- 지은이기기 사이판(Gigi Sayfan)
- 옮긴이김경호, 배동환, 강용제, 차연철, 차원호, 이형석
- ISBN : 9791161751986
- 36,000원
- 2018년 07월 31일 펴냄
- 페이퍼백 | 584쪽 | 185*235mm
- 시리즈 : acorn+PACKT, 클라우드 컴퓨팅
책 소개
본문에 쓰인 컬러 이미지는 여기에서 내려 받으세요.
요약
쿠버네티스 아키텍처의 원리 및 쿠버네티스를 통해 실행할 수 있는 다양한 서비스를 설명한다. 개발자와 데브옵스(DevOps) 엔지니어, 그리고 컨테이너 오케스트레이션을 사용해 복잡한 분산 시스템을 개발하고 진화시켜야 하는 개발자를 대상으로 쿠버네티스가 제공하는 모든 기능과 서비스를 다룬다. 또한 실제 사례를 통해 다양한 환경에서 고가용성 쿠버네티스를 구축하고 모니터링하며 문제를 해결할 수 있는 방법을 제시한다.
이 책을 통해 쿠버네티스의 구성 방법과 특정 자원의 적절한 사용 시기, 최상의 효율로 클러스터를 구현 및 구성하는 방법에 대해 깊이 있는 지식을 얻을 수 있다.
2판에서는 쿠버네티스 1.10으로 내용이 업그레이드되면서 몇 가지 기술은 사라지거나 통합됐고, 새로운 기능도 많이 생겨났다. 1판에 이어 새롭게 추가된 다양한 기능을 익혀서 고급 쿠버네티스 사용자가 될 수 있다.
이 책에서 다루는 내용
█ 장기 운영을 위한 강력한 쿠버네티스 클러스터 설계
█ GCE, AWS, 애저, 베어 메탈 환경에서 쿠버네티스 실행의 이점
█ 클러스터 페더레이션의 자율성과 옵션에 대한 ID 모델 탐색
█ 쿠버네티스 클러스터 모니터링과 문제 해결 및 고가용성 쿠버네티스 실행
█ 사용자 정의 리소스를 정의, 생성, 구성 및 리소스로 쿠버네티스 클러스터의 기능 확장
█ 컨테이너 환경에서 복잡한 상태저장 애플리케이션을 실행하는 기술
█ 표준 패키지로 애플리케이션 제공
이 책의 대상 독자
쿠버네티스에 대한 중급 지식을 갖고 있으면서 고급 기능을 익히기를 원하는 시스템 관리자와 개발자를 대상으로 한다. 기본적인 네트워크 지식도 필요하다.
이 책의 구성
1장, ‘쿠버네티스 아키텍처의 이해’에서는 쿠버네티스 시스템을 설계하게 된 동기와 구조를 살펴본다.
2장, ‘쿠버네티스 클러스터 생성’에서는 쿠버네티스 클러스터를 만드는 데 필요한 다양한 옵션을 살펴본 후 도구를 이용해 클러스터를 여러 개 만들어 검사한다.
3장, ‘모니터링, 로깅, 문제 해결’에서는 쿠버네티스 클러스터에서 모니터링 및 측정을 이해하고 직접 설정해봄으로써 일상 업무에서 관리자가 직면하는 일반적인 문제를 식별하고 해결할 수 있다.
4장, ‘고가용성과 신뢰성’에서는 HA에서 쿠버네티스를 설계하고 실시간 클러스터 업그레이드를 수행하는 데 도움이 된다. 대규모 운영 환경을 위한 쿠버네티스 아키텍처를 설계하는 방법을 배운다.
5장, ‘쿠버네티스 보안, 제한, 계정 설정’에서는 쿠버네티스 보안과 제한, AAA통합, 네임스페이스, 서비스 계정 구성 및 실습을 수행한다.
6장, ‘중요 쿠버네티스 리소스 사용하기’에서는 운영 환경에서 최신 쿠버네티스 리소스를 적합한 곳에 알맞게 사용하는 방법을 살펴본다. 또한 이런 객체를 정의, 버전 지정, 전달하는 방법을 배운다.
7장, ‘쿠버네티스 스토리지 관리하기’에서는 영구 볼륨에 대한 쿠버네티스 스토리지 드라이버를 이해하고 사용할 수 있다. Flocker가 작동 방법과 기존 엔터프라이즈 스토리지 (iSCSI/NFS/FC)를 쿠버네티스에 통합하는 방법에 대해 알아본다.
8장, ‘쿠버네티스를 사용해 상태저장 애플리케이션 실행’에서는 운영 작업부하에 적합한 단일 상태 저장 애플리케이션을 쿠버네티스에서 실행되는 마이크로서비스로 변환하는 방법을 배운다. 또한 쿠버네티스 1.3 이전에 PetSet 리소스를 사용할지 여부에 관계없이 이 작업을 수행할 수 있는 여러 가지 방법을 배운다. 사용 가능한 문서 리소스의 공백을 메울 수 있다.
9장, ‘롤링 업데이트, 확장성, 할당량’에서는 롤링 업데이트와 수평적 포드 자동 스케일링이 어떻게 작동하는지 설명한다. 운영 환경에서 스케일링 테스트를 사용자 정의하고 실행하는 방법을 알아본다. CPU와 메모리의 리소스 할당량을 사용할 수 있다.
10장, ‘쿠버네티스 고급 네트워크’에서는 서로 다른 배포판에 적합한 네트워킹 플러그인을 결정하는 데 도움이 되며 다양한 네트워크 플러그인을 사용해 쿠버네티스를 배포하는 방법을 배운다. Iptables 로드밸런싱과 이를 확장하는 방법을 살펴본다.
11장, ‘여러 클라우드와 클러스터 페더레이션에서 쿠버네티스 실행하기’에서는 쿠버네티스를 실행하면서 쿠버네티스 클러스터를 운영 환경에 배포할 때 사용되는 다양한 옵션을 살펴본다. 아마존과 구글 클라우드 엔진(Google Cloud Engine)에서 클러스터를 프로비저닝하고 실행, 자동화하는 방법에 대한 지침이 제공된다. 또한 지리적으로 연합된 쿠버네티스 클러스터를 구축하고 클러스터에서 제공하는 작업부하를 프로비저닝, 실행 및 자동화하는 방법에 대한 지침이 제공된다.
12장, ‘쿠버네티스 커스터마이징: API와 플러그인’에서는 타사 리소스를 구현하고 쿠버네티스 API를 향상시키는 개념을 이해하며, 기존 환경과 리소스를 통합하는 방법을 보여준다. 스케줄러의 작동 방식과 자체 스케줄링 엔진을 구현하는 방법을 학습한다. 마지막으로 HAProxy 또는 nginx와 같은 공통 서비스를 기반으로 하는 사내 구현을 위한 사용자 지정 외부 로드밸런싱을 구현하는 방법도 배운다.
13장, ‘쿠버네티스 패키지 매니저’에서는 쿠버네티스 애플리케이션을 패키지로 처리하는 방법을 설명한다. Helm Classic으로 시작해 쿠버네티스를 위한 Helm을 살펴보고, 운영 애플리케이션을 위한 패키지를 유지 관리하기 위해 실제로 Helm 저장소에서 패키지를 만들고 업데이트하는 방법을 다룬다. 또한 자신만의 쿠버네티스 패키지를 만들고 Helm 저장소에 저장하는 방법도 설명한다. 저장소에서 클러스터에 이르기까지 쿠버네티스 패키지 용 전달 파이프 라인을 알아본다.
14장, ‘쿠버네티스의 미래’에서는 쿠버네티스의 로드맵과 앞으로 출시될 제품의 기능을 알아보고, 커뮤니티, 생태계, 공유 정신(mindshare) 차원을 포함한 개념 단계부터 현재까지 쿠버네티스의 추진력에 대해 살펴본다.
목차
목차
- 1장. 쿠버네티스 아키텍처 이해
- 쿠버네티스는 무엇인가
- 쿠버네티스가 아닌 것은 무엇인가
- 컨테이너 오케스트레이션 이해
- 실제 머신, 가상 머신, 컨테이너
- 컨테이너의 장점
- 클라우드 컨테이너
- 소 떼 vs 애완동물
- 쿠버네티스 개념
- 클러스터
- 노드
- 마스터
- 포드
- 라벨
- 애노테이션
- 라벨 셀렉터
- 복제 컨트롤러와 복제 세트
- 서비스
- 볼륨
- 스테이트풀세트
- 시크릿
- 이름
- 네임스페이스
- 쿠버네티스 구조 심층 탐구
- 분산 시스템 디자인 패턴
- 쿠버네티스 API
- 리소스 카테고리
- 쿠버네티스 컴포넌트
- 마스터 컴포넌트
- 쿠버네티스 런타임
- 컨테이너 런타임 인터페이스
- 도커
- Rkt
- 하이퍼 컨테이너
- 지속적 통합과 배포(CI/CD)
- CI/CD 파이프라인
- 쿠버네티스를 위한 CI/CD 파이프라인 설계
- 요약
- 2장. 쿠버네티스 클러스터 생성하기
- Minikube를 사용해 단일 노드 클러스터 생성하기
- 작업 준비하기
- 윈도우의 경우
- 맥OS의 경우
- 클러스터 생성하기
- 문제 해결
- 클러스터 확인하기
- 작업하기
- 대시보드로 클러스터 검사하기
- Kubeadm을 사용해 다중 노드 클러스터 생성하기
- 기대치 설정하기
- 준비 사항
- 베이그런트 VM 클러스터 준비하기
- 필요 소프트웨어 설치하기
- 클러스터 생성하기
- 포드 네트워크 설정하기
- 작업자 노드 추가하기
- 클라우드(GCP, AWS, 애저)에서 클러스터 생성하기
- 클라우드 공급자 인터페이스
- 구글 클라우드 플랫폼(GCP)
- 아마존 웹서비스(AWS)
- 애저
- 알리바바 클라우드
- 베어 메탈 클러스터 생성하기
- 베어 메탈 사용 사례
- 베어 메탈 클러스터 생성 시기
- 클러스터 생성 절차
- 가상 사설 클라우드 인프라 사용하기
- 북큐브
- 요약
- Minikube를 사용해 단일 노드 클러스터 생성하기
- 3장. 모니터링, 로깅, 문제 해결
- 힙스터를 사용한 쿠버네티스 모니터링
- cAdvisor
- 힙스터 설치
- 인플럭스DB 백엔드
- 스토리지 스키마
- 그라파나 시각화
- 대시보드를 사용한 성능 분석
- 최상위 수준 보기
- 중앙 집중 로깅 추가
- 노드 문제 감지
- 노드 문제 감지기
- 데몬세트
- Problem Daemons
- 문제 해결 시나리오
- 견고한 시스템 설계
- 하드웨어 장애
- 할당량, 공유, 제한
- 잘못된 설정
- 비용 대비 성능
- 프로메테우스 사용
- 오퍼레이터란
- 프로메테우스 오퍼레이터
- kube-prometheus를 이용해서 프로메테우스 설치하기
- 프로메테우스로 클러스터 모니터링
- 요약
- 힙스터를 사용한 쿠버네티스 모니터링
- 4장. 고가용성과 신뢰성
- 고가용성의 개념
- 중복성
- 핫 스와핑
- 리더 선출
- 스마트 로드밸런싱
- 멱등성
- 자가 치유
- 고가용성 모범 사례
- 고가용성 클러스터 생성
- 노드 안정화
- 클러스터 상태 보호
- 데이터 보호
- 중복 API 서버 실행
- 쿠버네티스를 사용한 리더 선출 실행
- 고가용성 스테이징 환경 만들기
- 고가용성 테스트
- 실시간 클러스터 업그레이드
- 롤링 업그레이드
- 블루그린 업그레이드
- 데이터 컨트랙트 변경 관리
- 데이터 마이그레이션
- API 지원 중단
- 대규모 클러스터 성능, 비용, 설계 균형
- 가용성 요구 사항
- 최선의 노력
- 유지보수 작업시간
- 빠른 복구
- 무중단
- 성능과 데이터 일관성
- 요약
- 고가용성의 개념
- 5장. 쿠버네티스 보안, 제한, 계정 설정
- 쿠버네티스 보안 문제에 대한 이해
- 노드 문제
- 이미지 문제
- 설정과 배포 문제
- 포드와 컨테이너 문제
- 조직, 문화, 프로세스 문제
- 쿠버네티스 보안강화
- 쿠버네티스 서비스 계정 이해
- API 서버 접근
- 포드 보호
- 네트워크 정책 관리
- 지원되는 네트워크 솔루션 선택
- 네트워크 정책 정의
- 외부 네트워크로의 출력 제한
- 네임스페이스 간 정책
- 시크릿 사용
- 다중사용자 클러스터 실행
- 다중 사용자 클러스터 사례
- 안전한 멀티테넌시를 위한 네임스페이스 사용
- 네임스페이스 함정 피하기
- 요약
- 쿠버네티스 보안 문제에 대한 이해
- 6장. 중요 쿠버네티스 리소스 사용하기
- Hue 플랫폼 설계
- Hue 범위 정의
- 워크플로우 계획
- 쿠버네티스를 사용한 Hue 플랫폼 구축
- 효과적인 Kubectl 활용
- Kubectl 리소스 구성 파일 이해
- 포드에 장기 실행 마이크로서비스 배포
- 내부 서비스와 외부 서비스의 분리
- 내부 서비스 배포
- Hue-reminder 서비스 생성
- 외부에 서비스 공개
- 네임스페이스를 사용한 접근 제한
- 작업 시작
- 병렬 작업 실행
- 완료 작업 삭제
- cron 작업 스케줄링
- 비 클러스터 컴포넌트 혼합
- 외부 클러스터 네트워크 컴포넌트
- 내부 클러스터 네트워크 컴포넌트
- 쿠버네티스로 Hue 플랫폼 관리
- 준비 프로브를 사용한 종속성 관리
- init 컨테이너를 사용한 포드 정렬 실행
- 데몬세트 포드와 공유
- 쿠버네티스로 Hue 플랫폼 진화
- 기업에서 Hue 활용
- Hue를 활용한 과학 발전
- Hue를 활용한 미래의 아이들 교육
- 요약
- Hue 플랫폼 설계
- 7장. 쿠버네티스 스토리지 관리하기
- 영구 볼륨 살펴보기
- 볼륨
- 영구 볼륨 생성
- 영구적인 볼륨 요청 만들기
- 요청된 볼륨 마운트하기
- 원시 블록 볼륨
- 스토리지 클래스
- 영구 볼륨 스토리지 구성 시연
- 공용 스토리지 볼륨 유형: GCE, AWS, 애저
- AWS 탄력적인 블록스토어
- AWS 탄력적인 파일시스템
- GCE 영구 디스크
- 애저 데이터 디스크
- 애저 파일 스토리지
- 쿠버네티스에서 GlusterFS와 Ceph 볼륨
- GlusterFS 사용
- Ceph 사용
- 클러스터된 컨테이너 데이터 볼륨 관리자로써 Flocker
- 쿠버네티스에 기업용 스토리지 통합
- 볼륨 예상
- FlexVolume을 이용한 트리 외부 볼륨 플러그인 사용
- 컨테이너 스토리지 인터페이스
- 요약
- 영구 볼륨 살펴보기
- 8장. 상태저장 쿠버네티스 애플리케이션 실행
- 상태저장 VS 상태 비저장 쿠버네티스 애플리케이션
- 분산 데이터 집약적인 앱의 본질 이해
- 쿠버네티스 내부 상태 관리 목적
- 쿠버네티스 외부 상태 관리 목적
- 공유 환경 변수 VS DNS 레코드
- DNS를 통한 외부 데이터 저장소 접근
- 환경 변수를 통한 외부 데이터 저장소 접근
- ConfigMap을 환경 변수로 사용
- 중복 메모리 상태 사용하기
- 중복 영구 스토리지로 데몬세트 사용
- 영구적 볼륨 요청 적용
- 스테이트풀세트 활용
- 쿠버네티스에서 카산드라 클러스터 운영
- 카산드라에 대한 간략한 소개
- 카산드라 도커 이미지
- 쿠버네티스와 카산드라의 연결
- 카산드라 헤드리스 서비스 생성
- 스테이트풀세트를 사용해 카산드라 클러스터 생성
- 복제 컨트롤러를 사용해 카산드라 배포
- 데몬세트을 사용해 카산드라 배포
- 요약
- 상태저장 VS 상태 비저장 쿠버네티스 애플리케이션
- 9장. 롤링 업데이트, 확장성, 할당량
- 수평적 포드 자동 스케일링
- 수평적 포드 자동 스케일러 선언
- 사용자 정의 측정 항목
- 자동 스케일링을 통한 롤링 업데이트
- 제한과 할당량을 이용한 부족한 리소스 처리
- 리소스 할당량 사용하기
- 리소스 할당량 유형
- 할당량 범위
- 요청과 제한
- 할당량 작업
- 클러스터 용량 선택과 관리
- 노드 유형 선택
- 스토리지 솔루션 선택
- 비용과 응답 시간의 상관 관계
- 여러 노드 구성의 효과적 사용
- 탄력적인 클라우드 리소스 사용의 이점
- hyper.sh와 AWS Fargate 고려하기
- 쿠버네티스로 한계 극복
- 쿠버네티스의 성능과 확장성 개선하기
- 쿠버네티스의 성능과 확장성 측정
- 대규모 쿠버네티스 테스트
- 요약
- 수평적 포드 자동 스케일링
- 10장. 쿠버네티스 고급 네트워크
- 쿠버네티스 네트워크 모델 이해하기
- 포드 내부 통신(컨테이너 대 컨테이너)
- 포드 간 통신(포드-포드)
- 포드와 서비스 간 통신
- 외부 액세스
- 쿠버네티스 네트워크와 도커 네트워크
- 조회와 검색
- 쿠버네티스 네트워크 플러그인
- 쿠버네티스 네트워크 솔루션
- 베어메탈 클러스터에서 브리징
- Contiv
- Open vSwitch
- 누아지 네트워크의 VCS
- Canal
- 플라넬
- 칼리코 프로젝트
- 로마나
- 위브넷
- 네트워크 정책의 효과적 사용
- 쿠버네티스 네트워크 정책의 설계 이해
- 네트워크 정책과 CNI 플러그인
- 네트워크 정책 구성
- 네트워크 정책 구현
- 로드밸런싱 옵션
- 외부 로드밸런서
- 서비스 로드밸런서
- 인그레스
- Træfic/Traefik
- 자신만의 CNI 플러그인 작성
- 루프백 플러그인 탐색
- 요약
- 쿠버네티스 네트워크 모델 이해하기
- 11장. 클라우드와 클러스터 페더레이션에서 쿠버네티스 실행
- 클러스터 페더레이션의 이해
- 클러스터 페더레이션의 중요 사용 사례
- 페더레이션 컨트롤 플레인
- 페더레이션된 리소스
- 고난이도 항목
- 쿠버네티스 클러스터 페더레이션 관리
- 클러스터 페더레이션 설정
- 초기 설정
- 공식 배포된 Hyperkube 이미지 이용
- 페더레이션 컨트롤 플레인 실행
- 쿠버네티스 클러스터를 페더레이션에 등록
- KubeDNS 업데이트
- 페더레이션 종료
- Kubefed를 사용해 클러스터 페더레이션 설정
- 페더레이션 작업부하 실행
- 페더레이션 서비스 생성
- 백엔드 포드 추가
- 공개 DNS 레코드 확인
- 페더레이션 서비스 탐색
- 백엔드 포드와 클러스터 전체의 실패 처리
- 문제 해결
- 요약
- 클러스터 페더레이션의 이해
- 12장. 쿠버네티스 커스터마이징: API와 플러그인
- 쿠버네티스 API 작업
- OpenAPI 이해하기
- 프록시 설정
- 쿠버네티스 API 직접 탐색
- 쿠버네티스 API를 통해 포드 생성하기
- 파이썬 클라이언트를 통해 쿠버네티스 API 접근
- 쿠버네티스 API 확장
- 커스텀 리소스의 구조 이해
- 커스텀 리소스 정의 개발
- 커스텀 리소스 통합
- API 서버 집계 이해
- 서비스 카탈로그 활용
- 쿠버네티스 플러그인 작성
- 커스텀 스케줄러 플러그인 작성
- 액세스 제어 웹훅 사용
- 인증 웹훅 사용
- 인가 웹훅 사용하기
- 승인 제어 웹훅 사용
- 수평적 포드 자동 스케일링을 위한 사용자 지정 측정 항목 제공
- 커스텀 스토리지로 쿠버네티스 확장
- 요약
- 쿠버네티스 API 작업
- 13장. 쿠버네티스 패키지 매니저 관리
- Helm 이해
- Helm의 동기
- Helm 아키텍처
- Helm의 구성 요소
- Helm 사용
- Helm 설치
- 차트 찾기
- 패키지 설치
- 저장소 작업
- Helm으로 차트 관리
- 나만의 차트 만들기
- Chart.yaml 파일
- 차트의 메타데이터 파일
- 차트 종속성 관리
- 템플릿과 값 사용
- 요약
- Helm 이해
- 14장. 쿠버네티스의 미래
- 앞으로 나아갈 길
- 쿠버네티스 출시와 주요 일정
- 쿠버네티스의 특별 관심사와 작업 그룹
- 경쟁
- 번들링의 가치
- 도커 스웜
- 메소스/메소스피어
- 클라우드 플랫폼
- AWS
- 애저
- 알리바바 클라우드
- 커뮤니티
- 깃허브
- 회의와 만남
- 공유 정신
- 쿠버네티스 생태계
- 공개 클라우드 공급자
- 모듈화 및 트리 외부 플러그인
- 서비스 메시와 서버리스 프레임워크
- 서비스 메시
- 서버리스 프레임워크
- 요약
- 앞으로 나아갈 길
도서 오류 신고
정오표
정오표
[p.75 : 5행]
특별한 이유로 갓를 사용하지 않아도 된다면
->
특별한 이유로 rkt를 사용하지 않아도 된다면
[p.80 : 아래에서 6행]
이 절에서는 윈도우 운영체에서
->
이 절에서는 윈도우 운영체제에서
[p.96 : playbook.yml 파일]
[p.397 : 4행]
결과가 정종 깨지기 쉽고
->
결과가 종종 깨지기 쉽고
[p.399 : 아래에서 2행]
최소 대기시간이 줄어들고
->
최소 대기시간이 늘어나고