CentOS 7
Sponsored Link

OpenShift Origin (OKD) 3.10 : インストール2018/08/21

 
Red Hat OpenShift のオープンソース実装 OpenShift Origin (OKD) のインストールです。
(オープンソース版は 3.10 から名称が OKD に変更された)
当例では以下のような環境を例に OpenShift クラスターを構成します。
-----------+-----------------------------+-----------------------------+------------
           |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)   |      |                      |      |                      |
+----------------------+      +----------------------+      +----------------------+

 
構築にあたっては、下記のシステム要件を満たしている必要があります。
  * 全ノードのベースOS は RHEL(CentOS) 7.4 以降 (当例は CentOS 7.5)
  * Master とするノードは 16G 以上のメモリー搭載 且つ 4 vCPU 以上
  * Compute とするノードは 8G 以上のメモリー搭載 且つ 1 vCPU 以上
[1] 全ノードで、任意の OpenShift クラスター構成/管理用ユーザーを作成し、root権限が行使できるよう Sudo の設定をしておきます。当例では [origin] ユーザーを作成して進めます。
[root@ctrl ~]#
useradd origin

[root@ctrl ~]#
passwd origin

[root@ctrl ~]#
echo -e 'Defaults:origin !requiretty\norigin ALL = (root) NOPASSWD:ALL' | tee /etc/sudoers.d/openshift

[root@ctrl ~]#
chmod 440 /etc/sudoers.d/openshift

# Firewalld 稼働中の場合は SSH 許可

[root@ctrl ~]#
firewall-cmd --add-service=ssh --permanent

[root@ctrl ~]#
firewall-cmd --reload

[2] 全ノードで、OpenShift Origin 3.10 リポジトリと Docker 等々の必要なパッケージをインストールしておきます。
[root@ctrl ~]#
yum -y install centos-release-openshift-origin310 epel-release docker git pyOpenSSL
[root@ctrl ~]#
systemctl start docker

[root@ctrl ~]#
systemctl enable docker

[3] Master ノードで、作成したクラスター管理用ユーザーでログインし、SSH 鍵ペアを作成して各ノードへ配布しておきます。
[origin@ctrl ~]$
ssh-keygen -q -N ""

Enter file in which to save the key (/home/origin/.ssh/id_rsa):
[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

[origin@ctrl ~]$
chmod 600 ~/.ssh/config
# 各ノードに鍵を転送

[origin@ctrl ~]$
ssh-copy-id node01

origin@node01.srv.world's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'node01'"
and check to make sure that only the key(s) you wanted were added.

[origin@ctrl ~]$
ssh-copy-id node02

[origin@ctrl ~]$
ssh-copy-id ctrl

[4] Master ノードで、作成したクラスター管理用ユーザーでログインし、OpenShift クラスター構成用の Ansible Playbook を実行してクラスターをセットアップします。
[origin@ctrl ~]$
sudo yum -y install openshift-ansible
[origin@ctrl ~]$
sudo vi /etc/ansible/hosts
# 最終行に追記

[OSEv3:children]
masters
nodes
etcd

[OSEv3:vars]
# 作成した管理ユーザーを指定
ansible_ssh_user=origin
ansible_become=true
openshift_deployment_type=origin

# 認証は HTPasswd を使用
openshift_master_identity_providers=[{'name': 'htpasswd_auth', 'login': 'true', 'challenge': 'true', 'kind': 'HTPasswdPasswordIdentityProvider'}]
# Master ノードのデフォルトのサブドメインを定義
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]
# [openshift_node_group_name] に指定する値は下記ファイルに定義されている
# [/usr/share/ansible/openshift-ansible/roles/openshift_facts/defaults/main.yml]
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'

# Master ノードと Infra ノードを分ける場合は以下のように設定
# ctrl.srv.world openshift_node_group_name='node-config-master'
# node01.srv.world openshift_node_group_name='node-config-compute'
# node02.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=90   changed=21   unreachable=0    failed=0
localhost                  : ok=11   changed=0    unreachable=0    failed=0
node01.srv.world           : ok=65   changed=20   unreachable=0    failed=0
node02.srv.world           : ok=65   changed=20   unreachable=0    failed=0


INSTALLER STATUS ***************************************************************
Initialization  : Complete (0:01:19)

# クラスターデプロイ Playbook 実行

[origin@ctrl ~]$
ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/deploy_cluster.yml


................
................

PLAY RECAP *********************************************************************
ctrl.srv.world             : ok=620  changed=274  unreachable=0    failed=0
localhost                  : ok=12   changed=0    unreachable=0    failed=0
node01.srv.world           : ok=119  changed=57   unreachable=0    failed=0
node02.srv.world           : ok=119  changed=57   unreachable=0    failed=0


INSTALLER STATUS ***************************************************************
Initialization              : Complete (0:00:39)
Health Check                : Complete (0:00:55)
Node Bootstrap Preparation  : Complete (0:06:27)
etcd Install                : Complete (0:01:13)
Master Install              : Complete (0:05:25)
Master Additional Install   : Complete (0:01:07)
Node Join                   : Complete (0:00:18)
Hosted Install              : Complete (0:01:13)
Web Console Install         : Complete (0:00:39)
Service Catalog Install     : Complete (0:02:24)

# 動作確認

[origin@ctrl ~]$
oc get nodes

NAME               STATUS    ROLES          AGE       VERSION
ctrl.srv.world     Ready     infra,master   9m        v1.10.0+b81c8f8
node01.srv.world   Ready     compute        5m        v1.10.0+b81c8f8
node02.srv.world   Ready     compute        5m        v1.10.0+b81c8f8

# ラベルも合わせて表示

[origin@ctrl ~]$
oc get nodes --show-labels=true

NAME               STATUS    ROLES          AGE       VERSION           LABELS
ctrl.srv.world     Ready     infra,master   9m        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        5m        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        5m        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
関連コンテンツ