완벽한 IT 인프라 구축의 자동화를 위한 Kubernetes(쿠버네티스)
도서명:완벽한 IT 인프라 구축의 자동화를 위한 Kubernetes(쿠버네티스)
저자/출판사:Asa,Shiho/정보문화사
쪽수:380쪽
출판일:2019-09-10
ISBN:9788956748412
목차
제1부 도입편
CHAPTER 01 컨테이너와 쿠버네티스
1.1 컨테이너 기술의 개요
컨테이너란?
컨테이너 애플리케이션 개발의 흐름
1.2 쿠버네티스의 개요
분산 환경에서 컨테이너 운용 관리
쿠버네티스의 특징
쿠버네티스의 도입
쿠버네티스의 유스케이스
1.3 정리
CHAPTER 02 쿠버네티스의 환경 구축
2.1 컨테이너 애플리케이션 개발의 흐름
쿠버네티스를 사용한 개발 및 운용의 흐름
Azure의 쿠버네티스 관련 서비스
2.2 개발 환경의 준비
Visual Studio Code 설치
Azure CLI 명령의 설치
Kubectl 명령의 설치
Azure Cloud Shell 이용
2.3 컨테이너 이미지의 빌드와 공개
Azure Container Registry
ACR을 사용한 컨테이너 이미지 빌드와 공유
2.4 Azure를 사용한 쿠버네티스 클러스터 작성
AKS를 사용한 클러스터 구축
kubectl 명령을 사용한 클러스터의 기본 조작
2.5 정리
CHAPTER 03 쿠버네티스를 움직여보자
3.1 애플리케이션의 디플로이
디플로이의 기본 흐름
3.2 매니페스트 파일의 작성
컨테이너 애플리케이션 설정하기
서비스 설정하기
3.3 클러스터에서 리소스 작성
애플리케이션 디플로이하기
서비스 공개하기
3.4 애플리케이션의 동작 확인
3.5 정리
제2부 기본편
CHAPTER 04 쿠버네티스의 요점
4.1 쿠버네티스의 개념
Immutable Infrastructure
선언적 설정
자기 복구 기능
4.2 쿠버네티스의 구조
스케줄링과 디스커버리
쿠버네티스의 서버 구성
쿠버네티스의 컴포넌트
클러스터에 액세스하기 위한 인증 정보
4.3 쿠버네티스의 리소스
애플리케이션 실행(Pod/ReplicaSet/Deployment)
네트워크 관리(Service/Ingress)
애플리케이션 설정 정보 관리(ConfigMap/Secrets)
배치 잡 관리(Job/CronJob)
4.4 매니페스트 파일
매니페스트 파일의 기본
YAML의 문법
4.5 라벨을 사용한 리소스 관리
라벨(Label)
LabelSelector를 사용한 리소스 검색
4.6 쿠버네티스의 리소스 분리
4.7 정리
CHAPTER 05 컨테이너 애플리케이션의 실행
5.1 포드를 사용한 컨테이너 애플리케이션의 관리
포드
매니페스트 파일
포드의 작성, 변경, 삭제
포드의 디자인 패턴
5.2 포드의 스케줄링 구조
포드가 어떻게 배치되는가?
포드를 배치하는 노드는 어떻게 정하는가?
포드를 움직이는 노드를 명시적으로 설정하기
5.3 포드를 효율적으로 움직이자
노드의 CPU와 메모리 리소스 확인하기
포드에 필요한 메모리와 CPU를 할당하기
포드의 메모리와 CPU의 상한값 설정하기
포드에 오류가 발생하면 어떻게 움직이는가?
포드의 우선순위(QoS)
5.4 포드를 감시하자
컨테이너 애플리케이션의 감시
HTTP 리퀘스트의 반환값을 체크하기
TCP Socket으로 연결할 수 있는지 체크하기
명령의 실행 결과를 체크하기
5.5 리플리카셋으로 여러 포드를 관리하자
리플리카셋(ReplicaSet)
매니페스트 파일
리플리카셋의 작성, 변경, 삭제
클러스터 안의 상태를 어떻게 제어하는가?
포드 장애가 발생하면 어떻게 될까?
노드 장애가 발생하면 포드는 어떻게 될까?
5.6 부하에 따라 포드의 수를 바꿔 보자
스케일러빌리티
포드를 수동으로 수평 스케일하기
포드를 자동으로 수평 스케일하기
HPA의 구조
5.7 정리
CHAPTER 06 애플리케이션 디플로이
6.1 디플로이먼트를 사용한 애플리케이션 디플로이
애플리케이션의 버전업 개념
디플로이먼트
매니페스트 파일
디플로이먼트 작성, 변경, 삭제
6.2 디플로이먼트의 구조
업데이트 처리 방식
롤아웃
롤백
롤아웃 조건
롤링 업데이트 제어
블루/그린 디플로이먼트
6.3 애플리케이션의 설정 정보를 관리하자
애플리케이션의 설정 정보 관리
ConfigMap 값 참조
비밀번호와 키 관리
Secrets 값 참조
6.4 정리
제3부 실전편
CHAPTER 07 아키텍처와 설계 원칙
7.1 쿠버네티스의 아키텍처
인프라스트럭처와의 관계
7.2 쿠버네티스의 설계 원칙
Reconciliation Loops와 레벨 트리거 로직
API의 watch 옵션
이벤트 체인
7.3 서비스와 제품의 구축
쿠버네티스 Conformance Partner
쿠버네티스 클러스터에 필요한 인프라스트럭처
쿠버네티스 클러스터 구축에 필요한 작업
AKS의 아키텍처와 Cloud Controller Manager
7.4 정리
CHAPTER 08 가용성(Availability)
8.1 쿠버네티스의 가용성
마스터의 가용성(모두 액티브한 etcd와 API Server)
마스터의 가용성(액티브/스탠바이 컴포넌트)
노드의 가용성
분산 수를 어떻게 할까? (마스터)
분산 수를 어떻게 할까? (노드)
8.2 인프라스트럭처의 시점
Blast Radius(폭발 반경)
소프트웨어적인 Blast Radius
배치 예
물리 서버를 의식한 배치
랙을 의식한 배치
데이터 센터를 의식한 배치
광역 재해를 의식한 배치
AKS의 구축 예
8.3 정리
CHAPTER 09 확장성(Scalability)
9.1 쿠버네티스 노드의 수평 자동 스케일
Cluster Autoscaler
9.2 AKS에 있어서 Cluster Autoscaler
Pending 상태를 만들어 낸다
Cluster Autoscaler의 도입
노드 스케일 아웃
노드 수의 상한, 하한 설정
노드 스케일 인
인프라스트럭처 조작 권한 및 시크릿 관리
9.3 기타 자동 스케일
HPA와 Cluster Autoscaler의 연동
쿠버네티스 외부의 메트릭을 사용한 자동 스케일
9.4 정리
CHAPTER 10 유지보수성(Manageability)
10.1 쿠버네티스 운용에서 필요한 업데이트 및 업그레이드 작업
10.2 서버 업데이트
노드 재시작의 영향을 최소한으로 하는 장치
Cordon/Uncordon
Drain
PodDisruptionBudget
노드 재시작을 자동으로 수행하려면
10.3 쿠버네티스 컴포넌트 업데이트
kubeadm을 사용한 예(v1.10 -> v1.11)
업그레이드 전략(인플레이스)
업그레이드 전략(블루/그린 디플로이먼트)
10.4 정리
CHAPTER 11 리소스 분리(Security)
11.1 쿠버네티스 리소스의 분리 단위
사람과 조직, 책임 범위
클러스터 분리의 장단점
11.2 네임스페이스를 사용한 분리
네임스페이스 정리
11.3 쿠버네티스의 계정
사용자 계정(User Account)
서비스 계정(Service Account)
11.4 쿠버네티스의 인증과 인가
인증
인가
Admission Control
11.5 RBAC(Role Based Access Control)
리소스 표현과 조작
Role과 RoleBinding
사용자와 Role의 연결
서비스 계정과 Role의 연결
11.6 리소스 이용량의 제한
LimitRange
ResourceQuota
세 가지 상한 설정 기능의 구분
11.7 정리
CHAPTER 12 관측가능성(Observability)
12.1 관측가능성이란
용어의 탄생 배경
쿠버네티스 환경의 관측가능성
12.2 관측 대상과 방법
메트릭
로그
분산 트레이싱
12.3 대표적인 소프트웨어와 서비스
12.4 AKS의 메트릭 수집과 가시화, 로그 분석
Azure Monitor
Azure Monitor for Containers
Azure Log Analytics
12.5 정리
APPENDIX 명령 레퍼런스
A.1 kubectl 명령
A.2 Azure CLI 명령