39.4. ルーターのデバッグ
IP アドレスを使用し、そのマシンに対して ssh
を実行してルーターソフトウェアがそのマシン上で実行されており、正しく設定されていることを確認する必要があります。ここで ssh
を実行し、管理者の OpenShift Container Platform 認証情報を取得します。
管理者の認証情報がある場合でも デフォルトシステムユーザー の system:admin としてログインしていない場合は、認証情報が CLI 設定ファイル にある限り、いつでもこのユーザーとしてログインし直すことができます。以下のコマンドはログインを実行し、デフォルト のプロジェクトに切り替えます。
$ oc login -u system:admin -n default
ルーターが実行されていることを確認します。
# oc get endpoints --namespace=default --selector=router NAMESPACE NAME ENDPOINTS default router 10.128.0.4:80
このコマンドが失敗する場合、OpenShift Container Platform 設定は破損しています。この設定の修正については、本書では扱われません。
1 つ以上のルーターエンドポイントが一覧表示されますが、エンドポイント IP アドレスはクラスター内の Pod アドレスの 1 つであるため、それらが指定の外部 IP アドレスでマシン上で実行されているかどうかを識別することはできません。ルーターホスト IP アドレスの一覧を取得するには、以下を実行します。
# oc get pods --all-namespaces --selector=router --template='{{range .items}}HostIP: {{.status.hostIP}} PodIP: {{.status.podIP}}{{"\n"}}{{end}}' HostIP: 192.168.122.202 PodIP: 10.128.0.4
外部アドレスに対応するホスト IP が表示されるはずです。表示されない場合は、ルーターのドキュメント を参照し、(アフィニティーを適切に設定して) 適切なノードで実行されるようにルーター Pod を設定するか、またはルーターが実行されている IP アドレスに一致するよう DNS を更新します。
(本書の) この時点では、ノードでルーター Pod を実行しても HTTP 要求を機能させることはできません。まず、ルーターが外部 URL を正しいサービスにマップしていること、またそれが機能している場合は、そのサービスの詳細を調べてすべてのエンドポイントがアクセス可能であることを確認する必要があります。
OpenShift Container Platform が認識するすべてのルートを一覧表示します。
# oc get route --all-namespaces NAME HOST/PORT PATH SERVICE LABELS TLS TERMINATION route-unsecured www.example.com /test service-name
URL のホスト名およびパスが返されるルートの一覧のいずれにも一致しない場合はルートを追加する必要があります。ルーターのドキュメント を参照してください。
ルートが存在する場合、エンドポイントへのアクセスをデバッグする必要があります。これはサービスに関する問題をデバッグしている場合と同様のプロセスです。 そのため、次の 「サービスのデバッグ」 セクションに進んでください。