OpenShift Origin 3.7 : ノードを追加する2018/02/07 |
既存の OpenShift クラスターにノードを追加してスケールアウトする場合は以下のように設定します。
当例では以下のような環境を例に OpenShift クラスターを構成しています。
ここに Compute Node [node03.srv.world (10.0.0.53)] を追加します。 -----------+-----------------------------------------------------------+------------ |10.0.0.30 |10.0.0.51 |10.0.0.52 +----------+-----------+ +----------+-----------+ +----------+-----------+ | [ dlp.srv.world ] | | [ node01.srv.world ] | | [ node02.srv.world ] | | (Master Node) | | (Compute Node) | | (Compute Node) | | (Compute Node) | | | | | +----------------------+ +----------------------+ +----------------------+ |
[1] | 新たに追加するノードで、他ノードでも作成した OpenShift クラスター構成/管理用ユーザーを作成し、root権限が行使できるよう Sudo の設定をしておきます。 |
[root@node03 ~]#
useradd origin [root@node03 ~]# passwd origin [root@node03 ~]# echo -e 'Defaults:origin !requiretty\norigin ALL = (root) NOPASSWD:ALL' | tee /etc/sudoers.d/openshift [root@node03 ~]# chmod 440 /etc/sudoers.d/openshift # Firewalld 稼働中の場合は SSH 許可 [root@node03 ~]# firewall-cmd --add-service=ssh --permanent [root@node03 ~]# firewall-cmd --reload |
[2] | 新たに追加するノードで、OpenShift Origin 3.7 リポジトリと Docker をインストールし、Docker 用のボリュームグループを作成して LVM シンプールをセットアップします。 |
[root@node03 ~]#
[root@node03 ~]# yum -y install centos-release-openshift-origin37 docker vgcreate vg_origin01 /dev/sdb1 Volume group "vg_origin01" successfully created [root@node03 ~]# echo VG=vg_origin01 >> /etc/sysconfig/docker-storage-setup [root@node03 ~]# systemctl start docker [root@node03 ~]# systemctl enable docker |
[3] | Master ノードで、クラスター管理用ユーザーでログインし、作成済みの SSH 鍵ペアを追加ノードへ配布しておきます。 |
[origin@dlp ~]$
vi ~/.ssh/config # 対象ノードを追加
Host dlp
Hostname dlp.srv.world
User origin
Host node01
Hostname node01.srv.world
User origin
Host node02
Hostname node02.srv.world
User origin
Host node03
Hostname node03.srv.world
User origin
[origin@dlp ~]$ ssh-copy-id node03 |
[4] | Master ノードで、クラスター管理用ユーザーでログインし、OpenShift クラスタースケールアウト用の Ansible Playbook を実行してセットアップします。 [/etc/ansible/hosts] ファイルは、Openshift クラスターの初期セットアップで使用したものをそのまま追加編集して使用します。 |
# OSEv3 セクション内に追記 [OSEv3:children] masters nodes new_nodes [OSEv3:vars] ansible_ssh_user=origin ansible_become=true openshift_deployment_type=origin openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', 'filename': '/etc/origin/master/.htpasswd'}] openshift_master_default_subdomain=apps.srv.world openshift_docker_insecure_registries=172.30.0.0/16 [masters] dlp.srv.world openshift_schedulable=true containerized=false [etcd] dlp.srv.world [nodes] dlp.srv.world openshift_node_labels="{'region': 'infra', 'zone': 'default'}" node01.srv.world openshift_node_labels="{'region': 'primary', 'zone': 'east'}" openshift_schedulable=true node02.srv.world openshift_node_labels="{'region': 'primary', 'zone': 'west'}" openshift_schedulable=true # 追加ノード用の定義を追記 [new_nodes] node03.srv.world openshift_node_labels="{'region': 'primary', 'zone': 'south'}" openshift_schedulable=true[origin@dlp ~]$ ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/byo/openshift-node/scaleup.yml ................ ................ PLAY RECAP ********************************************************************* dlp.srv.world : ok=43 changed=2 unreachable=0 failed=0 localhost : ok=12 changed=0 unreachable=0 failed=0 node01.srv.world : ok=29 changed=2 unreachable=0 failed=0 node02.srv.world : ok=29 changed=2 unreachable=0 failed=0 node03.srv.world : ok=179 changed=68 unreachable=0 failed=0 INSTALLER STATUS *************************************************************** Initialization : Complete Node Install : Complete # 動作確認 [origin@dlp ~]$ oc get nodes NAME STATUS AGE VERSION dlp.srv.world Ready 1h v1.7.6+a08f5eeb62 node01.srv.world Ready 1h v1.7.6+a08f5eeb62 node02.srv.world Ready 1h v1.7.6+a08f5eeb62 node03.srv.world Ready 1m v1.7.6+a08f5eeb62 |
[5] | 正常にスケールアウトが完了したら、[/etc/ansible/hosts] で追加ノードとして設定した箇所を通常ノードのセクション内へ移動しておきます。 |
# new_nodes は削除 [OSEv3:children] masters nodes new_nodes [OSEv3:vars] ansible_ssh_user=origin ansible_become=true openshift_deployment_type=origin openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider', 'filename': '/etc/origin/master/.htpasswd'}] openshift_master_default_subdomain=apps.srv.world openshift_docker_insecure_registries=172.30.0.0/16 [masters] dlp.srv.world openshift_schedulable=true containerized=false [etcd] dlp.srv.world [nodes] dlp.srv.world openshift_node_labels="{'region': 'infra', 'zone': 'default'}" node01.srv.world openshift_node_labels="{'region': 'primary', 'zone': 'east'}" openshift_schedulable=true node02.srv.world openshift_node_labels="{'region': 'primary', 'zone': 'west'}" openshift_schedulable=true node03.srv.world openshift_node_labels="{'region': 'primary', 'zone': 'south'}" openshift_schedulable=true # [new_nodes] セクションは削除し、追加ノード用の定義は上の [nodes] セクションへ移動 [new_nodes] node03.srv.world openshift_node_labels="{'region': 'primary', 'zone': 'south'}" openshift_schedulable=true |
[6] | なお、Master ノードをスケールアウトする場合も同様に、既存の [/etc/ansible/hosts] を追加編集し、Ansible Playbook を実行すれば OK です。 |
[OSEv3:children] masters nodes new_masters ..... ..... [new_masters] master02.srv.world openshift_schedulable=true containerized=false[origin@dlp ~]$ ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/byo/openshift-master/scaleup.yml |
Sponsored Link |