CentOS Stream 8
Sponsored Link

OKD 4 : Compute ノードを追加する2022/04/19

 
Red Hat OpenShift 4 のアップストリーム、OKD 4 のインストールです。
当例では以下のような環境を例に OKD 4 クラスターを構成しています。
構成済みの OKD 4 クラスターに下図の Compute ノード (10.0.0.60) を追加します。
--------------+----------------+-----------------+--------------
              |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.41
+-------------+-------------+  |  +--------------+-------------+
| [master-0.okd4.srv.world] |  |  |  [master-1.okd4.srv.world] |
|      Control Plane#1      |  |  |      Control Plane#2       | 
|                           |  |  |                            |
|                           |  |  |                            |
+---------------------------+  |  +----------------------------+
                               |
--------------+----------------+-----------------+--------------
              |10.0.0.42                         |10.0.0.60
+-------------+-------------+     +--------------+-------------+
| [master-2.okd4.srv.world] |     |   [node-0.okd4.srv.world]  |
|      Control Plane#3      |     |       Compute Node#1       | 
|                           |     |                            |
|                           |     |                            |
+---------------------------+     +----------------------------+

  構築にあたっては、下記が最小のシステム要件となっています。(公式ドキュメントより)

  * 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 ノードを起動しておきます。
[1] Manager ノードで、Compute ノード用の設定を追加しておきます。
[root@mgr ~]#
vi /etc/hosts
# Compute ノードのホスト名 (任意) と IP アドレスを追記
10.0.0.24   bootstrap
10.0.0.25   api api-int mgr
10.0.0.40   master-0 etcd-0 _etcd-server-ssl._tcp
10.0.0.41   master-1 etcd-1 _etcd-server-ssl._tcp
10.0.0.42   master-1 etcd-2 _etcd-server-ssl._tcp
10.0.0.60   node-0

[root@mgr ~]#
vi /etc/nginx/nginx.conf
# Compute ノードを追加
stream {
    upstream k8s-api {
        server 10.0.0.24:6443;
        server 10.0.0.40:6443;
        server 10.0.0.41:6443;
        server 10.0.0.42:6443;
    }
    upstream machine-config {
        server 10.0.0.24:22623;
        server 10.0.0.40:22623;
        server 10.0.0.41:22623;
        server 10.0.0.42:22623;
    }
    upstream ingress-http {
        server 10.0.0.40:80;
        server 10.0.0.41:80;
        server 10.0.0.42:80;
        server 10.0.0.60:80;
    }
    upstream ingress-https {
        server 10.0.0.40:443;
        server 10.0.0.41:443;
        server 10.0.0.42:443;
        server 10.0.0.60:443;
    }
    upstream ingress-health {
        server 10.0.0.40:1936;
        server 10.0.0.41:1936;
        server 10.0.0.42:1936;
        server 10.0.0.60:1936;
    }
    server {
        listen 6443;
        proxy_pass k8s-api;
    }
    server {
        listen 22623;
        proxy_pass machine-config;
    }
    server {
        listen 80;
        proxy_pass ingress-http;
    }
    server {
        listen 443;
        proxy_pass ingress-https;
    }
    server {
        listen 1936;
        proxy_pass ingress-health;
    }
}

[root@mgr ~]#
systemctl restart dnsmasq nginx

[2] Control Plane ノード インストール時と同様に、Fedora CoreOS をインストールする Compute ノードの DVD ドライブに ISO ファイルをセットして電源をオンします。
すると、Fedora CoreOS が DVD から起動します。そのまま Enter キーを押下すると、システムが起動して、自動ログインします。
[3] 起動後、他ノードと同様に設定します。異なる箇所は 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

[4] 一定時間経過後、Manager ノードに移動し、[Pending] 状態の Compute ノードの CSR (Certificate Signing Requests) を承認すると、クラスターに追加されます。
[root@mgr ~]#
oc get csr

NAME                                             AGE     SIGNERNAME                                    REQUESTOR                                                                         REQUESTEDDURATION   CONDITION
csr-2ds8c                                        68m     kubernetes.io/kubelet-serving                 system:node:master-2.okd4.srv.world                                               <none>              Approved,Issued
csr-7pwq5                                        80m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper         <none>              Approved,Issued
csr-8k4g7                                        80m     kubernetes.io/kubelet-serving                 system:node:master-0.okd4.srv.world                                               <none>              Approved,Issued
csr-gjkns                                        72m     kubernetes.io/kubelet-serving                 system:node:master-1.okd4.srv.world                                               <none>              Approved,Issued
csr-hx5dq                                        73m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper         <none>              Approved,Issued
csr-mgltg                                        73m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper         <none>              Approved,Issued
csr-nhnw4                                        68m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper         <none>              Approved,Issued
csr-q9pnq                                        2m35s   kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper         <none>              Pending
csr-r6ltf                                        2m51s   kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper         <none>              Pending
csr-rn4dn                                        80m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper         <none>              Approved,Issued
csr-ww2gb                                        68m     kubernetes.io/kube-apiserver-client-kubelet   system:serviceaccount:openshift-machine-config-operator:node-bootstrapper         <none>              Approved,Issued
system:openshift:openshift-authenticator-4zthw   77m     kubernetes.io/kube-apiserver-client           system:serviceaccount:openshift-authentication-operator:authentication-operator   <none>              Approved,Issued
system:openshift:openshift-monitoring-fs7ws      76m     kubernetes.io/kube-apiserver-client           system:serviceaccount:openshift-monitoring:cluster-monitoring-operator            <none>              Approved,Issued

[root@mgr ~]#
oc adm certificate approve csr-q9pnq

certificatesigningrequest.certificates.k8s.io/csr-q9pnq approved
[root@mgr ~]#
oc adm certificate approve csr-r6ltf

certificatesigningrequest.certificates.k8s.io/csr-r6ltf approved
# Compute ノードが追加される

[root@mgr ~]#
oc get nodes

NAME                      STATUS     ROLES           AGE   VERSION
master-0.okd4.srv.world   Ready      master,worker   82m   v1.23.3+759c22b
master-1.okd4.srv.world   Ready      master,worker   74m   v1.23.3+759c22b
master-2.okd4.srv.world   Ready      master,worker   70m   v1.23.3+759c22b
node-0.okd4.srv.world     NotReady   worker          15s   v1.23.3+759c22b

# 一定時間経過後 STATUS = Ready となる

[root@mgr ~]#
oc get nodes

NAME                      STATUS   ROLES           AGE   VERSION
master-0.okd4.srv.world   Ready    master,worker   83m   v1.23.3+759c22b
master-1.okd4.srv.world   Ready    master,worker   75m   v1.23.3+759c22b
master-2.okd4.srv.world   Ready    master,worker   71m   v1.23.3+759c22b
node-0.okd4.srv.world     Ready    worker          86s   v1.23.3+759c22b
[5] Compute ノード追加後は、Bootstrap ノードはシャットダウンして OK です。
また、他ノードと同様、Compute ノードへは [core] ユーザーで SSH 鍵アクセス可能です。
[root@mgr ~]#
ssh core@node-0 hostname

node-0.okd4.srv.world
関連コンテンツ