상세 컨텐츠

본문 제목

쿠버네티스 [9] 필드셀렉터 20220912

보안/java

by MustThanks 2022. 9. 12. 23:15

본문

반응형

필드셀렉터

필드 셀렉터는 한 개 이상의 리소스 피드 값에 따라 쿠버네티스 리소스르 선택하기 위해 사용된다. 필드 셀렉터 쿼리의 예시는 다음과 같다.

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 podskubectl 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 fieldRunning 이 아니고 spec.restartPolic fieldAlways 인 모드 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

관련글 더보기

댓글 영역