Red Hat Training

A Red Hat training course is available for OpenShift Container Platform

3.2.3. その他の基本ルーターコマンド

デフォルトルーターの確認
router という名前のデフォルトのルーターサービスアカウントは、クラスターのインストール時に自動的に作成されます。このアカウントがすでに存在することを確認するには、以下を実行します。
$ oc adm router --dry-run --service-account=router
デフォルトルーターの表示
デフォルトルーターが作成されている場合でそれを確認するには、以下を実行します。
$ oc adm router --dry-run -o yaml --service-account=router
HAProxy ログを転送するためのルーター設定
HAProxy で生成されるログを syslog サイドカーコンテナーに転送するようにルーターを設定します。--extended-logging=true パラメーターは、syslog コンテナーを追加して、HAProxy ログを標準出力に転送します。
$ oc adm router --extended-logging=true

以下の例は、--extended-logging=true を使用するルーターの設定です。

$ oc get pod router-1-xhdb9 -o yaml
apiVersion: v1
kind: Pod
spec:
  containers:
  - env:

    ....

    - name: ROUTER_SYSLOG_ADDRESS 1
      value: /var/lib/rsyslog/rsyslog.sock

    ....

 - command: 2
   - /sbin/rsyslogd
   - -n
   - -i
   - /tmp/rsyslog.pid
   - -f
   - /etc/rsyslog/rsyslog.conf
   image: registry.redhat.io/openshift3/ose-haproxy-router:v3.11.188
   imagePullPolicy: IfNotPresent
   name: syslog
1
--extended-logging=true パラメーターは、ログのソケットファイルを作成します。
2
--extended-logging=true パラメーターはコンテナーをルーターに追加します。コンテナーでは、rsyslog プロセスが /sbin/rsyslogd -n -i /tmp/rsyslog.pid -f /etc/rsyslog/rsyslog.conf として実行します。

以下のコマンドを使用して HAProxy ログを表示します。

$ oc set env dc/test-router ROUTER_LOG_LEVEL=info 1
$ oc logs -f <pod-name> -c syslog 2
1
ログレベルを info または debug に設定します。デフォルトは warning です。
2
ログを表示するルーター Pod の名前を指定します。

HAProxy ログは以下の形式を使用します。

2020-04-14T03:05:36.629527+00:00 test-311-node-1 haproxy[43]: 10.0.151.166:59594 [14/Apr/2020:03:05:36.627] fe_no_sni~ be_secure:openshift-console:console/pod:console-b475748cb-t6qkq:console:10.128.0.5:8443 0/0/1/1/2 200 393 - - --NI 2/1/0/1/0 0/0 "HEAD / HTTP/1.1"
2020-04-14T03:05:36.633024+00:00 test-311-node-1 haproxy[43]: 10.0.151.166:59594 [14/Apr/2020:03:05:36.528] public_ssl be_no_sni/fe_no_sni 95/1/104 2793 -- 1/1/0/0/0 0/0
ラベル付けされたノードへのルーターのデプロイ
指定された ノードラベル に一致するノードにルーターをデプロイするには、以下を実行します。
$ oc adm router <router_name> --replicas=<number> --selector=<label> \
    --service-account=router

たとえば、router という名前のルーターを作成し、それを node-role.kubernetes.io/infra=true とラベルが付けられたノードに配置するには、以下を実行します。

$ oc adm router router --replicas=1 --selector='node-role.kubernetes.io/infra=true' \
  --service-account=router

クラスターのインストール時に、openshift_router_selector および openshift_registry_selector の Ansible 設定はデフォルトで node-role.kubernetes.io/infra=true に設定されます。デフォルトのルーターおよびレジストリーは、node-role.kubernetes.io/infra=true ラベルに一致するノードがある場合にのみ自動的にデプロイされます。

ラベルの更新に関する情報については、ノードのラベルの更新 を参照してください。

複数のインスタンスが スケジューラーポリシー に従って複数の異なるホストに作成されます。

複数の異なるルーターイメージの使用
複数の異なるルーターイメージを使用し、使用されるルーター設定を表示するには、以下を実行します。
$ oc adm router <router_name> -o <format> --images=<image> \
    --service-account=router

以下に例を示します。

$ oc adm router region-west -o yaml --images=myrepo/somerouter:mytag \
    --service-account=router