쿠버네티스를 이해하기 위한 개념들

2022. 8. 1. 09:26클라우드 컴퓨팅/클라우드 바로알기

728x90
반응형

쿠버네티스 개념 이해하기

쿠버네티스에 자주 나오는 용어들에 대해 알아보겠습니다.
쿠버네티스를 공부하다 보면 클라우드에서 없던 새 용어가 등장합니다. 물론 클라우드 기반 인프라에서 운영되는 컨테이너 오케스트레이션 방식이기에 모두 클라우드와 연관되어있습니다. 개념을 이해하면 좀 더 빠르게 쿠버네티스 이해가 가능합니다.

반응형
  • Kubectl: 쿠버네티스 API 서버와 통신하기 위한 커맨드 라인 툴. 사용자는 쿠버네티스 오브젝트를 생성, 점검, 업데이트, 삭제하기 위해서 kubectl를 사용할 수 있습니다.

 

  • 클러스터(Cluster): 컨테이너화된 애플리케이션을 실행하는 노드의 집합. 클러스터는 한 개 이상의 워커 노드를 가지며, 워커 노드는 애플리케이션의 구성요소인 파드를 호스트 합니다. 컨트롤 플레인은 워커 노드와 클러스터 내 파드를 관리합니다. 컨트롤 플레인이 여러 VM에 걸쳐 실행되고, 클러스터는 여러 노드를 실행하므로 내결함성과 고 가용성이 제공됩니다.

 

  • 노드(Node): 노드는 쿠버네티스의 Worker machine으로 VM으로 구성.  파드 실행에 필요한 로컬 데몬과 서비스를 가지고 있으며, 컨트롤 플레인에 의해서 관리됩니다. 노드에 있는 데몬은 kubelet, kube-proxy와 도커(Docker) 같이 컨테이너 런타임을 구현한 CRI를 포함하고 있습니다.

 

  • 파드(Pod): 가장 작고 단순한 쿠버네티스 오브젝트. 파드는 사용자 클러스터에서 동작하는 컨테이너의 집합을 나타냅니다. 일반적으로 하나의 기본 컨테이너를 실행하기 위해서 구성되며, 로깅과 같이 보완적인 기능을 추가하기 위한 사이드카 컨테이너를 선택적으로 실행할 수 있습니다. 파드는 보통 디플로이먼트에 의해서 관리됩니다.

 

  • PV(Persistent Volume): 클러스터의 스토리지를 나타내는 API 오브젝트. 보통은 개별 파드보다 수명이 긴 플러그 가능한 형태의 리소스로 제공합니다. PV는 스토리지를 어떻게 제공하고 사용하는지를 추상화하는 API를 제공합니다. PV는 스토리지를 미리 생성할 수 있는 경우에 사용하며(정적 프로비저닝), 온-디맨드 스토리지(동적 프로비저닝)가 필요한 경우에는 PVC를 대신 사용합니다.

 

  • PVC(Persistent Volume Claim): 컨테이너의 볼륨으로 마운트 될 수 있도록 PV에 정의된 스토리지 리소스를 요청. 스토리지의 양, 스토리지에 액세스 하는 방법(읽기 전용, 읽기 그리고/또는 쓰기) 및 재 확보(보존, 재활용 혹은 삭제) 방법을 지정합니다.

 

  • 워크로드(Workloads): 워크로드는 쿠버네티스에서 구동되는 애플리케이션. 데몬 셋, 디플로이먼트, 잡, 레플리카셋, 그리고 스테이트풀셋 오브젝트를 포함해서 서로 다른 워크로드의 유형이나 부분을 대표하는 다양한 핵심 오브젝트로 예를 들어, 웹 서버와 데이터베이스가 있는 워크로드는 데이터베이스를 한 스테이트풀셋 안에서 실행할 것이며, 웹 서버를 디플로이먼트를 통해 실행할 수 있습니다.

 

  • 네임스페이스(Namespace): 쿠버네티스에서 동일한 물리 클러스터에서 다중의 가상 클러스터를 지원하기 위해 사용하는 추상화. 네임스페이스는 클러스터의 오브젝트를 체계화하고 클러스터의 리소스를 분리하는 방법을 제공합니다. 리소스의 이름은 네임스페이스 내에서 유일해야 하나, 네임스페이스 간에서 유일할 필요는 없습니다.

 

  • 디플로이먼트(Deployment): 일반적으로 로컬 상태가 없는 파드를 실행하여 복제된 애플리케이션을 관리하는 API 오브젝트. 각 레플리카는 파드로 표현되며, 파드는 클러스터의 노드에 분산됩니다. 로컬 상태가 필요한 워크로드의 경우 스테이트풀셋(StatefulSet)의 사용을 고려해야 합니다.

 

  • 스테이트풀셋(StatefulSet): 파드 집합의 디플로이먼트와 스케일링을 관리하며, 파드들의 순서 및 고유성을 보장. 디플로이먼트와 유사하게, 스테이트풀셋은 동일한 컨테이너 스펙을 기반으로 둔 파드들을 관리합니다. 디플로이먼트와는 다르게, 스테이트풀셋은 각 파드의 독자성을 유지하며, 이 파드들은 동일한 스펙으로 생성되었지만, 서로 교체는 불가능합니다.

 

  • 레플리카셋(ReplicaSet): 레플리카셋은 주어진 시간에 실행되는 레플리카 파드 셋을 유지 관리. 디플로이먼트(Deployment)와 같은 워크로드 오브젝트는 레플리카셋을 사용해서 해당 레플리카셋의 스펙에 따라 구성된 파드의 수를 클러스터에서 실행합니다.

 

  • 데몬셋(DaemonSet): 파드 복제본을 클러스터 노드 집합에서 동작. 일반적으로 모든 노드에서 실행돼야 하는 로그 수집기 및 모니터링 에이전트 등의 시스템 데몬을 배포하기 위해서 사용됩니다.

 

  • 로깅(Logging): 로그는 클러스터나 애플리케이션에 의해 로깅된 이벤트의 목록. 애플리케이션과 시스템 로그는 클러스터 내부에서 어떤 일이 벌어지고 있는지 이해하는데 도움을 줍니다. 특히 로그는 문제를 디버깅하거나 클러스터 활동을 모니터링할 때 유용하게 사용할 수 있습니다.

 

  • 시크릿(Secret): 비밀번호, OAuth 토큰 및 ssh 키와 같은 민감한 정보를 저장. 민감한 정보를 사용하는 방식에 대해 더 세밀하게 제어할 수 있으며, 유휴 상태의 암호화를 포함하여 우발적인 노출 위험을 줄일 수 있습니다. 파드(Pod)는 시크릿을 마운트 된 볼륨의 파일로 참조하거나, 파드의 이미지를 풀링하는 kubelet이 시크릿을 참조합니다. 시크릿은 기밀 데이터에 적합하고 컨피그맵은 기밀이 아닌 데이터에 적합합니다.

 

  • 컨피그맵(ConfigMap): 키-값 쌍으로 기밀이 아닌 데이터를 저장하는 데 사용하는 API 오브젝트. 파드는 볼륨에서 환경 변수, 커맨드-라인 인수 또는 구성 파일로 컨피그맵을 사용할 수 있으며, 컨피그맵을 사용 하면 컨테이너 이미지에서 환경 별 구성을 분리하여, 애플리케이션을 쉽게 이식할 수 있습니다.

 

  • 인그레스(Ingress): 클러스터 내의 서비스에 대한 외부 접근을 관리하는 API 오브젝트이며, 일반적으로 HTTP를 관리함. 인그레스는 부하 분산, SSL 종료, 명칭 기반의 가상 호스팅을 제공할 수 있습니다.

 

  • 잡(Job): 완료를 목표로 실행되는 유한 또는 배치 작업. 하나 이상의 파드 오브젝트를 생성하고 지정된 수의 파드가 성공적으로 종료되는지 확인합니다. 파드가 성공적으로 완료됨에 따라, 잡은 해당 성공적인 완료를 추적할 수 있습니다.

 

  • 헬름(Helm): 쿠버네티스 배포를 효율 적으로 빠르게 할 수 있도록 도와주는 패키지 매니저. 차트라는 하나의 배포 단위를 가지며, 차트는 차트 리포지토리에 보관됩니다.
728x90
반응형