5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【OKD】OpenShift を最短で構築(proxmox)

5
Last updated at Posted at 2026-02-12

はじめに

仕事でOpenShiftを扱うため、勉強環境が欲しくなった。OpenShiftはKubernetesにRedHatがもりもり機能を付け加えて有償で提供しているものである。OpenShiftにはいくつかディストロが存在する。

もっとも有名であろうディストロがOCP(OpenShift Container Platform)である。これが一般的に企業で使わている。OCPのライセンス費用はとても個人で払えるような額ではない。

ということで、今回は無償で使えるコミュニティ開発版のOKD(Origin Community Distribution of Kubernetes)というものを使っていく。

OKDはRedHatの開発・検証版という位置づけのようで、こちらで安定したらOCPとしてリリースするようである。つまり、RHELとCentOS Streamのような関係であるのだろう。

検証環境

今回は手持ちのXeonサーバーにProxmoxでVM立ててインストールを行う。VM WareやVertual Boxでも、NICのMacAdress等がわかれば手順は基本的に一緒。

環境
CPU Xeon E5 2698 v3(16C32T)
メモリ DDR4 ECC REG 48GB
ストレージ NVMe m.2 500GB

こちらをホストマシンの環境として、OKDの最小要件である 8vCPU/16GB/120GB のVMを作成しOKDをインストールする。

OKDをインストールするためにISOを作成する必要があるのだが、それはまた別のVMを立てて行う。

※OKDのインストーラーは x86上での動作が前提
※筆者は4.15と4.20以外のバージョンでの動作は未確認。

本環境の簡易図
image.png

事前準備

1. isoを作成する用の作業環境を用意する

  • VMでも何でもいいのでdockerが動作する環境
  • 今回はubuntu22.04のVMを作業環境とする

2. gitとdocker,docker-composeのインストールを行う

sudo apt install git docker.io docker-compose

3. iso作成パッケージの取得

git clone https://github.com/takuteh/okd_setup_package.git
cd okd_setup_package

4. ssh公開鍵の作成

  • OKDクラスタに対してログインするのにパスワード認証はできず、ssh公開鍵が必須となる
  • ノードを操作する予定のマシン上でsshキーペアの作成を行う
  • 下記コマンドを実行後何回かEnterを押しておけば ~/.ssh/id_rsa.pubに公開鍵ができるので控えておく
ssh-keygen -t rsa -b 4096

5. インストール予定のマシンのNIC名とMACアドレスの取得

  • まずはVMの作成を行う、CPU8コア/メモリ16GB/ディスク120GBを指定、CPUの種類は4.15ではx86-64-v2-AESで動作したが、4.20はkernel panicになり動作しなかったためhostを選ぶ

※筆者環境は以下で動作確認ができた
image.png

  • yamlにはNICのインターフェース名とMACアドレスを正しく入れる必要があるが、proxmoxからは確認する方法がわからなかったので、とりあえず適当なOSをbootして確認する。
  • 後でディスク交換してokdインストールをする
  • NIC名がens18、mac_addressがbc:24:11:bc:b8:80とわかった
    image.png

6. RedHatアカウントの作成

RedHat Hybrid Cloud Consoleにログインできるようにしておく
こちらは後でpullSecretを取得するために必要になる

インストール用ISO作成

  1. こちら からインストールしたいOKDのバージョンを選ぶ

このように複数バージョン出てくるので、好きなものを選ぶ 今回は4.20.0-okd-scos.17を使用する
※ecとついているものは実験用・開発用という位置づけのよう

image.png

okdバージョンを指定する

echo OKD_VERSION=4.20.0-okd-scos.17 > ./configs/okd_version.env

1.install-config.yamlの編集

vi ./configs/install-config.yaml
install-config.yaml
---
apiVersion: v1
baseDomain: example.com
compute:
- hyperthreading: Enabled
  name: worker
  replicas: 2
controlPlane:
  hyperthreading: Enabled
  name: master
  replicas: 3
metadata:
  name: ocp4
networking:
  clusterNetwork:
  - cidr: 10.128.0.0/14 #podに振られるネットワーク(変更不要)
    hostPrefix: 23
  serviceNetwork:
  - 172.30.0.0/16 #クラスタ内のserviceに振られるネットワーク(変更不要)
  machineNetwork: 
  - cidr: 10.100.0.0/24 #・・・(1)
platform:
  none: {}
pullSecret: '{"auths":{"fake":{"auth":"aWQ6cGFzcwo="}}}'#・・・(2)
# ssh公開鍵・・・(3)
sshKey: | 
  ssh-ed25519 AAAA... user1@example.com
  ssh-ed25519 AAAA... user2@example.com

変更の必要がある項目

  • (1)machineNetwork・・・VM自体に振られるネットワークアドレス。筆者の環境では10.100.0.0/24
  • (2)pullSecret・・・こちらからコピーする
  • (3)sshKey・・・ノードに対してログインするマシンのssh公開鍵、okdのノードに対してsshはパスワード認証できないため、sshの鍵を埋め込んでおく必要がある。

2.agent-config.yamlの編集

vi ./configs/agent-config.yaml
agent-config.yaml
apiVersion: v1alpha1
kind: AgentConfig
metadata:
  name: okd-sno # クラスタ名
rendezvousIP: 10.100.0.151 # Masterノードの固定IP・・・(1)
hosts:
  - hostname: master0 # ノードのホスト名
    interfaces:
      - name: enp0s18 # VM NIC名・・・(2)
        macAddress: BC:24:11:98:73:CF  # VM NICのMACアドレス・・・(3)
    networkConfig: 
      interfaces:
        - name: enp0s18 #VM NIC名・・・(2)
          type: ethernet
          state: up
          mac-address: BC:24:11:98:73:CF # VM NICのMACアドレス・・・(3)
          ipv4:
            enabled: true
            address:
              - ip: 10.100.0.151 # MasterVMの固定IP・・・(1)
                prefix-length: 24
            dhcp: false
      dns-resolver:
        config:
          server:
            - 10.100.0.1 # ルータやProxmoxネットワークのDNS・・・(4)
      routes:
        config:
          - destination: 0.0.0.0/0
            next-hop-address: 10.100.0.1 # デフォルトゲートウェイ・・・(5)
            next-hop-interface: enp0s18 # VM NIC名・・・(2)
            table-id: 254

変更の必要がある項目

コメントを入れているが、番号をつけていないものは任意で変更

  • (1)Masterノードの固定IP・・・ノードにつけたいIP、DHCPの範囲とは被らないよう注意
  • (2)VM NIC名・・・事前準備で確認したVMのNIC名
  • (3)VM NICのMACアドレス・・・事前準備で確認したVMのNICのMACアドレス
  • (4)DNS・・・Podが外の世界と通信する際に参照するDNSサーバー
  • (5)デフォルトゲートウェイ・・・VMに振られるネットワーク(MachineNW)のデフォゲ
    ファイルの変更が完了したらスクリプトを実行、iso作成用のコンテナが動作する
sudo sh ./setting.sh

okdというディレクトリにisoとkubeconfigなどが生成される

pi@ubuntu:~/okd_setup_package/okd $ ls *
agent.x86_64.iso  rendezvousIP

auth:
kubeadmin-password  kubeconfig

OKDインストール

上記で作成したISOを先ほど使用した、ubuntuのISOと交換してVMを起動する。
VMを停止した状態でISOを差し替えて起動
image.png

このようにしばらくインストールが進んでるログが出力される。
インストール時間は30~40分程度だと思われるが、それ以上かかる場合はインストールがうまくできていない可能性がある
image.png

ちなみに以下のようなエラーが出た場合、おそらくNICの設定が合っていないため見直す。
image.png

  • クラスタの操作マシンにocコマンドをインストール
    • ノード内で直接ocコマンドを打つこともできるが、他のマシンで操作したい場合はocコマンドを導入 今回はiso作成用のubuntuのVMにインストールする
    • ocコマンドのバージョンはインストールするokdのバージョンに合わせる
OKD_VERSION=4.20.0-okd-scos.17
cd /tmp
curl -LO https://github.com/okd-project/okd/releases/download/${OKD_VERSION}/openshift-client-linux-${OKD_VERSION}.tar.gz
tar -xvzf openshift-client-linux-${OKD_VERSION}.tar.gz
sudo cp oc /usr/local/bin/
oc version

先ほど生成したkubeconfigをクラスタを操作したいマシン上に持ってきて、KUBECONFIG環境変数にkubeconfigのPATHを設定する

export KUBECONFIG=~/.kubeconfig

kubeconfigの中身を見るとわかるのだが、クラスタへの接続はドメインでアクセスする前提のため、DNSサーバーに設定をするか/etc/hostsに以下を追記する ※必要に応じて変更

/etc/hosts
#<apiサーバーのip> api.<クラスタ名>.<ベースドメイン>
10.100.0.151 api.okd-sno.example.com
10.100.0.151 api-int.okd-sno.example.com

そうするとocコマンドが通るようになる。

oc get node

nodeのstatusがReadyになっていればクラスタが使える状態
image.png

GUIにアクセスしてみる

またGUIにアクセスするためにDNSサーバーか/etc/hostsに追記しておく必要がある
windowsからアクセスしたい場合はC:\Windows\System32\drivers\etc\hostsに追記

※環境に合わせて変更

/etc/hosts
10.100.0.151 console-openshift-console.apps.okd-sno.example.com
10.100.0.151 oauth-openshift.apps.okd-sno.example.com

以下のコマンドでGUIのurlを表示

oc whoami --show-console
core@master0:~$ oc whoami --show-console
https://console-openshift-console.apps.okd-sno.example.com #←このurlにアクセス

2回ほど以下の警告が出るが、気にせず詳細設定から進む
image.png

ログイン画面が出たら

ユーザー名:kubeadmin
パスワード:先ほど生成したkubeadmin-passwordの中身
image.png
ログインすると以下のような画面が出る
4.20からGUIの画面が少し変わったらしい
image.png

さいごに

今回入れたOKDでoc admコマンド等も動くことが確認できたので、ある程度OpenShiftの練習はできると思われるが、Advanced Cluster Management for Kubernetes(ACM)やOpenshift Data Foundation(ODF)などはOCPの有償ライセンスに付属するOperatorのようなので、残念ながら入れられないそう。
どうやら、下記コマンドでOperator Hubの制限を解除すればRedHat提供のOperatorが使えるようになるらしい
ACMもODFも表示されました...

oc patch operatorhub cluster -p '{"spec": {"disableAllDefaultSources": false}}' --type=merge

今回はシングルノードクラスタ(SNO)の構築を行ったが、そのうちマルチノード構成も試してみようと思う。

参考

5
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?