OpenShift Origin (OKD) 3.10 : ノードを追加する2018/08/21 |
既存の OpenShift クラスターにノードを追加してスケールアウトする場合は以下のように設定します。
当例では以下のような環境を例に OpenShift クラスターを構成しています。
ここに Compute Node [node03.srv.world (10.0.0.53)] を追加します。 -----------+-----------------------------+-----------------------------+------------ |10.0.0.25 |10.0.0.51 |10.0.0.52 +----------+-----------+ +----------+-----------+ +----------+-----------+ | [ ctrl.srv.world ] | | [ node01.srv.world ] | | [ node02.srv.world ] | | (Master Node) | | (Compute Node) | | (Compute Node) | | (Infra 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.10 リポジトリと Docker 等々の必要なパッケージをインストールしておきます。 |
[root@node03 ~]#
[root@node03 ~]# yum -y install centos-release-openshift-origin310 epel-release docker git pyOpenSSL systemctl start docker [root@node03 ~]# systemctl enable docker |
[3] | Master ノードで、クラスター管理用ユーザーでログインし、作成済みの SSH 鍵ペアを追加ノードへ配布しておきます。 |
[origin@ctrl ~]$
vi ~/.ssh/config # 対象ノードを追加
Host ctrl
Hostname ctrl.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@ctrl ~]$ ssh-copy-id node03 |
[4] | Master ノードで、クラスター管理用ユーザーでログインし、OpenShift クラスタースケールアウト用の Ansible Playbook を実行してセットアップします。 [/etc/ansible/hosts] ファイルは、Openshift クラスターの初期セットアップで使用したものをそのまま追加編集して使用します。 |
# OSEv3 セクション内に追記 [OSEv3:children] masters nodes etcd new_nodes [OSEv3:vars] ansible_ssh_user=origin ansible_become=true openshift_deployment_type=origins openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider'}] openshift_master_default_subdomain=apps.srv.world openshift_docker_insecure_registries=172.30.0.0/16 [masters] ctrl.srv.world openshift_schedulable=true containerized=false [etcd] ctrl.srv.world [nodes] ctrl.srv.world openshift_node_group_name='node-config-master-infra' node01.srv.world openshift_node_group_name='node-config-compute' node02.srv.world openshift_node_group_name='node-config-compute' # 追加ノード用の定義を追記 (下例は Infra ノードを追加) [new_nodes] node03.srv.world openshift_node_group_name='node-config-infra' # Prerequisites Playbook 実行 [origin@ctrl ~]$ ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/prerequisites.yml ................ ................ PLAY RECAP ********************************************************************* ctrl.srv.world : ok=70 changed=6 unreachable=0 failed=0 localhost : ok=11 changed=0 unreachable=0 failed=0 node01.srv.world : ok=32 changed=5 unreachable=0 failed=0 node02.srv.world : ok=32 changed=5 unreachable=0 failed=0 node03.srv.world : ok=67 changed=20 unreachable=0 failed=0 INSTALLER STATUS *************************************************************** Initialization : Complete (0:01:40) # ノードスケールアウト Playbook 実行 [origin@ctrl ~]$ ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/openshift-node/scaleup.yml ................ ................ PLAY RECAP ********************************************************************* ctrl.srv.world : ok=67 changed=1 unreachable=0 failed=0 localhost : ok=23 changed=0 unreachable=0 failed=0 node03.srv.world : ok=159 changed=58 unreachable=0 failed=0 INSTALLER STATUS *************************************************************** Initialization : Complete (0:01:11) Node Bootstrap Preparation : Complete (0:04:34) Node Join : Complete (0:00:14) # 動作確認 [origin@ctrl ~]$ oc get nodes --show-labels=true NAME STATUS ROLES AGE VERSION LABELS ctrl.srv.world Ready infra,master 2h v1.10.0+b81c8f8 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=ctrl.srv.world,node-role.kubernetes.io/infra=true,node-role.kubernetes.io/master=true node01.srv.world Ready compute 2h v1.10.0+b81c8f8 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=node01.srv.world,node-role.kubernetes.io/compute=true node02.srv.world Ready compute 2h v1.10.0+b81c8f8 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=node02.srv.world,node-role.kubernetes.io/compute=true node03.srv.world Ready infra 2m v1.10.0+b81c8f8 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=node03.srv.world,node-role.kubernetes.io/infra=true |
[5] | 正常にスケールアウトが完了したら、[/etc/ansible/hosts] で追加ノードとして設定した箇所を通常ノードのセクション内へ移動しておきます。 |
# new_nodes は削除 [OSEv3:children] masters nodes etcd new_nodes [OSEv3:vars] ansible_ssh_user=origin ansible_become=true openshift_deployment_type=origins openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider'}] openshift_master_default_subdomain=apps.srv.world openshift_docker_insecure_registries=172.30.0.0/16 [masters] ctrl.srv.world openshift_schedulable=true containerized=false [etcd] ctrl.srv.world [nodes] ctrl.srv.world openshift_node_group_name='node-config-master-infra' node01.srv.world openshift_node_group_name='node-config-compute' node02.srv.world openshift_node_group_name='node-config-compute' node03.srv.world openshift_node_group_name='node-config-infra' # [new_nodes] セクションは削除し、追加ノード用の定義は上の [nodes] セクションへ移動 [new_nodes] node03.srv.world openshift_node_group_name='node-config-infra' |
[6] | なお、Master ノードをスケールアウトする場合も同様に、既存の [/etc/ansible/hosts] を追加編集し、Ansible Playbook を実行すれば OK です。 |
[OSEv3:children] masters nodes new_masters ..... ..... [new_masters] node03.srv.world openshift_node_group_name='node-config-master'[origin@ctrl ~]$ ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/openshift-master/scaleup.yml |
Sponsored Link |