일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- APIMARKETPLACE
- naver
- 특정 커밋 삭제
- 글로벌 홍보 서포터즈
- API MARKETPLACE 글로벌 홍보 서포터즈
- 젠킨스
- 네이버
- API MARKETPLACE
- identity center
- Elk
- 젠킨스 설치
- jenkins
- re2.node
- 배포전략
- LOG
- 블루 그린
- log4j2
- spring boot
- 2022
- 사용자 추가
- Integrations & services
- k8s 구성요소
- 서포터즈
- k8s
- slf4j
- Docker
- Docker 명령어
- 특정커밋
- 커밋삭제
- 대외활동
- Today
- Total
G코딩 스토리
쿠버네티스 핵심 구성요소 총정리 🚀 본문
쿠버네티스 핵심 구성요소 총정리 🚀
개요
이 글에서는 쿠버네티스 클러스터를 구성하는 다양한 컴포넌트들에 대해 알아봅니다.
- 컨트롤 플레인과 워커 노드의 구성요소들을 소개
- 각 컴포넌트의 역할과 동작 방식 설명
- 예시와 비유를 통해 이해 돕기
목차
- 쿠버네티스란?
- 컨트롤 플레인 구성요소
- kube-apiserver
- etcd
- kube-scheduler
- kube-controller-manager
- cloud-controller-manager
- 워커 노드 구성요소
- kubelet
- kube-proxy
- 컨테이너 런타임
- 마무리하며
쿠버네티스란? 🤔
쿠버네티스는 컨테이너화된 애플리케이션을 쉽고 효율적으로 배포, 확장 및 관리할 수 있게 도와주는 오케스트레이션 플랫폼입니다. 클러스터 내부에서는 다양한 구성요소들이 서로 협력하며 애플리케이션의 안정적인 운영을 보장합니다.
컨트롤 플레인 구성요소
1. kube-apiserver 📡
역할:
- 클러스터의 “프런트 데스크” 역할을 하며, 모든 요청(예:
kubectl
명령어)을 받아들입니다. - 클라이언트와 다른 컴포넌트들 간의 중개자 역할을 수행합니다.
예시:kubectl apply -f deployment.yaml
명령어를 입력하면, 요청이 kube-apiserver를 거쳐 클러스터 전체에 반영됩니다.
2. etcd 💾
역할:
- 클러스터의 모든 상태 정보를 영구적으로 저장하는 분산형 키-값 저장소입니다.
- 애플리케이션의 설정, 파드 상태 등 중요한 데이터를 보관합니다.
예시:
파드가 생성되거나 업데이트되면 그 정보가 etcd에 기록되어, 클러스터 재시작 시에도 정보를 복원할 수 있습니다.
3. kube-scheduler 🔍
역할:
- 아직 특정 노드에 할당되지 않은 파드를 적절한 워커 노드에 배정하는 역할을 합니다.
동작 방식:
- 각 노드의 리소스 상황과 정책(예: 라벨, 친화성)을 고려하여 파드에 최적의 노드를 선택합니다.
예시:
새로운 웹 애플리케이션 파드를 생성하면, “이 노드에 충분한 CPU와 메모리가 있으니 여기에 배치하자”라고 결정해 파드를 할당합니다.
4. kube-controller-manager 🔧
역할:
- 다양한 컨트롤러들을 실행하며 클러스터의 원하는 상태와 실제 상태가 일치하도록 지속적으로 관리합니다.
주요 컨트롤러:
- 노드 컨트롤러: 노드의 상태 감시
- ReplicaSet 컨트롤러: 지정한 수의 파드가 항상 실행되도록 유지
- Deployment 컨트롤러: 애플리케이션 배포 및 업데이트 관리
예시:
만약 파드 수가 줄어들면, ReplicaSet 컨트롤러가 부족한 파드를 자동으로 생성해 설정된 수를 유지합니다.
5. cloud-controller-manager ☁️
역할:
- 클라우드 환경과의 연동 작업을 담당하며, 클라우드 제공자(AWS, GCP, Azure 등)와의 통합 기능을 관리합니다.
예시:
클라우드에서 새로운 노드를 추가할 때, cloud-controller-manager가 해당 노드를 클라우드 인프라와 연동시켜 줍니다.
워커 노드 구성요소
1. kubelet 🖥️
역할:
- 각 워커 노드에서 실행되는 에이전트로, 파드와 컨테이너를 실제로 실행하고 그 상태를 모니터링합니다.
예시:
웹 애플리케이션 파드가 실행 중인데, 컨테이너에 문제가 생기면 kubelet이 이를 감지하고 자동으로 재시작하는 등의 조치를 취합니다.
2. kube-proxy 🔀
역할:
- 노드 내에서 네트워크 트래픽을 관리하며, 서비스 요청이 올바른 파드로 전달되도록 라우팅 역할을 합니다.
예시:
여러 파드에 분산된 웹 서비스의 경우, kube-proxy가 클라이언트 요청을 적절한 파드로 분배해 로드 밸런싱을 수행합니다.
3. 컨테이너 런타임 🐳
역할:
- 실제 컨테이너를 다운로드, 실행, 관리하는 소프트웨어입니다.
예시:
Docker나 containerd 같은 런타임이 애플리케이션 이미지를 실행하여 각 컨테이너에서 애플리케이션이 정상적으로 동작하게 합니다.
마무리하며 ✨
쿠버네티스는 다양한 구성요소들이 유기적으로 협력해 클러스터의 상태를 안정적으로 유지하고, 컨테이너화된 애플리케이션을 효율적으로 관리합니다.
- 컨트롤 플레인은 클러스터의 중앙 관리자로서 모든 요청과 상태 정보를 처리하고,
- 워커 노드는 실제 애플리케이션이 실행되는 현장 역할을 담당합니다.
이 글을 통해 여러분이 쿠버네티스의 각 컴포넌트에 대해 더 깊게 이해하고, 실제 운영 환경에서 어떤 역할을 하는지 파악하는 데 도움이 되었기를 바랍니다. 앞으로 더 다양한 주제로 여러분과 소통할 수 있길 기대합니다! 👍