hgk0404.tistory
Code After Work
hgk0404.tistory

공지사항

전체 방문자
오늘
어제
  • 전체 카테고리 N
    • [컴퓨터비전]
    • [Computer Science]
      • [컴퓨터네트워크]
      • [알고리즘]
      • [자료구조 in C]
      • [C & C++]
      • [이산수학]
      • [Math]
    • [머신러닝]
      • [Numpy, Pandas]
    • [Cloud]
      • [AWS]
      • [NCP]
      • [Kubernetes]
      • [Terraform]
    • [Dev]
      • [가상환경]
      • [Linux]
      • [Docker]
    • [Python]
    • [Coding Test]
      • [백준]
      • [프로그래머스]
      • [SQL]
    • [WEB]
    • [일상] N
    • [엑셀]
    • [금융]

인기 글

최근 글

최근 댓글

250x250
hELLO · Designed By 정상우.
hgk0404.tistory

Code After Work

[Kubernetes] 쿠버네티스 아키텍처
[Cloud]/[Kubernetes]

[Kubernetes] 쿠버네티스 아키텍처

2024. 5. 19. 21:56
728x90

 

*유데미에서 진행하는 Kubernetes for the Absolute Beginners - Hands-on 강의를 바탕으로 제작되었습니다.

 

 

쿠버네티스란 k8s, kube라고도 불리며 컨테이너화된 애플리케이션 배포, 관리 및 확장을 예약하고 자동화하기 위한 컨테이너 오케스트레이션 플랫폼

 

 

kubernetes란 그리스어로 "조타수", "조종사"를 의미하며 컨네이터를 운용하기 때문에 로고에 조타기가 있습니다.

 

 

쿠버네티스란 무엇인가, 왜 필요하고 어떤 구성을 가지고 있는지 알아보겠습니다

 

 

1. 마스터 노드와 워커 노드

 

 

 

 

노드: 노드는 쿠버네티스가 컨테이너를 런칭하는 가상의 리소스, 물리적인 용량을 차지합니다

 

클러스터: 다 함께 묶인 노드의 집합

 

 

쿠버네티스의 클러스터

 

 

위와 같이 클러스터를 구성하면 하나의 어플리케이션을 실행하는 노드에 이상이 생겨도 다른 노드가 그 역할을 대신해 안정적인 운영이 가능합니다.

 

 

하지만 이러한 상황에서 다른 노드가 역할을 대신하도록 명령해주는 주체가 필요한데 그것을 마스터 노드가 수행합니다. 마스터 노드는 쿠버네티스 클러스터에 설치된 또 다른 노드입니다. 노드는 마스터 노드와 워커 노드가 있습니다.

 

 

마스터 노드와 워커 노드

 

 

2. 쿠버네티스 컴포넌트

 

 

쿠버네티스를 설치하게 되면 따라오는 구성요소를 알아보겠습니다.

 

 

쿠버네티스 컴포넌트

 

 

1) api server

 

 

쿠버네티스에서 프론트 엔드처럼 작동, 사용자 관리, 장치 인터페이스 모두 api 서버와 통신해 쿠버네티스 클러스와 상호작용

 

 

2) etcd

 

 

key-value 저장소로 쿠버네티스가 클러스터 관리에 필요한 모든 정보를 저장, 클러스터 내에서 잠금을 구현(마스터 노드간 충돌을 없게하기 위해서)

 

 

3) kubelet

 

 

클러스터 내 각 노드에서 실행되는 에이전트, 에이전트는 예상대로 컨테이너가 노드에서 실행되는지 확인할 의무가 있습니다.

 

 

4) container runtime

 

 

컨테이너를 실행하는데 사용되는 기본 소프트웨어(=docker)

 

 

5) controller

 

 

오케스트라를 지휘하는 두뇌, 노드/컨테이너가 다운될 때 새 컨테이너를 들여올지 결정

 

 

6) scheduler

 

 

댜중 노드에 걸쳐 작업이나 컨테이너를 배포, 새로 생성된 컨테이너를 찾아 노드에 할당

 

 

3. 마스터 노드와 워커 노드 상호작용

 

 

 

 

마스터 노드에는 kube-apiserver와 etcd, controller, scheduler등의 컴포넌트가 있고, 워커 노드에는 docker를 실행할 container runtime과 kube-apiserver를 통해 마스터노드의 명령을 통신할 kubelet이 있습니다.

 

 

POD

 

 

쿠버네티스는 워커 노드에 직접 컨테이너를 배포하지 않습니다. 쿠버네티스는 포드란 이름의 캡슐 형태의 물체로 컨테이너를 배포합니다.

 

 

포드는 앱의 단일 인스턴스이며, 쿠버네티스에서 가장 작은 단위입니다. 

 

 

가장 단순한 형태인 클러스터 내에 단일 노드와 단일 포드로 구성된 형태를 알아보겠습니다.

 

 

단일노드 단일포드

 

단일 인스턴스 포드안에서 축소된 단일 DOCKER 컨테이너에서 실행되고 있습니다.

 

 

이러한 상황에서 서비스를 하는 중 액세스하는 사용자 수가 증가한 경우 부하를 어떻게 감당해야 할까요?

 

 

단일 포드안에 추가로 컨테이너를 넣어야 할까요?

 

멀티 컨테이너 포드

 

 

그렇지 않습니다. 일반적으로 사용자가 증가해 대처를 하는 상황에선 멀티 컨테이너 포드 보다는 새로운 포드를 생성해 응용 프로그램을 가진 컨테이너를 생산합니다.

 

 

단일 노드 다중 포드

 

 

같은 응용 프로그램의 새로운 인스턴스로 완전히 새로운 포드를 생성합니다.

 

 

여기서 더 사용자 접속이 증가해 부하를 감당하지 못하는 경우엔 어떻게 해야할까요?

 

 

새로운 인스턴스 포드를 늘리는 것이 아니라 이번엔 노드를 늘려 그에 맞춰 대응합니다. 기존 노드의 용량으로 사용자 증가 부하를 감당하지 못하기 때문이죠

 

 

노드 추가

 

 

노드를 추가해 클러스터의 물리적인 용량을 증가시켰습니다.

 

 

컨테이너는 포드와 1대1 관계를 가지는 것이 일반적입니다. 확장하려면 새로운 포드를 만들고, 축소하려면 기존의 포드를 제거해야합니다.다중 컨테이너 포드도 있기는 하지만 응용 프로그램 컨테이너와 그것을 돕는 도우미 컨테이너가 쌍을 이루는 경우이고, 응용 프로그램 컨테이너를 여러개 넣지는 않습니다.

 

 

728x90
저작자표시 (새창열림)

'[Cloud] > [Kubernetes]' 카테고리의 다른 글

[Kubernetes] ReplicaSet 설정 명령어  (0) 2024.05.23
[Kubernetes] 쿠버네티스 ReplicaSet  (0) 2024.05.22
[Kubernetes] 쿠버네티스 pod-definition 기본 형식  (0) 2024.05.22
[Kubernetes] VSCODE Kubernetes YAML 확장 프로그램 설치 및 설정  (0) 2024.05.22
[Kubernetes] YAML, JSON, XML  (0) 2024.05.21
'[Cloud]/[Kubernetes]' 카테고리의 다른 글
  • [Kubernetes] 쿠버네티스 ReplicaSet
  • [Kubernetes] 쿠버네티스 pod-definition 기본 형식
  • [Kubernetes] VSCODE Kubernetes YAML 확장 프로그램 설치 및 설정
  • [Kubernetes] YAML, JSON, XML
hgk0404.tistory
hgk0404.tistory
공부기록

티스토리툴바