권택현
2021. 12. 22. 22:10
2021. 12. 22. 22:10
쿠버네티스의 개념
- 대표적인 도커 오케스트레이션 툴
- 도커
- 도커 컴포트
- 도커 오케스트레이션
- Clustering : 여러 개의 컨테이너를 합쳐 하나의 시스템으로 만들어 컨테이너를 배치
- Auto-placement : 여러 개의 서버를 가지므로 어떤 컨테이너를 어떤 서버에 적절히 배치하는가
- Auto-restart : 장애로 인해 컨테이너를 새로 띄운다.
- 무중단 배포 : 신규 컨테이너를 배포할 때 중단 없이 배포한다.
- 네임스페이스
- 논리적인 클러스터
- 개별적인 Access control 정책, 네트워크 정책
- 리소스
- Pod : docker container와 유사하다, 최소단위
- Node : 서버
- Sevice : 네크워크 담당
- 앱 정의서
- 리소스의 정의 (YAML 파일 형식 - 선언형 명령)
- Desired State : 바라는 상태
- 쿠버네티스는 현재 상태가 있고 바라는 상태로 가려한다.
- YAML 파일로 바라는 상태를 수정 → 현재 상태가 바라는 상태로 변경됨 ⇒ 기존에 현재 상태가 여러가지 이유로 리소스가 삭제 되거나 바뀌어도 바라는 상태로 계속 바뀌게 되는 형식이다.
- 이러한 방식으로 새로운 기능이 추가된다.
- 라벨 & 셀렉터
- 리소스에 label을 달 수 있다.
- selector를 통해서 해당 라벨을 가지고 있는 리소스를 선택할 수 있다.
쿠버네티스의 아키텍처
- 마스터 노드와 워커 노드가 존재
- Master
- kube-api-server
- 쿠버네티스의 모든 컴포넌트와 통신하는 역할
- 모든 컴포넌트의 리퀘스트를 받고 리스폰스 하는 역할
- 워커노드와 다리 역할
- etcd
- api 서버로부터 들어온 데이터를 저장 및 제공해주는 역할
- RDB가 아닌 Key-Value 형태의 데이터
- 쿠버네티스 안의 모든 메타정보를 저장하고있다.
- kube-scheduler
- Auto-Placement 기능 : 어떤 노드가 가능한지 확인 (Scheduling)
- kube-controller manager
- current state와 desire state를 확인하며 달라지면 kube-scheduler를 통해서 리소스 관리
- 루프를 통해서 지속적으로 확인
- cloud-controller manager
- public cloud를 사용하는 경우 통신 기능 제공
- Woker
- kubelet
- kube-api-server로 부터 어떤 컨테이너를 실행해야 하는지 전달 받아 실제로 컨테이너를 실행한다.
- 워커노드의 상태를 전달
- kube-proxy
쿠버네티스의 장점
- 컨테이너 스케줄링이 편리
- Auto Scaling을 통해 확장성이 좋다
- 모니터링이 쉬워진다.
- 장애에 견고해진다.
- Hybrid / 멀티 클라우드 구현 ( aws, google, micro azure, on-promise )