일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 삼성인 아마조니언 되다
- 알고리즘
- 파이썬
- LongestPalindromicSubstring
- Envoy
- Dynamic Programmin
- BFS
- 아마조니언
- 기술적 채무
- mysql #numa #swap #memory
- minimum path sum
- 리트코드
- technical debt
- 리스트의 리스트
- 블린이
- 규칙없음
- 프로그래머스
- Unique Paths
- 독후감
- 동적 프로그래밍
- No Rules Rules
- 삼성역량테스트
- leetcode
- Python
- 트리
- list of list
- 그거봤어?
- 와썹맨
- 나는 아마존에서 미래를 다녔다
- 김태강
- Today
- Total
개발자가 되고 싶은 준개발자
[CKA] Kubernetes 기본 개념 및 용어 설명 본문
쿠버네티스의 목적은 여러 어플리케이션들을 컨테이너 형태로 잘 운영하기 위해서이다. 요즘의 어플리케이션들은 규모가 크기 때문에 대부분 여러 개의 컨테이너로 구성하게 되고, 쿠버네티스는 이런 여러 컨테이너들간의 소통 및 관리(orchestration)를 용이하게 해준다.
어플리케이션을 선박의 컨테이너에 비유해 보면 쿠버네티스의 Worker 노드에서는 이런 컨테이너들을 실행하게 되고, Master 노드에서는 이런 컨테이너들을 어느 node에 실을지, 노드들의 상태는 어떤지 등을 중앙에서 관리해 주는 역할을 한다.
마스터 모드 구성요소
ETCD
: distributed reliable key-value store; simple, secure, fast
- 선박에는 여러 컨테이너들이 실릴 텐데 이런 컨테이너들이 어느 노드에 실리는지, 언제 실리는지 등등의 정보를 기록해야 한다. 이런 정보는 잃어버리면 안 되는 중요 정보이므로 highly-available한 ETCD cluster에 따로 저장해 둔다. ETCD Cluster는 key-value 형식으로 정보를 저장하는 데이터베이스이다.
- 전통적인 DB랑 어떻게 다른가?
RDBMS는 테이블 형식으로 정보를 저장함.
이에 반해 ETCD는 key-value 형태로 저장하고, key는 중복될 수 없음. 따라서 적은 양의 데이터를 빨리 읽어야 할때 적합함.
-HA environment에서는 master를 여러개 띄우고, ETCD도 여러개 뛰운다. ETCD가 서로의 존재를 알 수 있도록 설정해 줘야 한다.
Kube-API Server
- 모든 것을 관리하는 서버로 사용자가 클러스터에 명령어를 날리면 Kube-API Server가 받아서 command가 적합한지를 보고 쿠버네티스 시스템에 적용시킴.
- Kubelet으로부터 노드와 노드에서 실행되고 있는 컨테이너들의 상태를 주기적으로 받음.
Controller-Manager
node-monitor-period, pod-eviction-timeout 등을 옵션으로 설정할 수 있음.
Node-Controller:
- 노드들을 관리하는 컨트롤러로 Node가 사용할 수 없게 되거나 하는 상황에 대처하며 어플리케이션이 죽지 않도록 관리.
- Kube-apiserver를 통해 노드들의 상태를 주기적으로 받고, 노드로부터 heartbeat을 못 받게 되면 unreachable로 마크하고 다른 노드에 작업을 배포함.
Replication-Controller: Replication group에서 지정한 replication만큼 작업이 돌고 있는지 확인.
Kube Scheduler
- 컨테이너의 resource requirement와 worker 노드의 capacity 등을 고려해 컨테이너를 적합한 노드에 결정하는 역할. (결정만 하고 실제로 배치하지는 않음. 실제 배치는 Kubelet이 함!)
- 실행하려면 바이너리로 받아서, 서비스로서 마스터 노드에 띄움.
워커 노드 구성 요소
Kubelet
- Captain of Ship(worker node)!
- 노드를 클러스터에 등록하고, Container Runtime Engine(ex.Docker)한테 이미지를 받아 instance를 실행하도록 명령, 노드와 pod를 모니터링.
- 실행하려면 worker node에 메뉴얼하게 다운 받아 서비스로 worker node에 띄워야 함.
Kube Proxy
- worker 노드들 간의 소통을 가능하게 함. 서로 다른 노드들에서 실행되는 애플리케이션(컨테이너)이 소통할 수 있음.
- 노드들마다 있어, 새로운 Service가 있는지 확인하고 새로운 Service가 생성되면 그 Service로 traffic을 전달할 수 있도록 설정함.
- iptable Rules를 노드마다 만들음.
POD
- 보통 컨테이너와 Pod는 1:1 관계. 어플리케이션을 늘리고 싶으면 Pod를 늘리면 됨.
- Multi-Container PODs? 한 Pod 안에 서로 다른 컨테이너들을 띄울 수도 있음.
출처