3.3.3.5. 헤드리스 서비스
애플리케이션에 부하 분산 또는 단일 서비스 IP 주소가 필요하지 않은 경우 헤드리스 서비스를 생성할 수 있습니다. 헤드리스 서비스를 생성하면 부하 분산 또는 프록시가 수행되지 않으며 이 서비스에 대한 클러스터 IP가 할당되지 않습니다. 이러한 서비스의 경우 서비스에 선택기가 정의되어 있는지 여부에 따라 DNS가 자동으로 구성됩니다.
선택기가 있는 서비스: 선택기를 정의하는 헤드리스 서비스의 경우 엔드포인트 컨트롤러는 API에 엔드포인트 레코드
를 생성하고 DNS 구성을 수정하여 서비스를 지원하는 포드를 직접 가리키는 A
레코드(주소)를 반환합니다.
선택기 없는 서비스: 선택기를 정의하지 않는 헤드리스 서비스의 경우 엔드포인트 컨트롤러에서 엔드포인트 레코드 를
생성하지 않습니다. 그러나 DNS 시스템은 다음 레코드를 찾아 구성합니다.
-
ExternalName
유형 서비스의 경우CNAME
레코드. -
다른 모든 서비스 유형의 경우 이름을 서비스와 공유하는 모든 엔드포인트에 대한
A
레코드입니다.
3.3.3.5.1. 헤드리스 서비스 생성
헤드리스 서비스 생성은 표준 서비스 생성과 비슷하지만 ClusterIP
주소를 선언하지 않습니다. 헤드리스 서비스를 생성하려면 clusterIP를 추가합니다. none
서비스 YAML 정의에 대한 매개변수 값입니다.
예를 들어 동일한 클러스터 또는 서비스의 일부가 되고자 하는 Pod 그룹의 경우입니다.
Pod 목록
$ oc get pods -o wide
출력 예
NAME READY STATUS RESTARTS AGE IP NODE frontend-1-287hw 1/1 Running 0 7m 172.17.0.3 node_1 frontend-1-68km5 1/1 Running 0 7m 172.17.0.6 node_1
헤드리스 서비스를 다음과 같이 정의할 수 있습니다.
헤드리스 서비스 정의
apiVersion: v1 kind: Service metadata: labels: app: ruby-helloworld-sample template: application-template-stibuild name: frontend-headless 1 spec: clusterIP: None 2 ports: - name: web port: 5432 protocol: TCP targetPort: 8080 selector: name: frontend 3 sessionAffinity: None type: ClusterIP status: loadBalancer: {}
또한 헤드리스 서비스에는 자체 IP 주소가 없습니다.
$ oc get svc
출력 예
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE frontend ClusterIP 172.30.232.77 <none> 5432/TCP 12m frontend-headless ClusterIP None <none> 5432/TCP 10m