쿠버네티스는 컨테이너화된 워크 로드와 서비스를 관리하기 위한 이식성, 확장석이 높은 오픈소스 플랫폼입니다.
컨트롤 플레인 컴포넌트는 클러스터를 관리하고 조정하는 역할을 합니다.
1. kube-apiserver
- 쿠버네티스 API를 제공하는 핵심 컴포넌트
- 모든 요청을 검증하고 클러스터 상태를 변경한다.
- kubectl, 내부 컨트롤러, 외부 시스템이 이 API를 통해 쿠버네티스를 제어한다.
2. etcd
- 쿠버네티스의 분산 key-value 저장소
- 클러스터 상태 정보 (노드, 파드, 서비스 등)을 저장한다.
- 고가용성을 위하 여러 etcd 노드를 구성할 수 있다.
3. kube-controller-manager
- 여러 컨트롤러를 관리하는 컴포넌트
- 주요 컨트롤러 :
Node Controller | 노드 상태 감지 및 대응 |
Replication Controller | 파드 개수 유지 |
Endpoints Controller | 서비스와 파드를 연결 |
Service Account & Token Controller |
서비스 계정 및 API 토큰 관리 |
4. cloud-controller-manager
- 클라우드 서비스와 쿠버네티스를 연결
- 클라우드 공급자(AWS, GCP, NCP 등)의 로드밸런서, 볼륨, 노드 관리를 담당
각 노드에서 컨테이너 워크로드를 실행하는 역할을 합니다.
1. kubelet
- 노드에서 실행되는 에이전트
- kube-apiserver와 통신하여 파드 상태를 보고하고 파드를 관리한다.
- 컨테이너 런다임 (containerd, Docker)와 상호 작용한다.
2. kube-proxy
- 네트워크 트래픽을 관리하는 네트워크 프록시
- 각 노드에서 실행되며 서비스 객체에 대한 네트워크 규칙을 적용
3. Container Runtime
- 컨테이너를 실행하는 소프트웨어
- 대표적인 런타임 : containerd, CRI-O, Docker
애드온은 쿠버네티스 리소스를 이용하여 클러스터 기능을 구현합니다. 이들은 클러스터 단위의 기능을 제공하기 때문에 애드온에 대한 namespace 리소스는 "kube-system" 네임스페이스에 속합니다.
1. DNS
- 클러스터 DNS는 쿠버네티스 서비스를 위해 DNS 레코드를 제공해주는 DNS 서버
- 쿠버네티스에 의해 구동되는 컨테이너는 DNS 검색에서 이 DNS 서버를 자동으로 포함한다.
2. CNI
- Container Network Interface는 k8s 네트워크 환경을 구성해준다.
3. 대시보드
- 쿠버네티스 클러스터를 위한 범용의 웹 기반 UI
쿠버네티스는 선언형 (Declarative) API를 사용합니다.
- 명령형 (Imperative) : shell 명령어 등을 활용해 오브젝트를 관리하는 방식 (수행하고자 하는 액션을 지시)
- 선언형 (Declarative) : yaml 파일에 오브젝트를 정의하고 apply로 생성하는 방식 (도달하고자 하는 상태를 코드로 관리)
쿠버네티스 관리자는 "kubectl"이라는 명령어 도구를 가지고 control plane의 api를 통해 전체 클러스터를 관리합니다.
api는 control plane과 node에 속한 모든 구성 요소들로 부터 리소스 정보를 전달받고 이를 etcd에 저장합니다.
관리자 뿐만 아니라 다른 구성 요소들도 api를 통해 etcd에 저장된 리소스 정보에 접근할 수 있습니다.
ex) Pod가 생성되는 과정
1. 사용자 요청 : 사용자의 요청을 kubectl 명령어를 통해 kube-apiserver에 전송한다. Restful API 요청을 통해 쿠버네티스 리소스를 생성한다.
2. kube-apiserver가 요청을 처리하고 etcd에 저장 : 사용자의 인증 검증 과정을 거친 후 etcd에 리소스를 저장한다.
3. kube-scheduler가 적절한 노드에 파드를 배치 : kube-scheduler는 API를 통해 etcd에 저장된 미할당 상태의 파드를 감지하고 적절한 노드에 할당합니다. 노드 선정 후 etcd에 상태를 업데이트합니다.
4. kubelet이 해당 노드에서 파드를 실행 : 스케줄링된 노드에서는 kube-apiserver를 통해 kubelet이 해당 파드를 감지하고 실행을 담당합니다.
5. kube-proxy가 네트워크 라우팅 설정 : 파드가 정상적으로 실행되면 네트워크 설정이 자동으로 이루어집니다.
[AEWS3기] 2주차 - EKS Networking (2) (0) | 2025.02.14 |
---|---|
[AEWS3기] 2주차 - EKS Networking (1) (0) | 2025.02.13 |
[AEWS3기] 1주차 - Amazon EKS 설치 및 기본 사용 (4) (0) | 2025.02.08 |
[AEWS3기] 1주차 - Amazon EKS 설치 및 기본 사용 (3) (0) | 2025.02.05 |
[AEWS3기] 1주차 - Amazon EKS 설치 및 기본 사용 (2) (0) | 2025.02.05 |