devops

Kubernetes 주요 오브젝트(Object)&워크로드(Workload) 정리 본문

DevOps/Kubernetes

Kubernetes 주요 오브젝트(Object)&워크로드(Workload) 정리

vata500 2022. 9. 12. 18:02
반응형

쿠버네티스의 오브젝트는 컨테이너 워크로드를 처리하는데 사용되는 1) 워크로드용 객체, 네트워크 및 보안을 처리하는 2) 인프라 객체와 구분할 수 있다.

k8s의 오브젝트들

오브젝트 생성을 위해서는 YAML을 활용하고, API 서버를 통해서 요청된다. 그리고 생성전에 유효성 검증이 진행된다.


Workload

1) Pod

파드는 작업의 기본 단위면서, k8s에서 생성하고 관리할 수 있는 가장 작은 단위의 유닛이다.

파드는 하나 이상의 컨테이너들의 그룹이며, 모두 스토리지와 네트워크 리소스를 공유한다.

굳이 비유를 하자면 '하나 혹은 여러 컨테이너들을 감싼 얇은 wrapper'다.

2) Deployment

디플로이먼트는 파드와 레플리카셋의 선언적인 설정을 제공한다.

Deploy하여 레플리카셋보다 한 단계 높은 관리 오브젝트를 생성하여, 업데이트 배포 및 관리가 가능

어플리케이션간의 롤아웃과 롤백 설정이 가능하다.

3) ReplicaSet

주어진 시간에 실행되는 안정적인 파드를 실행하도록 하는 역할을 한다.

정의된 파드의 수가 항상 작동할 수 있도록 한다.

Replication Controller는 파드의 문제가 발생 시, 자동으로 파드를 재생성할 수 있도록 한다.


Networking

1) Service

  • 서비스는 배포된 어플리케이션을 Single Endpoint를 통해서 노출시키는 역할을 한다.
  • 또한, Stable IP 주소들과 DNS 네임을 통해서 파드를 위한 안정적인 네트워킹을 제공한다.
  • 쿠버네티스가 파드에 트래픽을 포워딩할 수 있도록 설정하는 방법을 제공한다.
  • 노드, 파드, 앱들 간의 내, 외부 통신을 가능하게 한다.
  • 서비스가 제공하는 4개의 타입은 ClusterIP, NodePort, LoadBalancer, ExternalName이 있다.

2) Ingress

  • 인그레스는 외부에서 클러스터의 서비스로 접근하는 것을 매니징한다. 주로 HTTP와 HTTPS 프로토콜을 이용한다.
  • 로드밸런싱을 제공할 수 있으며, SSL Termination과 네임 기반의 가상 호스팅도 가능하다.
  • 인그레스는 IP 주소를 활용하여 하나 혹은 그 이상의 서비스가 외부 클라이언트와 통신할 수 있도록 한다.

Storage

1) PV(Persistent Volumes)

  • PV는 스토리지 볼륨의 낮은 레벨의 표현이다. 이는 물리적인 스토리지 디바이스를 클러스터에 연결하는 추상화된 개념이다.
  • PV는 PVC에 의해서 파드로 마운트될 수 있다.
  • PV는 클러스터의 리소스로, 클러스터 관리자에 의해서 생성되거나, Storage Class에 의해서 동적으로 프로비저닝 될 수 있다.
  • PV는 파드의 라이프사이클에 종속적인 것으로, 파드가 제거되거나 재생성될때 존재하는 데이터를 의미한다.

쉽게 말해서 볼륨을 사용하는 구조를 PV라고 한다.

2) PVC (Persistent Volume Claim)

  • PVC는 파드와 PV를 바인딩하는 역할을 한다. 파드는 PVC를 통해서 볼륨을 요청한다.
  • PVC는 구체적인 타입과 설정을 위한 스토리지 프로비저닝을 요청하는 역할을 한다.
  • PVC는 스토리지의 용량과 파드가 요구하는 특징을 정한다. 클러스터는 디자인된 PV를 요청하고 매치한다.
  • PVC는 파드와 비슷하다. 파드는 노드의 리소스를 사용하고 PVC는 PV의 리소스를 사용한다.

PVC는 사용자가 PV에 사용하고자 하는 용량과 읽기/쓰기 모드 설정과 관련된 요청하는 것을 의미한다.

즉 볼륨을 파드에 직접 할당하는 것이 아니라, 중간에 PVC를 두어 파드와 파드가 사용할 스토리지를 분리한다.

3) Storage Classes (SC)

  • 스토리지 클래스는 PVC가 요청했을 때 PV의 동적인 프로비저닝을 허용한다. 
  • Storage Provider를 추상화하는 개념이다.

PV와 PVC의 생명 주기

PV와 PVC의 생명 주기

1) Provisioning(프로비저닝)

PV를 만드는 단계를 의미한다. PV를 미리 만들어 두고 사용하는 정적(Static) 방법과 요청이 있을 때 만드는 동적(Dynamic) 방법이 있다.

정적 방법 : 미리 관리자가 적정 용량의 PV를 만들어 두고 사용자의 요청이 있을 때 PV를 할당한다. 이는 사용할 수 있는 스토리지 용량에 제한이 있을 때 유용하다.

동적 방법 : PVC를 거쳐서 PV를 요청했을 때 생성해서 제공한다. 사용자가 원하는 용량 만큼 생성하여 사용한다. PVC가 동적 프로비저닝을 할때 원하는 스토리지를 정의하는 스토리지클래스(SC)로 PV를 생성한다.

2) Binding(바인딩)

바인딩은 프로비저닝으로 만든 PV를 PVC와 연결하는 역할을 한다. PVC에서 원하는 스토리지의 용량과 접근방법을 명시해서 요청하면 요청에 맞는 PV가 할당 된다. (만약 원하는 PV가 없을 경우 실패)

PV와 PVC의 매핑은 1:1 관계다. PVC 하나가 여러 PV에 할당될 순 없다.

3) Using(사용)

PVC는 파드에 설정되고 파드는 PVC를 볼륨으로 인식해서 사용한다. PVC는 파드를 유지하는 동안 계속 사용되어 시스템에서 임의로 삭제할 수 없다.

4) Reclaiming(반환)

사용이 끝난 PVC는 삭제되고 PVC를 사용하던 PV를 초기화한다. 

반응형
Comments