2017-07-21 8 views
0

私は2つの異なるアプリケーションを試しました。どちらも、リレーショナルデータベースに接続する必要があるWebアプリケーションフロントエンドで構成されています。Openshift起点ポッドはサービス名で他のポッドにアクセスできません

いずれの場合も、フロントエンドアプリケーションはデータベースに接続できません。どちらの場合も、データベースはOpenShiftのコンテナ(ポッド)として実行されています。また、WebアプリケーションはURLとしてサービス名を使用します。両方のアプリケーションは他のOpenShift環境でも動作しています。

バージョン

  • OpenShiftマスター:V1.5.1 + 7b451fc
  • Kubernetesマスター:v1.5.2 + 43a9be4
  • このノード上のマスターと、Ansible Openshift
  • シングルノードを使用してインストール
  • ホストOS:CentOS 7最小

私はいませんOpenShiftでこの問題をデバッグする場所を確認してください。私がウェブポッドからdbポッドに到達できる唯一の方法は、クラスタIPアドレスを使用することでした。 OpenShift skydnsで

+0

サービス名を使用する前にこれが機能するのですか、これは初めての設定ですか? – sfgroups

+0

私はいつもサービス名を使用しています。そして私はこれらのオープンシフティングテンプレートを他のオープンシフティング環境に配備しています。 – Magick

+0

彼らはどちらも同じプロジェクトに入っていますか?デフォルトでは、マルチテナントネットワークオーバーレイの設定でOpenShiftの完全セットアップでプロジェクト全体にアクセスすることはできません。彼らが同じプロジェクトにいる場合、内部DNSのような音が再起動することができます。 –

答えて

0

がマスターの一部であり、あなたは内部DNSを再起動するためにマスターを再起動することができますが、私はあなたがこのしようと提案する:DNSは、それはそれはDNSです失敗した場合 2.を掘る使用してサービス名を解決できるかどうか 1.チェックを問題、またはiptablesの問題がある場合は、kubeプロキシ(ノードサービスの一部)を再起動してプロキシルールを同期させてみてください。

+0

ありがとうございます。 "dnsがdig 2を使用してサービス名を解決できるかどうか確認する" 私の無知を許してください。これはどうすればいいですか? – Magick

+0

pingまたはdigを試してください –

0

SkyDNSのようなphpMyAdminを使用してデータベースに接続する際の問題に直面していましたが、SkyDNS名の代わりにClusterIPを入力しようとしましたが、代わりにサービスClusterIPを使用しましたか?

+0

データベースへの通信はサービスを介してのみ行われることに注意してください。デフォルトのルートはHTTPまたはHTTPSであるため、使用できません。 – egyparadox

+0

はい、私が言及したように、私はcluserIPを使用しています - しかし、これは多くの点でOpenshiftの使用目的を打ち負かしています。これは回避策ですが、問題の解決方法を実際に探したいと思います。 – Magick

-2

ルートは到達できない場合、それが動作するように内部DNS解決のためのためにDNSの問題

+0

元の質問で述べたように、私はClusterIPを使用しています。しかし、私はサービス名を使用できるはずです。 – Magick

0

だ、あなたはdnsmasq.serviceが実行されていることを確認する必要があり、/etc/resolv.confは、(代わりに、他のDNSサーバのOCPノード自体のIPアドレスが含まれていますこれらは/etc/dnsmasq.d/origin-upstream-dns.confにあるはずです)。

例:

# ip a s eth0 
    ... 
     inet 10.0.0.1/24 


# cat /etc/resolv.conf 
    ... 
    nameserver 10.0.0.1 
    # nameserver updated by /etc/NetworkManager/dispatcher.d/99-origin-dns.sh 

^^ ^^このIPはkubernetesサービスIP(oc get svc -n default)でなければなりません

# systemctl status dnsmasq.service 
    ● dnsmasq.service - DNS caching server. 
     Loaded: loaded (/usr/lib/systemd/system/dnsmasq.service; enabled; vendor preset: disabled) 
     Active: active (running) 


# cat /etc/dnsmasq.d/origin-dns.conf 
    no-resolv 
    domain-needed 
    server=/cluster.local/172.18.0.1 

/etc/resolv.confにディスパッチャスクリプトを注意し

# cat /etc/dnsmasq.d/origin-upstream-dns.conf 
    server=<dns ip 1> 
    server=<dns ip 2> 

OpenShiftがある種のOpenStackインスタンス、AWSなどで実行されている場合、t hat cloud-initはNetworkManagerディスパッチャスクリプトを起動しないため、resolv.confdnsmasqを指すように変更されていません。ネットワーク全体を再起動してください。例:

# systemctl restart network.service 

これが役立ちます。

関連する問題