-
Deployment의 파드가 서비스의 대상이 되려면DevOps/Kubernetes 2022. 3. 30. 23:37
Kubernetes 환경에서 특정 파드를 서비스 대상으로 지정하려면, Service와 Pod 간의 라벨 셀렉터 설정이 정확히 일치해야 한다. 이를 통해 Service는 지정된 라벨을 가진 Pod로 트래픽을 라우팅할 수 있다.
Service 정의 예제
아래는 Kubernetes Service의 YAML 정의 예제이다. 이 Service는 특정 라벨을 가진 Pod를 대상으로 트래픽을 전달한다.
apiVersion: v1 kind: Service metadata: labels: app: test-app name: test-app namespace: default spec: ports: - port: 8080 protocol: TCP targetPort: 8080 selector: app: test-app deploy: 20200625 type: ClusterIP
Service 라벨 셀렉터
위 정의에서 selector 필드는 app과 deploy 라벨을 가진 Pod를 대상으로 한다. 즉, 이 Service는 다음 두 라벨을 모두 가진 Pod로 트래픽을 전달한다:- app: test-app
- deploy: 20200625
Pod 라벨 예제다음은 위 Service의 대상이 되는 Pod의 예제이다. 이 Pod는 app과 deploy 라벨을 모두 가지고 있어야 한다.
apiVersion: v1 kind: Pod metadata: name: example-pod labels: app: test-app deploy: 20200625 spec: containers: - name: example-container image: example-image:latest
위 Pod 정의에서 app과 deploy 라벨이 모두 존재하므로, 이 Pod는 해당 Service의 대상으로 지정된다.
라벨이 일치하지 않는 경우
만약 Pod가 app 라벨만 가지고 있고 deploy 라벨을 가지고 있지 않다면, 이 Pod는 Service의 대상이 되지 않는다. 예를 들어, 다음과 같은 Pod는 app 라벨만 가지고 있기 때문에 Service의 트래픽을 전달받지 못한다.apiVersion: v1 kind: Pod metadata: name: example-pod labels: app: test-app spec: containers: - name: example-container image: example-image:latest
Kubernetes에서 Service가 특정 Pod로 트래픽을 전달하려면, Service의 selector 필드에 명시된 라벨이 Pod의 라벨과 정확히 일치해야 한다. 이 예제에서 Service는 app과 deploy 라벨을 모두 요구하므로, 해당 라벨을 가진 Pod만이 서비스 대상이 된다. 이를 통해 Kubernetes 클러스터 내에서 정확한 라벨 매칭을 통해 안정적인 서비스 배포와 관리를 할 수 있다.
'DevOps > Kubernetes' 카테고리의 다른 글
io.kubernetes.client.openapi.ApiException configmaps is forbidden (0) 2024.04.08 k8s service 에서 label 을 바꿀때의 다운타임? (0) 2022.04.25 clusterRole, clusterRoleBinding (0) 2021.10.29 Kubernetes 인그레스 요청 흐름 (0) 2021.07.19 kubernetes Tutorials 4. 서비스를 사용해서 App을 공개하기 (0) 2020.05.06