エンジニア 技術 資格取得

kindでKubernetesクラスタをより実践向きなnginx環境にする

広告

前回解説したkindをより実践的なk8sクラスタとして構築したいと思います。

前回やったkindのインストールと1ノード(コンテナ)クラスタの構築だけでは「だから何なの?」という感じだと思います。

今回の構築で「実践環境での操作に慣れられる」「CKAの勉強に役立てられる」

そういった環境構築を目指していきましょう。

構築イメージ

構築する環境イメージは以下の通りです。

  • ノード(コンテナ)は3台
    • control-planeが1台
    • workerが2台
  • deploymentでpodを管理
    • podはnginx
    • nginxのコンフィグはConfigMapで渡す

構築方法

構築の流れは以下の通りです。

  1. クラスタノード(コンテナ)の構築
  2. ConfigMapの作成
  3. deploymentの作成
  4. serviceの作成

クラスタノード(コンテナ)の構築

今回構築するクラスタ用に作成したtest-cluster.yamlは以下の通りです。

role: workerには外部公開用のportを設定しておきます。hostPortは重複しないように、ずらしました。

では構築コマンドを実行します。

マシンスペックによっては数分かかりますが、構築が完了します。完了後、前回同様にノード(コンテナ)を確認してみましょう。

コンテナとクラスタノードが同じ数、同じ名前で構築されていることがわかりますね。

ConfigMapの作成

続いて、nginxのpodに読み込ませるConfigMapを作成しておきます。

今回はnginxにアクセスした際にpod名、node名がわかるようにしたかったので、その部分は変数化しました。

上記でConfigMapのnginx-configを作成できます。

nginxのコンフィグ設定については別記事も参考にしてみてください。

deploymentの作成

deploymentは以下のyamlで作成しました。

ConfigMapを持たせることや、環境変数を設定しenvsubstコマンドを実行してConfigMapに埋め込めるようにしています。

serviceの作成

deploymentを構築しただけではpodにアクセスできません。serviceを構築します。

serviceを構築することにより、今回のアクセスは以下の具合になります。

通信の流れは以下の通りです。

  1. ユーザーはlocalhost:8080またはlocalhost:8090へアクセス
  2. ポート番号ごとにいずれかのworkerノード(コンテナ)にアクセス
  3. いずれのwokerノード(コンテナ)もServiceの80ポートにアクセス
  4. Serviceがランダムにいずれかのpodにアクセス

よってlocalhost:8080localhost:8090のいずれかにアクセスしても、アクセスするpodを指定できるわけではありません。

curl http://localhost:8080を何度か連打して、表示を確認してみてください。
ランダムでどちらかのpod, workerノードにアクセスできていることがわかります。

今回のように実践的なクラスタを構築できると、本番環境でのイメージが湧きやすくなります。またCKAやCKADの試験対策としても非常に有効なので、ぜひご自身の環境で試してみてください。

-エンジニア, 技術, 資格取得
-, ,