Kubernetesのセットアップで挫折しないでください
バニラのKubernetes (K8s) クラスターをゼロから構築するのは、バラバラの部品から自分で車を組み立てるようなものです。苦労は多いですが、達成感はあります。しかし、CNI、Storage Class、Ingress Controllerの設定に頭を悩ませることなく、エンタープライズアプリケーションの開発に集中したいのであれば、OpenShiftは価値のある近道となります。企業環境においてOpenShiftはセキュリティのゴールドスタンダードですが、一方でサーバーリソースを非常に多く消費します。
Red Hat OpenShift Local(旧称CRC)は、この問題を解決するために誕生しました。OpenShiftの全機能を1つの仮想マシン(VM)にパッケージ化し、個人のPC上で実行できるようにしたものです。高価なProxmoxやクラウドを利用する代わりに、Linux上で直接CRCをインストールすることでKVM/QEMUを活用でき、遅延を抑えて処理パフォーマンスを大幅に向上させることができます。
OpenShift Local: それは一体何か?
簡単に言えば、これは超最小構成のOpenShiftクラスター(シングルノード)です。冗長性(高可用性)がないため、本番環境での使用は推奨されません。逆に、OperatorのテストやCloud-nativeアプリケーションの試作デプロイには、これ以上ない完璧なシミュレーション環境となります。
CRCの仕組みは「Bundle」と呼ばれる仮想マシンのフレームワークに基づいています。起動時に、システムはRed Hat Enterprise Linux CoreOS (RHCOS) を実行するVMを作成します。その中には、API Server、Etcd、管理用Operatorなどのコアコンポーネントがすべて事前に設定されており、すぐに動作するようになっています。
システム要件(無理は禁物です!)
OpenShiftは文字通り「RAMを食い尽くすモンスター」です。8GB RAMのマシンで無理に動かそうとすると、クラスターのヘルスチェックが始まった瞬間にシステムがフリーズします。私の実戦経験に基づくと、ストレスなく動作させるための構成は以下の通りです:
- CPU: 最低4コア。スムーズにイメージをビルドしたい場合は、8コアを優先してください。
- RAM: 起動には最低9GB必要ですが、フリーズを避けるためには16GBを確保することをお勧めします。
- Disk: 35GBのSSD。HDDは使わないでください。クラスターがReady状態になるのを待つだけで1時間以上かかることになります。
- OS: Fedora、Ubuntu、RHELなどの主要なLinuxディストリウルーション。
詳細な構築手順
1. バイナリのダウンロードとPull Secretの準備
まず、無料のRed Hatアカウントを登録してください。Hybrid Cloud Consoleにアクセスしてバイナリファイルをダウンロードし、最も重要な Pull Secret を取得する必要があります。このコードがないと、クラスターはRed Hatのリポジトリからシステムイメージをプルできず、インストールは即座に失敗します。
# バイナリを展開してシステムディレクトリに移動
tar xvf crc-linux-amd64.tar.xz
sudo cp crc-linux-*-amd64/crc /usr/local/bin/
2. システム環境のセットアップ
命令 crc setup は、KVMやlibvirtなどの依存コンポーネントを自動的にチェックします。また、VMがLinuxホストマシンと通信できるようにネットワークブリッジも設定します。
crc setup
権限エラーが発生した場合は、以下のコマンドでユーザーをlibvirtグループに追加してください:
sudo usermod -aG libvirt $USER
newgrp libvirt
3. リソース設定と起動
デフォルト設定で急いで起動しないでください。Service MeshやServerlessなどのサービスを追加でデプロイする際にクラスターが「息切れ」するのを防ぐため、最初から RAMとCPUを増やしておくことをお勧めします。
# VMに16GBのRAMと6つのCPUを割り当て
crc config set memory 16384
crc config set cpus 6
# 起動し、要求されたらPull Secretを貼り付け
crc start
注意:このプロセスでは約10〜12GBのBundleがダウンロードされるため、安定したインターネット接続を確認してください。
4. 管理コンソールへのアクセス
10〜15分後、システムから developer と kubeadmin のアカウント情報が表示されます。コマンドラインを使用するには、ターミナルに環境変数を読み込む必要があります:
eval $(crc oc-env)
oc login -u kubeadmin -p <password> https://api.crc.testing:6443
グラフィカルインターフェースを体験したいですか?その場合は次のコマンドを入力するだけです: crc console
OpenShift Localを使いこなすための実戦テクニック
正しいシャットダウン方法
OpenShiftはEtcdを通じてデータ状態を厳密に管理しています。突然のシャットダウンはクラスターのデータベースを破損させる恐れがあります。PCの電源を切る前やLinuxサーバーをシャットダウンする前には、必ず crc stop を実行してください。
厄介なDNSエラーの解決
もし .testing ドメインにアクセスできない場合、NetworkManagerとsystemd-resolvedの競合が原因である可能性が高いです。最も手っ取り早い解決策は、 /etc/resolv.conf ファイルを確認するか、 crc cleanup を実行してから crc setup を最初からやり直すことです。
ストレージ容量の拡張
デフォルトの35GBは、イメージビルドを数回行うとすぐに一杯になります。長期的に試行錯誤する予定がある場合は、仮想ディスクの容量を少なくとも100GBに増やしておくべきです:
crc config set disk-size 100
結びに
Linux上でのOpenShift Localの構築は、エンタープライズKubernetes標準に触れるための最も安価で迅速な方法です。ハードウェア要件はやや厳しいですが、その分、DatabaseやKafkaを数分でインストールできる強力なOperatorHubエコシステムを手に入れることができます。DNSエラーやKVMの設定で困ったことがあれば、ぜひ下のコメント欄で教えてください!

