Kubernetes 구성요소
Kubernetes
기본 구조는 Master-Node
- Node: 물리 서버/가상 서버
- 클러스터 : Node의 집합
- Master : 클러스터를 관리해주는 역할

#️⃣Master
Cluster의 주 컨트롤러
GUI나 CLI로 마스터와 통신하며 YAML 구성 파일로 작업한다.
Master는 모든 노드 이벤트를 관리하고, 전체 클러스터 구성을 안정적이게 유지한다.
Master의 구성요소는 다음과 같다.
- Kube-APIserver
- ETCD
- Kube-Scheduler
- kube-controller-manager

▶ Kube-APIserver
Kubernets의 프런트엔드(control plane) 즉 Endpoint
API 호출과 REST 서비스를 처리하여, 개발자가 클러스터와 통신할 수 있도록 함
- Kube-APIserver는 수평적 확장 가능하여, 여러 인스턴스를 실행하고 인스턴스 간 트래픽 조정이 가능하다.
▶ ETCD
모든 cluster 데이터에 대한 Kubernetes 백업 저장소 일관성있고 가용성 높은 Key-value 저장소
Cluster 상태 관리하며, Master와 충돌 시 안전하게 백업하는 방법을 관리해야됨
▶Kube-Scheduler
새로 생성된 Pods를 리소스 요구 사항에 맞게 Node에 스케줄링
스케줄링에 영향을 주는 요소 :
- individual and collective resource requirements
- hardware/software/policy constraints
- affinity and anti-affinity specifications
- data locality
- inter-workload interference, and deadlines.
▶ kube-controller-manager
Cluster와 Node를 관리하는 여러 컨트롤러들
각각의 controller는 분리된 프로세스이지만, 복잡성을 줄이기 위해 모든 컨트롤러가 binary로 컴파일되어 하나의 process로 실행됨.
[ Controller 종류 ]
- Node Controller : 노드 다운시 이를 감지하고 대응하는 역할
- Job controller: 일회성 Job을 관찰하며, Pods를 생성하고 해당 태스크를 실행함
- EndpointSlice controller : EndpointSlice 객체를 생성함 (Service와 Pods 사이의 연결을 제공함)
- ServiceAccount controller : 새로운 namespace를 위해 디폴트 ServiceAccounts를 생성함
- Replication Controller : 동일한 Pod 구성인 replicas를 처리함
#️⃣Node
실행중인 Pods를 유지하고 Kubernetes 런타임 환경 제공함
Master의 명령을 받으며, Node를 모니터링하고 상태를 보고함
Kubernetes는 노드에서 실행되도록 Container를 Pod에 배치하여 워크로드 실행함
Node는 Master와는 분리된 서버(VM,Physical System)에서 실행됨
▶ kubelet
각 Node에 배포되는 에이전트 컨테이너들이 Pod안에서 동작중인지 모니터링함
PodSpecs에 쓰여진 container들을 관리함
▶ kube-proxy
각 Node에서 실행되는 Network Proxy
노드들에서 네트워크 규칙을 관리하며, Pod가 Cluster의 내외부의 네트워크와 소통할 수 있도록 함
- OS 패킷 필터링계층이 있으면 사용하며, 없으며 kube-proxy 자체의 트래픽을 전달함
▶ Container runtime
Pod의 컨테이너를 실행해주는 소프트웨어
참고
Kubernetes 구성요소
Kubernetes
기본 구조는 Master-Node
- Node: 물리 서버/가상 서버
- 클러스터 : Node의 집합
- Master : 클러스터를 관리해주는 역할

#️⃣Master
Cluster의 주 컨트롤러
GUI나 CLI로 마스터와 통신하며 YAML 구성 파일로 작업한다.
Master는 모든 노드 이벤트를 관리하고, 전체 클러스터 구성을 안정적이게 유지한다.
Master의 구성요소는 다음과 같다.
- Kube-APIserver
- ETCD
- Kube-Scheduler
- kube-controller-manager

▶ Kube-APIserver
Kubernets의 프런트엔드(control plane) 즉 Endpoint
API 호출과 REST 서비스를 처리하여, 개발자가 클러스터와 통신할 수 있도록 함
- Kube-APIserver는 수평적 확장 가능하여, 여러 인스턴스를 실행하고 인스턴스 간 트래픽 조정이 가능하다.
▶ ETCD
모든 cluster 데이터에 대한 Kubernetes 백업 저장소 일관성있고 가용성 높은 Key-value 저장소
Cluster 상태 관리하며, Master와 충돌 시 안전하게 백업하는 방법을 관리해야됨
▶Kube-Scheduler
새로 생성된 Pods를 리소스 요구 사항에 맞게 Node에 스케줄링
스케줄링에 영향을 주는 요소 :
- individual and collective resource requirements
- hardware/software/policy constraints
- affinity and anti-affinity specifications
- data locality
- inter-workload interference, and deadlines.
▶ kube-controller-manager
Cluster와 Node를 관리하는 여러 컨트롤러들
각각의 controller는 분리된 프로세스이지만, 복잡성을 줄이기 위해 모든 컨트롤러가 binary로 컴파일되어 하나의 process로 실행됨.
[ Controller 종류 ]
- Node Controller : 노드 다운시 이를 감지하고 대응하는 역할
- Job controller: 일회성 Job을 관찰하며, Pods를 생성하고 해당 태스크를 실행함
- EndpointSlice controller : EndpointSlice 객체를 생성함 (Service와 Pods 사이의 연결을 제공함)
- ServiceAccount controller : 새로운 namespace를 위해 디폴트 ServiceAccounts를 생성함
- Replication Controller : 동일한 Pod 구성인 replicas를 처리함
#️⃣Node
실행중인 Pods를 유지하고 Kubernetes 런타임 환경 제공함
Master의 명령을 받으며, Node를 모니터링하고 상태를 보고함
Kubernetes는 노드에서 실행되도록 Container를 Pod에 배치하여 워크로드 실행함
Node는 Master와는 분리된 서버(VM,Physical System)에서 실행됨
▶ kubelet
각 Node에 배포되는 에이전트 컨테이너들이 Pod안에서 동작중인지 모니터링함
PodSpecs에 쓰여진 container들을 관리함
▶ kube-proxy
각 Node에서 실행되는 Network Proxy
노드들에서 네트워크 규칙을 관리하며, Pod가 Cluster의 내외부의 네트워크와 소통할 수 있도록 함
- OS 패킷 필터링계층이 있으면 사용하며, 없으며 kube-proxy 자체의 트래픽을 전달함
▶ Container runtime
Pod의 컨테이너를 실행해주는 소프트웨어
참고