CentOS Stream 8
Sponsored Link

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 ~]#
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
[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

.....
.....

# 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 ~]#
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
[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

.....
.....

# 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

関連コンテンツ