このブログをGoogle Container Engine(GKE)に移行しました。今日は時間も時間なので軽く紹介程度を書いて、次回以降細かい構築手順などを書いていこうかと思いまする
Google Container Engineとは
Google Container Engine(GKE)は、Google Cloud Platform上で動作するコンテナ仮想環境とそのオーケストレーションツールで構成されています。ちなみになんで「GKE」かというと、「GCE」だとGoogle Compute Engineと被っちゃうからなんですね。
コンテナ仮想化については過去にこんな記事を書きました。
コンテナ仮想化の何が良いかわからない人集まれ! | A-tak-dot-com
Dockerを使えばコンテナ仮想化は出来るのですが、複数のコンテナを組み合わせて使おうと思うと、結構面倒だったりします。結局、長々とコマンド打ったりしてコンテナとコンテナをつなげたりしてる。せっかく環境構築はDockerfileでテキスト化出来ているのに、そこはコマンドなのかと(Docker Composeというのもありますが…)。
Google Container Engineは複数のコンテナを簡単に管理するKubernetes(くーばねいてぃす)というツール(オーケストレーションとか言われている)が使われていて、複数のコンテナを扱いやすくしています。
このKubernetesをいざ自分で構築しようとすると、結構面倒で高度な知識が必要とされるのですが、GKEならばコマンド一発で面倒な初期設定もなく使える状態になります。これだけでもかなり楽です。
しかし概念が難しい
このブログを移行した今となってはだいたいわかってきましたが、Kubernetesにはいろんな新たな概念があって難しい!
PodやらServiceやら、VM(ノード)もわざわざMinion(ミニオン)とか呼ぶし。あとラベルがイマイチ使い方がわかってない。とりあえず動いていますが、使い方を整理したいところ。
ちなみに「たすくま」のログによると1月10日頃から挑戦して2月末までかかっているので1ヶ月半はかかった。時間にすると31時間かかってるみたい。
やったこと
コンテナ仮想化移行前の構成はコレです↓
お名前.com VPSからGoogle Compute Engineにサーバー移行した その2 | A-tak-dot-com
Google Compute Engine(GCP)のHTTP負荷分散とインスタンスグループの負荷分散を使って、Webサーバーをオートスケールさせて、裏でNFSサーバーとDBサーバーを立ち上げてる、という構成です。
これを今回こうしました↓
NFSとDBサーバーをコンテナ仮想化するのは、ちょっと面倒だなと思ったので、それは通常のVMのまま。Webサーバーをコンテナ仮想化しました。
コンテナ自体はVMでWebサーバー構築するときに、しっかりコマンドレベルで手順を控えていたからDockerfile作るのは、だいぶ楽だった…とは言えども最初は慣れなくてだいぶ手間取ったのでこのあたりも後でまとめて書く。
KubernetesはPodという単位でコンテナを管理していて、Podの中には複数のコンテナが配置出来ます。Pod内のコンテナは同一のノード(VM)に配置されIPも同じになる。お互いのプロセスも見えるらしい。
うちはNginx + PHP-FPMという構成でNginxにはPHP-FPMのIPアドレスを設定する必要があるけど、同じPodなので「localhost」指定で簡単に繋がった。このあたりは詳細な構築手順を次回書こうと思います。
NFSサーバーにWordPressのコンテンツを置いているのだけど、これはPodの設定で直接NFSをマウントできたので思いの外簡単だった。MariaDB(MySQL)がやや手こずって、VMの時はホスト名で接続許可できたけど、今回はクラスタ作成時に指定するIP範囲を許可することで接続できるようになった。
Kubernetesの「Service」を使って外部から接続できるようにするというところもわかるまでは難しかった。GCPのロードバランサと連動して自動で外部からのアクセスを許可してくれるあたりの動きが理解できてからは、だいぶわかるようになってきた。
次回以降実際の構築について書いてみます。
Google Container Engineに移行した その2 | A-tak-dot-com