OpenShift Origin (OKD) 3.11 : インストール2018/11/20 |
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.11 リポジトリとその他の必要なパッケージをインストールします。 Ansible は CentOS リポジトリから、バージョン 2.6, 2.7, 2.8, 2.9 が提供されていますが、2.8 以上は Openshift-Ansible が未対応なため、Ansible 2.7 をインストールします。 |
[root@ctrl ~]#
[root@ctrl ~]# yum -y install centos-release-openshift-origin311 centos-release-ansible-27 [root@ctrl ~]# yum -y install ansible openshift-ansible docker git pyOpenSSL systemctl enable --now 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 を実行してクラスターをセットアップします。 |
# 最終行に追記 [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=83 changed=21 unreachable=0 failed=0 localhost : ok=11 changed=0 unreachable=0 failed=0 node01.srv.world : ok=58 changed=20 unreachable=0 failed=0 node02.srv.world : ok=58 changed=20 unreachable=0 failed=0 INSTALLER STATUS *************************************************************** Initialization : Complete (0:03:23) # クラスターデプロイ Playbook 実行 [origin@ctrl ~]$ ansible-playbook /usr/share/ansible/openshift-ansible/playbooks/deploy_cluster.yml ................ ................ PLAY RECAP ********************************************************************* ctrl.srv.world : ok=711 changed=322 unreachable=0 failed=0 localhost : ok=11 changed=0 unreachable=0 failed=0 node01.srv.world : ok=119 changed=63 unreachable=0 failed=0 node02.srv.world : ok=119 changed=63 unreachable=0 failed=0 INSTALLER STATUS *************************************************************** Initialization : Complete (0:00:25) Health Check : Complete (0:00:53) Node Bootstrap Preparation : Complete (0:02:23) etcd Install : Complete (0:00:54) Master Install : Complete (0:04:44) Master Additional Install : Complete (0:00:36) Node Join : Complete (0:00:13) Hosted Install : Complete (0:00:54) Cluster Monitoring Operator : Complete (0:01:18) Web Console Install : Complete (0:00:55) Console Install : Complete (0:00:30) metrics-server Install : Complete (0:00:01) Service Catalog Install : Complete (0:02:24) # 動作確認 [origin@ctrl ~]$ oc get nodes NAME STATUS ROLES AGE VERSION ctrl.srv.world Ready infra,master 12m v1.11.0+d4cacc0 node01.srv.world Ready compute 9m v1.11.0+d4cacc0 node02.srv.world Ready compute 9m v1.11.0+d4cacc0 # ラベルも合わせて表示 [origin@ctrl ~]$ oc get nodes --show-labels=true NAME STATUS ROLES AGE VERSION LABELS ctrl.srv.world Ready infra,master 12m v1.11.0+d4cacc0 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 9m v1.11.0+d4cacc0 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 9m v1.11.0+d4cacc0 beta.kubernetes.io/arch=amd64,beta.kubernetes.io/os=linux,kubernetes.io/hostname=node02.srv.world,node-role.kubernetes.io/compute=true |
Sponsored Link |