Annotations

Labels and Selectors

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

쿠버네티스 오브젝트는 쿠버네티스라는 시스템 내에서 영속성을 갖는 엔티티(Persistent Entities)를 말함. 쿠버네티스는 이 엔티티를 클러스터의 상태를 나타내기(represent) 위해 사용함. 예를들면

💡 obejct와 resource

쿠버네티스에서 resource와 object는 둘다 쿠버네티스 내에서 관리되는 컴포넌트들을 가리키는데 쓰임. 차이는 resource는 선언적이고 개념적인 구분이라면 object는 리소스를 기반으로 실제로 메모리에 적재되어 클러스터에서 관리되는 구체적인 인스턴스를 object라고 함.

쿠버네티스 오브젝트는 위와같은 질문에 대한 답변, 즉 특정한 의도가 담긴 하나의 엔티티이다. 오브젝트를 생성하면 쿠버네티스 시스템은 그 오브젝트에 담긴 의도를 보장하기 위해 지속적으로 동작한다. 오브젝트를 생성한다는건 클러스터의 워크로드가 어떻게 동작해야 한다는지 명시하는 것과 같고, 이 오브젝트의 내용이 바로 클러스터의 Desired Status가 된다.

명세(spec)와 상태(status)

거의 모든 쿠버네티스 오브젝트는 오브젝트의 구성을 결정하는 두 개의 중첩된 오브젝트 필드를 포함함. specstatus 임.

spec은 오브젝트를 생성할때, 리소스에게 전달되는 오브젝트 생성내용. - 의도된 상태(Desired Status)

status는 쿠버네티스의 컨트롤 플래인 컴포넌트들에 의해 제공되고 업데이트되는 오브젝트의 **현재 상태(Observed Status)**임.

다음은 쿠버네티스 deployment생성을 위한 필수 필드와 오브젝트 spec이 담긴 yml파일 예시이다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2 # tells deployment to run 2 pods matching the template
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.14.2
        ports:
        - containerPort: 80