CentOS 7
Sponsored Link

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 ~]#
yum -y install centos-release-openshift-origin310 epel-release docker git pyOpenSSL
[root@node03 ~]#
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 クラスターの初期セットアップで使用したものをそのまま追加編集して使用します。
[origin@ctrl ~]$
sudo vi /etc/ansible/hosts
# 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] で追加ノードとして設定した箇所を通常ノードのセクション内へ移動しておきます。
[origin@ctrl ~]$
sudo vi /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 です。
[origin@ctrl ~]$
sudo vi /etc/ansible/hosts
[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

関連コンテンツ