레이블을 읽을 위치 정하기
리소스 모드는 단일 객체, 배열, items 배열을 가진 List 또는 이름이 List로 끝나는 종류를 받습니다. metadata.labels만 읽으며 Deployment의 Pod 템플릿 내부는 자동으로 찾지 않습니다.
Kubernetes
레이블 문법을 확인한 뒤 각 리소스가 어떤 조건을 만족하는지 살펴보세요.
입력은 이 브라우저에서만 처리합니다. 클러스터 연결, 업로드, 네트워크 조회는 하지 않습니다.
= · == · != · in · notin · key · !key. 쉼표는 AND 조건이며 빈 셀렉터는 모든 입력과 일치합니다.
한도: JSON 500,000자, 셀렉터 8,192자, 리소스 500개, 조건 64개, 리소스당 레이블 256개.
의미 기준: Kubernetes 1.35 / apimachinery v0.35.0의 일치, 집합, 존재 조건.
입력이 변경되었습니다. 다시 테스트한 뒤 내보내세요.
쿠버네티스 레이블 셀렉터 검사에서 예상보다 많은 Pod가 선택된다면 빠진 키부터 확인해 보세요. env!=prod는 다른 환경뿐 아니라 env가 아예 없는 객체도 선택합니다. 전체 일치 수만으로는 이 차이를 알아내기 어렵습니다.
레이블 맵 모드는 객체 자체를 읽고, 리소스 모드는 metadata.labels만 읽습니다. 각 모드의 입력은 따로 보관합니다. 따라서 metadata라는 이름의 레이블을 리소스 구조로 잘못 해석하지 않습니다.
쿠버네티스 레이블 셀렉터 테스트는 첫 실패에서 멈추지 않고 모든 조건을 평가합니다. 개발 환경의 웹 Pod가 app=web과 !paused를 통과하더라도 환경 집합 조건은 실패할 수 있습니다. 어느 키를 다시 확인해야 하는지 결과에서 바로 알 수 있습니다.
값이 빈 문자열인 레이블도 존재하는 키입니다. 키 자체가 없는 경우에는 값도 없습니다. 보고서에서 실제 문자열과 키 없음을 구분하므로, 부정 조건을 존재 여부 검사처럼 오해하지 않고 읽을 수 있습니다.
리소스 모드는 단일 객체, 배열, items 배열을 가진 List 또는 이름이 List로 끝나는 종류를 받습니다. metadata.labels만 읽으며 Deployment의 Pod 템플릿 내부는 자동으로 찾지 않습니다.
예제의 production을 development로 바꾸고 environment 키도 삭제해 보세요. in과 notin이 어떻게 달라지는지 확인할 수 있습니다. 자동 모드는 입력이 멈춘 뒤 350ms에 실행되고 수동 모드는 Ctrl/Cmd + Enter를 지원합니다.
리소스를 펼치면 레이블과 각 조건의 결과가 보입니다. 화면에는 50개씩 추가되지만 복사와 다운로드에는 전체 결과가 담깁니다. 입력을 바꾸면 내보내기가 즉시 비활성화되며 새 검사가 끝나야 사용할 수 있습니다.
선택적 DNS 접두사는 소문자이며 최대 253자입니다. 이름 부분은 1~63자의 영숫자로 시작하고 끝나며 중간에는 -_.도 허용합니다. 값은 최대 63자이고 빈 문자열도 가능합니다. 예약된 접두사는 문법상 유효하면 통과합니다.
=와 ==는 같은 값인지, !=는 다른 값인지 확인합니다. 집합성 기준 in과 notin은 후보 값 목록을 사용합니다. 쉼표로 나눈 조건은 모두 만족해야 하며, 같은 키의 여러 후보는 하나의 in에 넣어야 합니다.
입력 순서와 JSON 경로, 제공된 종류·네임스페이스·이름을 보존합니다. metadata나 labels가 없거나 null이면 빈 맵으로 처리합니다. 이름이 같아도 항목을 합치지 않으므로 중복 이름 때문에 결과가 사라지지 않습니다.
kubectl 레이블 쿼리에서 "01"과 "1"은 다른 문자열입니다. 숫자, 불리언, null을 문자열로 바꾸지 않고 오류로 표시합니다. 중복 JSON 키도 거부하므로 뒤의 값이 앞의 값을 덮어쓴 상태로 검사하지 않습니다.
app=web,environment=production처럼 쉼표로 연결합니다. 두 조건을 모두 만족해야 합니다. app.kubernetes.io/name 같은 키는 접두사까지 써야 하며 단순한 name과 같은 키가 아닙니다.
서로 다른 키를 OR로 연결하는 문법은 없습니다. 같은 키의 대안은 environment in (production,staging)처럼 씁니다. 같은 키에 두 개의 등식 조건을 쓰면 동시에 두 값을 요구하므로 결과가 없을 수 있습니다.
JSON에서는 {"maintenance":""}로 나타냅니다. maintenance는 존재 여부, maintenance=는 존재하는 빈 값, !maintenance는 키 누락을 검사합니다. 문자열 문법의 maintenance in ()도 빈 문자열 하나를 가진 집합이므로 존재하는 빈 값에 일치합니다.
원인 중 하나일 수 있습니다. 먼저 예상 Pod가 모든 레이블 조건을 만족하는지 확인한 다음 클러스터의 네임스페이스, 준비 상태와 엔드포인트를 살펴보세요. 이 도구는 붙여 넣은 레이블만 검사하며 통신 가능 여부를 판단하지 않습니다.
!=와 notin은 누락된 키도 포함합니다. env가 반드시 있고 prod가 아닌 값이어야 한다면 env,env!=prod를 사용하세요. 조건 설명은 키 누락과 다른 값이 존재하는 경우를 구분해서 보여 줍니다.
아직 해결하지 못한 질문이 있나요?