Kubernetes 기본 개념

윤태호·2023년 2월 2일
0

Kubernetes

목록 보기
3/7

1.Architecture

  • 쿠버네티스 클러스터: 여러 리소스를 관리하기 위한 집합체로 마스터 노드 와 워커 노드로 하나의 클러스터를 구성
  • 마스터 노드: 쿠버네티스 클러스터 전체를 관리하는 시스템으로 control plane 이라고도 합니다.
  • 워커 노드: 마스터 노드에 의해 명령을 받아서 파드를 생성하고 서비스한다고 해서 컴퓨팅 머신이라고 함
  • 컨테이너 런타임: 파드를 실행하는 엔진(Docker)
  • 영구 스토리지: 파드는 휘발성이라서 워커 노드에 떠 있는 파드가 삭제되면 파드 안의 모든 데이터도 즉시 삭제되기 때문에 데이터베이스 와 같은 중요한 데이터는 파드 외부에 있는 영구 스토리지에 저장해야 합니다.
    CSI(Controller Storage Interface)로 외부 스토리지를 파드에 연결할 수 있습니다.

아래의 그림을 보면서 직관적으로 이해해보자.

2.컴포넌트

2)쿠버네티스 컴포넌트

  • 쿠버네티스는 새로운 파드를 배포할 때 yaml 파일을 작성해서 실행하고 관리
    쿠버네티스에서는 이러한 yaml 파일을 manifest 라고 합니다.
  • API Server: 쿠버네티스 클러스터의 API를 사용할 수 있게 해주는 프로세스로 클러스터로 요청이 들어왔을 때 그 요청이 유효한지 검증 사용자 검증을 하고 사용자가 보낸 명령어(kubectl create -f deployment.yml)를 전 하면 명령어가 문법에 맞게 작성되었는지 검증하고 사용자의 요청에 따라 파드를 생성하는데 API Server 가 워커 노드에 파드를 생성하도록 요청은 했지만 아직 생성은 안됨
  • etcd: API Server는 파드를 만든 다는 사실을 etcd에 알리고 사용자에게 파드가 생성되었을 알림니다. 클러스터의 상태를 저장하는 곳으로 key-value 형태로 저장하고 있고 사용자에게 파드가 생성되었음을 알렸지만 내부적으로는 드가 생성되지 않은 상태입니다.
  • 스케쥴러(kube-scheduler): 파드를 위치시킬 적당한 워커 노드를 확인하고 이 사실을 API에 서버에 알립니다.
  • kubelet: 파드가 생성될 워커 노드에 있는 kubelet에 파드의 생성 정보를 전달 kubelet이 해당 정보를 이용해서 파드를 생성 kubelet은 클러스터의 각 노드에서 실행되는 에이전트 파드에서 컨테이너 동작을 관리 파드가 생성되면 kubelet은 API Server 에 생성된 파드의 정보를 전달하고 API \ Server는 다시 etcd를 업데이트 합니다.
  • 마스터 노드: API Server 와 etcd로 구성
  • 워커 노드: kubelet 과 파드로 구성
  • Controller Manager: kube-controller-manager 와 cloud-controller-manager 두 가지 유형
  • kube-controller-manager: 다양한 컴포넌트의 상태를 지속적으로 모 모터링하는 동시에 실행 상태를 유지하는 역할을 담당하는데 특정 워커 노드 와 통신이 불가능하다고 판단이 되면 해당 노드에 할당된 파드를 제거하고 다른 워커 노드에서 생성해 서비스가 계속되도록 합니다.
  • cloud-controller-manager: EKS, AKS 와 같은 퍼블릭 클라우드에서 제공하는 쿠버네티스와 연동하는 서비스를 관리
  • proxy: 클러스터의 모든 노드에서 실행되는 네트워크의 프록시
    노드에 대한 네트워크 규칙을 관리하고 클러스터 내부 와 외부에 대한 통신을 담당합니다.
  • 컨테이너 런타임: 컨테이너의 실행을 담당하는 것

그림과 함께 이해하면 좀 더 직관적으로 이해 할 수 있다.

profile
성장하는것을 제일 즐깁니다.

0개의 댓글