웹사이트 검색

Kubernetes의 레이블 및 선택기


이 페이지에서

  1. 전제 조건
  2. 우리가 할 일\n
  3. 레이블 및 선택기로 Pod 및 서비스 만들기
  4. 라벨 이해\n
  5. 결론

레이블은 포드, 서비스 등과 같은 Kubernetes 개체에 할당된 키-값 쌍일 뿐입니다. 레이블은 Kubernetes 개체를 구성하고 선택하는 데 사용할 수 있습니다. 레이블은 생성 시 개체에 첨부할 수 있으며 언제든지 수정할 수 있습니다. Kubernetes 개체에 여러 레이블을 추가할 수 있습니다.

선택기는 사용자가 객체 집합을 선택하는 데 사용합니다. 레이블 선택기는 Kubernetes의 핵심 그룹화 프리미티브입니다. Kubernetes API는 두 가지 유형의 선택기를 지원합니다.

  1. 동일성 기반 선택기:
    키와 값으로 필터링할 수 있으며 일치하는 개체는 지정된 모든 레이블을 충족해야 합니다.\n
  2. 세트 기반 선택기:
    값 세트에 따라 키를 필터링할 수 있습니다.\n

레이블 및 선택기에 대한 자세한 내용을 보려면 여기를 클릭하십시오.

이 기사에서는 레이블이 있는 포드를 생성하고 Selector를 사용하여 서비스에서 요청을 리디렉션합니다. 또한 명령줄에서 Label/Selector를 사용하여 포드 및 서비스에서 가져오기, 삭제 작업을 수행합니다.

전제 조건

  1. 최소 1개의 작업자 노드가 있는 Kubernetes 클러스터.
    Kubernetes 클러스터를 만드는 방법을 알아보려면 여기를 클릭하세요. 이 안내서는 AWS Ubuntu 18l04 EC2 인스턴스에서 1개의 마스터와 2개의 노드가 있는 Kubernetes 클러스터를 생성하는 데 도움이 됩니다.\n

우리가 할 일

  1. 레이블 및 선택기를 사용하여 Pod 및 서비스 만들기\n
  2. 라벨 이해\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

결론

이 기사에서는 레이블이 포함된 포드를 생성하고 레이블과 일치하는 포드에 서비스를 생성하고 지정했습니다. 라벨과 일치하는 포드 및 서비스를 삭제하는 방법도 확인했습니다.