실습 환경 : Windows 환경에서 진행
1. kubernetes architecture
- 가장 일반적인 case 의 k8s 구조
2. 쿠버네티스(k8s) 정의
- container를 관리하는 오픈 소스 플랫폼
- container를 확장할 수 있는 기능을 지원한다.
(컨테이너 확장 : Pod > container > application )
- k8s object들은 서로 간의 API 통신을 사용한다.
-> 현대화된 애플리케이션을 구축하는 것이 k8s로 MSA 구현하기 위한 수단을 제공
- k8s Goal : MSA 구축
[정리] 쿠버네티스란?
- 컨테이너화(pod>container>application)된 워크로드와 서비스를 관리하기 위한 이식성(on-premise, cloud service 모두 사용 가능)이 있고 확장가능한 오픈소스 플랫폼
3. 쿠버네티스 역사
1) Linux 기반 LXC(Linux Container) 가상화
- chroot(change root) : 독립된(자체적으로 컨테이너가 pid=1을 가진다 = 독립된 os가 존재) 컨테이너 환경 제공
- cgroup : 자원 할당 기술 -> cpu, memory, disk, network 할당하는 기술
- namespace : network namespace 관여 -> sandbox
2) VM 가상화
3) Container 가상화 => Docker
4) Container Orchestration tool(종합적 관리 도구) -> CI/CD 자동 배포와 k8s 연계
4. 쿠버네티스 특징
-
선언적 구성 명령어 사용 -> YAML 코드 -> kubectl apply~
ex) '이런 사양을 만들겠다'는 것을 YAML코드에 선언
ㄴ 명령적 : kubectl (create/run/..) => CKA 에서 사용
ㄴ 선언적 : yaml (kubectl apply ~ )
(선언적 구성을 우선적으로 기반이 되어 공부후 명령적 구성 공부하는 것을 추천)
-
들여쓰기(종속성)이 중요 -> 두번 들여쓰기
-
애플리케이션(pod>container>application)의 확장과 장애 조치를 처리하고, 배포 패턴 등을 정의(orchestration
)
-
pod 와 service
-
모듈화를 통한 더 나은 관리 (pod의 모음을 service라고 한다)
-
대규모 소프트웨어 배포 및 무중단 업데이트(상태 비저장 저장 및 데이터 처리 워크로드)
k8s 요약
쿠버네티스 목적
- Desired State Management
- 사용자가 요구한 구성(yaml코드) 작성하면 k8s가 지속적으로 사용가능한 형태로 유지해주는 것이 목적이다.