2016-08-25 10 views
0

2つのkubernetesサービスを作成しようとしています.1つはクラスタIPを持つロードバランサで、もう1つはヘッドレス(クラスタIPなし)ですが、代わりにAレコードのラウンドロビンポッドIPアドレスの収集(それは、http://kubernetes.io/docs/user-guide/services/#headless-servicesに従って行うべきです)。KubernetesヘッドレスサービスAレコードラウンドロビン

自動クラスタリングとサービスディスカバリを行うために、pod ipの動的コレクションが必要なので、これを行う必要があります。

私のサービスは、次のようになります。私は、次を取得し、これら2つのサービスで

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 

IPが動作するクラスタの
$ 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 

と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回答を消費し、独自のラウンドロビンを実行することが予想されます。

関連する問題