コメントはまだありません前回まででNginxとphp-fpmをビルドしてGoogleのリポジトリにアップしました。Engine(GKE)のクラスタを作成します。A-tak-dot-comその前にDBとNFSサーバを作る今回、DB(MariaDB)とWordPressのファイルを置くNFSサーバーはコンテナではなく普通のVMとして立ち上げる想定にしています。作成方法は過去記事を参考にしてください。A-tak-dot-comこれを先につくっておかないとコンテナがNFSをマウントできなくてコンテナ起動に失敗するので先に用意しておく必要があります。クラスタを作成するクラスタを作成します。"10.212.0.0/14"[/bash]NginxとPHP-FPMぐらいしか起動しないのでdisk-sizeでディスクのサイズを20GBにしています。デフォルトだと100GBも確保するので勿体ないです。–projectは自分のプロジェクトに書き換えてください。クラスタの名前は「cluster-web3」にしています。あとマシンは「g1-small」を指定しています。推奨は「n1-standard-1」らしいのですが、とりあえず動いてはいますね。–cluster-ipv4-cidrはクラスタが作成するノードのIP範囲を指定するものです。あとでMariaDBの接続許可をするIP範囲を指定するときにここで指定した範囲を許可します。いえ最初は何を指定していいかわからないと思いますので、このオプション外してクラスタを立ち上げて、GCPのWebコンソールでネットワークのファイアウォールルールで「gke-cluster-web3-xxxxxx-all」(cluster-web3はクラスタの名前)を探してIPの範囲を確認してください。クラスタの作成は結構時間かかりますので、じっと待ちましょう。cluster-web3[/bash]このあとKubernetesを「kubectl」コマンドで操作するのですが、どのクラスタを操作するかをここで指定します。各種コンテナ操作をするためにkubectlをインストールしておく必要があります。kubectl[/bash]開始方法レプリケーションコントローラーを作るKubernetesはポッドという単位でコンテナを管理します。ポッドの中には複数のコンテナをセットできます。前回作ったNginxとphp-fpmのイメージを使ってそれぞれコンテナを作成し一つのポッドに入れることにします。ポッドですがレプリケーションコントローラーにセットすることで、ポッドのコピーを複数作ることが出来ます。オートスケールを設定すると負荷に合わせて自動的にポッドが増減します。単独でポッドを作ることもできますが、今回はnginxとphp-fpmのコンテナを含むポッドをレプリケーションコントローラーにセットしてみます。以下のyamlファイルを作ります。JSONでも指定できますが、yamlの方が見やすいです。ファイル名はweb.ymlとでもしましょう。"/var/contents"[/yaml]kindにはReplicationControllerを指定しています。Kubernetesの設定ファイルはkindで「何を作るか?」を指定するようになっています。apiVersionはv1で。KubernetesのAPIのバージョンのようです。metadata配下のnameはレプリケーションコントローラーの名前です。labelsはイマイチよくわかっていないのですが、セレクターという仕組みがあってここで指定した名前を使って一括設定したり出来るみたいです。spec配下はレプリケーションコントローラーの設定です。replicasはとりあえず一つで。あとでオートスケール設定するのでここの指定はあまり意味が無いかも。“web-rc03′′を指定していますが、あとでサービスを作成するときにこの名前を指定します。ここらへんイマイチ私もよくわかってない。template配下は作成するポッドのテンプレートです。volumesのところでnfsのマウントを設定しています。serverのところはnfsサーバーが動いているサーバ名を指定します。containers配下はポッドに含めるコンテナの設定です。imageに先にリポジトリにアップしたイメージのタグを指定しています。mountPathでコンテナが動いているノードのローカルディレクトリをコンテナにマウントしています。先のNFSの設定で/var/contentsはNFSサーバーにマウントされているので、結果nfsサーバーの内容をコンテナが読み書きできるようになります。NFSサーバーの接続許可NFSサーバの方にも接続許可が必要です。gke-cluster-web*.c.my-project999.internal(rw)[/bash]のような感じでクラスタのノード名で許可します。nfs-idmap[/bash]でサービス再起動して設定反映します。WordPressのコンテンツ配置nfsの/var/contents/a-tak.com/html配下にwordpressのコンテンツを配置します。MariaDBに接続許可追加mysqlコマンドでMariaDBに接続してクラスタのノードから接続許可します。IPはクラスタ作成時に指定したIP範囲にします。ここが最初わからなくてだいぶ苦労した。privileges;[/bash]やっとコンテナを作成するローカルマシンからkubectlコマンドでレプリケーションコントローラーを作成します。さっき作成したweb.ymlを使います。Dropboxのdockerの下にKubernetesフォルダ作ってyamlファイルを置くことにします。${dockerwork}/kubernetes/web.yml[/bash]これでコンテナが起動します。pod[/bash]このコマンドでポッドの作成状況がわかります。Runningになれば起動完了です。サービスを作って外部に公開するNginxをインターネットから見えるようにします。yamlファイルを作ります。"web-pods"[/yaml]初回はloadBalancerIPの行は消しておきましょう。以下コマンドでサービスを作成します。${dockerwork}/kubernetes/nginx-service.yml[/bash]GKEだとロードバランサーと連携させて簡単に各種ネットワーク設定も自動で行われます。GCPのWebコンソールでネットワークの外部IPをみると自動でIPが追加されロードバランサーと紐付けられます。外部IPが紐付けられるのには1分ほど時間がかかります。IPが表示されるのを確認してください。service[/bash]外部にさらすIPを固定化したい場合は、GCPのWebコンソールの外部IPアドレスで「エフェメラル」から「静的」に変えて、さきほどのloadBalancerIPの行を追加して、外部IPを指定します。PHP-FPMのWordPressサーバーが起動します。次回はオートスケールについて書いてみようかと思います。Apple野郎なおっさんでしたが、ちょっと最近のAppleには飽き気味。A-tak.comは2002年2月から運営(前身のサイトは1999年3月から)。コメントをキャンセルメールアドレスが公開されることはありません。*サイト上に表示された文字を入力してください。コメントデータの処理方法の詳細はこちらをご覧ください。このサイトの使用を継続することで、その使用に同意したとみなされます。コントロール方法を含む詳細についてはこちらをご覧ください。