이미 소장하고 있다면 판매해 보세요.
|
1장 도커와 쿠버네티스의 개요 23
1 쿠버네티스란? 25 1.1 쿠버네티스의 개요 . . . 26 1.2 탄생부터 현재까지의 역사 . . . 27 1.3 쿠버네티스의 발음과 로고에 대하여 . . . 29 1.4 쿠버네티스가 해결하는 과제 . . . 30 1.5 쿠버네티스의 아키텍처 . . . 33 마무리 . . . 34 참고 자료 . . . 35 2 컨테이너의 이해 38 2.1 컨테이너를 사용하는 이유 . . . 38 2.2 가상 서버와 컨테이너의 차이점 . . . 39 2.3 도커의 아키텍처 . . . 41 2.4 레지스트리와 쿠버네티스의 관계 . . . 47 2.5 도커와 쿠버네티스의 연동 . . . 48 2.6 컨테이너를 위한 기술과 표준 . . . 49 마무리. . . 51 참고 자료 . . . 52 Column 해상 컨테이너가 이룩한 혁명과 IT의 컨테이너 기술 혁명 . . . 55 3 쿠버네티스의 기본 58 3.1 아키텍처 . . . 58 3.2 쿠버네티스 계층 구조 . . . 61 3.3 쿠버네티스 API 오브젝트 . . . 62 3.4 파드의 기본 . . . 65 3.5 파드의 라이프 사이클 . . . 67 3.6 파드의 종료 처리 . . . 68 3.7 클러스터 네트워크 . . . 69 3.8 서비스의 기본 . . . 70 3.9 컨트롤러의 기본 . . . 73 마무리 . . . 77 참고 자료 . . . 77 4 이 책의 학습 환경 79 4.1 빠르게 전반적인 기능을 파악하고 싶은 경우 . . . 79 4.2 직접 돌려보면서 익히고 싶은 경우 . . . 79 4.3 각 학습 환경의 구성 . . . 80 4.4 학습 환경 선택 . . . 81 4.5 이 책에서 다루는 OSS 목록 . . . 82 5 도커 커맨드 치트 시트 84 5.1 컨테이너 환경 표시 . . . 85 5.2 컨테이너의 3대 기능 . . . 85 5.3 디버그 관련 기능 . . . 87 5.4 쿠버네티스와 중복되는 기능 . . . 88 참고 자료 . . . 89 6 kubectl 커맨드 치트 시트 90 6.1 kubectl 커맨드의 기본 . . . 90 6.2 커맨드 . . . 91 6.3 리소스 타입 . . . 91 6.4 옵션 . . . 95 6.5 kubectl 커맨드 실행 예 . . . 96 참고 자료 . . . 102 Column 5G와 자율 운전으로 주목받는 쿠버네티스 . . . 103 2장 컨테이너 개발을 익히기 위한 5단계 105 Step 01 컨테이너 첫걸음 107 01.1 hello-world 실행 . . . 107 01.2 컨테이너의 생명 주기와 도커 커맨드 . . . 110 Step 01 마무리 . . . 123 Step 01 참고 자료 . . . 123 tep 02 컨테이너 다루기 124 02.1 대화형 모드로 컨테이너 기동 및 정지 . . . 124 02.2 컨테이너 조작 및 이미지 작성 . . . 126 02.3 여러 터미널에서 조작하기 . . . 128 02.4 호스트와 컨테이너의 관계 . . . 131 Step 02 마무리 . . . 133 Step 02 참고 자료 . . . 133 Step 03 컨테이너 개발 134 03.1 이미지 빌드의 개요 . . . 134 03.2 빌드 실행 순서 . . . 136 03.3 Dockerfile 작성법 . . . 139 03.4 Dockerfile 작성 모범 사례 . . . 141 Step 03 마무리 . . . 142 Step 03 참고 자료 . . . 142 Step 04 컨테이너와 네트워크 143 04.1 컨테이너 네트워크 . . . 144 04.2 외부에 포트를 공개하기 . . . 147 04.3 AP 컨테이너와 DB 컨테이너의 연동 예 . . . 148 Step 04 마무리 . . . 154 Step 04 참고 자료 . . . 154 Step 05 컨테이너 API 155 05.1 컨테이너 API의 종류와 개요 . . . 155 05.2 환경 변수 API 구현 예 . . . 159 05.3 종료 요청 API 구현 예 . . . 163 05.4 퍼시스턴스 볼륨 API 구현 예 . . . 167 05.5 로그와 백그라운드 기동 . . . 170 Step 05 마무리 . . . 171 Step 05 참고 자료 . . . 171 Column K8s 사용자를 위한 YAML 입문 . . . 172 3장 K8s 실전 활용을 위한 10단계 177 Step 06 쿠버네티스 첫걸음 179 06.1 클러스터 구성 확인 . . . 179 06.2 파드 실행 . . . 180 06.3 컨트롤러에 의한 파드 실행 . . . 185 06.4 잡에 의한 파드 실행 . . . 190 Step 06 마무리 . . . 192 Step 06 참고 자료 . . . 193 Step 07 매니페스트와 파드 194 07.1 매니페스트 작성법 . . . 195 07.2 매니페스트 적용 방법 . . . 197 07.3 파드의 동작 확인 . . . 198 07.4 파드의 헬스 체크 기능 . . . 200 07.5 초기화 전용 컨테이너 . . . 211 07.6 사이드카 패턴 . . . 213 Step 07 마무리 . . . 219 Step 07 참고 자료 . . . 220 Step 08 디플로이먼트 221 08.1 디플로이먼트의 생성과 삭제 . . . 222 08.2 스케일 기능 . . . 226 08.3 롤아웃 기능 . . . 228 08.4 롤백 기능 . . . 233 08.5 파드의 IP 주소가 변경되는 경우와 아닌 경우 . . . 235 08.6 자동 복구 . . . 236 08.7 디플로이먼트를 이용한 고가용성 구성 . . . 239 08.8 디플로이먼트의 자동 복구 . . . 242 Step 08 마무리 . . . 246 Step 08 참고 자료 . . . 247 Column 파드의 트러블 슈팅 . . . 248 Step 09 서비스 255 09.1 ClusterIP . . . 256 09.2 서비스 타입 NodePort . . . 256 09.3 서비스 타입 LoadBalancer . . . 258 09.4 서비스 타입 ExternalName . . . 259 09.5 서비스와 파드의 연결 . . . 260 09.6 서비스의 매니페스트 작성법 . . . 261 09.7 서비스 생성과 기능 확인 . . . 263 09.8 세션 어피니티 . . . 265 09.9 NodePort 사용 . . . 267 09.10 로드밸런서 . . . 268 09.11 ExternalName . . . 271 Step 09 마무리 . . . 272 Step 09 참고 자료 . . . 273 Step 10 잡과 크론잡 274 10.1 잡 활용 예 . . . 276 10.2 잡의 실행수와 동시 실행수 . . . 279 10.3 하나의 컨테이너로 구성된 파드가 이상 종료 하는 경우 . . . 282 10.4 여러 컨테이너 중 일부가 이상 종료 할 때의 동작 . . . 284 10.5 소수 계산 컨테이너와 잡 컨트롤러 . . . 286 10.6 메시지 브로커와의 조합 . . . 290 10.7 쿠버네티스 API 라이브러리 사용 . . . 295 10.8 실행 . . . 298 10.9 크론잡 . . . 302 Step 10 마무리 . . . 305 Step 10 참고 자료 . . . 306 Step 11 스토리지 307 11.1 스토리지의 종류와 클러스터 구성 . . . 308 11.2 스토리지 시스템의 방식 . . . 309 11.3 스토리지의 추상화와 자동화 . . . 311 11.4 퍼시스턴트 볼륨 이용. . . 313 11.5 NFS 서버 사용 . . . 319 11.6 클라우드에서의 동적 프로비저닝 . . . 326 11.7 SDS 연동에 의한 동적 프로비저닝 . . . 335 Step 11 마무리 . . . 341 Step 11 참고 자료 . . . 342 Step 12 스테이트풀셋 343 12.1 디플로이먼트와의 차이 . . . 344 12.2 매니페스트 작성법 . . . 349 12.3 수동 테이크 오버 방법. . . 355 12.4 노드 장애 시의 동작 . . . 356 12.5 테이크 오버를 자동화하는 코드 개발. . . 358 12.6 장애 회복 테스트 . . . 375 Step 12 마무리 . . . 379 Step 12 참고 자료 . . . 381 Step 13 인그레스 382 13.1 인그레스의 기능과 개요 . . . 383 13.2 인그레스 학습 환경 준비 . . . 384 13.3 공개 URL과 애플리케이션의 매핑 . . . 385 13.4 인그레스 적용 . . . 389 13.5 인그레스 SSL/TLS 암호화 . . . 395 13.6 모더니제이션 과제 . . . 399 13.7 세션 어피니티 기능 사용 . . . 401 13.8 kube-keepalived-vip에 의한 VIP 획득과 HA 구성 . . . 405 13.9 퍼블릭 클라우드에서 인그레스 사용 . . . 423 Step 13 마무리 . . . 425 Step 13 참고 자료 . . . 425 Step 14 오토스케일 427 14.1 오토스케일링 작업 . . . 429 14.2 학습 환경 3에서의 오토스케일 체험 . . . 432 14.3 부하 테스트용 컨테이너 준비 . . . 433 14.4 HPA 설정과 부하 테스트 . . . 436 Step 14 마무리 . . . 439 Step 14 참고 자료 . . . 439 Step 15 클러스터 가상화 441 15.1 네임스페이스(Namespace) . . . 442 15.2 kubectl 커맨드의 네임스페이스 설정 . . . 446 15.3 시크릿과 컨피그맵 . . . 451 15.4 시크릿 이용 . . . 452 15.5 컨피그맵 . . . 457 15.6 메모리와 CPU 할당과 상한 지정 . . . 460 15.7 네트워크의 접근 제어(Calico) . . . 463 15.8 역할에 따른 접근 범위 제한 . . . 464 15.9 환경 구축 . . . 466 15.10 설정 파일 내용 . . . 491 Step 15 마무리 . . . 511 Step 15 참고 자료 . . . 512 부록 학습 환경 구축 515 1 학습 환경 1 517 1.1 Mac 환경 . . . 517 1.2 Windows 환경 . . . 527 1.3 Vagrant의 리눅스에서 미니쿠베 사용하기. . . 538 1.4 미니쿠베 사용 방법 . . . 542 2 학습 환경 2 551 2.1 멀티 노드 K8s . . . 551 2.2 가상 NFS 서버 . . . 560 2.3 가상 GlusterFS 클러스터 . . . 563 2.4 프라이빗 레지스트리 . . . 566 3 학습 환경 3 574 3.1 IBM Cloud Kubernetes Service . . . 574 3.2 Google Kubernet |
高良??
이동규의 다른 상품
|
도커는 이러한 문제를 컨테이너를 통해 해결하여, 오픈 소스를 사용한 개발 생산성 향상과 애플리케이션 안정성이라는 두 마리 토끼를 잡고 있다. 컨테이너화된 애플리케이션을 운영하는 플랫폼 쿠버네티스도 일부 모듈이 컨테이너로 되어 있다.
--- p.38 자동 운전은 몇 단계의 레벨이 있으며, 2019년 일반 차량에 탑재된 것은 레벨 2의 자동 운전이다. 이 레벨에는 운전자를 대신해 자동차 사이를 조정해 추돌을 방지하고, 보행자에 반응하여 자동으로 브레이크하는 기능 등이 있다. 그리고 2020년대 후반까지 레벨 5의 자율 주행 실용화를 목표로 개발이 진행 중이다. 이 레벨에 이르면 모든 장소에서 운전자를 대신해 자동으로 차량을 운행하는 게 가능하다. 이 단계의 자동차는 인공지능을 탑재한 로봇이 운전하는 차량이라고 할 수 있다. 이는 모든 산업이나 사회에 막대한 영향을 미치고, 엄청난 경제효과까지 예측되기 때문에 제4차 산업혁명이 도래한다고 볼 수 있다 --- p.103 컨테이너를 백그라운드로 돌리기 위해서는 옵션 ‘-d’를 사용한다. 그러면 표준 출력이나 표준 오류가 터미널에 출력되지 않고 로그에만 기록된다. 즉, 컨테이너가 터미널로부터 분리된 상태로 기동한다. 이때는 로그를 통해 컨테이너 내 애플리케이션의 동작을 확인하게 된다. --- p.170 파드는 일시적인 존재라 언제든지 할당된 IP 주소가 바뀔 수 있다. 클라이언트 입장에서는 늘 변하는 파드의 IP 주소를 알기 어렵기 때문에 쿠버네티스에는 서비스라는 오브젝트가 존재한다. 서비스의 개요는 ‘1장 3.8 서비스의 기본’에서 알아보았다. 여기서는 구체적으로 어떤 종류의 서비스가 있는지 확인하고, 서비스를 만드는 매니페스트를 작성하고 배포해 보면서 구체적인 동작을 살펴볼 것이다. --- p.255 인그레스(Ingress)는 K8s 클러스터 외부에서의 요청을 K8s 클러스터 내부의 애플리케이션에 연결하기 위한 API 오브젝트다. 그림 1과 같이 디플로이먼트 관리하의 애플리케이션을 외부 공개용 URL과 매핑하여 인터넷에 공개하는 데 사용된다. 인그레스는 SSL/TSL 암호화나 세션 어피니티 등의 기능을 갖추고 있어, 기존 웹 애플리케이션을 쿠버네티스화하는 데 유용한 오브젝트다. --- p.382 |
|
한 권으로 배우는 도커와 쿠버네티스 실전 가이드!
이 책은 컨테이너 기술에 처음 입문하는 독자도 체계적으로 실력을 쌓아갈 수 있도록 도커부터 시작하여 쿠버네티스의 전반적인 기능을 기초부터 단계별로 학습할 수 있도록 구성되어 있다. 독자는 이 책을 통해 현장에서 운영 가능한 수준의 기술을 익힐 수 있을 것이며, 쿠버네티스 기반의 응용 프로그램 개발과 시스템 아키텍처를 그릴 수 있게 될 것이다. 이 책의 예제 파일은 PC나 클라우드에서 실행할 수 있으며, 일일이 실습할 시간이 없거나 흐름만을 파악하고자 할 경우, 책을 읽는 것만으로도 내용을 충분히 파악할 수 있도록 구성하였다. 이 책의 목표와 특징 ● 이 책은 쿠버네티스의 핵심 내용을 엄선하여 독자들이 효율적으로 익힐 수 있도록 구성했다. 무엇보다 실무에 보탬이 되는 지식을 담기 위해 노력했다. ● 이 책은 쿠버네티스를 다루기 전에 반드시 알아야 하는 컨테이너 기술의 기초부터 다룬다. 도커의 모든 내용을 망라하지는 않지만, 쿠버네티스를 다루는 데 필수적인 내용을 선별하여 담았다. ● 이 책은 학습 과정을 15단계로 구성하여 이해를 단계적으로 넓힐 수 있게 구성했다. PC에 직접 혹은 가상 머신을 사용하여 실습 환경을 구축하는 방법과 퍼블릭 클라우드를 사용하는 방법을 다룬다 |