이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.
Kubernetes Object란
- 쿠버네티스 객체는 쿠버네티스 시스템의 영구 엔티티이다. 다른 말로 쿠버네티스 시스템에서 영속성을 가지고 있는 객체이다.
- 이 객체를 사용하여 쿠버네티스는 클러스터의 상태를 나타내며 구체적으로 아래와 같이 설명할 수 있다.
- 어떤 컨테이너화된 애플리케이션이 동작 중인지 (그리고 어느 노드에서 동작 중인지)
- 해당 애플리케이션에서 사용 가능한 리소스
- 재구동 정책, 업그레이드, 그리고 내결함성과 같은 해당 애플리케이션의 동작 방식에 대한 정책
- 쿠버네티스 객체는 하나의 "의도를 담은 레코드(기록)"이다.
- 쿠버네티스 객체를 동작(생성, 수정, 삭제 등)시키려면 Kubernetes API를 사용해야 한다.
- kubectl 커맨트 라인 인터페이스를 이용할 때, CLI는 우리 대신 필요한 쿠버네티스 API를 호출해주며, 클라이언트 라이브러리 중 하나를 이용하여 자신의 프로그램에서 쿠버네티스 API를 직접 이용할 수 있다.
Spec과 Status
- 쿠버네티스에서 오브젝트는 클러스터의 상태를 관리하고 조정하기 위한 중요한 구성 요소이다.
- 각 오브젝트는 두 가지 주요 필드를 포함하는데 spec과 status이다.
- spec은 spec을 가진 오브젝트는 사용자가 의도한 상태를 정의한다.
- 예를 들어, Deployment를 생성할 때 spec에서 몇 개의 애플리케이션 인스턴스(Replica)가 실행되어야 하는지 설정할 수 있다.
- Status는 현재 오브젝트의 실제 상태를 나타낸다.
- 쿠버네티스 시스템은 이 필드를 지속적으로 업데이트하여 사용자가 정의한 spec과 일치하도록 클러스터를 관리한다.
- 예를 들어, 사용자가 3개의 레플리카를 정의한 경우, 쿠버네티스는 실제로 3개의 인스턴스가 실행되도록 지속적으로 상태를 조정한다. 만약 어떤 이유로 한 인스턴스가 중지되면, 쿠버네티스는 자동으로 새로운 인스턴스를 시작하여 spec과 status 간의 차이에 대응한다.
- 객체 사양, 상태 및 메타데이터에 대한 자세한 내용은 Kubernetes API Conventions를 참조하면 된다.
필수 필드
- 생성하려는 Kubernetes 객체의 매니페스트(YAML 또는 JSON 파일)에서 다음 필드에 대한 값을 설정해야 한다.
- apiVersion
- 객체를 생성하는 데 사용하는 Kubernetes API 버전을 뜻한다.
- kind
- 어떤 종류의 객체를 만들고 싶은지 작성한다.
- Deployment, Service 등이 있다.
- metadata
- name, namespace, UID 등을 포함하여 객체를 고유하게 식별하는 데 도움이 되는 데이터이다.
- spec
- 객체에 대한 원하는 상태를 지정한다.
- 오브젝트 spec에 대한 정확한 포맷은 모든 쿠버네티스 오브젝트마다 다르고, 그 오브젝트 특유의 중첩된 필드를 포함한다.
※ kubernetes API : 해당 사이트는 Kubernetes API를 통해 Kubernetes 리소스 객체를 읽고 쓰기 위해 필요한 각 필드와 그에 사용되는 값들을 정리해 놓은 문서입니다. 이 문서를 참고하면 Kubernetes API 엔드포인트를 사용해 다양한 Kubernetes 리소스 객체를 관리할 때 필요한 정보들을 쉽게 확인할 수 있습니다.
Reference
https://kubernetes.io/ko/docs/concepts/overview/working-with-objects/kubernetes-objects/
https://kubernetes.io/ko/docs/reference/using-api/client-libraries/
'IT > Kubernetes' 카테고리의 다른 글
[Kubernetes] Container Runtimes(컨테이너 런타임) - DevelopMoon (0) | 2024.11.01 |
---|---|
[Kubernetes] Cluster Architecture(클러스터 아키텍처) - DevelopMoon (8) | 2024.10.31 |
[Kubernetes] 쿠버네티스 구성 요소 (Components) - DevelopMoon (2) | 2024.10.23 |
[Kubernetes] 쿠버네티스란? - DevelopMoon (8) | 2024.10.23 |