26A30a

Young-Kyoo Kim·2026년 4월 29일

Kubernetes에서 특정 NFS 경로를 사용하는 PV(PersistentVolume)를 필터링하는 가장 효율적인 방법은 kubectl의 출력 형식을 활용하거나 jq를 사용하는 것입니다.
상황에 맞는 몇 가지 명령어를 정리해 드립니다.

1. custom-columns를 사용하여 가독성 있게 확인하기

PV 이름과 NFS 경로를 열 형태로 출력한 뒤 grep으로 필터링하는 방식입니다. 경로가 정확히 무엇인지 확인하며 리스트업할 때 유용합니다.

kubectl get pv -o custom-columns="NAME:.metadata.name,NFS_PATH:.spec.nfs.path,NFS_SERVER:.spec.nfs.server" | grep "/your/specific/path"

2. jsonpath를 사용하여 이름만 추출하기

특정 경로와 정확히 일치하는 PV의 이름만 깔끔하게 뽑아내고 싶을 때 사용합니다.

kubectl get pv -o jsonpath='{range .items[?(@.spec.nfs.path=="/your/specific/path")]}{.metadata.name}{"\n"}{end}'

3. jq를 사용한 정교한 필터링 (추천)

경로의 일부만 포함되어 있거나, NFS 서버 주소까지 함께 체크해야 하는 대규모 클러스터 환경에서는 jq가 가장 강력합니다.

  • 특정 경로가 포함된 모든 PV 이름 출력:

    kubectl get pv -o json | jq -r '.items[] | select(.spec.nfs.path | contains("/your/specific/path")) | .metadata.name'
    
  • NFS 서버와 경로를 동시에 만족하는 경우:

    kubectl get pv -o json | jq -r '.items[] | select(.spec.nfs.path == "/your/path" and .spec.nfs.server == "10.0.0.1") | .metadata.name'
    

4. 고성능 클러스터를 위한 팁

만약 관리 중인 PV의 수가 수천 개 단위로 매우 많다면, 전체 리스트를 가져오는 과정에서 API 서버에 부하가 걸릴 수 있습니다. 이럴 때는 --go-template을 활용하여 클라이언트 사이드 부하를 줄일 수 있습니다.

kubectl get pv -o go-template='{{range .items}}{{if .spec.nfs}}{{if eq .spec.nfs.path "/your/specific/path"}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}{{end}}'

위 명령어 중 본인의 작업 환경(정확한 일치 여부, 시인성 등)에 가장 적합한 것을 골라 사용하시면 됩니다. 구체적으로 찾으시는 경로 형식이 있다면 그에 맞춰 필터를 더 세분화해 드릴 수 있습니다.

0개의 댓글