What is Kubernetes?

SummerToday·2024년 8월 6일
0

Amazon EKS 기본 강의

목록 보기
1/6
post-thumbnail
post-custom-banner

관련 용어 발음 정리

  • master: 마스터

  • node: 노드(구 minion 미니언)

  • k8s: 쿠버네티스, 케이에잇츠, 케이팔에스

  • etcd: 엣지디, 엣시디, 이티시디

  • pod: 팟, 파드, 포드

  • istio: 이스티오

  • helm: 헬름, 핾, 햄

  • knative: 케이 네이티브


Kubernetes(k8s)란?

출처: https://www.youtube.com/watch?v=DU2RDN7ZXo8&list=PLIUCBpK1dpsNf1m-2kiosmfn2nXfljQgb&index=4

  • 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리를 해준다.

  • 컨테이너를 쉽게 관리하고 연결하기 위해 논리적인 단위로 그룹화한다.

  • Google에서 15년간 경험을 토대로 최상의 아이디어와 방법들을 결합하여 구현했다. (borg -> k8s)


CloudNativ

출처: https://www.youtube.com/watch?v=DU2RDN7ZXo8&list=PLIUCBpK1dpsNf1m-2kiosmfn2nXfljQgb&index=4

  • 클라우드 환경을 최대한 활용하여 애플리케이션을 설계하고 운영하는 접근 방식을 의미한다.

  • 클라우드의 확장성, 탄력성, 유연성을 최대한 활용할 수 있도록 설계된 애플리케이션 및 서비스 개발 방법론이다.

  • 컨테이너, 서비스메시, 마이크로서비스 등을 이용할 시 클라우드 환경에서의 배포가 용이하고, 이를 '클라우드 네이티브하다'라고 한다.

  • 클라우드에 적합한 기술들이 쿠버네티스에서 구현이 쉽기 때문에 클라우드 네이티브하다고 할 수 있다.

    출처: https://www.youtube.com/watchv=DU2RDN7ZXo8&list=PLIUCBpK1dpsNf1m-2kiosmfn2nXfljQgb&index=4


쿠버네티스 개념

출처: https://medium.com/devops-mojo/kubernetes-architecture-overview-introduction-to-k8s-architecture-and-understanding-k8s-cluster-components-90e11eb34ccd

  • 데이터 플레인이라 불리는 서버를 여러 대 실행시켜 그 위에 가상 오케스트레이션 계층을 구축하여 이 위에서 컨테이너가 동작한다.

    • 데이터 플레인
      서비스 사이의 네트워크 트래픽을 관리하는 서비스 메시(애플리케이션의 다양한 부분들이 통신하는 것을 제어하는 방법) 애플리케이션을 의미한다.
    • 서비스 메시
      • 마이크로서비스 아키텍처에서 서비스 간 통신을 관리하는 인프라 계층이다.
      • 주요 목적은 복잡한 네트워크 트래픽 관리를 단순화하고, 서비스 간의 통신을 보다 안정적이고 안전하게 만드는 것이다.
      • 주로 마이크로서비스 간의 트래픽을 제어하고 모니터링하는데 사용된다.
  • 컨테이너 그룹을 하나의 큰 머신 리소스로 관리할 수 있어 인프라를 추상화 할 수 있다.

  • Control plane을 통해 컨테이너 배포, 장애 복구(장애가 발생한 컨테이너를 정지·재시작) 기능도 구현할 수 있다.

  • Control Plane의 컴포넌트들이 상호작용하여 노드를 제어한다.

    노드(Node)는 파드가 실행되는 서버를 의미한다. 해당 서버는 실제로 애플리케이션을 실행하는 물리적 또는 가상 머신이다.

    파드(Pod)는 컨테이너 그룹을 의미한다. 파드는 하나 이상의 컨테이너를 포함하며, 이 컨테이너들은 함께 실행되면서 같은 네트워크와 스토리지를 공유한다.

  • Control Plane 구성 요소

    • API Server
      Control Plane의 프론트엔드 역할을 수행하는 것으로 사용자가 전달하는 API를 받아 Kubernetes 내부 컴포넌트와 상호 작용을 수행한다.

    • Scheduler
      노드에 배정되지 않은 Pod를 감지하고 어떤 노드에 실행할지 선택하는 역할을 담당하는 컴포넌트이다.

    • Controller Manger
      API Server와 상호작용해 클러스터 내에 컴포넌트의 상태를 감지하고 원하는 상태로 전환하는 역할을 담당하는 컴포넌트이다.

    • etcd
      클러스터 내의 모든 정보들을 저장하고 있는 Key-Value 형태의 저장소이다.

  • Data Plane에도 컴포넌트가 구성되어 Control Plane과 연계하고 네트워킹 연결과 컨테이너를 관리할 수 있다.

  • Data Plane 구성 요소

    • kublet
      각 노드에서 실행되는 에이전트 개념의 컴포넌트이다. Control Plane과 통신하거나 컨테이너 생성 및 삭제와 상태 모니터링을 수행한다.

    • kube-proxy
      각 노드에서 실행되는 노드의 네트워킹을 담당하는 컴포넌트이다. kube-proxy를 통해 다른 노드 간의 통신이나 외부 구간의 통신을 할 수 있게 된다.

    • Container Runtime
      컨테이너가 실행될 수 있는 환경을 구성하는 컴포넌트이다.


쿠버네티스 기본 오브젝트

출처: https://tsuyoshiushio.medium.com/kubernetes-in-three-diagrams-6aba8432541c

  • Pod (파드)

    • 쿠버네티스의 최소 단위

    • 파드 하나 안에 하나 이상의 컨테이너 실행 가능

    • 어떤 컨테이너 이미지를 사용할지 등을 설정


  • ReplicaSet (레플리카셋)

    • 파드를 얼마나 동작시킬지 관리하는 오브젝트

    • 파드 수 설정 시 해당 수 만큼의 파드 동작 보장


  • Deployment (디플로이먼트)

    • 배포 이력 관리 역할.

    • 새로운 버전을 릴리스하거나 부하 증가에 따른 레플리카셋 수를 변경하는 등의 작업을 디플로이먼트로 관리.

    • 적용 이력도 관리하므로 문제 발생 시 이전 버전으로 쉽게 롤백 가능


  • 서비스 (Service)

    • 배포한 파드를 쿠버네티스 클러스터 외부에 공개하기 위한 구조 제공

    • 공개 방법은 다양하지만, 가장 대표적인 방법은 클러스터 내의 파드 여러개를 동작시키고 그 앞단에 로드밸런서를 배치하여 특정 파드를 클러스터 외부로 공개하는 방식이 있다.




본 포스팅은 다음 내용을 참고하여 작성되었습니다.
[초보를 위한 쿠버네티스 안내서] 왜 쿠버네티스인가? - https://www.youtube.com/watch?v=DU2RDN7ZXo8&list=PLIUCBpK1dpsNf1m-2kiosmfn2nXfljQgb&index=4
아이자와 고지 외 1명, ⌜클라우드 네이티브를 위한 쿠버네티스 실전 프로젝트⌟, 동양북스, 2021, 370쪽
profile
IT, 개발 관련 정보들을 기록하는 장소입니다.
post-custom-banner

0개의 댓글