티스토리 뷰

1.container : 하나의 독립적인 서비스 구동

-한 pod안에 여러 container가 있지만 port는 중복되지 않음

-한 pod당 IP 자동할당(시스템에 문제가 생기면 pod이 재생성되고, ip주소가 변경됨)

 

2.label: 목적에 따라 오브젝트들을 분리하고, 분리된 오브젝트들끼리 연결

-key: value로 이루어짐 (예를 들어, type: web)

-type이 web인것만 보고싶으면 이 pod들만 service에 연결하여 보면 됨

 

3. node schedule: 2가지 방법이 있음

(1)직접 선택: pod을 만들 때 node를 선택(nodeSelector) (2)쿠버네티스가 자동 선택(request, limit) —> 스케줄러가 판단 -memory: 초과시 Pod 종료 시킴 -CPU: 초과시 request로 낮춤(종료되지 않음)

 

4.NODE

  • pod은 언제나 node상에서 동작함
  • node는 쿠버네티스에서 워커 머신을 말하며 cluster에 따라 가상 또는 물리 머신일 수 있음
  • 각 node는 마스터에 의해 관리됨
  • kubelet: 쿠버네티스 마스터와 노드 간 통신을 책임지는 프로세스 이며, 하나의 머신 상에서 동작하는 pod와 container를 관리함
  • container runtime(ex 도커): 레지스트리에서 컨테이너 이미지를 가져와 묶여 있는 것을 풀고 애플리케이션을 동작시키는 책임을 맡음

5.POD

  • 하나 또는 그 이상의 애플리케이션 컨테이너(ex 도커)들의 그룹을 나타내는 쿠버네티스의 추상적 개념 —> 일부는 컨테이너에 대한 자원*을 공유
  • *자원: 공유 스토리지(볼륨), 네트워킹(클러스터 ip), 컨테이너 동작방식(이미지 버전, 사용할 포트)
  • pod내 컨테이너들(밀접하게 결합되어진 상이한 애플리케이션 컨테이너들의 집합)은 ip주소, 그리고 포트 스페이스를 공유하고 항상 함께 위치하고 함께 스케쥴링 되고, 동일 노드 상의 컨텍스트를 공유하면서 동작함
  • pod는 쿠버네티스 플랫폼 상에서 최소 단위임
  • 쿠버네티스에서 배포를 생성할 때 그 배포는 컨테이너 내부에서 컨테이너와 함께 파드를 생성하고, 각 파드는 스케쥴 되어진 노드에게 묶여지게 됨
  • 파드는 소멸되거나 삭제되기 전까지 그 노드에 유지됨
  • 노드에 실패가 발생될 때, 클러스터 내에 가용한 다른 노드들을 대상으로 스케쥴링 됨

6.CLUSTER

  • 쿠버네티스는 컴퓨터들을 연결하여 단일 형상으로 동작하도록 컴퓨팅 클러스터를 구성하고 높은 가용성을 제공하도록 조율함
  • 쿠버네티스는 애플리케이션 컨테이너를 클러스터에 분산시키고 스케줄링하는 일을 더욱 효율적으로 자동화함
  • 컨테이너화가 필요한 이유: 쿠버네티스의 추상화 개념을 통해 개별 머신에 얽매이지 않고 컨테이너화된 애플리케이션을 클러스터에 배포하기 위해, 애플리케이션을 개별 호스트에 독립적인 방식으로 패키징할 필요가 있음
  • 쿠버네티스 클러스터의 두 가지 형태의 자원(컨트롤 플레인, 노드)
  • 컨트롤 플레인: 클러스터 조율
  • —> 애플리케이션 스케쥴링, 스케일링, 변경사항 수서대로 반영 등 클러스터 내 모든 활동 조율
  • 노드: 애플리케이션을 구동하는 작업자—> 컨테이너 운영을 담당하는 containerd 또는 도커와 같은 툴도 갖음
  • —> 각 노드는 노드를 관리하고 쿠버네티스 컨트롤 플레인과 통신하는 kubelet이라는 에이전트를 갖음
  • 애플리케이션을 쿠버네티스에 배포하기 위해서는, 컨트롤 플레인에 애플리케이션 컨테이너의 구동을 지시하면 됨. 그러면 컨트롤 플레인은 컨테이너를 클러스터의 어느 노드에 구동시킬지 스케줄함
  • —> 노드는 컨트롤 플레인이 제공하는 쿠버네티스 API를 통해서 컨트롤 플레인과 통신함

7. 스케줄링

  • 스케줄러는 노드가 할당되지 않은 새로 생성된 파드를 감시함
  • 스케줄러가 발견한 모든 파드에 대해 스케줄러는 해당 파드가 실행될 최상의 노드를 찾는 책임을 짐
  • kube-scheduler는 쿠버네티스의 기본 스케줄러이며 컨트롤 플레인의 일부로 실행됨. 원하거나 필요에 따라 자체 스케줄링 컴포넌트를 만들고 대신 사용할 수 있도록 설계됨
  • 파드의 모든 컨테이너에는 리소스에 대한 요구사항이 다르며 모든 파드에도 요구사항이 다르므로, 기존 노드들은 특정 스케줄링 요구사항에 따라 필터링 되어야 함
  • 클러스터에서 파드에 대한 스케줄링 요구사항을 충족하는 노드를 실행가능한(feasible) 노드라고 함. 적합한 노드가 없으면 스케줄러가 배치할 수 있을 때까지 파드가 스케줄 되지 않은 상태로 유지됨
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
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
글 보관함