前提情報
1ノードでMasterとWorkerの役割を兼用するOpenShiftの環境を構築します。
シングルノード構築のドキュメントを確認すると、IBM Power環境では、ネットワークインストールでの構築方法が記載されています。
また、下記の記事も参考にしています。
構成
構築用の環境は、以下の図のようになっています。
Bastionノード(踏み台ノード)は、DNSやTFTP、DHCPなどシングルノードOpenShiftをインストール・運用するために必要な機能を導入します。
OpenShiftのCLIツールである oc
コマンドもこちらのノードで実行します。
Bastionノードのセットアップ
Bastionノードには、冒頭で記載したソフトウェア群をセットアップする必要があります。
順を追って記載していきます。
Dnsmasqのインストール・設定
インストール時に必要な名前解決や、PXEの設定を行うために、Dnsmasqをインストールしセットアップします。
dnf install dnsmasq
コマンドでインストールします。
[root@sno-bastion ~]# dnf install dnsmasq
サブスクリプション管理リポジトリーを更新しています。
Red Hat Enterprise Linux 9 for Power, little endian - AppStream (RPMs) 17 kB/s | 4.5 kB 00:00
Red Hat Enterprise Linux 9 for Power, little endian - BaseOS (RPMs) 16 kB/s | 4.1 kB 00:00
依存関係が解決しました。
====================================================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
====================================================================================================================================================================
インストール:
dnsmasq ppc64le 2.85-16.el9_4 rhel-9-for-ppc64le-appstream-rpms 353 k
トランザクションの概要
====================================================================================================================================================================
インストール 1 パッケージ
ダウンロードサイズの合計: 353 k
インストール後のサイズ: 798 k
これでよろしいですか? [y/N]:
~ 省略 ~
Dnsmasqの設定ファイル /etc/dnsmasq.conf
を編集します。
以下、設定のサンプルです。
[root@mz-t install]# cat /etc/dnsmasq.conf
#domain-needed
# don't send bogus requests out on the internets
bogus-priv
# enable IPv6 Route Advertisements
enable-ra
bind-dynamic
no-hosts
# have your simple hosts expanded to domain
expand-hosts
interface=env3
# set your domain for expand-hosts ※OpenShiftのドメイン名を設定します。 後に記述するignitionファイルと記述を統一してください。
domain=sno.ocp.io
local=/sno.ocp.io/
address=/apps.sno.ocp.io/
server=9.9.9.9
addn-hosts=/etc/dnsmasq.d/addnhosts
##################################
# DHCP ※ 使用する環境のネットワークにしたがって設定してください。
##################################
dhcp-ignore=tag:!known
dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases
dhcp-range=192.168.217.214,static
dhcp-option=option:router,192.168.217.209
dhcp-option=option:netmask,255.255.255.248
dhcp-option=option:dns-server,192.168.217.211
dhcp-host=fa:a0:3f:ce:37:20,sno-core,192.168.217.214,infinite
###############################
# PXE
###############################
enable-tftp
tftp-root=/var/lib/tftpboot
dhcp-boot=boot/grub2/powerpc-ieee1275/core.**elf**
OpenShiftのインストールで利用する、api, api-int を名前解決できるように /etc/dnsmasq.d/addnhosts
を変更します。
名前解決するIPは、OpenShiftを導入するノードのIPとなります。
[root@mz-t ~]# cat /etc/dnsmasq.d/addnhosts
192.168.217.214 sno-core api api-int
PXEの設定
PXEを有効にするために grub2-tools
と tftp-server
をインストールします。
[root@sno-bastion ~]# dnf install grub2-tools.ppc64le
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 0:21:22 時間前の 2024年06月10日 00時44分58秒 に実施しました。
パッケージ grub2-tools-1:2.06-46.el9_1.5.ppc64le は既にインストールされています。
依存関係が解決しました。
====================================================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
====================================================================================================================================================================
アップグレード:
device-mapper ppc64le 9:1.02.197-2.el9 rhel-9-for-ppc64le-baseos-rpms 147 k
device-mapper-event ppc64le 9:1.02.197-2.el9 rhel-9-for-ppc64le-baseos-rpms 36 k
device-mapper-event-libs ppc64le 9:1.02.197-2.el9 rhel-9-for-ppc64le-baseos-rpms 34 k
device-mapper-libs ppc64le 9:1.02.197-2.el9 rhel-9-for-ppc64le-baseos-rpms 192 k
grub2-common noarch 1:2.06-77.el9 rhel-9-for-ppc64le-baseos-rpms 916 k
grub2-ppc64le ppc64le 1:2.06-77.el9 rhel-9-for-ppc64le-baseos-rpms 467 k
grub2-ppc64le-modules noarch 1:2.06-77.el9 rhel-9-for-ppc64le-baseos-rpms 908 k
grub2-tools ppc64le 1:2.06-77.el9 rhel-9-for-ppc64le-baseos-rpms 1.8 M
grub2-tools-minimal ppc64le 1:2.06-77.el9 rhel-9-for-ppc64le-baseos-rpms 613 k
lvm2 ppc64le 9:2.03.23-2.el9 rhel-9-for-ppc64le-baseos-rpms 1.6 M
lvm2-libs ppc64le 9:2.03.23-2.el9 rhel-9-for-ppc64le-baseos-rpms 1.1 M
依存関係のインストール:
grub2-tools-extra ppc64le 1:2.06-77.el9 rhel-9-for-ppc64le-baseos-rpms 865 k
トランザクションの概要
====================================================================================================================================================================
インストール 1 パッケージ
アップグレード 11 パッケージ
ダウンロードサイズの合計: 8.5 M
これでよろしいですか? [y/N]: y
~省略~
[root@sno-bastion ~]# yum install tftp-server
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 0:14:31 時間前の 2024年06月10日 00時44分58秒 に実施しました。
依存関係が解決しました。
====================================================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
====================================================================================================================================================================
インストール:
tftp-server ppc64le 5.2-38.el9 rhel-9-for-ppc64le-appstream-rpms 45 k
トランザクションの概要
====================================================================================================================================================================
インストール 1 パッケージ
ダウンロードサイズの合計: 45 k
インストール後のサイズ: 88 k
これでよろしいですか? [y/N]:
~省略~
tftpboot用のディレクトリを作成します。
[root@sno-bastion ~]# grub2-mknetdir --net-directory=/var/lib/tftpboot
Netboot directory for powerpc-ieee1275 created. Configure your DHCP server to point to /var/lib/tftpboot/boot/grub2/powerpc-ieee1275/core.elf
インストール用のgrubファイル /var/lib/tftpboot/boot/grub2/grub.cfg
を記述します。
MacアドレスやIPは利用する環境に従って変更してください。
[root@sno-bastion ~]# mkdir -p /var/lib/tftpboot/boot/grub2/
サーバーIP (bastionノードのIP) や Macアドレスは使用環境に従って編集してください。
[root@sno-bastion ~]# cat /var/lib/tftpboot/boot/grub2/grub.cfg
default=0
fallback=1
timeout=1
if [ ${net_default_mac} == <macアドレス> ]; then
menuentry "CoreOS (BIOS)" {
echo "Loading kernel"
linux "/rhcos/kernel" ip=dhcp rd.neednet=1 ignition.platform.id=metal ignition.firstboot coreos.live.rootfs_url=http://<サーバーIP>/install/rootfs.img ignition.config.url=http://<サーバーIP>/ignition/sno.ign
echo "Loading initrd"
initrd "/rhcos/initramfs.img"
}
fi
PXE用にCoreOSのイメージファイル(kernel
, initramfs.img
)をダウンロードします。
下の例では、 OpenShift 4.15 最新版OS用のイメージをダウンロードしています。
利用するバージョンに併せて、ダウンロード先のURL RHCOS_URL
を変更してください。
[root@sno-bastion ~]# export RHCOS_URL=https://mirror.openshift.com/pub/openshift-v4/ppc64le/dependencies/rhcos/4.15/latest
[root@sno-bastion ~]# mkdir -p /var/lib/tftpboot/rhcos
[root@sno-bastion ~]# cd /var/lib/tftpboot/rhcos
[root@sno-bastion rhcos]# wget ${RHCOS_URL}/rhcos-live-kernel-ppc64le -O kernel
[root@sno-bastion rhcos]# wget ${RHCOS_URL}/rhcos-live-initramfs.ppc64le.img -O initramfs.img
OSのインストール用に、rootfs.img
も必要なためダウンロードします。
このファイルは、webサーバーで提供するため、先ほどと別のディレクトリに保存します。
[root@sno-bastion rhcos]# mkdir -p /var/www/html/install/
[root@sno-bastion rhcos]# cd /var//var/www/html/install/
[root@sno-bastion rhcos]# wget ${RHCOS_URL}/rhcos-live-rootfs.ppc64le.img -O rootfs.img
ignitionファイルの作成
ignitionファイルをインストール時に取得するために、bastionノードに httpd
を導入します。
CoreOSのイメージ取得にも一部利用します。
[root@sno-bastion rhcos]# dnf install httpd
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 0:28:44 時間前の 2024年06月10日 00時44分58秒 に実施しました。
依存関係が解決しました。
====================================================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
====================================================================================================================================================================
インストール:
httpd ppc64le 2.4.57-8.el9 rhel-9-for-ppc64le-appstream-rpms 52 k
依存関係のインストール:
apr ppc64le 1.7.0-12.el9_3 rhel-9-for-ppc64le-appstream-rpms 141 k
apr-util ppc64le 1.6.1-23.el9 rhel-9-for-ppc64le-appstream-rpms 109 k
apr-util-bdb ppc64le 1.6.1-23.el9 rhel-9-for-ppc64le-appstream-rpms 14 k
httpd-core ppc64le 2.4.57-8.el9 rhel-9-for-ppc64le-appstream-rpms 1.6 M
httpd-filesystem noarch 2.4.57-8.el9 rhel-9-for-ppc64le-appstream-rpms 15 k
httpd-tools ppc64le 2.4.57-8.el9 rhel-9-for-ppc64le-appstream-rpms 88 k
redhat-logos-httpd noarch 90.4-2.el9 rhel-9-for-ppc64le-appstream-rpms 18 k
弱い依存関係のインストール:
apr-util-openssl ppc64le 1.6.1-23.el9 rhel-9-for-ppc64le-appstream-rpms 17 k
mod_http2 ppc64le 2.0.26-2.el9_4 rhel-9-for-ppc64le-appstream-rpms 175 k
mod_lua ppc64le 2.4.57-8.el9 rhel-9-for-ppc64le-appstream-rpms 65 k
トランザクションの概要
====================================================================================================================================================================
インストール 11 パッケージ
ダウンロードサイズの合計: 2.3 M
インストール後のサイズ: 11 M
これでよろしいですか? [y/N]: y
~省略~
CoreOSの設定を行うために、ignitionファイルが必要となります。
シングルノード構成の場合は、このignitionファイル作成時にシングルノードを指定することになります。
まずは、ignitionファイルを作成するディレクトリを作成します。
mkdir -p ~/sno-work
cd ~/sno-work
作成したディレクトリ内で、install-config.yaml
を作成してください。
記載のサンプルは以下になります。
apiVersion: v1
baseDomain: <domain>
compute:
- name: worker
replicas: 0
controlPlane:
name: master
replicas: 1
metadata:
name: <cluster_id>
networking:
clusterNetwork:
- cidr: 10.128.0.0/14
hostPrefix: 23
machineNetwork:
- cidr: <machineNetwork>
networkType: OVNKubernetes
serviceNetwork:
- 172.30.0.0/16
platform:
none: {}
bootstrapInPlace:
installationDisk: <device>
pullSecret: '<pull_secret>'
sshKey: |
<ssh_key>
下記項目を構成する環境に従って変更してください。
-
<domain>
: 作成するOpenShiftのドメイン名指定 -
<cluster_id>
: クラスター名の指定 -
<machineNetwork>
: CoreOS自体に付与するネットワークセグメントを設定 (xxx.xxx.xxx.xxx/yy で指定) -
<device>
: CoreOSをインストールするディスクデバイスを指定 (/dev/sda
など) -
<pull_secret>
: Red Hat OpenShift Cluster Manager から取得し、貼り付け -
<ssh_key>
: CoreOSにsshログインするために設定 (今回は、bastionノードでsshKeyを作成)
その他、設定項目について
- clusterNetwork : Pod用のネットワークセグメント
- serviceNetwork : Service用のネットワークセグメント
install-config.yaml
が準備できたら、openshift-install
をダウンロードし、ignitionファイルを生成します。
今回は、バージョン 4.15.36
を利用するため、URLは https://mirror.openshift.com/pub/openshift-v4/ppc64le/clients/ocp/stable-4.15/openshift-install-linux-4.15.15.tar.gz
を使用します。
使用するバージョンに適したURLからダウンロードしてください。
[root@sno-bastion sno-work]# wget https://mirror.openshift.com/pub/openshift-v4/ppc64le/clients/ocp/stable-4.15/openshift-install-linux-4.15.15.tar.gz
[root@sno-bastion sno-work]# tar xvzf openshift-install-linux-4.15.15.tar.gz
ignitionファイルを生成するためのディレクトリを作成し、対象のディレクトリに先ほど作成した install-config.yaml
をコピーします。
その後、./openshift-install --dir=create-ignition create single-node-ignition-config
コマンドでignitionファイルを生成します。
生成されたignitionファイルは、指定したディレクトリ内に作成されます。
[root@sno-bastion sno-work]# mkdir create-ignition
[root@sno-bastion sno-work]# cp install-config.yaml ./create-ignition/
[root@sno-bastion sno-work]# ./openshift-install --dir=create-ignition create single-node-ignition-config
INFO Consuming Install Config from target directory
WARNING Making control-plane schedulable by setting MastersSchedulable to true for Scheduler cluster settings
INFO Single-Node-Ignition-Config created in: create-ignition and create-ignition/auth
作成されたignitionファイルを、webサーバーで公開できるようにコピーします。
また、アクセスできるように権限変更やラベルの貼り直しを行います。
[root@sno-bastion create-ignition]# ls
auth bootstrap-in-place-for-live-iso.ign metadata.json worker.ign
[root@sno-bastion create-ignition]# mkdir /var/www/html/ignition/
[root@sno-bastion create-ignition]# cp ./create-ignition/bootstrap-in-place-for-live-iso.ign /var/www/html/ignition/sno.ign
[root@sno-bastion create-ignition]# restorecon -vR /var/www/html || true
Relabeled /var/www/html/install/rootfs.img from unconfined_u:object_r:tftpdir_rw_t:s0 to unconfined_u:object_r:httpd_sys_content_t:s0
[root@sno-bastion create-ignition]# chmod o+r /var/www/html/ignition/*.ign
ネットワークインストール
ネットワークブートの環境が整ったので、インストールに移ります。
HMCにログインできる環境の場合、以下のコマンドでネットワークブートを実行できます。
lpar_netboot -i -D -f -t ent -m <sno_mac> -s auto -d auto -S <server_ip> -C <sno_ip> -G <gateway> <lpar_name> default_profile <cec_name>
-
<sno_mac>
: CoreOSをインストールするLPARにつけられているNICのMACアドレス -
<sno_ip>
: 上記NICにつけるIP (dnsmasqで設定したもの) -
<server_ip>
: bastionノードのIP -
<gateway>
: 使用するネットワークのゲートウェイ -
<lapr_name>
: HMC上のLPAR名 -
<cec_name>
: LPARが稼働するシステム名
SMSからでもネットワークインストール可能です。
通常のLinuxインストールとネットワークインストールの方法は同じのため、下記を参照ください。
しばらくすると、OpenShiftのインストールが完了します。
シングルノードの場合、はじめにbootstrapがインストールされ、起動が完了するとOpenShift本体がインストールされます。
このときに、install-config.yaml
で指定したデバイスにインストールされるため、この指定が間違っているとインストールされません。
CoreOS上のログを確認し、対象のデバイスが見つからないようであれば、 fdisk
のようなコマンドで使用可能なデバイスを確認してください。
fdisk -l
で接続されているデバイスを一覧できます。
./openshift-install wait-for bootstrap-complete
を実行すると、Bootstrapの起動が完了したか確認できます。
ただし、CoreOSにsshでログインし、 journalctl
でログを確認する方が確実です。
インストール完了後は、./openshift-install wait-for install-complete
を実行すると、アクセス情報などが表示されます。
インストールの状況は、oc get co
でオペレーターのインストール状況を確認すると良いです。
Power Virtual Server の場合
シングルノード構成は、IBM Power のクラウドサービスである Power Virtual Server でも構築できました。
Power Virtual Server の場合、SMS画面を表示するためにコツが必要です。
一度、BYOLのイメージをブートした後に、コンソールを開きます。
コンソールを開いた状態で、対象の仮想マシンを再起動すると以下のような表示が出ます。
IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM
IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM
IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM
IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM
IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM
IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM
IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM
IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM
IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM
IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM
IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM
IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM
IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM
IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM
IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM
IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM
IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM
IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM IBM
1 = SMS Menu 5 = Default Boot List
9 = Restricted Open Firmware Prompt 6 = Stored Boot List
この表示が出ている間に、 1
を入力することで、SMSメニューに移行できます。
ネットワークインストールの方法は、通常の方法と同じです。
その他、補足
インターネットに繋がるネットワークを直接ノードにつける場合は問題ありませんが、プロキシーサーバーを利用する場合には、install-config.yaml
の設定が必要です。
Power Virtual Server の場合、仮想マシンにパブリックネットワークをつけることで、インターネットへのアクセスが可能になります。
そうでない場合、bastionノードなどでproxy設定が必要です。
外部ストレージを提供するために、NFSを利用することも可能です。
BastionノードにNFSサーバーを構築し、OpenShiftにNFS用のStorage Classを作成する必要があります。
NFSによる外部ストレージはこちらの記事を参考にすると実施できます。