kubernetes:Labels and Selectors
6492 단어 kubernetes
태그는 개체(예: pod)에 첨부된 키/값 쌍입니다.라벨은 대상의 표지 속성을 지정하는 데 사용되며 이러한 속성은 사용자에게 의미가 있고 관련이 있지만 핵심 시스템에 직접적으로 의미를 암시하지 않는다.레이블을 사용하여 객체의 하위 세트를 구성하고 선택할 수 있습니다.탭은 만들 때 대상에 추가할 수 있으며 언제든지 추가하고 수정할 수 있습니다.각 객체는 키/값 레이블 세트를 정의할 수 있습니다.주어진 대상에 대해 모든 키는 반드시 유일해야 한다
"metadata": {
"labels": {
"key1" : "value1",
"key2" : "value2"
}
}
Kubernetes는 최종적으로 labels의 최종 인덱스와 역인덱스를 검색과watch를 최적화하는 데 사용하고 UI와 명령줄에서 정렬합니다.label에서 대형, 비표지의 구조화된 데이터를 사용하지 말고 이런 데이터를 기록하는 데는 annotation을 사용해야 한다
Lable가 나타난 이유는 Label이 조직 구조를 시스템 구조에 비추는 것이다(예를 들어 캉웨이의 법칙 같다). 이렇게 하면 마이크로 서비스의 관리에 더욱 편리하고 object에 다음과 같은 유형의 label을 붙일 수 있다.
-“release” : “stable”, “release” : “canary” -“environment” : “dev”, “environment” : “qa”, “environment” : “production” -“tier” : “frontend”, “tier” : “backend”, “tier” : “cache” -“partition” : “customerA”, “partition” : “customerB” -“track” : “daily”, “track” : “weekly”
구문 및 문자 세트
abel은 키/값이 맞습니다.유효한 탭 키는 두 개의 세그먼트가 있습니다: 선택할 수 있는 접두사와 이름, 사선 (/) 으로 구분됩니다.이름 세그먼트는 63자 이하여야 하며 대시(-), 밑줄(u), 점(.및 알파벳 숫자입니다.접두사는 선택할 수 있습니다.지정하는 경우 접두사는 DNS 하위 도메인이어야 합니다. 시작점(.)총 253자를 초과하지 않고 뒤에 슬래시(/)가 붙는 DNS 레이블로 구분됩니다.
접두사를 생략하면 탭 키는 사용자 전용으로 가정됩니다.최종 사용자 대상에 라벨을 추가하는 자동화 시스템 구성 요소(예를 들어kube 스케줄러,kube 컨트롤러 관리자,kube apiserver,kubectl 또는 다른 제3자 자동화)는 접두사를 지정해야 한다.
kubernetes.io/및 k8s.io/접두사는kubernetes 핵심 구성 요소를 보존합니다.
유효한 레이블 값은 63자 이하여야 하며 공백이거나 대시(-), 밑줄(u), 점(.)이 있는 영숫자 문자([A-Z0-9A-Z])로 시작하고 끝나야 합니다.및 알파벳 숫자입니다.예를 들다.
apiVersion: v1
kind: Pod
metadata:
name: label-demo
labels:
environment: production
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.7.9
ports:
- containerPort: 80
Label selector Label은 유일하지 않습니다. 많은 Object에 같은 label이 있을 수 있습니다.label selector를 통해 클라이언트/사용자는 Object 집합을 지정하고 label selector를 통해 Object의 집합을 조작할 수 있습니다.Label selector에는
equality-based: =, =,!= 사용 가능여러 표현식 set-based를 쉼표로 구분할 수 있습니다: in, notin,!조작부호, 그리고 조작부호가 없으면 어떤 label의 키를 직접 쓸 수 있습니다. 이것은 어떤 키가 있는object를 필터하고 이 키의value가 어떤 값이든지!이 label이 없는 object
사용
kubectl get pods -l environment=production,tier=frontend
kubectl get pods -l 'environment in (production, qa)'
API - label selector 사용
1. 서비스, Replication controller 등 object에pod에 대한 label selector가 있는데 사용 방법은 다음과 같은 조작만 사용할 수 있다. 예를 들어 다음과 같다.
selector:
component: redis
selector:
matchLabels:
component: redis
matchExpressions:
- {key: tier, operator: In, values: [cache]}
- {key: environment, operator: NotIn, values: [dev]}
matchlabels는 {key,value}의 매핑입니다.matchlabels 매핑 중의 단일 {key,value}는 matchexpressions와 같은 요소이고 키 필드는'key'이며 연산자는'in'이며 값 수조는'value'만 포함됩니다.matchexpressions는pod 선택기가 필요로 하는 목록입니다.유효한 연산자는 in, notin,exists,doesnotexist를 포함합니다.in과 notin에 대해 설정된 값은 비어 있어야 합니다.matchlabels와 matchexpressions의 모든 요구가 함께 놓여 있습니다. - 이 모든 요구를 충족시켜야 일치할 수 있습니다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
vagrant + CoreOS에서 kubernetes guestbook 샘플 이동제목대로 kubernetes의 guestbook 샘플을 먼저 움직이는 것이 목적입니다. kubernetes의 문서대로 움직였기 때문에 정리했습니다. Gentoo (linux-4.7.0-rc7) curl git vag...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.