쿠버네티스 오브젝트란?

쿠버네티스 문서 딥다이브 / Objects
이민석's avatar
Oct 20, 2024
쿠버네티스 오브젝트란?

개요

쿠버네티스의 각 요소들은 오브젝트(Object)*라고 표현됩니다.
본 문서는 쿠버네티스 공식 문서에 근거하여 오브젝트에 대해서 딥다이브합니다.

오브젝트란?

쿠버네티스 오브젝트는 의도의 기록입니다.
원하는 상태를 기록함으로써 쿠버네티스에게 이를 알립니다.
결과적으로 쿠버네티스는 오브젝트와 실제 상태를 비교합니다.

- [Ref] kubernetes - Objects in Kubernetes

오브젝트의 속성

거의 모든 오브젝트는
그 구성을 관리하는 두 개의 중첩된 오브젝트 필드를 가집니다.

첫 번째 중첩 오브젝트 필드는 spec으로서
엔지니어가 오브젝트를 생성할 때 설정하는데 사용됩니다.

kubectl apply -f nginx-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx

두 번째 중첩 오브젝트 필드는 status로서
쿠버네티스 시스템이 오브젝트의 상태를 기록하는덴 사용합니다.

kubectl get pods -A

오브젝트의 spec과 그 속성

쿠버네티스 오브젝트의 spec 필드에는 다음 값이 필수입니다.

  • apiVersion - 해당 오브젝트를 생성하는데 사용되는 쿠버네티스 api 버전

  • kind - 생성하려는 오브젝트 종류

  • metadata - 객체를 고유하게 식별하게 도움이 되는 데이터

    • name, uid, namespace 등으로 구성

  • spec - 객체에 대해 원하는 상태

서버측 필드 유효성 검사

쿠버네티스 1.25 이상에서 지원되는 기능입니다.
이 기능을 사용할 수 없는 경우 클라이언트측 필드 유효성 검사를 사용합니다.
단, 쿠버네티스 1.27 이상에서는 항상 클라이언트측 필드 유효성 검사를 지원합니다.

API 서버는 오브젝트에서 인식할 수 없거나 중복된 필드를 감지하는 서버측 필드 유효성 검사(Server side field validation) 기능을 제공합니다.

kubectl --validate

해당 기능의 옵션은 크게 세 가지 수준으로 정의됩니다.

  • Strict : 엄격한 필드 유효성 검사, 유효성 검사 실패 시 오류 발생

  • Warn : 필드 유효성 검사는 수행되지만, 실패 시 오류 발생하지 않고 경고로 노출

  • Ignore : 서버 측 필드 유효성 검사는 실행되지 않음

- [Ref] kubernetes - Objects in Kubernetes # Server side field validation

Share article

Unchaptered