2020.04.22
tel 一般

Windowsでk8sを使った構築を考えてみた

前回は開発用のLAMP環境の構築をしてみた、というお話でした。

おかげさまで、ローカルで単純なLAMP環境構築ができるようになったので、複雑ではないアプリについては気軽に環境を立てたり、案件ごとに環境を切り替えたりできるようになりました。

今回は、もうちょっと複雑な環境を1台のマシン上で構築しようと思います。……が、隙間時間に少しずつ進めているので、実はまだすべての環境が構築できていません。
本当はある程度 yml とかも載せたかったのですが、整理が全然できていないため yml はなしです。
そこで今回は

  • やりたいこと
  • 環境のイメージ
  • 今どこまで構築したのか
  • 現状の問題点

あたりを書いていこうと思います。

やりたいこと

大目標としては「k8sで複数サービスを連携したシステムの構築」です。

  • 外部サービス・サイトに対して、API呼び出しやスクレイピングによってデータを取得し
  • データを溜め込み
  • 見やすく表示する
  • ついでにアプリのログやデータベースのログについても確認しやすくする
  • ソースコードやデータベースの更新もなるべく自動で行いたい
  • ミドルウェアのバージョンアップなどもローリングアップデートしたい

といった感じで、普通に作るとサーバ10台とかになるような構成をk8s上で構築することを目指しています。

環境のイメージ

環境のイメージとしては

  • データを取得するcronjobで動作させるバッチPod(データ取得対象となるサービス分)
  • データを溜め込むMySQLコンテナ
  • データ表示のための Redash + postgres Pod
  • ログを溜め込み、表示するための ElasticSearch + Kibana Pod
  • CU/CDを実現するための仕組み

というようなPodが、(出来れば)複数台動作するのが理想です。

今どこまで構築したのか

と、ここまで理想を語ったものの、現時点では

  • データを取得するcronjobで動作させるバッチPod(1台)
  • データを溜め込むMySQLコンテナ
  • ログを溜め込み、表示するための ElasticSearch + Kibana Pod

といったあたりまでしか作成できていません。
一応、MariaDBコンテナは reader と writer の2台が稼働し、データ同期も行われている状態にはなっていますし、バッチpodのログはfluentdを介してelasticsearchに送られ、kibana経由で検索できる状態のPodになっています。
ただ、MySQL側のログはまだ飛ばしていませんし、ログフォーマットなどの調整もまだです。(ログフォーマットは環境の大枠ができてからでも調整が効くので後回し)

現状の問題点

単純に作業時間が取れていないために進んでいない部分も多いのですが

  • Postgresコンテナのデータ保存先をWindows上に永続的に残すのができてない
  • そもそもWindowsマシンのメモリが足りなくなってきた

といった問題にぶち当たっています。
特にメモリに関しては、結構な数のコンテナを起動する関係上、きちんと割り振るメモリを節約して設定しておかないとそもそもメモリ不足で起動しないといった形に……。
また、Postgresの保存先についてはDockerのVolumeとかループバックデバイスを使って解決、みたいのはあるのですが、折角なので普通にwindowsからもファイルが見れる状態にしたいというか、実は何度かDocker for Windows の再インストールをしたり設定変更をやっているため、特にPVCの設定が落ち着いていません。

前回から結構な時間が経っている割にはあまり進んでいないのが残念なのですが、そもそもメモリの問題や、WindowsだとPostgresが永続化しにくい問題あたりを考えると、そろそろwindows1台で試すのに限界が来ているのかもしれません……

tel

一覧に戻る