OKD 4 : インストール #3
2022/04/19 |
Red Hat OpenShift 4 のアップストリーム、OKD 4 のインストールです。
当例では以下のような環境を例に OKD 4 クラスターを構成します。 --------------+----------------+-----------------+-------------- |10.0.0.25 | |10.0.0.24 +-------------+-------------+ | +--------------+-------------+ | [mgr.okd4.srv.world] | | | [bootstrap.okd4.srv.world] | | Manager Node | | | Bootstrap Node | | DNS | | | | | Nginx | | | | +---------------------------+ | +----------------------------+ | --------------+----------------+-----------------+-------------- |10.0.0.40 |10.0.0.60 +-------------+-------------+ +--------------+-------------+ | [master-0.okd4.srv.world] | | [node-0.okd4.srv.world] | | Control Plane | | Compute Node | | | | | | | | | +---------------------------+ +----------------------------+ |
構築にあたっては、下記が最小のシステム要件となっています。(公式ドキュメントより)* Bootstrap ノード ⇒ 4 CPU, 16 GB RAM, 100 GB Storage, Fedora CoreOS * Control Plane ノード ⇒ 4 CPU, 16 GB RAM, 100 GB Storage, Fedora CoreOS * Compute ノード ⇒ 2 CPU, 8 GB RAM, 100 GB Storage, Fedora CoreOS |
|
* Bootstrap ノードはクラスター構築時のみ必要なノードとなります。
|
|
Manager ノード設定済みを前提として、Bootstrap ノード、Control Plane ノードに
Fedora CoreOS をインストールして設定します。
|
|
[1] |
以下の公式サイトにアクセスして Fedora CoreOS のインストーラーをダウンロードしておきます。
当例と同様に進める場合、ダウンロードするのは [Bare Metal] の ISO ファイルです。 ⇒ https://getfedora.org/en/coreos/download?tab=metal_virtualized&stream=stable&arch=x86_64 |
[2] | Fedora CoreOS をインストールする対象マシンの DVD ドライブに ISO ファイルをセットして電源をオンします。 すると、Fedora CoreOS が DVD から起動します。そのまま Enter キーを押下すると、システムが起動して、自動ログインします。 |
![]() |
![]() |
[3] | ログイン後、以下のようにネットワークを設定して、ローカルディスクに Fedora CoreOS をインストールします。 ホスト名は ignition ファイルから自動設定されるため、手動設定は不要です。 最初に、Bootstrap ノードを設定します。 |
# デバイス名確認 [core@localhost ~]# nmcli device DEVICE TYPE STATE CONNECTION ens160 ethernet connected Wired connection 1 lo loopback unmanaged -- # IP アドレス等々を設定 # DNS は Manager ノードを指定 [core@localhost ~]# nmcli connection add type ethernet autoconnect yes con-name ens160 ifname ens160 [core@localhost ~]# nmcli connection modify ens160 ipv4.addresses 10.0.0.24/24 ipv4.method manual [core@localhost ~]# nmcli connection modify ens160 ipv4.dns 10.0.0.25 [core@localhost ~]# nmcli connection modify ens160 ipv4.gateway 10.0.0.1 [core@localhost ~]# nmcli connection modify ens160 ipv4.dns-search okd4.srv.world [core@localhost ~]# nmcli connection up ens160
# ローカルディスクのデバイス名確認 [core@localhost ~]# sudo fdisk -l Disk /dev/nvme0n1: 100 GiB, 107374182400 bytes, 209715200 sectors Disk model: VMware Virtual NVMe Disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes ..... ..... # Fedora CoreOS をローカルディスクにインストール [core@localhost ~]# sudo coreos-installer install /dev/nvme0n1 --ignition-url=http://10.0.0.25:8080/bootstrap.ign --insecure-ignition --copy-network Installing Fedora CoreOS 35.20220327.3.0 x86_64 (512-byte sectors) Read disk 2.5 GiB/2.5 GiB (100%) Writing Ignition config Copying networking configuration from /etc/NetworkManager/system-connections/ Copying /etc/NetworkManager/system-connections/ens160.nmconnection to installed system Install complete. # インストール完了後は DVD を取り出して再起動し、次の作業に進む # * 再起動後も変更処理は継続する [core@localhost ~]# sudo reboot |
[4] | Control Plane ノードを設定します。 Bootstrap ノードと同様、Fedora CoreOS インストーラーをセットして電源をオンし、同様に設定します。異なる箇所は IP アドレスと ignition ファイル名のみです。 |
[core@localhost ~]# nmcli device DEVICE TYPE STATE CONNECTION ens160 ethernet connected Wired connection 1 lo loopback unmanaged --
[core@localhost ~]#
[core@localhost ~]# nmcli connection add type ethernet autoconnect yes con-name ens160 ifname ens160 [core@localhost ~]# nmcli connection modify ens160 ipv4.addresses 10.0.0.40/24 ipv4.method manual [core@localhost ~]# nmcli connection modify ens160 ipv4.dns 10.0.0.25 [core@localhost ~]# nmcli connection modify ens160 ipv4.gateway 10.0.0.1 [core@localhost ~]# nmcli connection modify ens160 ipv4.dns-search okd4.srv.world [core@localhost ~]# nmcli connection up ens160
sudo fdisk -l Disk /dev/nvme0n1: 100 GiB, 107374182400 bytes, 209715200 sectors Disk model: VMware Virtual NVMe Disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes ..... ..... # Control Plane ノードは [master.ign] [core@localhost ~]# sudo coreos-installer install /dev/nvme0n1 --ignition-url=http://10.0.0.25:8080/master.ign --insecure-ignition --copy-network Installing Fedora CoreOS 35.20220327.3.0 x86_64 (512-byte sectors) Read disk 2.5 GiB/2.5 GiB (100%) Writing Ignition config Copying networking configuration from /etc/NetworkManager/system-connections/ Copying /etc/NetworkManager/system-connections/ens160.nmconnection to installed system Install complete. # インストール完了後は DVD を取り出して再起動し、次の作業に進む # * 再起動後も変更処理は継続する [core@localhost ~]# sudo reboot |
[5] | Manager ノードで進行状況が確認できます。 環境にもよりますが、STATUS = Ready までそれなりに時間がかかります。 |
[root@mgr ~]# openshift-install --dir=okd4 wait-for bootstrap-complete
INFO Waiting up to 20m0s (until 11:25AM) for the Kubernetes API at https://api.okd4.srv.world:6443...
INFO API v1.23.3-2003+e419edff267ffa-dirty up
INFO Waiting up to 30m0s (until 11:35AM) for bootstrapping to complete...
INFO It is now safe to remove the bootstrap resources
INFO Time elapsed: 14m12s
# 最終的に上記のように表示されれば クラスター Ready となる
# 認証情報を読み込む [root@mgr ~]# export KUBECONFIG=okd4/auth/kubeconfig [root@mgr ~]# echo 'export KUBECONFIG=$HOME/okd4/auth/kubeconfig' >> ~/.bash_profile
# STATUS = Ready であれば OK [root@mgr ~]# oc get nodes NAME STATUS ROLES AGE VERSION master-0.okd4.srv.world Ready master,worker 14m v1.23.3+759c22b |
[6] | Compute ノードを設定します。 他ノードと同様、Fedora CoreOS インストーラーをセットして電源をオンし、同様に設定します。異なる箇所は IP アドレスと ignition ファイル名のみです。 |
[core@localhost ~]# nmcli device DEVICE TYPE STATE CONNECTION ens160 ethernet connected Wired connection 1 lo loopback unmanaged --
[core@localhost ~]#
[core@localhost ~]# nmcli connection add type ethernet autoconnect yes con-name ens160 ifname ens160 [core@localhost ~]# nmcli connection modify ens160 ipv4.addresses 10.0.0.60/24 ipv4.method manual [core@localhost ~]# nmcli connection modify ens160 ipv4.dns 10.0.0.25 [core@localhost ~]# nmcli connection modify ens160 ipv4.gateway 10.0.0.1 [core@localhost ~]# nmcli connection modify ens160 ipv4.dns-search okd4.srv.world [core@localhost ~]# nmcli connection up ens160
sudo fdisk -l Disk /dev/nvme0n1: 100 GiB, 107374182400 bytes, 209715200 sectors Disk model: VMware Virtual NVMe Disk Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes ..... ..... # Compute ノードは [worker.ign] [core@localhost ~]# sudo coreos-installer install /dev/nvme0n1 --ignition-url=http://10.0.0.25:8080/worker.ign --insecure-ignition --copy-network Installing Fedora CoreOS 35.20220327.3.0 x86_64 (512-byte sectors) Read disk 2.5 GiB/2.5 GiB (100%) Writing Ignition config Copying networking configuration from /etc/NetworkManager/system-connections/ Copying /etc/NetworkManager/system-connections/ens160.nmconnection to installed system Install complete. # インストール完了後は DVD を取り出して再起動し、次の作業に進む # * 再起動後も変更処理は継続する [core@localhost ~]# sudo reboot |
[7] | Manager ノードに移動し、[Pending] 状態の Compute ノードの CSR (Certificate Signing Requests) を承認すると、クラスターに追加されます。 |
[root@mgr ~]# oc get csr NAME AGE SIGNERNAME REQUESTOR REQUESTEDDURATION CONDITION csr-5kg4h 31m kubernetes.io/kubelet-serving system:node:master-0.okd4.srv.world <none> Approved,Issued csr-6hfld 31m kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper <none> Approved,Issued csr-7q95d 3m30s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper <none> Pending csr-mbhvf 3m14s kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper <none> Pending csr-wq6zv 31m kubernetes.io/kube-apiserver-client-kubelet system:serviceaccount:openshift-machine-config-operator:node-bootstrapper <none> Approved,Issued system:openshift:openshift-authenticator-xm9mj 27m kubernetes.io/kube-apiserver-client system:serviceaccount:openshift-authentication-operator:authentication-operator <none> Approved,Issued system:openshift:openshift-monitoring-657kl 26m kubernetes.io/kube-apiserver-client system:serviceaccount:openshift-monitoring:cluster-monitoring-operator <none> Approved,Issued
[root@mgr ~]#
oc adm certificate approve csr-7q95d certificatesigningrequest.certificates.k8s.io/csr-7q95d approved [root@mgr ~]# oc adm certificate approve csr-mbhvf certificatesigningrequest.certificates.k8s.io/csr-mbhvf approved # Compute ノードが追加される [root@mgr ~]# oc get nodes NAME STATUS ROLES AGE VERSION master-0.okd4.srv.world Ready master,worker 33m v1.23.3+759c22b node-0.okd4.srv.world NotReady worker 12s v1.23.3+759c22b # 一定時間経過後 STATUS = Ready となる [root@mgr ~]# oc get nodes NAME STATUS ROLES AGE VERSION master-0.okd4.srv.world Ready master,worker 34m v1.23.3+759c22b node-0.okd4.srv.world Ready worker 99s v1.23.3+759c22b |
[8] | クラスター構築完了後は、Bootstrap ノードはシャットダウンして OK です。 なお、Manager ノードから各ノードへは、ignition ファイルで設定した通り、[core] ユーザーで SSH 鍵アクセス可能です。 |
[root@mgr ~]# ssh core@master-0 hostname master-0.okd4.srv.world[root@mgr ~]# ssh core@node-0 hostname node-0.okd4.srv.world[root@mgr ~]# ssh core@bootstrap [core@bootstrap ~]$ sudo shutdown -h now |