국립세종도서관
상세검색 닫기
자료유형
본문언어
출판년도 ~
정렬
상세검색 +

기타

  • 홈으로
글씨 글씨 확대 글씨 축소
쿠버네티스를 활용한 클라우드 네이티브 데브옵스 : 클라우드 환경에서 모던 애플리케이션 빌드, 배포, 스케일링하기 / 존 어런들,저스틴 도밍거스 지음 ;최경현 옮김
쿠버네티스를 활용한 클라우드 네이티브 데브옵스 : 클라우드 환경에서 모던 애플리케이션 빌드, 배포, 스케일링하기 책표지
  • ·표제/책임표시사항 쿠버네티스를 활용한 클라우드 네이티브 데브옵스 : 클라우드 환경에서 모던 애플리케이션 빌드, 배포, 스케일링하기 / 존 어런들,저스틴 도밍거스 지음 ;최경현 옮김
  • ·발행사항 서울 : 한빛미디어, 2019
  • ·형태사항 420 p. :삽화, 도표 ;24 cm
  • ·주기사항 원표제:Cloud native DevOps with Kubernetes :building, deploying, and scaling modern applications on Kubernetes in the cloud
    원저자명: John Arundel, Justin Domingus
    색인수록
    영어 원작을 한국어로 번역
  • ·표준번호/부호 ISBN: 9791162242445  93000: \32000 
  • ·분류기호 한국십진분류법-> 005.11  듀이십진분류법-> 005.1  
  • ·주제명 응용 프로그램[應用--]어플리케이션[application]
권별정보 자료위치출력 관심도서 보기 관심도서 담기

※ 좌우로 스크롤하시면 내용이 보입니다.

권별정보 안내
신청 편/권차 편제 저작자 발행년도 등록번호 청구기호 자료있는 곳 자료상태 예약자 반납예정일 매체구분
존 어런들,저스틴 도밍거스 지음 ;최경현 옮김 2019 SE0000535299 005.11-20-14 일반자료실(2층) 대출 가능 0 - 인쇄자료(책자형) 
※ 신청 종류
- 대출예약신청:
자료상태가 ‘대출중’인 경우 해당 도서를 예약하여 도서 반납 시 우선적으로 대출받을 수 있는 서비스
- 청사대출신청:
정부세종청사(6-3동, 2-1동)에 위치한 무인예약도서대출반납기에서 도서 수령‧반납이 가능한 서비스
- 무인대출신청:
도서관 1문(정문)에 위치한 무인예약도서대출기에서 도서 수령이 가능한 서비스
- 서고자료신청:
서고에 보관된 자료에 대한 열람신청 서비스 이용방법: 로그인 → 자료검색 → [상세정보] 클릭 → 권별정보에서 자료 선택 →[서고자료신청] → 자료비치완료 문자 수신 → 해당 자료실에서 자료 수령
서가 둘러보기
서가둘러보기 로딩중

목차


목차
지은이 소개-6
지은이의 말-7
감사의 글-9
옮긴이 소개-11
옮긴이의 말-13
들어가며-31

1부. 쿠버네티스 개요

1장. 쿠버네티스 소개-37

1.1 쿠버네티스와 같은 시스템이 필요한 이유-39
1.1.1 모놀리스 애플리케이션에서 마이크로서비스로 전환-39
1.1.2 애플리케이션에 일관된 환경 제공-44
1.1.3 지속적인 배포로 전환: 데브옵스와 노옵스-45
1.2 컨테이너 기술 소개-46
1.2.1 컨테이너 이해-47
1.2.2 도커 컨테이너 플랫폼 소개-52
1.2.3 도커의 대안으로 rkt 소개-58
1.3 쿠버네티스 소개-59
1.3.1 쿠버네티스의 기원-59
1.3.2 넓은 시각으로 쿠버네티스 바라보기-60
1.3.3 쿠버네티스 클러스터 아키텍처 이해-62
1.3.4 쿠버네티스에서 애플리케이션 실행-64
1.3.5 쿠버네티스 사용의 장점-66
1.4 요약-70

2장. 도커와 쿠버네티스 첫걸음-71

2.1 도커를 사용한 컨테이너 이미지 생성, 실행, 공유하기-72
2.1.1 도커 설치와 Hello World 컨테이너 실행하기-72
2.1.2 간단한 node.js 애플리케이션 생성하기-75
2.1.3 이미지를 위한 Dockerfile 생성-76
2.1.4 컨테이너 이미지 생성-77
2.1.5 컨테이너 이미지 실행-80
2.1.6 실행 중인 컨테이너 내부 탐색하기-82
2.1.7 컨테이너 중지와 삭제-84
2.1.8 이미지 레지스트리에 이미지 푸시-85
2.2 쿠버네티스 클러스터 설치-87
2.2.1 Minikube를 활용한 단일 노드 쿠버네티스 클러스터 실행하기-88
2.2.2 구글 쿠버네티스 엔진을 활용한 관리형 쿠버네티스 클러스터 사용하기-91
2.2.3 kubectl의 alias와 명령줄 자동완성 설정하기-94
2.3 쿠버네티스에 첫 번째 애플리케이션 실행하기-96
2.3.1 Node.js 애플리케이션 구동하기-96
2.3.2 웹 애플리케이션에 접근하기-100
2.3.3 시스템의 논리적인 부분-103
2.3.4 애플리케이션 수평 확장-105
2.3.5 애플리케이션이 실행 중인 노드 검사하기-109
2.3.6 쿠버네티스 대시보드 소개-110
2.4 요약-112

2부. 쿠버네티스 핵심 개념

3장. 파드: 쿠버네티스에서 컨테이너 실행-113

3.1 파드 소개-114
3.1.1 파드가 필요한 이유-114
3.1.2 파드 이해하기-115
3.1.3 파드에서 컨테이너의 적절한 구성-118
3.2 YAML 또는 JSON 디스크립터로 파드 생성-121
3.2.1 기존 파드의 YAML 디스크립터 살펴보기-121
3.2.2 파드를 정의하는 간단한 YAML 정의 작성하기-124
3.2.3 kubectl create 명령으로 파드 만들기-126
3.2.4 애플리케이션 로그 보기-127
3.2.5 파드에 요청 보내기-129
3.3 레이블을 이용한 파드 구성-130
3.3.1 레이블 소개-131
3.3.2 파드를 생성할 때 레이블 지정-133
3.3.3 기존 파드 레이블 수정-134
3.4 레이블 셀렉터를 이용해 파드 부분 집합 나열-135
3.4.1 레이블 셀렉터를 사용한 파드 나열-135
3.4.2 레이블 셀렉터에서 여러 조건 사용-137
3.5 레이블과 셀렉터를 이용해 파드 스케줄링 제한-138
3.5.1 워커 노드 분류에 레이블 사용-139
3.5.2 특정 노드에 파드 스케줄링-140
3.5.3 하나의 특정 노드로 스케줄링-140
3.6 파드에 어노테이션 달기-141
3.6.1 오브젝트의 어노테이션 조회-141
3.6.2 어노테이션 추가 및 수정-142
3.7 네임스페이스를 사용한 리소스 그룹화-143
3.7.1 네임스페이스의 필요성-143
3.7.2 다른 네임스페이스와 파드 살펴보기-144
3.7.3 네임스페이스 생성-145
3.7.4 다른 네임스페이스의 오브젝트 관리-147
3.7.5 네임스페이스가 제공하는 격리 이해-147
3.8 파드 중지와 제거-148
3.8.1 이름으로 파드 삭제-148
3.8.2 레이블 셀렉터를 이용한 파드 삭제-149
3.8.3 네임스페이스를 삭제한 파드 제거-149
3.8.4 네임스페이스를 유지하면서 네임스페이스 안에 있는 모든 파드 삭제-150
3.8.5 네임스페이스에서 (거의) 모든 리소스 삭제-151
3.9 요약-152

4장. 레플리케이션과 그 밖의 컨트롤러: 관리되는 파드 배포-153

4.1 파드를 안정적으로 유지하기-154
4.1.1 라이브니스 프로브 소개-155
4.1.2 HTTP 기반 라이브니스 프로브 생성-156
4.1.3 동작 중인 라이브니스 프로브 확인-157
4.1.4 라이브니스 프로브의 추가 속성 설정-159
4.1.5 효과적인 라이브니스 프로브 생성-161
4.2 레플리케이션컨트롤러 소개-163
4.2.1 레플리케이션컨트롤러의 동작-164
4.2.2 레플리케이션컨트롤러 생성-167
4.2.3 레플리케이션컨트롤러 작동 확인-168
4.2.4 레플리케이션컨트롤러의 범위 안팎으로 파드 이동하기-174
4.2.5 파드 템플릿 변경-177
4.2.6 수평 파드 스케일링-179
4.2.7 레플리케이션컨트롤러 삭제-181
4.3 레플리케이션컨트롤러 대신 레플리카셋 사용하기-183
4.3.1 레플리카셋과 레플리케이션컨트롤러 비교-183
4.3.2 레플리카셋 정의하기-184
4.3.3 레플리카셋 생성 및 검사-185
4.3.4 레플리카셋의 더욱 표현적인 레이블 셀렉터 사용하기-186
4.3.5 레플리카셋 정리-187
4.4 데몬셋을 사용해 각 노드에서 정확히 한 개의 파드 실행하기-188
4.4.1 데몬셋으로 모든 노드에 파드 실행하기-189
4.4.2 데몬셋을 사용해 특정 노드에서만 파드를 실행하기-189
4.5 완료 가능한 단일 태스크를 수행하는 파드 실행-194
4.5.1 잡 리소스 소개-194
4.5.2 잡 리소스 정의-195
4.5.3 파드를 실행한 잡 보기-196
4.5.4 잡에서 여러 파드 인스턴스 실행하기-197
4.5.5 잡 파드가 완료되는 데 걸리는 시간 제한하기-199
4.6 잡을 주기적으로 또는 한 번 실행되도록 스케줄링하기-199
4.6.1 크론잡 생성하기-200
4.6.2 스케줄된 잡의 실행 방법 이해-201
4.7 요약-202

5장. 서비스: 클라이언트가 파드를 검색하고 통신을 가능하게 함-205

5.1 서비스 소개-206
5.1.1 서비스 생성-208
5.1.2 서비스 검색-215
5.2 클러스터 외부에 있는 서비스 연결-220
5.2.1 서비스 엔드포인트 소개-221
5.2.2 서비스 엔드포인트 수동 구성-222
5.2.3 외부 서비스를 위한 별칭 생성-224
5.3 외부 클라이언트에 서비스 노출-225
5.3.1 노드포트 서비스 사용-226
5.3.2 외부 로드밸런서로 서비스 노출-230
5.3.3 외부 연결의 특성 이해-234
5.4 인그레스 리소스로 서비스 외부 노출-235
5.4.1 인그레스 리소스 생성-238
5.4.2 인그레스로 서비스 액세스-239
5.4.3 하나의 인그레스로 여러 서비스 노출-241
5.4.4 TLS 트래픽을 처리하도록 인그레스 구성-243
5.5 파드가 연결을 수락할 준비가 됐을 때 신호 보내기-245
5.5.1 레디니스 프로브 소개-246
5.5.2 파드에 레디니스 프로브 추가-248
5.5.3 실제 환경에서 레디니스 프로브가 수행해야 하는 기능-251
5.6 헤드리스 서비스로 개별 파드 찾기-252
5.6.1 헤드리스 서비스 생성-253
5.6.2 DNS로 파드 찾기-254
5.6.3 모든 파드 검색 - 준비되지 않은 파드도 포함-256
5.7 서비스 문제 해결-257
5.8 요약-258

6장. 볼륨: 컨테이너에 디스크 스토리지 연결-259

6.1 볼륨 소개-260
6.1.1 예제의 볼륨 설명-260
6.1.2 사용 가능한 볼륨 유형 소개-263
6.2 볼륨을 사용한 컨테이너 간 데이터 공유-264
6.2.1 emptyDir 볼륨 사용-264
6.2.2 깃 리포지터리를 볼륨으로 사용하기-269
6.3 워커 노드 파일시스템의 파일 접근-273
6.3.1 hostPath 볼륨 소개-273
6.3.2 hostPath 볼륨을 사용하는 시스템 파드 검사하기-274
6.4 퍼시스턴트 스토리지 사용-275
6.4.1 GCE 퍼시스턴트 디스크를 파드 볼륨으로 사용하기-276
6.4.2 기반 퍼시스턴트 스토리지로 다른 유형의 볼륨 사용하기-280
6.5 기반 스토리지 기술과 파드 분리-283
6.5.1 퍼시스턴트볼륨과 퍼시스턴트볼륨클레임 소개-283
6.5.2 퍼시스턴트볼륨 생성-285
6.5.3 퍼시스턴트볼륨클레임 생성을 통한 퍼시스턴트볼륨 요청-287
6.5.4 파드에서 퍼시스턴트볼륨클레임 사용하기-289
6.5.5 퍼시스턴트볼륨과 퍼시스턴트볼륨클레임 사용의 장점 이해하기-291
6.5.6 퍼시스턴트볼륨 재사용-292
6.6 퍼시스턴트볼륨의 동적 프로비저닝-294
6.6.1 스토리지클래스 리소스를 통한 사용 가능한 스토리지 유형 정의하기-295
6.6.2 퍼시스턴트볼륨클레임에서 스토리지 클래스 요청하기-296
6.6.3 스토리지 클래스를 지정하지 않은 동적 프로비저닝-299
6.7 요약-303

7장. 컨피그맵과 시크릿: 애플리케이션 설정-305

7.1 컨테이너화된 애플리케이션 설정-306
7.2 컨테이너에 명령줄 인자 전달-307
7.2.1 도커에서 명령어와 인자 정의-307
7.2.2 쿠버네티스에서 명령과 인자 재정의-310
7.3 컨테이너의 환경변수 설정-312
7.3.1 컨테이너 정의에 환경변수 지정-314
7.3.2 변숫값에서 다른 환경변수 참조-315
7.3.3 하드코딩된 환경변수의 단점-315
7.4 컨피그맵으로 설정 분리-316
7.4.1 컨피그맵 소개-316
7.4.2 컨피그맵 생성-317
7.4.3 컨피그맵 항목을 환경변수로 컨테이너에 전달-321
7.4.4 컨피그맵의 모든 항목을 한 번에 환경변수로 전달-323
7.4.5 컨피그맵 항목을 명령줄 인자로 전달-324
7.4.6 컨피그맵 볼륨을 사용해 컨피그맵 항목을 파일로 노출-326
7.4.7 애플리케이션을 재시작하지 않고 애플리케이션 설정 업데이트-334
7.5 시크릿으로 민감한 데이터를 컨테이너에 전달-337
7.5.1 시크릿 소개-337
7.5.2 기본 토큰 시크릿 소개-338
7.5.3 시크릿 생성-341
7.5.4 컨피그맵과 시크릿 비교-342
7.5.5 파드에서 시크릿 사용-344
7.5.6 이미지를 가져올 때 사용하는 시크릿 이해-349
7.6 요약-352

8장. 애플리케이션에서 파드 메타데이터와 그 외의 리소스에 액세스하기-353

8.1 Downward API로 메타데이터 전달-354
8.1.1 사용 가능한 메타데이터 이해-355
8.1.2 환경변수로 메타데이터 노출하기-356
8.1.3 downwardAPI 볼륨에 파일로 메타데이터 전달-359
8.2 쿠버네티스 API 서버와 통신하기-364
8.2.1 쿠버네티스 REST API 살펴보기-365
8.2.2 파드 내에서 API 서버와 통신-371
8.2.3 앰배서더 컨테이너를 이용한 API 서버 통신 간소화-378
8.2.4 클라이언트 라이브러리를 사용해 API 서버와 통신-382
8.3 요약-386

9장. 디플로이먼트: 선언적 애플리케이션 업데이트-389

9.1 파드에서 실행 중인 애플리케이션 업데이트-390
9.1.1 오래된 파드를 삭제하고 새 파드로 교체-391
9.1.2 새 파드 기동과 이전 파드 삭제-392
9.2 레플리케이션컨트롤러로 자동 롤링 업데이트 수행-394
9.2.1 애플리케이션의 초기 버전 실행-3947
9.2.2 kubectl을 이용한 롤링 업데이트-397
9.2.3 kubectl rolling-update를 더 이상 사용하지 않는 이유-402
9.3 애플리케이션을 선언적으로 업데이트하기 위한 디플로이먼트 사용하기-404
9.3.1 디플로이먼트 생성-405
9.3.2 디플로이먼트 업데이트-409
9.3.3 디플로이먼트 롤백-414
9.3.4 롤아웃 속도 제어-418
9.3.5 롤아웃 프로세스 일시 중지-422
9.3.6 잘못된 버전의 롤아웃 방지-424
9.4 요약-430

10장. 스테이트풀셋: 복제된 스테이트풀 애플리케이션 배포하기-433

10.1 스테이트풀 파드 복제하기-434
10.1.1 개별 스토리지를 갖는 레플리카 여러 개 실행하기-434
10.1.2 각 파드에 안정적인 아이덴티티 제공하기-436
10.2 스테이트풀셋 이해하기-438
10.2.1 스테이트풀셋과 레플리카셋 비교하기-439
10.2.2 안정적인 네트워크 아이덴티티 제공하기-440
10.2.3 각 스테이트풀 인스턴스에 안정적인 전용 스토리지 제공하기-444
10.2.4 스테이트풀셋 보장 이해하기-447
10.3 스테이트풀셋 사용하기-448
10.3.1 애플리케이션과 컨테이너 이미지 생성하기-448
10.3.2 스테이트풀셋을 통한 애플리케이션 배포하기-450
10.3.3 파드 가지고 놀기-456
10.4 스테이트풀셋의 피어 디스커버리-462
10.4.1 DNS를 통한 피어 디스커버리-464
10.4.2 스테이트풀셋 업데이트-467
10.4.3 클러스터된 데이터 저장소 사용하기-468
10.5 스테이트풀셋이 노드 실패를 처리하는 과정 이해하기-469
10.5.1 노드의 네트워크 연결 해제 시뮬레이션-469
10.5.2 수동으로 파드 삭제하기-472
10.6 요약-474

3부. 쿠버네티스 심화

11장. 쿠버네티스 내부 이해-475

11.1 아키텍처 이해-476
11.1.1 쿠버네티스 구성 요소의 분산 특성-477
11.1.2 쿠버네티스가 etcd를 사용하는 방법-480
11.1.3 API 서버의 기능-485
11.1.4 API 서버가 리소스 변경을 클라이언트에 통보하는 방법 이해-487
11.1.5 스케줄러 이해-489
11.1.6 컨트롤러 매니저에서 실행되는 컨트롤러 소개-493
11.1.7 Kubelet이 하는 일-499
11.1.8 쿠버네티스 서비스 프록시의 역할-501
11.1.9 쿠버네티스 애드온 소개-502
11.1.10 모든 것을 함께 가져오기-505
11.2 컨트롤러가 협업하는 방법-505
11.2.1 관련된 구성 요소 이해-505
11.2.2 이벤트 체인-506
11.2.3 클러스터 이벤트 관찰-508
11.3 실행 중인 파드에 관한 이해-510
11.4 파드 간 네트워킹-512
11.4.1 네트워크는 어떤 모습이어야 하는가-512
11.4.2 네트워킹 동작 방식 자세히 알아보기-516
11.4.3 컨테이너 네트워크 인터페이스 소개-517
11.5 서비스 구현 방식-517
11.5.1 kube-proxy 소개-518
11.5.2 kube-proxy가 iptables를 사용하는 방법-518
11.6 고가용성 클러스터 실행-520
11.6.1 애플리케이션 가용성 높이기-520
11.6.2 쿠버네티스 컨트롤 플레인 구성 요소의 가용성 향상-522
11.7 요약-526

12장. 쿠버네티스 API 서버 보안-527

12.1 인증 이해-528
12.1.1 사용자와 그룹-528
12.1.2 서비스어카운트 소개-529
12.1.3 서비스어카운트 생성-532
12.1.4 파드에 서비스어카운트 할당-534
12.2 역할 기반 액세스 제어로 클러스터 보안-537
12.2.1 RBAC 인가 플러그인 소개-537
12.2.2 RBAC 리소스 소개-539
12.2.3 롤과 롤바인딩 사용-543
12.2.4 클러스터롤과 클러스터롤바인딩 사용하기-549
12.2.5 디폴트 클러스터롤과 클러스터롤바인딩의 이해-562
12.2.6 인가 권한을 현명하게 부여하기-565
12.3 요약-566

13장. 클러스터 노드와 네트워크 보안-567

13.1 파드에서 호스트 노드의 네임스페이스 사용-568
13.1.1 파드에서 노드의 네트워크 네임스페이스 사용-568
13.1.2 호스트 네트워크 네임스페이스를 사용하지 않고 호스트 포트에 바인딩-570
13.1.3 노드의 PID와 IPC 네임스페이스 사용-573
13.2 컨테이너의 보안 컨텍스트 구성-574
13.2.1 컨테이너를 특정 사용자로 실행-576
13.2.2 컨테이너가 루트로 실행되는 것 방지-576
13.2.3 특권 모드에서 파드 실행-578
13.2.4 컨테이너에 개별 커널 기능 추가-580
13.2.5 컨테이너에서 기능 제거-582
13.2.6 프로세스가 컨테이너의 파일시스템에 쓰는 것 방지-583
13.2.7 컨테이너가 다른 사용자로 실행될 때 볼륨 공유-585
13.3 파드의 보안 관련 기능 사용 제한-587
13.3.1 PodSecurityPolicy 리소스 소개-588
13.3.2 runAsUser, fsGroup, supplementalGroups 정책-591
13.3.3 allowed, default, disallowed 기능 구성-594
13.3.4 파드가 사용할 수 있는 볼륨 유형 제한-596
13.3.5 각각의 사용자와 그룹에 다른 PodSecurityPolicies 할당-596
13.4 파드 네트워크 격리-601
13.4.1 네임스페이스에서 네트워크 격리 사용-601
13.4.2 네임스페이스의 일부 클라이언트 파드만 서버 파드에 연결하도록 허용-602
13.4.3 쿠버네티스 네임스페이스 간 네트워크 격리-604
13.4.4 CIDR 표기법으로 격리-605
13.4.5 파드의 아웃바운드 트래픽 제한-606
13.5 요약-606

14장. 파드의 컴퓨팅 리소스 관리-609

14.1 파드 컨테이너의 리소스 요청-610
14.1.1 리소스 요청을 갖는 파드 생성하기-610
14.1.2 리소스 요청이 스케줄링에 미치는 영향-612
14.1.3 CPU 요청이 CPU 시간 공유에 미치는 영향-618
14.1.4 사용자 정의 리소스의 정의와 요청-619
14.2 컨테이너에 사용 가능한 리소스 제한-620
14.2.1 컨테이너가 사용 가능한 리소스 양을 엄격한 제한으로 설정-620
14.2.2 리소스 제한 초과-622
14.2.3 컨테이너의 애플리케이션이 제한을 바라보는 방법-624
14.3 파드 QoS 클래스 이해-626
14.3.1 파드의 QoS 클래스 정의-627
14.3.2 메모리가 부족할 때 어떤 프로세스가 종료되는지 이해-631
14.4 네임스페이스별 파드에 대한 기본 요청과 제한 설정-632
14.4.1 LimitRange 리소스 소개-633
14.4.2 LimitRange 오브젝트 생성하기-634
14.4.3 강제 리소스 제한-636
14.4.4 기본 리소스 요청과 제한 적용-637
14.5 네임스페이스의 사용 가능한 총 리소스 제한하기-638
14.5.1 리소스쿼터 오브젝트 소개-638
14.5.2 퍼시스턴트 스토리지에 관한 쿼터 지정하기-641
14.5.3 생성 가능한 오브젝트 수 제한-642
14.5.4 특정 파드 상태나 QoS 클래스에 대한 쿼터 지정-643
14.6 파드 리소스 사용량 모니터링-645
14.6.1 실제 리소스 사용량 수집과 검색-645
14.6.2 기간별 리소스 사용량 통계 저장 및 분석-648
14.7 요약-652

15장. 파드와 클러스터 노드의 오토스케일링-655

15.1 수평적 파드 오토스케일링-656
15.1.1 오토스케일링 프로세스 이해-656
15.1.2 CPU 사용률 기반 스케일링-660
15.1.3 메모리 소비량에 기반을 둔 스케일링-669
15.1.4 기타 및 사용자 정의 메트릭 기반 스케일링-670
15.1.5 오토스케일링에 적합한 메트릭 결정-673
15.1.6 레플리카를 0으로 감소-673
15.2 수직적 파드 오토스케일링-674
15.2.1 리소스 요청 자동 설정-675
15.2.2 파드가 실행되는 동안 리소스 요청 수정-675
15.3 수평적 클러스터 노드 확장-675
15.3.1 클러스터 오토스케일러 소개-676
15.3.2 클러스터 오토스케일러 활성화-678
15.3.3 클러스터 스케일 다운 동안에 서비스 중단 제한-679
15.4 요약-681

16장. 고급 스케줄링-683

16.1 테인트와 톨러레이션을 사용해 특정 노드에서 파드 실행 제한-684
16.1.1 테인트와 톨러레이션 소개-684
16.1.2 노드에 사용자 정의 테인트 추가하기-67
16.1.3 파드에 톨러레이션 추가-688
16.1.4 테이트와 톨러레이션의 활용 방안 이해-689
16.2 노드 어피니티를 사용해 파드를 특정 노드로 유인하기-691
16.2.1 하드 노드 어피니티 규칙 지정-693
16.2.2 파드의 스케줄링 시점에 노드 우선순위 지정-695
16.3 파드 어피니티와 안티-어피니티를 이용해 파드 함께 배치하기-699
16.3.1 파드 간 어피니티를 사용해 같은 노드에 파드 배포하기-700
16.3.2 동일한 랙, 가용 영역 또는 리전에 파드 배포-703
16.3.3 필수 요구 사항 대신 파드 어피니티 선호도 표현하기-705
16.3.4 파드 안티-어피니티를 사용해 파드들이 서로 떨어지게 스케줄링하기-707
16.4 요약-709

17장. 애플리케이션 개발을 위한 모범 사례-711

17.1 모든 것을 하나로 모아 보기-712
17.2 파드 라이프사이클 이해-714
17.2.1 애플리케이션이 종료되고 파드 재 배치 예상하기-714
17.2.2 종료된 파드 또는 부분적으로 종료된 파드를 다시 스케줄링하기-717
17.2.3 원하는 순서로 파드 시작-719
17.2.4 라이프사이클 훅 추가-722
17.2.5 파드 셧다운 이해하기-727
17.3 모든 클라이언트 요청의 적절한 처리 보장-732
17.3.1 파드가 시작될 때 클라이언트 연결 끊기 방지-732
17.3.2 파드 셧다운 동안 연결 끊어짐 방지-733
17.4 쿠버네티스에서 애플리케이션을 쉽게 실행하고 관리할 수 있게 만들기-738
17.4.1 관리 가능한 컨테이너 이미지 만들기-738
17.4.2 이미지에 적절한 태그를 지정하고 imagePullPolicy를 현명하게 사용-739
17.4.3 일차원 레이블 대신 다차원 레이블 사용-740
17.4.4 어노테이션으로 각 리소스 설명-740
17.4.5 프로세스가 종료된 원인에 대한 정보 제공-741
17.4.6 애플리케이션 로깅 처리-743
17.5 개발 및 테스트 모범사례-746
17.5.1 개발 중 쿠버네티스 외부에서 애플리케이션 실행-746
17.5.2 개발 중 Minikube 사용-748
17.5.3 버전 관리 및 자동 배포 리소스 매니페스트-749
17.5.4 YAML/JSON 매니페스트 대안으로 Ksonnet 소개-750
17.5.5 지속적 통합과 지속적 배포-751
17.6 요약-752

18장. 쿠버네티스의 확장-755

18.1 사용자 정의 API 오브젝트 정의-756
18.1.1 CustomResourceDefinition 소개-756
18.1.2 사용자 정의 컨트롤러로 사용자 정의 리소스 자동화-762
18.1.3 사용자 정의 오브젝트 유효성 검증-768
18.1.4 사용자 정의 오브젝트를 위한 사용자 정의 API 서버 제공-768
18.2 쿠버네티스 서비스 카탈로그를 통한 쿠버네티스 확장-771
18.2.1 서비스 카탈로그 소개-772
18.2.2 서비스 카탈로그 API 서버 및 컨트롤러 매니저 소개-773
18.2.3 Service Broker와 OpenServiceBroker API 소개-774
18.2.4 프로비저닝과 서비스 사용-776
18.2.5 바인딩 해제와 프로비저닝 해제-780
18.2.6 서비스 카탈로그의 이점 이해-781
18.3 쿠버네티스 기반 플랫폼-781
18.3.1 레드햇 오픈시프트 컨테이너 플랫폼-782
18.3.2 Deis Workflow and Helm-787
18.4 요약-790

부록 A. 다중 클러스터 환경에서 kubectl 사용하기-793

부록 B. kubeadm을 사용한 다중 노드 클러스터 설정하기-801

부록 C. 다른 컨테이너 런타임 사용하기-819

부록 D. 클러스터 페더레이션-825

책에서 다루는 쿠버네티스 리소스-832
찾아보기-835