쿠버네티스 개요
1. 간단한 리눅스 명령어
- cd
- ls
- echo
- cp
- chmod
- VI 편집기 사용
2. 컨테이너
- os 가상화 기술
- 리눅스 커널 공유
- GuestOS 없음 - 가상머신과의 차이점, 빠르다
3. Docker
- 컨테이너 엔진, 관리하고 실행하는 도구
- 컨테이너 실행을 위해서 dockerfile, image 필요
1) dockerfile
- 이미지 생성을 위한 레시피 파일
- dockrfile(레시피) > image(틀) > container(붕어빵)
2) docker image
- 서비스 운영에 필요한 프로그램, 소스코드, 라이브러리 등을 묶는 형태
- docker file 을 사용하여 생성
- docker image를 이용해 container 실행가능
- url 방식으로 관리
ex) ubuntu : 도커허브에 있는 최선버전 ubuntu 이미지
docker.io/library/nginx:latest
3) 컨테이너 오케스트레이션
4) 컨테이너 오케스트레이터
- 컨테이너 오케스트레이션을 해주는 도구
- 종류 : kubernetes, Docker Swam, AWS ECS...
4. Kubernetes 아키텍처
1) 마스터노드의 구성요소
API server
- 명령어를 수행하기 위해 api로 접근, api를 사용할 수 있게 해주는 프로세스
- 핵심
scheduler
- pod 생성명령이 있을 경우 어떤 Node에 배포할지 결정
controller Managers
- controller 관리 , 클러스터의 상태를 조절하는 object
etcd
- 클러스터의 구성 데이터를 저장하는 저장소, 없으면 복구 불가
- 고가용성, 주기적 관리 필요
2) 워커노드의 구성요소
container Runtime
- 컨테이너 실행, 이미지 관리
ex) docker, CRI-O ...
kubelet
- work node의 선장, 작업반장
- 작업 지시, 작업 보고서 보내기 (api server 에게)
Kube-proxy
쿠버네티스 컨테이너 배포, 통신, 볼륨관리
1. 배포유형
1) all-in-one single-node installation
- 한개 노드에 마스터와 워커노드 동시에 수행
- 서비스 단계에서 사용하면 안됨 -> 다같이 망가질 수 있음
- test시 사용
2) single-node etcd,single-master and multi-worker installation
- 좀더 세부화
- 마스터와 워커노드 분리
- 마스터노드에 이상 발생시 복구 불가 -> 서비스단계에서 불안함
3) single-node etcd,multi-master and multi-worker installation
4) multi-node etcd,multi-master and multi-worker installation
2. 배포순서
- container runtime 설치 > kubernetes > master & worker 연동
3. kubernetes object
- 상태 관리 역할
ex) Pod, Service, Volume(데이터저장장치), Namespace(드라이브개념)
4. kubernetes Controller
- 클러스터 상태 확인후 필요한 경우 오브젝트를 생성, 변경 요청
- 현재 상태를 정의된 상태에 가깝게 유지하려는 특징
현재 상태(p=2) -> 정의한 상태(p=3)
controller 기능
1) Auto Healing
2) Auto scaling
3) Update & Rollback
4) Job : 한번 실행하고 종료되어져야함
5. Pod == Container 그룹
- 가장 작은 최소 단위 Object
- container를 만드는 통
- 자가복구기능 없음 -> container 관리를 받아야함
1) ReplicaSet
- pod 개수 유지
- controller로부터 pod 관리
- template안의 내용을 근거로 배로
2) namespace
- 단일 클러스터 내 리소스 그룹 격리를 위한 오브젝트
- 기본적으로는 cluster에 defalut namesapce
3) Deployment
- 개수 유지 관리
- ReplicaSet 관리, 배포를 더욱 세밀하게 관리