こんにちは。平田です。
前回のエントリでOpenShiftクラスタを構築できました。最後に、既存のクラスタへのnode追加手順を見ていきます。
OpenShiftクラスタのリソースが不足してきた場合、nodeを追加してスケールアウトさせます。この手順は、マニュアルのAdding Hosts to an Existing Clusterに記載されています。
初期構築にAnsibleプレイブックを使用しましたが、既存のクラスタに対する運用操作もプレイブックとして実装されており、nodeの追加はscaleup.ymlとして記述されています。
nodeを追加する場合、初期構築と同様にマニュアルのHost Preparationに書かれた準備作業を実施します。今回は準備作業済みのmasterノードを予めクローンしておいたため不要です。
インベントリファイル編集
Adding Hosts to an Existing Cluster > Adding Hosts Using the Advanced Installを参考にAnsible用ホストの/etc/ansible/hostsを編集します。マニュアルではatomic-openshift-utilsパッケージを更新せよ、と書かれていますが、これはRed Hat製品版のパッケージです。Originではgithubからcloneしたプレイブックを使用しているので、git pullするのだと思います(が、cloneしたばかりなので端折ります)。
/etc/ansible/hostsを編集します。
[OSEv3:children] masters nodes # new_nodes追加 new_nodes etcd nfs ... # new_nodesホストグループにて追加nodeを記述する。 [new_nodes] node2.ocp.local openshift_node_labels="{'region': 'primary', 'zone': 'west'}"
プレイブック実行
node追加用のプレイブックを実行します。
- プレイブック実行
ansible-playbook /path/to/git-repos/openshift-ansible/playbooks/openshift-node/scaleup.yml
- /etc/ansible/hostsを編集し、追加されたノードを new_nodes から nodes ホストグループに移動する。
[nodes] master.ocp.local openshift_node_labels="{'region': 'infra', 'zone': 'default'}" node1.ocp.local openshift_node_labels="{'region': 'primary', 'zone': 'east'}" # new_nodes から nodes に移動 node2.ocp.local openshift_node_labels="{'region': 'primary', 'zone': 'west'}" [new_nodes]
確認
masterにてnodeが追加されたことを確認します。
# oc login --username system:admin # oc get nodes NAME STATUS ROLES AGE VERSION master.ocp.local Ready master 2d v1.9.1+a0ce1bc657 node1.ocp.local Ready compute 2d v1.9.1+a0ce1bc657 node2.ocp.local Ready compute 1d v1.9.1+a0ce1bc657
node2.ocp.localが追加されています。
まとめ
OpenShiftクラスタの初期構築、及びnode追加について手順を確認しました。
インストール手順を確認するために取り敢えずインストールしてみただけですが、環境要件や前提知識などを考えるとそれなりの学習コストが必要でした。
今回はラップトップのVirtualBoxにクラスタを構築しましたが、IaaS製品やクラウドにデプロイする場合は、マニュアルのConfiguring for Amazon Web Services (AWS)以降(17 – 21章)を参照しましょう。
また、Red Hat社が公開しているリファレンスアーキテクチャの資料 (Deploying and Managing OpenShift on XXX)もクラスタ構築時の参考になると思います。