CentOS Stream 9
Sponsored Link

OKD 4 : インストール #1
2022/08/02
 
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.41
+-------------+-------------+  |  +--------------+-------------+
| [master-0.okd4.srv.world] |  |  |  [master-1.okd4.srv.world] |
|      Control Plane#1      |  |  |      Control Plane#2       | 
|                           |  |  |                            |
|                           |  |  |                            |
+---------------------------+  |  +----------------------------+
                               |
--------------+----------------+
              |10.0.0.42
+-------------+-------------+
| [master-2.okd4.srv.world] |
|      Control Plane#3      |
|                           |
|                           |
+---------------------------+

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

  * 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 ノードを設定します。
[1]
[2]
[3] Manager ノードで、クラスター内で必要な DNS 設定を Dnsmasq に適用しておきます。
[root@mgr ~]#
vi /etc/dnsmasq.conf
# 80行目 : 追記
# apps.(任意のクラスター名).(ドメイン名)/IP アドレス
# [*.apps.okd4.srv.world] は全て [10.0.0.25] とする
address=/apps.okd4.srv.world/10.0.0.25

# 155行目 : ドメイン名を追記
domain=okd4.srv.world

[root@mgr ~]#
vi /etc/hosts
# [api], [api-int], [bootstrap] の名前は固定
# [master-0] はそれぞれのノードのホスト名
# [etcd-0], [_etcd-server-ssl._tcp] は [master-0] の別名で名前は固定
# Control Plane を増やす場合 : [etcd-(n)]
# ⇒ (IP アドレス) (ホスト名) etcd-1 _etcd-server-ssl._tcp
10.0.0.24   bootstrap
10.0.0.25   api api-int
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-2 etcd-2 _etcd-server-ssl._tcp

[root@mgr ~]#
systemctl restart dnsmasq
# DNS 設定変更
# デバイス名や IP アドレス等は自身の環境に置き換え

[root@mgr ~]#
DNS=$(nmcli device show enp1s0 | grep ^IP4.DNS | awk '{print $2}')

[root@mgr ~]#
nmcli connection modify enp1s0 ipv4.dns "10.0.0.25 $DNS"

[root@mgr ~]#
nmcli connection modify enp1s0 ipv4.dns-search "okd4.srv.world"

[root@mgr ~]#
nmcli connection up enp1s0

[4] Manager ノードで、クラスター内で必要な設定を Nginx に適用しておきます。
[root@mgr ~]#
dnf -y install nginx-mod-stream
[root@mgr ~]#
vi /etc/nginx/nginx.conf
    server {
    	# 39行目 : 待ち受けポート変更
        listen       8080;
        listen       [::]:8080;

# 最終行に追記
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:6443;
    }
    upstream ingress-http {
        server 10.0.0.40:80;
        server 10.0.0.41:80;
        server 10.0.0.42:6443;
    }
    upstream ingress-https {
        server 10.0.0.40:443;
        server 10.0.0.41:443;
        server 10.0.0.42:6443;
    }
    upstream ingress-health {
        server 10.0.0.40:1936;
        server 10.0.0.41:1936;
        server 10.0.0.42:6443;
    }
    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 nginx

[5] SELinux を有効にしている場合は、ポリシーの変更が必要です。
[root@mgr ~]#
setsebool -P httpd_can_network_connect on

[root@mgr ~]#
setsebool -P httpd_graceful_shutdown on

[root@mgr ~]#
setsebool -P httpd_can_network_relay on

[root@mgr ~]#
setsebool -P nis_enabled on

[root@mgr ~]#
semanage port -a -t http_port_t -p tcp 6443

[root@mgr ~]#
semanage port -a -t http_port_t -p tcp 22623

[root@mgr ~]#
semanage port -a -t http_port_t -p tcp 1936

[6] Firewalld を有効にしている場合は、サービスポートの許可が必要です。
[root@mgr ~]#
firewall-cmd --add-service={dns,http,https}

success
[root@mgr ~]#
firewall-cmd --add-port={6443/tcp,22623/tcp,1936/tcp,8080/tcp}

success
[root@mgr ~]#
firewall-cmd --runtime-to-permanent

success
関連コンテンツ