Kubernetes 기본 오브젝트

squareBird·2022년 3월 28일
0

Kubernetes

목록 보기
14/17
post-thumbnail

Kubernetes 기본 Object

Kubernetes상에서 배포되어있는 PodDeployment는 스펙과 상태 등의 값을 가지고 있습니다.
이런 값을 가지고 있는 PodDeployment를 개별 속성을 포함해 부르는 단위를 Object라고 합니다.


기본 Object

Kubernetes에서 제공하는 기본 Object는 4가지가 존재합니다.


1. Pod

PodKubernetes에서 실행되는 최소 단위입니다.

위의 육각형은 하나의 Node이고 API 서버와의 통신을 위한 kubelet과 컨테이너 실행을 위한 Docker 런타임이 동작하고 있습니다.

Pod은 독립정인 공간과 사용 가능한 IP를 가지고 있고, 하나의 Pod는 반드시 하나 이상의 컨테이너를 가지고 있습니다.


2. Namespace


NamespaceKubernetes 클러스터에서 사용되는 리소스들을 구분해 관리하는 그룹입니다.
Pod, Deployment등을 배포할 때 Namespace를 설정해주지 않으면 default라는 이름의 Namespace에 속하게 됩니다.

실제 서비스용, 개발용, 테스트용 등 동일 클러스터에서 Namespace를 통해 용도를 구분하여 용도별로 격리된 컨테이너를 실행시킬 수 있습니다.


3. Volume

Pod가 생성될 때 Pod에서 사용할 수 있는 디렉토리를 제공합니다.
기본적으로 Docker와 동일하게 Pod의 디렉토리는 영속되는 개념이 아닙니다.

하지만, Pod가 사라지더라도 데이터를 영속적으로 보존할 수 있도록 볼륨을 설정해 줄 수 있습니다.
볼륨은 Worker Node의 특정 디렉토리를 설정하거나, AWSEBS`를 활용하는 등 여러가지 방법을 통해 선언할 수 있습니다.

4. Service

Kubernetes 관리자는 "어떤 서비스를 제공하는 몇개의 Pod을 배포하라"는 Deployment 등을 정의해 어플리케이션을 배포합니다.
이때 관리자는 어떤 Worker Node에 어떤 어플리케이션이 들어있는 Pod이 배포되어 있는지 알지못합니다.

또한, Pod에 문제가 생길 경우 Kubernetes는 해당 Pod을 종료하고 새로운 Pod을 생성하기 때문에 Pod의 접속정보는 끈임없이 변화합니다.
이때, 외부에 노출되어야 하는 서비스의 경우 변화하는 접속정보로 인해 서비스 제공에 어려움을 겪을 수 있는데 이를 방지하기 위해 고정된 외부와의 연결 통로를 제공하는 것이 서비스입니다.


기본 Object 이외의 Object

우리는 기본 Object들만을 이용해도 Kubernetes를 사용할 수 있습니다.
하지만, 말 그대로 기본적인 기능만을 제공하기 때문에 어느정도 한계점이 있습니다.

이를 해결하기 위해 좀 더 효율적으로 작동하도록 기능들을 조합하고 추가해 구현한 것이 Deployment입니다.

이런 Deployment외에도 DaemonSet, ConfigMap, ReplicaSet, PersistentVolume, PersistentVolumeClaimm 등 다양한 Object들이 존재하며, 앞으로도 필요에 의해 더욱 많은 Object들이 추가될 것입니다.

profile
DevOps...

0개의 댓글