일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- AWS Route53
- AWS NAT
- ubuntu 배포
- Datamodel
- MongoDB 참조
- codepresso
- AWS #CloudTrail #AWS로그
- 스프링 게시판
- EC2 생성
- AWS NAT gateway
- 소프트웨어 개발과 테스트
- aws ec2
- SrpingBoot
- JPA연관관계
- SpringProject
- VPC EC2
- 코드프레소
- MongoDB
- Loard Balancer
- MongoDB DataModel
- MongoDB Reference
- AWS VPC
- AWS
- 몽고DB
- 레디스설치
- EC2 배포
- AWS CloudTrail
- Amazon Web Service
- codepreosso
- AWS 요금
- Today
- Total
정환타 개발노트
Kubernetes의 아키텍처에 대하여 본문
Kubernetes 아키텍처
kubernetes의 아키텍처에 대해 정리를 해보았다.
쿠버네티스는 마스터와 노드 두 개로 구성된다.
1. 마스터
마스터는 쿠버네티스 클러스터의 전체를 관리하며 다음과 같이 구성된다.
1. API 서버
쿠버네티스의 통신, 제어는 Rest API를 통해 진행되는데 이를 관장하는 서버이다. 이 API 를 제공하고 그에 대한 처리를 수행한다.
2. Etcd
클러스터의 DB 역할을 하는 서버이다. etcd는 key/value 형태로 구성되며 클러스터의 상태와 설정을 저장한다.
3. 스케쥴러
스케쥴러는 클러스터의 각 리소스를 노드에 할당하는 역할을 한다.
4. 컨트롤러 매니저
컨트롤러 매니저는 Replica controller, Service controller, Volume Controller, Node controller와 같은 컨트롤러를 생성하고 관리한다.
5. DNS
DNS는 쿠버네티스의 엔드포인트를 DNS로 맵핑하며 관리하는 역할을 한다. 새로운 리소스에 대하여 IP와 이름을 등록하고 그 이름(DNS)를 통해 리소스에 접근할 수 있다.
2. 노드
노드는 쿠버네티스에서 워커 머신의 단위이다. 이 노드는 클러스터에 따라 VM 또는 물리 머신이 될 수 있다.
이 노드들은 마스터 컴포넌트에 의해 관리되며 노드 상의 서비스인 컨테이너 런타임, kubelet과 kube-proxy 등을 포함한다.
일반적으로 노드는 4개의 상태 정보를 가진다.
- 주소 : 호스트명, 외부IP, 내부IP 포함
- 컨디션 : 노드의 현재 상태(Ready, MemoryPressure, PIDPressure, DiskPressure, NetworkUnavailable)를 JSON 오브젝트로 표현
- 용량과 할당가능 : 노드 상에 사용 가능한 리소스(CPU, 메모리, 최대 파드 수)를 나타낸다.
- 정보 : 커널 버전, 쿠버네티스버전, Docker 버전, OS 이름을 포함
또한 노드는 다음과 같이 구성된다.
1. Kubelet
노드에 배포되는 에이전트로 마스터의 API와 통신을 하고, 노드가 수행할 명령을 받아 수행하며 위의 상태정보를 마스터로 보낸다.
2. Kube-proxy
노드의 네트워크 트래픽을 라우팅 해주며, 노드간의 로드밸런싱을 수행한다.
3. 컨테이너 런타임
배포된 컨테이너를 실행하는 역할을 한다.
4. cAdvisor
각 노드에서 기동되는 모니터링 에이전트이다. 노드에 가동되는 컨테이너들의 상태정보를 서버 API로 전달한다.
추가적인 쿠버네티스의 리소스
Namespace
클러스터 안에 가상 클러스터를 생성할 수 있는데 이 때의 가상클러스터를 namespace라고 한다.
Pod
컨테이너가 모인 집합체를 말하며 적어도 한개 이상의 컨테이너로 구성된다.
'DevOps' 카테고리의 다른 글
Docker-compose를 이용한 다중 컨테이너 실행(Dockerfile 활용) (0) | 2021.02.27 |
---|---|
GKE를 활용한 웹어플리케이션 배포 (1) | 2020.04.08 |
Kubernetes(k8s)에 대하여 (0) | 2020.04.08 |
Docker/Jenkins를 활용한 웹서버 자동 배포 & Docker Image 자동 배포 (2) | 2020.04.03 |
Jenkins를 활용한 빌드&배포(Spring Boot) (0) | 2020.02.25 |