ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Kubernetes] 필드 셀렉터
    공부/데이터 2023. 3. 6. 15:36

    Kubernetes 필드 셀렉터는 레이블 셀렉터와 유사하지만, 필드 셀렉터는 레이블이 아닌 오브젝트의 필드를 사용하여 셀렉션을 수행합니다.

    Kubernetes에서는 많은 오브젝트를 사용합니다. 예를 들어, Pod, Service, Node, Namespace 등이 있습니다. 이러한 오브젝트들은 다양한 필드를 가지고 있습니다. 필드 셀렉터는 이러한 오브젝트들의 필드를 사용하여 셀렉션을 수행합니다.

    필드 셀렉터는 쿠버네티스 리소스에서 한 개 이상의 필드 값을 기준으로 선택하는 데 사용됩니다. 예를 들어, Pod 오브젝트의 경우에는 Pod의 이름, IP 주소, 레이블 등이 있습니다. 이러한 필드들을 사용하여 특정한 Pod를 선택할 수 있습니다. 다른 예로는 Node 오브젝트의 경우에는 Node의 이름, IP 주소, 레이블 등이 있습니다.

    다음은 필드 셀렉터 쿼리의 예시입니다.

    • metadata.name=my-service
    • metadata.namespace!=default
    • status.phase=Pending
    kubectl get pods --field-selector status.phase=Running

    사용 가능한 필드

    쿠버네티스의 리소스 종류에 따라 사용 가능한 필드가 다릅니다. 모든 리소스 종류는 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"

    사용 가능한 연산자

    필드 셀렉터는 다음과 같은 연산자를 사용합니다.

    • =: 완전히 일치하는 필드를 선택합니다. (=와 ==는 동일한 의미)
    • !=: 일치하지 않는 필드를 선택합니다.
    • exists: 특정 필드가 존재하는 오브젝트를 선택합니다.
    • !exists: 특정 필드가 존재하지 않는 오브젝트를 선택합니다.

    연계되는 셀렉터

    레이블을 포함한 다른 셀렉터와 마찬가지로, 필드 셀렉터를 연계하여 사용할 수 있습니다.

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

    여러 개의 리소스 종류

    kubectl은 필드 셀렉터를 여러 리소스 유형에 걸쳐 사용할 수 있습니다.

    댓글