ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 클러스터 내에서 정확한 라벨 매칭을 통해 안정적인 서비스 배포와 관리를 할 수 있다.

Designed by Tistory.