쿠버네티스 오브젝트

박도준·2021년 5월 1일
0

Kubernetes & Docker

목록 보기
9/12
post-thumbnail

쿠버네티스는 크게 오브젝트(object)와 오브젝트를 관리하는 컨트롤러(controller)로 나눠져 있다.

쿠버네티스 오브젝트

쿠버네티스 오브젝트는 쿠버네티스 시스템에서 영속성을 가지는 오브젝트이다. 오브젝트를 생성하게 되면 쿠버네티스 시스템은 원하는 상태를 보장하기 위해 지속적으로 작동한다.

쿠버네티스는 클러스터의 상태를 나타내기 위해오브젝트를 이용한다.

거의 모든 쿠버네티스 오브젝트는 오브젝트 구성을 결정해주는 두 개의 중접된 오브젝트 필드인 statusspec를 포함한다.

  • status : 쿠버네티스 시스템과 컴포넌트에 의해 제공되고 업데이트된 오브젝트의 현재 상태를 설명
  • spec : 오브젝트의 특성으로 추구하는 상태를 설명

컨트롤러statusspec과 일치하도록 오브젝트를 생성/삭제한다.



spec과 status 확인

우선 현재 상태를 확인해본다.

총 6개의 pod가 존재하는 것을 확인할 수 있다.

그리고 파드가 존재하는 디플로이먼트에서 spec과 status를 확인하고 수정해보기 위해 kubectl edit 명령어를 사용한다.

kubectl edit deployment [deployment name]

specstatus에 대한 내용을 위와 같이 확인할 수 있다.

위에서 오브젝트는 spec에 맞춰 status가 변경된다고 했는데, 실제로 그런지 spec의 replicas를 3으로 수정하여 확인해본다.

정말로 위와 같이 수정한 것처럼 3개의 파드로 변한것을 확인할 수 있다.



기본 오브젝트

쿠버네티스에는 쿠버네티스에 의해 배포 및 관리되는 가장 기본적인 오브젝트가 4가지 존재한다.

  • pod
  • service
  • volume
  • namespace

Pod

파드는 쿠버네티스에서 가장 기본적인 배포 단위로 컨테이너를 포함하는 단위이다. 쿠버네티스의 특징 중 하나로 컨테이너를 개별적으로 하나씩 배포하는 것이 아닌 파드 단위로 배포한다. 이때 파드는 하나 이상의 컨테이너를 포함한다.


service

서비스는 파드 집합에서 실행중인 애플리케이션을 네트워크 서비스로 노출하는 추상화 방법이다.

파드는 컨트롤러가 관리하므로 고정되어 있지 않고 클러스터 안을 옮겨 다닌다. 이 과정에서 노드를 옮겨 다니며 실행되기도 하고 클러스터 안 파드의 IP가 변경되고 한다. 이렇게 동적으로 변하는 파드들에 고정적으로 접근할 때 사용하는 방법이 쿠버네티스의 서비스이다.

서비스는 파드에게 고유한 IP 주소와 파드 집합에 대한 단일 DNS 명을 부여하여 파드가 클러스터 안 어디에 있든 고정 주소를 통해 접근이 가능하다.


volume

컨테이너는 기본적으로 상태가 없는 앱 컨테이너를 사용한다. 상태가 없다는 것은 컨테이너 혹은 노드에 문제가 있어 컨테이너를 새로 실행했을 때 다른 노드로 자유롭게 옮길 수 있다는 뜻이다. 이는 컨테이너의 장점이다.

하지만 컨테이너가 실행되지 않거나 삭제된다면 현재까지 저장한 데이터가 사라진다는 단점이 있다.

앱의 특성에 따라 컨테이너에 문제가 발생해도 데이터를 보존해야 하는 경우가 생기는데, 이런 상황에서 사용하는 것이 볼륨이다. 볼륨은 컨테이너가 재시작하더라도 데이터를 유지한다.


namespace

네임스페이스는 쿠버네티스 클러스터 하나를 여러 개의 논리적인 단위로 나눠서 사용하는 것이다. 파드와 서비스등은 네임스페이스 별로 생성이나 관리가 될 수 있고, 사용자 권한 역시 네임스페이스 별로 나눠서 부여할 수 있다.



참고 자료

https://bcho.tistory.com/1256

https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/kubernetes-objects/

profile
Better late than never

0개의 댓글