상세정보
미리보기
15단계로 배우는 도커와 쿠버네티스
- 저자
- 타카라 마호 저/이동규 역
- 출판사
- 제이펍
- 출판일
- 2021-04-15
- 등록일
- 2022-06-21
- 파일포맷
- PDF
- 파일크기
- 14MB
- 공급사
- 예스이십사
- 지원기기
-
PC
웹뷰어
프로그램 수동설치
뷰어프로그램 설치 안내
책소개
한 권으로 배우는 도커와 쿠버네티스 실전 가이드!컨테이너 기술에 처음 입문하는 독자도 체계적으로 실력을 쌓아갈 수 있도록 도커부터 시작하여 쿠버네티스의 전반적인 기능을 기초부터 단계별로 학습할 수 있도록 구성되어 있다. 독자는 이 책을 통해 현장에서 운영 가능한 수준의 기술을 익힐 수 있을 것이며, 쿠버네티스 기반의 응용 프로그램 개발과 시스템 아키텍처를 그릴 수 있게 될 것이다. 이 책의 예제 파일은 PC나 클라우드에서 실행할 수 있으며, 일일이 실습할 시간이 없거나 흐름만을 파악하고자 할 경우, 책을 읽는 것만으로도 내용을 충분히 파악할 수 있도록 구성하였다.
저자소개
일본 IBM 클라우드 & Cognitive 소프트웨어 사업 본부 소속. Certified Kubernetes Administrator CKA-1800-001213-0100, 2002년에 일본 IBM에 입사 후 자동차, 항공, 금융 업계와 대학 및 연구 기관 등 다양한 고객과의 프로젝트에서 시스템 설계 및 구축을 맡았다. 이후 클라우드를 활용하는 고객을 담당하기도 했고, 현재는 쿠버네티스를 중심으로 한 IBM 클라우드 서비스와 소프트웨어 제품을 담당하고 있다. 사내/외로 쿠버네티스 교육 활동에 힘쓰고 있으며, 컨테이너 및 쿠버네티스 기술 지원에도 주력하고 있다.
목차
1장 도커와 쿠버네티스의 개요 231 쿠버네티스란? 251.1 쿠버네티스의 개요 . . . 261.2 탄생부터 현재까지의 역사 . . . 271.3 쿠버네티스의 발음과 로고에 대하여 . . . 291.4 쿠버네티스가 해결하는 과제 . . . 301.5 쿠버네티스의 아키텍처 . . . 33마무리 . . . 34참고 자료 . . . 352 컨테이너의 이해 382.1 컨테이너를 사용하는 이유 . . . 382.2 가상 서버와 컨테이너의 차이점 . . . 392.3 도커의 아키텍처 . . . 412.4 레지스트리와 쿠버네티스의 관계 . . . 472.5 도커와 쿠버네티스의 연동 . . . 482.6 컨테이너를 위한 기술과 표준 . . . 49마무리. . . 51참고 자료 . . . 52Column 해상 컨테이너가 이룩한 혁명과 IT의 컨테이너 기술 혁명 . . . 553 쿠버네티스의 기본 583.1 아키텍처 . . . 583.2 쿠버네티스 계층 구조 . . . 613.3 쿠버네티스 API 오브젝트 . . . 623.4 파드의 기본 . . . 653.5 파드의 라이프 사이클 . . . 673.6 파드의 종료 처리 . . . 683.7 클러스터 네트워크 . . . 693.8 서비스의 기본 . . . 703.9 컨트롤러의 기본 . . . 73마무리 . . . 77참고 자료 . . . 774 이 책의 학습 환경 794.1 빠르게 전반적인 기능을 파악하고 싶은 경우 . . . 794.2 직접 돌려보면서 익히고 싶은 경우 . . . 794.3 각 학습 환경의 구성 . . . 804.4 학습 환경 선택 . . . 814.5 이 책에서 다루는 OSS 목록 . . . 825 도커 커맨드 치트 시트 845.1 컨테이너 환경 표시 . . . 855.2 컨테이너의 3대 기능 . . . 855.3 디버그 관련 기능 . . . 875.4 쿠버네티스와 중복되는 기능 . . . 88참고 자료 . . . 896 kubectl 커맨드 치트 시트 906.1 kubectl 커맨드의 기본 . . . 906.2 커맨드 . . . 916.3 리소스 타입 . . . 916.4 옵션 . . . 956.5 kubectl 커맨드 실행 예 . . . 96참고 자료 . . . 102Column 5G와 자율 운전으로 주목받는 쿠버네티스 . . . 1032장 컨테이너 개발을 익히기 위한 5단계 105Step 01 컨테이너 첫걸음 10701.1 hello-world 실행 . . . 10701.2 컨테이너의 생명 주기와 도커 커맨드 . . . 110Step 01 마무리 . . . 123Step 01 참고 자료 . . . 123tep 02 컨테이너 다루기 12402.1 대화형 모드로 컨테이너 기동 및 정지 . . . 12402.2 컨테이너 조작 및 이미지 작성 . . . 12602.3 여러 터미널에서 조작하기 . . . 12802.4 호스트와 컨테이너의 관계 . . . 131Step 02 마무리 . . . 133Step 02 참고 자료 . . . 133Step 03 컨테이너 개발 13403.1 이미지 빌드의 개요 . . . 13403.2 빌드 실행 순서 . . . 13603.3 Dockerfile 작성법 . . . 13903.4 Dockerfile 작성 모범 사례 . . . 141Step 03 마무리 . . . 142Step 03 참고 자료 . . . 142Step 04 컨테이너와 네트워크 14304.1 컨테이너 네트워크 . . . 14404.2 외부에 포트를 공개하기 . . . 14704.3 AP 컨테이너와 DB 컨테이너의 연동 예 . . . 148Step 04 마무리 . . . 154Step 04 참고 자료 . . . 154Step 05 컨테이너 API 15505.1 컨테이너 API의 종류와 개요 . . . 15505.2 환경 변수 API 구현 예 . . . 15905.3 종료 요청 API 구현 예 . . . 16305.4 퍼시스턴스 볼륨 API 구현 예 . . . 16705.5 로그와 백그라운드 기동 . . . 170Step 05 마무리 . . . 171Step 05 참고 자료 . . . 171Column K8s 사용자를 위한 YAML 입문 . . . 1723장 K8s 실전 활용을 위한 10단계 177Step 06 쿠버네티스 첫걸음 17906.1 클러스터 구성 확인 . . . 17906.2 파드 실행 . . . 18006.3 컨트롤러에 의한 파드 실행 . . . 18506.4 잡에 의한 파드 실행 . . . 190Step 06 마무리 . . . 192Step 06 참고 자료 . . . 193Step 07 매니페스트와 파드 19407.1 매니페스트 작성법 . . . 19507.2 매니페스트 적용 방법 . . . 19707.3 파드의 동작 확인 . . . 19807.4 파드의 헬스 체크 기능 . . . 20007.5 초기화 전용 컨테이너 . . . 21107.6 사이드카 패턴 . . . 213Step 07 마무리 . . . 219Step 07 참고 자료 . . . 220Step 08 디플로이먼트 22108.1 디플로이먼트의 생성과 삭제 . . . 22208.2 스케일 기능 . . . 22608.3 롤아웃 기능 . . . 22808.4 롤백 기능 . . . 23308.5 파드의 IP 주소가 변경되는 경우와 아닌 경우 . . . 23508.6 자동 복구 . . . 23608.7 디플로이먼트를 이용한 고가용성 구성 . . . 23908.8 디플로이먼트의 자동 복구 . . . 242Step 08 마무리 . . . 246Step 08 참고 자료 . . . 247Column 파드의 트러블 슈팅 . . . 248Step 09 서비스 25509.1 ClusterIP . . . 25609.2 서비스 타입 NodePort . . . 25609.3 서비스 타입 LoadBalancer . . . 25809.4 서비스 타입 ExternalName . . . 25909.5 서비스와 파드의 연결 . . . 26009.6 서비스의 매니페스트 작성법 . . . 26109.7 서비스 생성과 기능 확인 . . . 26309.8 세션 어피니티 . . . 26509.9 NodePort 사용 . . . 26709.10 로드밸런서 . . . 26809.11 ExternalName . . . 271Step 09 마무리 . . . 272Step 09 참고 자료 . . . 273Step 10 잡과 크론잡 27410.1 잡 활용 예 . . . 27610.2 잡의 실행수와 동시 실행수 . . . 27910.3 하나의 컨테이너로 구성된 파드가 이상 종료 하는 경우 . . . 28210.4 여러 컨테이너 중 일부가 이상 종료 할 때의 동작 . . . 28410.5 소수 계산 컨테이너와 잡 컨트롤러 . . . 28610.6 메시지 브로커와의 조합 . . . 29010.7 쿠버네티스 API 라이브러리 사용 . . . 29510.8 실행 . . . 29810.9 크론잡 . . . 302Step 10 마무리 . . . 305Step 10 참고 자료 . . . 306Step 11 스토리지 30711.1 스토리지의 종류와 클러스터 구성 . . . 30811.2 스토리지 시스템의 방식 . . . 30911.3 스토리지의 추상화와 자동화 . . . 31111.4 퍼시스턴트 볼륨 이용. . . 31311.5 NFS 서버 사용 . . . 31911.6 클라우드에서의 동적 프로비저닝 . . . 32611.7 SDS 연동에 의한 동적 프로비저닝 . . . 335Step 11 마무리 . . . 341Step 11 참고 자료 . . . 342Step 12 스테이트풀셋 34312.1 디플로이먼트와의 차이 . . . 34412.2 매니페스트 작성법 . . . 34912.3 수동 테이크 오버 방법. . . 35512.4 노드 장애 시의 동작 . . . 35612.5 테이크 오버를 자동화하는 코드 개발. . . 35812.6 장애 회복 테스트 . . . 375Step 12 마무리 . . . 379Step 12 참고 자료 . . . 381Step 13 인그레스 38213.1 인그레스의 기능과 개요 . . . 38313.2 인그레스 학습 환경 준비 . . . 38413.3 공개 URL과 애플리케이션의 매핑 . . . 38513.4 인그레스 적용 . . . 38913.5 인그레스 SSL/TLS 암호화 . . . 39513.6 모더니제이션 과제 . . . 39913.7 세션 어피니티 기능 사용 . . . 40113.8 kube-keepalived-vip에 의한 VIP 획득과 HA 구성 . . . 40513.9 퍼블릭 클라우드에서 인그레스 사용 . . . 423Step 13 마무리 . . . 425Step 13 참고 자료 . . . 425Step 14 오토스케일 42714.1 오토스케일링 작업 . . . 42914.2 학습 환경 3에서의 오토스케일 체험 . . . 43214.3 부하 테스트용 컨테이너 준비 . . . 43314.4 HPA 설정과 부하 테스트 . . . 436Step 14 마무리 . . . 439Step 14 참고 자료 . . . 439Step 15 클러스터 가상화 44115.1 네임스페이스(Namespace) . . . 44215.2 kubectl 커맨드의 네임스페이스 설정 . . . 44615.3 시크릿과 컨피그맵 . . . 45115.4 시크릿 이용 . . . 45215.5 컨피그맵 . . . 45715.6 메모리와 CPU 할당과 상한 지정 . . . 46015.7 네트워크의 접근 제어(Calico) . . . 46315.8 역할에 따른 접근 범위 제한 . . . 46415.9 환경 구축 . . . 46615.10 설정 파일 내용 . . . 491Step 15 마무리 . . . 511Step 15 참고 자료 . . . 512부록 학습 환경 구축 5151 학습 환경 1 5171.1 Mac 환경 . . . 5171.2 Windows 환경 . . . 5271.3 Vagrant의 리눅스에서 미니쿠베 사용하기. . . 5381.4 미니쿠베 사용 방법 . . . 5422 학습 환경 2 5512.1 멀티 노드 K8s . . . 5512.2 가상 NFS 서버 . . . 5602.3 가상 GlusterFS 클러스터 . . . 5632.4 프라이빗 레지스트리 . . . 5663 학습 환경 3 5743.1 IBM Cloud Kubernetes Service . . . 5743.2 Google Kubernet