필드셀렉터
필드 셀렉터는 한 개 이상의 리소스 피드 값에 따라 쿠버네티스 리소스르 선택하기 위해 사용된다. 필드 셀렉터 쿼리의 예시는 다음과 같다.
l Metadata.name = my-service
l Metadata.namespace != default
l Status.phase = Penfing
다음의 kubectl 커맨드는 status.phase 필드의 값이 Running 이 모든 파드를 선택한다.
l Kubectl get pods --field-selector status.phase-Running
참고 : 필드 셀렉터는 본질적으로 리소스 필터
기본적으로 적용되는 셀렉터나 필드는 없으며 이는 명시된 종류의 모든 리소스가 선택된다는 것을 의미한다. 여기에 따라오는 kubectl 쿼리인 kubectl get pods와 kubectl get pods --field-selector “"는 동일 하다.
사용 가능한 필드
사용가능한 필드는 쿠버네티스의 리소스 종류에 따라서 다르다.
모든 리소스 종류는 metadata.name 과 metadata.namespace 필드 셀렉터를 사용할 수 있다.
사요할 수 없는 셀렉터를 사용하면 다음과 같이 에러를 출력
l Kubectl get ingress --field-selector foo.bar=baz
l Error from server(BadRequest): Unable to find “ngresses” that match label selector “”, field selector “foo.bar-bax” : “foo.bar” is not a known field selector: Only “metadata.name”. “metadata.namespace”
사용 가능한 연산자
필드 셀렉터에서 =,==,!= 연산자를 사용할 수 있다 ( = 와 == 는 동일한 의미)
예제는 Kubectl 커맨드는 default namespaces에 속해 있지 않은 모든 쿠버네티스 서비스를선택
l kubectl get services --all-namespaces --field-selector metadata.namespace!=default
연계되는 설렉터
레이블을 비록한 다른 셀렉터처럼 췸표로 구분되는 목록을 통해 필드 셀렉터를 연계해서 사용할 수 있다
예제 kubectl 명령어는 status.phase field가 Running 이 아니고 spec.restartPolic field가 Always 인 모드 pods를 선택한다.
l kubectl get pods --field-selector=status.phase!=Running,spec.restartPolicy=Always
여러 개의 리소스 종류
Field 셀렉터를 여러 개의 리소스 종류에 걸쳐 사용할 수 있다.
예제 kubectl 명령어는 default namespace에 속해 있지 않은 모든 StateFulSet(스테이트풀셋)과 서비스를 선택한 것
l kubectl get statefulsets,services --all-namespaces --field-selector metadata.namespace!=default
쿠버네티스와 컨테이너, 도커에 대한 기본 개념 (0) | 2022.09.15 |
---|---|
쿠버네티스[10] 권장 레이블 20220913 (0) | 2022.09.13 |
쿠베네티스[9] 어노테이션 20220908 (1) | 2022.09.08 |
쿠버네티스[8] 레이블과 셀렉터 20220907 (0) | 2022.09.07 |
쿠버네티스[7] 네임스페이스 20220904 (0) | 2022.09.05 |
댓글 영역