2016-08-25 4 views
0

두 개의 kubernetes 서비스를 만들려고합니다. 하나는 클러스터 IP가있는로드 밸런서이고 다른 하나는 헤드리스 (클러스터 IP 없음)이지만 A 레코드 라운드 로빈을 반환합니다 IP 주소 수집 (http://kubernetes.io/docs/user-guide/services/#headless-services에 따라 수행해야 함).Kubernetes 헤드리스 서비스 A 레코드 라운드 로빈

자동 클러스터링 및 서비스 검색을 수행하려면 동적 IP 수집 모음이 필요하므로이 작업을 수행해야합니다.

내 서비스는 다음과 같습니다 :이 두 서비스와

apiVersion: v1 
kind: Service 
metadata: 
    name: rabbitmq 
    labels: 
    app: rabbitmq 
    tier: messaging 
spec: 
    ports: 
    - name: amqp 
    port: 5672 
    targetPort: 5672 
    selector: 
    app: rabbitmq 
    tier: messaging 
--- 
apiVersion: v1 
kind: Service 
metadata: 
    name: rabbitmq-cluster 
    labels: 
    app: rabbitmq 
    tier: messaging 
spec: 
    clusterIP: None 
    ports: 
    - name: amqp 
    port: 5672 
    targetPort: 5672 
    selector: 
    app: rabbitmq 
    tier: messaging 

, 내가 다음 얻을 :

$ kubectl get services 
NAME    CLUSTER-IP  EXTERNAL-IP  PORT(S)  AGE 
rabbitmq   10.23.255.174 <none>   5672/TCP 7m 
rabbitmq-cluster None   <none>   5672/TCP 7m 

그리고 IP가 작동하는 클러스터 (다른 포드에서) DNS :

[[email protected] app]# nslookup rabbitmq.td-integration 
Server:  10.23.240.10 
Address:  10.23.240.10#53 

Name: rabbitmq.td-integration.svc.cluster.local 
Address: 10.23.255.174 

그러나 '헤드리스'서비스의 DNS는 다음을 반환하지 않습니다.

[[email protected] app]# nslookup rabbitmq-cluster.td-integration 
Server:  10.23.240.10 
Address:  10.23.240.10#53 

** server can't find rabbitmq-cluster.td-integration: NXDOMAIN 

답변

1

클러스터 내에 이러한 레이블과 일치하는 창이 없으므로 DNS 쿼리는 아무 것도 반환하지 않습니다. 이것은 예상된다.

해당 포드를 시작하면 A 레코드 목록이 표시됩니다.

이 A 레코드는 내가 아는 한 멀리 섞어 놓지 않으므로 클라이언트가 DNS 응답을 사용하고 자신의 라운드 로빈을 수행해야합니다.

관련 문제