일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- kubernetes
- ELB
- codepresso
- Auto Scaling Group
- ASG
- NoSQL
- 코드프레소
- Typesript
- Elastic Load Balancing
- AWS
- k8s
- 아키텍처
- TypeScript
- springboot
- docker
- ci/cd
- Redis
- Jenkins
- REPLICATION
- Today
- Total
Study Note
쿠버네티스 기본 개념 [Kubernetes, k8s] 본문
쿠버네티스는 일반적인 운영체제에서 지원하는 기능들을 비슷하게 제공합니다.
- 하드웨어 추상화
- 컨터이너 스케줄링
- 자원할당 관리
- kubectl을 통해 User Interface 제공
쿠버네티스가 바라보는 서버를 바라보는 관점
쿠버네티스의 다음과 같이 서버를 바라보고 있습니다.
- 서버마다 특정 역할이 정해져 있지 않아 서버마다 특별한 이름을 부여하지 않습니다. 모든 서버(빌드 서버, 웹 서버, 모니터링 서버, DB 서버 등등)들은 워커 서버로 동일합니다.
- 한두개의 서버가 망가져도 손쉽게 다른 서버에 그 역할을 맡길 수 있습니다. 쿠버네티스안의 모든 서버들은 마스터와 워커로만 구분되어 있습니다.
- 마스터 : 쿠버네티스를 운용하기 위한 필수적인 핵심 컴포넌트
- 워커 노드 : 컨터이너를 실행하는 환경으로 특별한 역할을 맡지 않아 마스터가 죽지 않는 이상 특정 워커가 수행했던 역할을 다른 워커들이 맡아도 문제가 없음
Desired State (바라는 상태)
쿠버네티스는 사용자의 요청에 따라 현제 상태가 바라는 상태와 동일해지도록 사전에 미리 정의된 특정 작업을 수행합니다. 즉 사용자가 자신이 원하는 애플리케이션 배포 상태를 쿠버네티스에 알려주면 쿠버네티스가 자동으로 현재 상태를 바라는 상태로 변경합니다. 때문에 애플리케이션이 죽더라도 바라는 원래의 상태로 배포 상태를 되살릴 수가 있습니다 (자가 치유)
- Desired State (바라는 상태) : 사용자가 생각하는 최종 애플리케이션 배포 상태
컨트롤러 (Controller)
쿠버네티스에서 현재 상태를 바라는 상태(Desired State)로 변경할 때 상태를 변경하는 주체를 컨트롤러(Controller)라고 합니다. 컨트롤러는 control-loop라는 루프를 돌벼 특정 리소스를 지속적으로 모니터링을 하다가 사용자가 생성한 리소스의 이벤트에 따라 사전에 정의된 작업을 수행합니다.
쿠버네티스 리소스 (Resource)
쿠버네티스는 모든 것이 리소스(Resource)로 표현되며 다양한 리소스(pod, ReplicaSet, Deployment등)가 존재하고 각각의 역할이 정해져 있습니다.
쿠버네이스의 가장 기본적인 리소스를 pod라고 하며, pod는 하나 이상의 컨테이너를 가지는 쿠버네티스의 최소 실행 단위입니다. 쿠버네티스에서 프로세스(컨테이너)를 실행한다는 것은 pod 리소스를 생성하는 것과 비슷합니다.
선언형 커맨드 (Declarative Command)
쿠버네티스에서는 선언형 커맨드(Declarative Command)를 지향하며 YAML형식을 이용해 선언형 커맨드를 내립니다.
- 선언형 커맨드 : 선언형 커맨드는 What(무엇을)에 대한 명령입니다. (ex. HTML)
- 명령형 커맨드 : 명령형 커맨드는 How(어떻게)에 대한 명령입니다. (ex. SQL)
네임스페이스 (Namespace)
네임스페이스(Namespace)를 사용해서 쿠버네티스의 클러스터를 논리적으로 분리할 수 있습니다. 물리적으로 하나의 쿠버네티스 크러스터 위에서 놀리적으로 서로 다른 네임스페이스로 클러스터 환경을 나눌 수 있어 권한, 네트워크 정책의 설정이 가능합니다.
리소스는 다음과 같이 네임스페이스 라벨 리소스, 클러스터 라벨 리소스로 구분됩니다.
- 네임스페이스 라벨 리소스 : 특정 네임 스페이스 안에 속하며, Pod, Deployment, Service와 같은 대부분의 쿠버네티스 리소스가 포함됩니다.
- 클러스터 라벨 리소스 : 네임스페이스 영역에 상관없이 클러스터 레벨에서 존재하는 Node, PersistenVolume, StorageClass와 같은 리소스 입니다.
라벨 & 셀렉터 (Label & Selector)
쿠버네티스에서는 특정 리소스(or 리소스 그룹)에 명려을 전달하거나 정보를 확인하고 싶을 때 라벨링 시스템을 이요합니다. 라벨링 시스템을 이용하기 위해서는 리소스에 key-value 형식의 태그 정보(라벨)을 붙인 후 셀럭터를 이용해서 특정 태그정보를 가진 리소스를 추출할 수 있습니다.
쿠버네티스는 리소스간의 관계가 느슨하게 연결(loosely coupled)되는 라벨 & 셀렉터 사용하여 유연한 구조를 가진 메커니즘을 사용합니다.
서비스 탐색
쿠버네티스 클러스터내에서 통신하기 위해 노드위치과 상관없이 어디서는 접근할 수 있는 서비스 Endpoint가 필요합니다. 사용자(or Pod)는 서비스 Endpoint를 통해 다른 컨테이너와 통신할 수 있으며, 이때의 서비스 Endpoint를 탐색하는 것이 서비스 탐색(Service Discovery)입니다.
- 쿠버네티스에서 DNS 기반의 서비스 탑색을 지원합니다.
설정 관리
쿠버네티스에서 컨테이너를 실행할때 필요한 설정값, 민감한 정보를 플랫폼 레벨에서 관리할 수 있는 기능을 제공합니다. ConfigMap, Secret 리소스를 이용하여 컨테이너의 설정들을 관리할 수 있습니다.
'Kubernetes > Kubernetes 소개' 카테고리의 다른 글
쿠버네티스 아키텍처 - [Kubernetes, k8s] (0) | 2021.07.15 |
---|---|
쿠버네티스란? [Kubernetes, k8s] (0) | 2021.07.15 |