Kubernetes의 레이블 및 선택기
이 페이지에서
- 전제 조건
- 우리가 할 일\n
- 레이블 및 선택기로 Pod 및 서비스 만들기
- 라벨 이해\n
- 결론
레이블은 포드, 서비스 등과 같은 Kubernetes 개체에 할당된 키-값 쌍일 뿐입니다. 레이블은 Kubernetes 개체를 구성하고 선택하는 데 사용할 수 있습니다. 레이블은 생성 시 개체에 첨부할 수 있으며 언제든지 수정할 수 있습니다. Kubernetes 개체에 여러 레이블을 추가할 수 있습니다.
선택기는 사용자가 객체 집합을 선택하는 데 사용합니다. 레이블 선택기는 Kubernetes의 핵심 그룹화 프리미티브입니다. Kubernetes API는 두 가지 유형의 선택기를 지원합니다.
- 동일성 기반 선택기:
키와 값으로 필터링할 수 있으며 일치하는 개체는 지정된 모든 레이블을 충족해야 합니다.\n - 세트 기반 선택기:
값 세트에 따라 키를 필터링할 수 있습니다.\n
레이블 및 선택기에 대한 자세한 내용을 보려면 여기를 클릭하십시오.
이 기사에서는 레이블이 있는 포드를 생성하고 Selector를 사용하여 서비스에서 요청을 리디렉션합니다. 또한 명령줄에서 Label/Selector를 사용하여 포드 및 서비스에서 가져오기, 삭제 작업을 수행합니다.
전제 조건
- 최소 1개의 작업자 노드가 있는 Kubernetes 클러스터.
Kubernetes 클러스터를 만드는 방법을 알아보려면 여기를 클릭하세요. 이 안내서는 AWS Ubuntu 18l04 EC2 인스턴스에서 1개의 마스터와 2개의 노드가 있는 Kubernetes 클러스터를 생성하는 데 도움이 됩니다.\n
우리가 할 일
- 레이블 및 선택기를 사용하여 Pod 및 서비스 만들기\n
- 라벨 이해\n
레이블 및 선택기로 Pod 및 서비스 만들기
레이블이 있는 포드를 만들려면 새 파일을 만들고 그 안에 다음 콘텐츠를 추가합니다.
vim my-lable-demo-pod.yml
apiVersion: v1 kind: Pod metadata: name: label-demo-pod labels: environment: test app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80
선택기로 서비스를 만들려면 기본 네임스페이스를 사용하는 다음 서비스 정의로 파일을 만듭니다.
vim my-selector-demo-service.yml
apiVersion: v1 kind: Service metadata: name: selector-demo-service namespace: default labels:
environment: test app: nginx spec: externalTrafficPolicy: Local ports: - name: http port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: NodePort
포드를 생성하려면 다음 명령어를 실행합니다.
kubectl create -f my-lable-demo-pod.yml
kubectl get pods
서비스를 생성하려면 다음 명령을 실행합니다.
kubectl create -f my-selector-demo-service.yml
kubectl get service
이제 Label Selector가 작동하는지 확인하려면 NodeIP:NodePort에서 서비스에 액세스해 보세요.
여기서 내 노드의 IP는 106.210.138.189이고 서비스는 Port=30385에 노출됩니다.
우리가 만든 Service를 사용하여 Nginx Pod에 액세스할 수 있으므로 Label 및 Selector가 작동했음을 의미합니다.
레이블 이해
이제 Label을 사용하여 생성한 포드 및 서비스에 대해 다양한 작업을 수행할 수 있습니다.
선택한 레이블과 일치하는 Pod를 가져오려면 다음과 같이 명령에서 "--selector"를 사용할 수 있습니다.
kubectl get pods --selector environment=test
kubectl get pods --selector app=nginx
또한 "--selector" 대신 "-l"을 사용하여 선택한 레이블과 일치하는 포드를 가져올 수 있습니다.
kubectl get pods -l environment=test
kubectl get pods -l environment=prod
레이블을 지정하여 포드 삭제 작업을 수행할 수도 있습니다. 레이블과 일치하는 포드는 다음 명령을 사용하여 삭제할 수 있습니다.
kubectl get pods
kubectl delete pods -l environment=test
kubectl get pods
레이블과 일치하는 포드를 삭제하는 방법과 마찬가지로 서비스도 삭제할 수 있습니다.
레이블과 일치하는 서빙을 삭제하려면 다음 명령을 사용하십시오. 또한 명령에 지정된 레이블과 일치하는 서비스가 없으면 삭제 작업이 수행되지 않습니다.
kubectl get service
kubectl delete service -l environemt=test
kubectl delete service -l environment=test
kubectl get service
결론
이 기사에서는 레이블이 포함된 포드를 생성하고 레이블과 일치하는 포드에 서비스를 생성하고 지정했습니다. 라벨과 일치하는 포드 및 서비스를 삭제하는 방법도 확인했습니다.