6

minikube インストールで実行されている k8s で 2 つのサービスを実行しようとしています。FooサービスとがあるのでBar、サービスにアクセスするときは、データを取得するためにFooサービスをトリガーする必要Barがあります。

Fooサービス の展開構成は次のfoo-deployment.yamlとおりです。

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: foo-server
  labels:
    app: foo-server
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: foo-server
        serving: "true"
    spec:
      containers:
      - name: foo-server
        image: foo-container
        env:
        - name: BAR_SERVICE_URL
          value: http://bar-server:8081
        ports:
        - containerPort: 8080
          name: http

foo-svc.yaml:

apiVersion: v1
kind: Service
metadata:
  name: foo-server
  labels:
    app: foo-server
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 8080
    name: http
  selector:
    app: foo-server
    serving: "true"

evnBAR_SERVICE_URL変数は 内で使用されるFooため、サービスは へのホストを認識しますBarBarservice のサービス 構成は次のbar-svc.yamlとおりです。

apiVersion: v1
kind: Service
metadata:
  name: bar-server
  labels:
    app: bar-server
spec:
  type: NodePort
  ports:
  - port: 8081
    targetPort: 8081
    name: http
  selector:
    app: bar-server

bar-deployment.yaml:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: bar-server-v1
  labels:
    app: bar-server
    version: "1.0"
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: bar-server
        version: "1.0"
        serving: "true"
    spec:
      containers:
      - name: bar-server
        image: bar-container
        ports:
        - containerPort: 8081
          name: http

Foominikube IP と公開されたサービス ポートを使用してサービスにアクセスすると、ポッド ログに次のエラーが表示されます。

2018-02-08 14:32:25.875 ERROR 1 --- [nio-8080-exec-1] o.a.c.c.C.[.[.[/].[dispatcherServlet]    : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://bar-server:8081/endpoint": bar-server; nested exception is java.net.UnknownHostException: bar-server] with root cause

java.net.UnknownHostException: bar-server

ただし、bar-server/endpointこのように minikube IP と公開ポートを使用してアクセスできますhttp://192.168.99.100:31168/endpoint

そのため、クラスターの外部からFooおよびサービスにアクセスできるようです。Barしかし、Fooサービスはサービス ホストを解決できず、Barサービス ホストにアクセスできません。

UPD : トラブルシューティングの詳細を含むいくつかの更新があります。

  • アドオンで有効になっminikubeています。kube-dns
  • FooPod 側からサービス エンドポイントwgetへの接続を試行しています。Barの IP アドレス経由ではできますが、bar-serverではできませんbar-server:8081/endpoint
  • 試してみるnslookup kubernetes.default.svc.cluster.local localhostと良さそうです。出力は次のとおりです。

    サーバー: 127.0.0.1 アドレス 1: 127.0.0.1 ローカルホスト

  • またdns、ポッドが起動して実行されています。ここに出力がありますkubectl get pods -n=kube-system | grep -i dns

    kube-dns-6777479f6b-vxd7m 3/3 実行中 9 1d

4

2 に答える 2