일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- CI
- AWS
- mysql
- ECS
- kafka
- centos7
- spring kafka
- bean
- QueryDSL
- PAGING
- git
- spring
- transactionaleventlistener
- Spring Data JPA
- topic생성
- entity graph
- cd
- Kubernetes
- Streams
- producer
- Entity
- K8s
- Spring JPA
- mirror maker2
- JPA
- Kotlin
- API
- consumer
- offsetdatetime
- CodePipeline
- Today
- Total
Yebali
Kubernetes의 Control Plane와 Node, Namespace 본문
Kubernetes의 컴포넌트를 크게 분류하면 기능제 제어를 전체적으로 담당하는 Control Plane와 Node로 나눌 수 있다.
Control Plane
etdc
Kubernetes 클러스터가 동작하기 위한 리소스의 구성 정보, 상태 정보 및 명세 등을 key-value형태로 저장하는 저장소이다.
안정적인 동작을 위해 분산해서 저장하는 구조를 가지고 있다.
kube-apiservice
Kubernetes 클러스터로 들어오는 요청을 가장 앞에서 받아 적절한 컴포넌트로 다시 전달하는 역할을 한다.
대표적으로 'kubectl'을 통해 요청된 명령들이 위와 같은 과정으로 처리된다.
kube-scheduler
Kubernetes 클러스터는 보통 여러개의 노드로 구성되어 있다. 그리고 Pod를 여러 노드 중 특정 노드에 배치하여 동작하게 된다.
이때 새로 생성되는 Pod를 감지하고 어떤 노드에 배치할지 결정하는 작업을 스케줄링이라고한다.
이런 스케줄링을 담당하는 컴포넌트가 kube-scheduler이다.
kube-controller-manager
kube-controller-manager은 클러스터에 다운된 노드가 없는지, 파드가 Replicas 를 유지하고 있는지, Service와 Pod가 적절하게 연결되어 있는지 등 적절한 수준을 유지하는 역할을 한다.
coreDNS
CoreDNS는 쿠버네티스 클러스터의 DNS 역할을 수행할 수 있는, 유연하고 확장 가능한 DNS 서버이다.
Node
kubelet
노드에서 컨테이너가 동작하도록 관리해주는 핵심 요소이다.
각 노드에서 파드를 생성하고 정상적으로 동작하는지 관리하는 역할을 담당하고 있으며,
우리가 Kubernetes의 워크로드를 관리하기 위해 내려지는 명령은 kubelet을 통해 수행된다.
kube-proxy
container runtime
Pod에 포함된 컨테이너 실행을 담당하는 애플리케이션(엔진)을 의미한다.
특정 소프트웨어를 지칭하는 것은 아니며 해당 역할을 하는 소프트웨어로는 docker, containerd, runc등이 있다.
Namespace
Kubernetes 단일 클러스터 내에서 리소스를 격리하기 위한 논리적인 단위이다.
리소스의 이름은 Namespace내에서 유일해야하며, Namespace간에서는 유일하지 않아도 된다.
Namespace은 Namespace기반 오브젝트(ex: Deployment, service 등)에만 적용가능하며,
클러스터 범위의 오브젝트(ex: Storage, Nodem Persistant Volume 등)에는 적용할 수 없다.
만약 단일 클러스터에서 상용, 개발, 스테이징 환경을 모두 구성한다면 Namespce를 production, develop, staging으로 구분해서 사용할 하는 방법이 있다.
참고자료
- https://www.samsungsds.com/kr/insights/kubernetes-3.html
- https://www.youtube.com/watch?v=6n5obRKsCRQ&list=PLApuRlvrZKohaBHvXAOhUD-RxD0uQ3z0c
'Backend Common' 카테고리의 다른 글
Kubernetes의 Job, CronJob (0) | 2024.03.03 |
---|---|
Kubernetes의 Pod와 Controller (0) | 2024.03.03 |
k8s 환경에서 pinpoint 적용하기 (feat. NCP) (1) | 2023.12.31 |
Sync/Async, Blocking/Non-Blocking (0) | 2023.10.09 |
백엔드 면접 질문 (0) | 2023.08.09 |