コンテナアプリケーションプラットフォーム「Red Hat OpenShift」を触ってみた Vol.2

SIOS Blog
【第2回】本記事では、コンテナアプリケーションプラットフォーム「Red Hat OpenShift」(以降、「OpenShift」と記載)を触ってみたエンジニアより、その概要と感想をご紹介したいと思います。

はじめに

本連載はサイオスグループのキーポート・ソリューションズの開発プログラマーが、コンテナアプリケーションプラットフォーム「Red Hat OpenShift」(以降、「OpenShift」と記載)を触ってみて、その概要と感想をご紹介します。(普段はアプリケーション開発に従事しているため、OS、ミドルウェアについては決して得意ではない筆者です。)
第2回目のテーマは「環境構築」、サーバ環境の準備からOpenShiftのインストールまでをゴールとし、極力自力で構築してみて課題や問題点を洗い出そうという主旨です。

環境構築時の作業リスト

事前の準備なしに1から環境構築を実施して発生した作業項目と作業時間を下記に記載します。
様々なエラーが発生し、調査も含めかなりの時間を要しましたが、本記事が皆様のトラブルシューティングの参考にしていたければと思います。下記にに発生事象などをご紹介したいと思います。
事前に準備ができていた場合、実際の作業量としては半日もかからない内容であると思います。
  ※「今回の作業時間」・・・手探りながらもなんとか実施した環境構築にかかった実績時間。調査時間が大半・・・。
  ※「今後の想定時間」・・・今回の環境構築により作成した手順書を元に、次回以降できるであろう想定の構築時間。

事前準備

開発プログラマーの立場からすると、ある意味OpenShiftの勉強からのスタートでした。Dev/Opsという言葉もあるため、今後はこのような仕組みも理解しなければならないと痛感します。
下記に環境構築にあたり参照したサイトをご紹介しておきます。
  • OpenShift Container Platform 3.6 Installation and Configuration

https://access.redhat.com/documentation/en-us/openshift_container_platform/3.6/pdf/installation_and_configuration/OpenShift_Container_Platform-3.6-Installation_and_Configuration-en-US.pdf

  • Install OpenShift Container Platform
https://docs.openshift.com/container-platform/latest/getting_started/install_openshift.html
次に、OpenShiftの推奨環境です。

要件

  • Red Hat Enterprise Linux 7.3 / 7.4
  • マスター:2vCPU、16GBメモリ
  • ノード:1vCPU、8GBメモリ
※All in One 構成も可能

上記の推奨環境を用意しようとしたのですが、弊社の諸事情によりMaster環境についてはメモリ8GBの環境しか用意できませんでした。

(このせいで後々ハマることには、この時点では気づきませんでした)
その後、RHEL 7.4 OSのインストールは難なく完了し、RHEL・OpenShiftのサブスクリプションも登録。
ちなみに、サブスクリプションは必ず登録しましょう!登録は以下のコマンドで簡単にできます。
#subscription-manager register
また、コマンドに慣れていない方はRHELのGUIからサブスクリプションメニューも用意されていますので、ご活用を。

OpenShiftインストールの前に

OpenShiftをインストール前にいくつかの設定が必要となります。
・DNSサーバの設定
  Master環境とNode環境をDNSサーバに登録する必要があります。
  
  MasterとNodeは互いにアクセスできるよう設定しておくことがポイントです。
  ちなみに、今回弊社では、外部からのOpenShift環境へのアクセスはさせたくなかったため、
      OpenShift環境(Master環境)内にDNSサーバを立てることにしました。
が、このせいで後々ハマッてしまうことに、現時点では気づきもしないのであった・・・。(その2)
・SSHの設定
  1. Node側のサーバでssh-keyを作成する。
#ssh-keygen
  2. 下記のコマンドを実行する
#ssh-copy-id -i ~/.ssh/id_rsa.pub XXX.XXX.XXX.XXX

・その他

  hosts設定、iptables設定等も実施。

 OpenShiftインストール

さあ、やっとOpenShiftのインストールです。
(事前確認から始めたため、ここまで来るのに数日かかりました・・・。自力で0から始めるのは大変ですね・・・。)
OpenShiftでは、いくつかのパッケージをインストールする必要があります。
ここでは詳細までは書ききれませんので、各パッケージのインストールコマンドのみ記載します。
なお、今回の環境構築では、アドバンスドインストールではなく、クイックインストールで実施しています。
※今回弊社では、詳細な手順書も作成していますが、それはまた別の機会に・・・。

1.パッケージインストール

ベースパッケージのインストール
→Master環境、Node環境それぞれで実行します。
yum install wget git net-tools bind-utils iptables-services bridge-utils bash-completion kexec-tools sos psacct
atomicパッケージのインストール
→Master環境、Node環境それぞれで実行します。
yum install atomic-openshift-utils
yum install atomic-openshift-excluder atomic-openshift-docker-excluder -y
システムパッケージのアップデート
→Master環境、Node環境それぞれで実行します。
yum update

2.Docker インストールと設定

dockerをインストール
→Master環境、Node環境それぞれで実行します。
yum install docker-1.12.6 -y
docker-storage設定
→Master環境、Node環境どちらかで実行すればOkです。
vim /etc/sysconfig/docker-storage-setup
docker-storage-setup

3.OpenShiftインストールと設定

OpenShift Container Platformをインストール
→Master環境、Node環境それぞれに対しインストールが必要ですが、片方のサーバにてまとめてインストールすることができます。
atomic-openshift-installer install
※インストール中の確認ポイント
→IPアドレスの入力を要求されます。このとき、Master環境のインストールか、Node環境のインストールか
 を質問されますので、まずはMaster環境をインストールします。
Enter hostname or IP address: 10.10.20.36
Will this host be an OpenShift master? [y/N]: y
→Master環境のインストールが完了すると、以下のサマリーが表示されます。
*** Installation Summary ***
Hosts:
– 10.10.20.36
  – OpenShift master
  – OpenShift node
  – Etcd
Total OpenShift masters: 1
Total OpenShift nodes: 1
NOTE: Add a total of 3 or more masters to perform an HA installation.
→続けて、ホストを追加するかどうかを質問されますので、次はNode環境をインストールします。
Do you want to add additional hosts? [y/N]: y
Enter hostname or IP address: 10.10.20.37
Will this host be an OpenShift master? [y/N]: n
→Node環境のインストールが完了すると、以下のサマリーが表示されます。
*** Installation Summary ***
Hosts:
– 10.10.20.36
  – OpenShift master
  – OpenShift node (Unscheduled)
  – Etcd
– 10.10.20.37
  – OpenShift node (Dedicated)
Total OpenShift masters: 1
Total OpenShift nodes: 2
NOTE: Add a total of 3 or more masters to perform an HA installation.
※「Hosts:」欄にNode側の環境も追加されています。
 また、「Total OpenShift nodes:」が「2」に増えていますね。
 なお、「Total OpenShift nodes:」が「2」になっている点についてですが、Master環境をインストールすると
 「1」となっているので、その際にNodeもインストールはされていますが、これはどうやらMaster環境が
 デフォルトでインストールするNodeであり、実際にユーザーが使用するNodeとは違うもののようです。

     ・・・こんなエラーが出ました!!

     
      推奨値である16GBに対し、5.8GBしかメモリがないよ!ということのようです。

推奨環境を用意できなかったツケが早速出てしまいました。

      調査したところ、インストール時にリソースの制限チェックが実行されており、これに引っかかってしまったことが判明。

下記の設定ファイルに対し、制限チェックをしない設定を追加し、なんとかクリアしました。

      ファイル名:「/root/.config/openshift/hosts」
      設定内容:
openshift_disable_check=disk_availability,memory_availability,docker_storage, docker_image_availability

4.疎通確認

      発生したエラーの調査も含め、3日間も費やしてしまいましたが、なんとかインストールが完了し、いざ疎通確認を開始。
      しかし、エラーは続けざまに発生するものです・・・。
NODEが”Ready”状態にならない!!
 
# oc get nodes
NAME                            STATUS                     AGE       VERSION
master.openshift.fiosys.co.jp   NotReady   16h       v1.6.1+5115d708d7
→調査したところ、OpenShiftでは全てのMaster、及びNodeでdnsmasqを使用するよう自動的に設定されますが、
 本事象では、こちらで立てたDNSサーバがポート53を使用しており、dnsmasqもポート53を使用するため、
 ポートが競合したために発生したものでした。

~参考~

※2 :
    
   ということで、気持ちとサーバをリフレッシュしようと、サーバを再起動して再度疎通確認を実施。
 すると、今度はNODE以前にOpenShift自体(Masterサービス)が起動しなくなってしまいました・・・。
 
  ※ちなみに正常に起動した場合は、下記のように表示されます。
 
再度調査を実施したところ、Master上で各NodeのPodやネットワーク情報を保持するetcdサーバがなぜか起動されていませんでした。
※おそらく自動起動するよう設定が必要と思われるが、今回はそこまでは調査できておりません。

手動でetcdサーバを起動することで、なんとかMasterサービスを起動することができました!

ということで、ついに環境構築が完了!
 
→「oc get nodes」コマンドでMaster、NodeともにReady状態になっていることを確認。
# oc get nodes
NAME                            STATUS                     AGE       VERSION
master.openshift.fiosys.co.jp   Ready,SchedulingDisabled   16h       v1.6.1+5115d708d7
node.openshift.fiosys.co.jp     Ready                      31m       v1.6.1+5115d708d7
 
→「oc get pods」コマンドでPodが稼働中であることを確認。

 

# oc get pods
NAME                       READY     STATUS    RESTARTS   AGE
docker-registry-1-3gnzp    1/1       Running   0          3m
registry-console-1-mm6dl   1/1       Running   0          4m
→ログイン画面を表示することが出来ました。

→ログインもできました!

→無事デプロイもできました!

注意すべきポイント(ハマッたことなど)

今回は普段よりアプリケーション開発に従事しており、ミドルウェアや基盤の構築はあまり経験がないメンバーにて
OpenShiftの環境構築を実施してみたのですが、かなり大変でした。
発生した事象は前述の通りですが、それ以外の細かい点も含め下記に記載しておきます。
  ●メモリ不足(制限チェックエラー)
   →推奨環境はきちんと守りましょう!
  ●Node状態が「Not Ready」になる事象(DNSサーバとポートが競合した事象)
   →用途が異なるものはサーバを分けましょう!
  ●サーバ再起動時にMasterサービスがactiveにならない
   →必要なプロセスはさらに勉強して把握しておきましょう!
  ●プロキシ設定に漏れがあった
   →Linuxをもっと勉強しましょう!

感想(大変だったことや今後の課題など)

今回環境構築を通してOpenShiftを触ってみて、感じたことを記載します。
  1.色んな参考サイトを見ながら構築作業を実施したが、そのまま利用できるものが見つからなかったため、
            やはり自分たちで手順書を作成する必要があると感じた。
  2.今回はクイックインストールで環境構築を実施したが、上述のエラーが発生した際に、
           その原因が分からず調査に苦労した。(実際にはRed Hatのサポートケースへの問合せも実施して対応)
    Red Hatの推奨はアドバンスドインストールとのことなので、今後改めて勉強し、理解する必要があると感じた。
  3.Red Hatのサポートケースで問合せたところ、迅速に回答が得られ、効果的であると感じた。
    また、コミュニティサイトを利用して質問を投げてみたが、こちらも比較的早めに回答が得られ、

            改めてOSSの強み(温かさ?)を感じることができた。