객체 메타데이터

객체 메타데이터 (ObjectMeta)

이 페이지는 모든 영구 리소스가 반드시 가져야 하는 메타데이터를 담는 ObjectMeta 타입을 설명해요. 이름, 네임스페이스, 라벨, 어노테이션, 소유자 참조, UID 등 객체의 식별·관리 정보를 나타내는 구조체랍니다.

출처: Kubernetes API Reference

본문

ObjectMeta는 모든 영구 리소스가 반드시 가져야 하는 메타데이터이며, 사용자가 생성해야 하는 모든 객체를 포함합니다.

apiVersion: meta/v1

import "k8s.io/apimachinery/pkg/apis/meta/v1"

ObjectMeta

ObjectMeta는 모든 영구 리소스가 반드시 가져야 하는 메타데이터이며, 사용자가 생성해야 하는 모든 객체를 포함합니다.


Field Description
annotations
object Annotations는 리소스와 함께 저장되는 비정형 키-값 맵으로, 외부 도구가 임의의 메타데이터를 저장하고 검색하도록 설정할 수 있습니다. 쿼리할 수 없으며 객체를 수정할 때 보존되어야 합니다. 자세한 내용: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations
creationTimestamp
Time CreationTimestamp는 이 객체가 생성된 서버 시간을 나타내는 타임스탬프입니다. 여러 작업에 걸쳐 happens-before 순서로 설정되는 것이 보장되지 않습니다. 클라이언트는 이 값을 설정할 수 없습니다. RFC3339 형식으로 표현되며 UTC입니다. 시스템이 채웁니다. 읽기 전용입니다. 목록에서는 null입니다. 자세한 내용: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
deletionGracePeriodSeconds
integer 이 객체가 시스템에서 제거되기 전에 정상적으로 종료될 수 있도록 허용되는 초 수입니다. deletionTimestamp도 설정된 경우에만 설정됩니다. 단축만 허용됩니다. 읽기 전용입니다.
deletionTimestamp
Time DeletionTimestamp는 이 리소스가 삭제될 RFC 3339 날짜 및 시간입니다. 이 필드는 사용자가 정상 삭제를 요청할 때 서버에 의해 설정되며, 클라이언트가 직접 설정할 수 없습니다. finalizers 목록이 비워진 후에 이 필드의 시간 이후 리소스가 삭제될 것으로 예상됩니다(리소스 목록에서 더 이상 보이지 않고 이름으로 접근할 수 없음). finalizers 목록에 항목이 있는 한 삭제는 차단됩니다. deletionTimestamp가 설정되면 이 값은 설정 해제되거나 더 미래로 설정될 수 없지만, 단축되거나 이 시간 이전에 리소스가 삭제될 수는 있습니다. 예를 들어, 사용자가 포드를 30초 후에 삭제하도록 요청할 수 있습니다. Kubelet은 포드의 컨테이너에 정상 종료 신호를 보내 반응합니다. 그 30초 후에 Kubelet은 컨테이너에 강제 종료 신호(SIGKILL)를 보내고, 정리 후 API에서 포드를 제거합니다. 네트워크 분할이 있는 경우, 관리자나 자동화 프로세스가 리소스가 완전히 종료되었는지 확인할 때까지 이 타임스탬프 이후에도 이 객체가 존재할 수 있습니다. 설정되지 않으면 객체의 정상 삭제가 요청되지 않은 것입니다. 정상 삭제가 요청되면 시스템이 채웁니다. 읽기 전용입니다. 자세한 내용: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
finalizers
string array
patch strategy: merge 객체가 레지스트리에서 삭제되기 전에 비어 있어야 합니다. 각 항목은 목록에서 해당 항목을 제거할 책임이 있는 컴포넌트의 식별자입니다. 객체의 deletionTimestamp가 nil이 아니면 이 목록의 항목은 제거만 가능합니다. Finalizers는 어떤 순서로든 처리되고 제거될 수 있습니다. 순서가 강제되면 finalizer가 멈추는( stuck) 위험이 크기 때문에 순서는 강제되지 않습니다. finalizers는 공유 필드이므로 권한이 있는 모든 행위자가 순서를 변경할 수 있습니다. finalizer 목록이 순서대로 처리되면, 목록의 첫 번째 finalizer를 담당하는 컴포넌트가 목록의 이후 finalizer를 담당하는 컴포넌트가 생성한 신호(필드 값, 외부 시스템 또는 기타)를 기다리게 되어 교착 상태(deadlock)가 발생할 수 있습니다. 강제된 순서가 없으면 finalizer는 서로 자유롭게 순서를 정하며 목록의 순서 변경에 취약하지 않습니다.
generateName
string GenerateName은 Name 필드가 제공되지 않은 경우에만 서버가 고유한 이름을 생성하기 위해 사용하는 선택적 접두사입니다. 이 필드를 사용하면 클라이언트에 반환되는 이름은 전달된 이름과 다릅니다. 이 값은 고유한 접미사와 결합됩니다. 제공된 값은 Name 필드와 동일한 검증 규칙을 가지며, 서버에서 값을 고유하게 만드는 데 필요한 접미사 길이만큼 잘릴 수 있습니다. 이 필드가 지정되고 생성된 이름이 이미 존재하면 서버는 409를 반환합니다. Name이 지정되지 않은 경우에만 적용됩니다. 자세한 내용: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#idempotency
generation
integer 원하는 상태의 특정 생성(generation)을 나타내는 시퀀스 번호입니다. 시스템이 채웁니다. 읽기 전용입니다.
labels
object 객체를 구성하고 분류(범위 지정 및 선택)하는 데 사용할 수 있는 문자열 키-값 맵입니다. 복제 컨트롤러와 서비스의 셀렉터와 일치할 수 있습니다. 자세한 내용: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels
managedFields
ManagedFieldsEntry array ManagedFields는 워크플로 ID와 버전을 해당 워크플로가 관리하는 필드 집합에 매핑합니다. 이는 주로 내부 관리를 위한 것이며, 사용자가 이 필드를 설정하거나 이해할 필요는 보통 없습니다. 워크플로는 사용자 이름, 컨트롤러 이름 또는 "ci-cd" 같은 특정 apply 경로의 이름일 수 있습니다. 필드 집합은 항상 워크플로가 객체를 수정할 때 사용한 버전입니다.
name
string Name은 네임스페이스 내에서 고유해야 합니다. 일부 리소스는 클라이언트가 적절한 이름의 자동 생성을 요청할 수 있지만, 리소스를 생성할 때 필요합니다. Name은 주로 생성 멱등성(idempotence)과 구성 정의를 위한 것입니다. 업데이트할 수 없습니다. 자세한 내용: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#names
namespace
string Namespace는 각 이름이 고유해야 하는 공간을 정의합니다. 빈 네임스페이스는 "default" 네임스페이스와 동일하지만, "default"가 표준 표현입니다. 모든 객체가 네임스페이스로 범위가 지정되는 것은 아닙니다 - 그러한 객체의 이 필드 값은 비어 있습니다. DNS_LABEL이어야 합니다. 업데이트할 수 없습니다. 자세한 내용: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces
ownerReferences
OwnerReference array
patch strategy: merge on key uid 이 객체가 의존하는 객체 목록입니다. 목록의 모든 객체가 삭제되면 이 객체는 가비지 컬렉션됩니다. 이 객체가 컨트롤러에 의해 관리되는 경우 목록의 항목은 controller 필드가 true로 설정된 상태로 이 컨트롤러를 가리킵니다. 관리 컨트롤러는 둘 이상일 수 없습니다.
resourceVersion
string 클라이언트가 객체가 언제 변경되었는지 확인하는 데 사용할 수 있는 이 객체의 내부 버전을 나타내는 불투명한 값입니다. 낙관적 동시성, 변경 감지, 리소스 또는 리소스 집합에 대한 watch 작업에 사용될 수 있습니다. 클라이언트는 이 값을 불투명하게 취급하고 수정하지 않은 채 서버에 다시 전달해야 합니다. 특정 리소스 또는 리소스 집합에 대해서만 유효할 수 있습니다. 시스템이 채웁니다. 읽기 전용입니다. 값은 클라이언트가 불투명하게 취급해야 합니다. 자세한 내용: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#concurrency-control-and-consistency
selfLink
string 사용되지 않음: selfLink는 더 이상 시스템이 채우지 않는 레거시 읽기 전용 필드입니다.
uid
string UID는 이 객체에 대한 시간과 공간에서 고유한 값입니다. 일반적으로 리소스가 성공적으로 생성될 때 서버가 생성하며 PUT 작업에서 변경할 수 없습니다. 시스템이 채웁니다. 읽기 전용입니다. 자세한 내용: https://kubernetes.io/docs/concepts/overview/working-with-objects/names#uids

더 알아보기 (Learn more)