JD의 블로그

Kubernetes 개념 본문

클라우드/Devops

Kubernetes 개념

GDong 2021. 10. 5. 13:53

개요

쿠버네티스를 사용하려면 쿠버네티스 API 오브젝트로 클러스터에 대해 사용자가 원하는 상태를 기술해야한다.

원하는 상태의 의미란 어떤 애플리케이션이나 워크로드를 구동시키려고 하는지, 어떤 컨테이너 이미지를 쓰는지, 복제를 원하는 수는 몇개인지, 어떤 네트워크와 디스크 자원을 쓸 수 있도록 할 것인지 등을 의미한다.

 

사용자가 원하는 상태를 설명하는 방버은 쿠버네티스 API를 사용해서 오브젝트를 만드는 것인데 일반적으로 kubectl이라는 커맨드라인 인터페이스를 사용한다. 또한 클러스터와 상호 작용하고 원하는 상태를 설정하거나 수정하기 위해서 쿠버네티스 API를 직접 사용할 수도 있다. 

 

원하는 상태를 설정하면 쿠버네티스 컨트롤 플레인은 Pod Lifecycle Event Generator(PLEG)를 통해 클러스터의 현재 상태를 원하는 상태와 일치시킨다. 그렇게 함으로써 쿠버네티스가 컨테이너를 시작, 재시작하거나, 주어진 애플리케이션의 복제 수를 확장 하는 등의 다양한 작업을 자동으로 수행한다. 쿠버네티스 컨트롤 플레인은 클러스터에서 실행 중인 프로세스의 집합으로 구성된다.

 

  • 쿠버네티스 마스터는 클러스터 내 마스터 노드로 지정된 노드 내에서 구동되는 세 개의 프로세스 집합
    • 해당 프로세스는 kube-apiserver, kube-controller-manager 및 kube-scheduler 이다.
  • 클러스터 내 마스터 노드가 아닌 각각의 노드는 다음 두 개의 프로세스를 구동한다. (일반적으로 워커 노드)
    • kubelet - 쿠버네티스 마스터와 통신하는 프로세스
    • kube-proxy - 각 노드의 쿠버네티스 네트워킹 서비스를 반영하는 네트워크 프록시

쿠버네티스 오브젝트

쿠버네티스는 시스템의 상태를 표현하는 추상 개념을 다수 포함하고 있는데 이는 배포된 애플리케이션과 워크로드, 이에 관련된 네트워크와 디스크 자원, 그 밖에 클러스터가 무엇을 하고 있는지에 대한 정보가 이에 해당한다. 이런 추상적 개념은 쿠버네티스 API 내에 오브젝트로 표현된다. 

 

기초적인 쿠버네티스 오브젝트는 다음과 같은 것들이 있다.

  • 파드
  • 서비스
  • 볼륨
  • 네임스페이스

또한 쿠버네티스에는 기본 오브젝트를 기반으로 부가 기능 및 편의 기능을 제공하는 컨트롤러에 의존하는 보다 높은 수준의 추상적 개념도 많다. 

  • 디플로이먼트
  • 데몬셋
  • 스테이트풀셋
  • 리플리카셋

쿠버네티스 컨트롤 플레인

쿠버네티스 마스터, Kubelet 프로세스와 같은 쿠버네티스 컨트롤 플레인의 다양한 구성 요소는 쿠버네티스가 클러스터와 통신하는 방식을 담당한다. 컨트롤 플레인은 시스템 내 모든 쿠버네티스 오브젝트의 레코드를 유지하면서, 오브젝트의 상태를 관리하는 제어 루프를 지속적으로 구동한다. 컨트롤 플레인의 제어 루프는 클러스터 내 변경이 발생하면 언제라도 응답하고 시스템 내 모든 오브젝트의 실제 상태가 사용자가 원하는 상태와 일치시키기 위한 일을 담당한다. 

 

쿠버네티스 마스터

클러스터에 대해 원하는 상태를 유지하는 역할 

 

쿠버네티스 노드

워크플로우를 구동시키는 머신(VM, 물리서버 등)이다. 

 

노드

노드는 클러스터에 따라 가상 머신 또는 물리적 머신 일 수 있음.

파드를 실행하기 위한 서비스가 포함되어 있으며 kubelet, 컨테이너 런타임, kube-proxy 등이 포함된다.

 

API 서버에 노드를 추가하는 방법

1. 노드의 kubectl로 컨트롤 플레인에 등록

2. 사용자 또는 다른 사용자가 노드 오브젝트를 수동으로 추가

 

 

노드의 상태

  • 주소
  • 컨디션
  • 용량과 할당 가능
  • 정보

 

'클라우드 > Devops' 카테고리의 다른 글

넷플릭스 마이크로 서비스 가이드  (0) 2020.05.13
Jenkins란 무엇인가?  (0) 2020.01.26