필드 셀렉터

필드 셀렉터 (Field Selectors)

필드 셀렉터는 하나 이상의 리소스 필드 값을 기준으로 쿠버네티스 객체를 선택하게 해줘요. 필드 셀렉터 쿼리의 예시는 다음과 같아요:

  • metadata.name=my-service
  • metadata.namespace!=default
  • status.phase=Pending

다음 kubectl 명령은 status.phase 필드 값이 Running 인 모든 파드를 선택해요:

kubectl get pods --field-selector status.phase=Running

참고:

출처: 문서

본문

지원되는 필드 (Supported fields)

지원되는 필드 셀렉터는 쿠버네티스 리소스 유형에 따라 달라져요. 모든 리소스 유형은 metadata.namemetadata.namespace 필드를 지원해요. 지원되지 않는 필드 셀렉터를 사용하면 오류가 발생해요. 예:

kubectl get ingress --field-selector foo.bar=baz
Error from server (BadRequest): Unable to find "ingresses" that match label selector "", field selector "foo.bar=baz": "foo.bar" is not a known field selector: only "metadata.name", "metadata.namespace"

지원되는 필드 목록

Kind Fields
Pod spec.nodeName spec.restartPolicy spec.schedulerName spec.serviceAccountName spec.hostNetwork status.phase status.podIP status.podIPs status.nominatedNodeName
Event involvedObject.kind involvedObject.namespace involvedObject.name involvedObject.uid involvedObject.apiVersion involvedObject.resourceVersion involvedObject.fieldPath reason reportingComponent source type
Secret type
Service spec.clusterIP spec.type
Namespace status.phase
ReplicaSet status.replicas
ReplicationController status.replicas
Job status.successful
Node spec.unschedulable
CertificateSigningRequest spec.signerName

사용자 정의 리소스 필드 (Custom resources fields)

모든 사용자 정의 리소스 유형은 metadata.namemetadata.namespace 필드를 지원해요.

추가로, CustomResourceDefinitionspec.versions[*].selectableFields 필드는 사용자 정의 리소스의 다른 필드 중 어떤 것이 필드 셀렉터에 사용될 수 있는지 선언해요. CustomResourceDefinition과 필드 셀렉터를 함께 사용하는 방법은 사용자 정의 리소스의 선택 가능한 필드를 참고해요.

지원되는 연산자 (Supported operators)

필드 셀렉터에는 =, ==, != 연산자를 사용할 수 있어요(=== 는 같은 뜻이에요). 예를 들어 이 kubectl 명령은 default 네임스페이스에 없는 모든 쿠버네티스 Service를 선택해요:

kubectl get services  --all-namespaces --field-selector metadata.namespace!=default

참고:

연결된 셀렉터 (Chained selectors)

라벨 및 다른 셀렉터와 마찬가지로 필드 셀렉터는 쉼표로 구분된 목록으로 연결할 수 있어요. 이 kubectl 명령은 status.phaseRunning 이 아니고 spec.restartPolicy 필드가 Always 인 모든 파드를 선택해요:

kubectl get pods --field-selector=status.phase!=Running,spec.restartPolicy=Always

여러 리소스 유형 (Multiple resource types)

여러 리소스 유형에 걸쳐 필드 셀렉터를 사용할 수 있어요. 이 kubectl 명령은 default 네임스페이스에 없는 모든 StatefulSet과 Service를 선택해요:

kubectl get statefulsets,services --all-namespaces --field-selector metadata.namespace!=default

더 알아보기 (Learn more)