Google Container Engine(GKE)上でngnixのコンテナを立ち上げるまでの手順です。(2016/10現在)
コンテナ クラスタの起動
GCPにログインして、nginxのコンテナを実行させるコンテナ クラスタを起動します。
- 「コンテナ クラスタを作成」を選択
- クラスタの各種パラメータを設定。今回は何も変更せずデフォルト値を利用しています。
- 起動完了。下の図のようになれば、クラスタが起動は完了です。
Google Cloud Shellの起動
Google Cloud ShellにはGoogle Cloud SDK、Docker、kubectl等、コンテナを操作する上で必要なツールがデフォルトでインストールされているので、これを利用します。
- コンソールの右上のGoogle Cloud Shellのアイコンを選択
起動が完了すると画面下部にコンソールが表示されるので、ここで作業を行っていきます。
環境設定
早速作業に入って行きたいところですが、作業に入る前にGoogle Cloud Shellからkubectlのコマンドを操作できるように、下記コマンドを実行して設定を行います。
下記コマンドを実行すると認証情報が取得でき、kubectlを利用してコンテナ クラスタ上にコンテナを用意できるようになります。
gcloud container clusters get-credentials cluster-1 --zone us-central1-b
Replication Controllerの起動
今までの作業で準備が終わったので、まずはnginxのPodを立ち上げます。
Podだけでもいいのですが、今回はReplication Controllerも起動してPodを監視させるようにしています。
・YAMLファイル作成
apiVersion: v1
kind: ReplicationController
metadata:
name: frontend
spec:
replicas: 3
selector:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx-container
image: nginx
ports:
- containerPort: 80
・Replication Controller作成
Google Cloud Shell上で上記YAMLファイルを元に、Replication Controllerを作成します。
Replication Controllerを作成すると、監視対象であるnginxのコンテナを含んだPodが自動で起動されるので、別途Podを起動する必要はありません。
kubectl create -f nginx-rc.yaml
Serviceの作成
Replication Conrollerを起動したことにより、Podおよびnginxのコンテナも起動しましたが、そのままではまだ外部からアクセスすることはできません。
その為、外部からの接続を各Podにルーティングする役割をもったServiceを立ち上げます。
・YAMLファイル作成
apiVersion: v1
kind: Service
metadata:
name: frontend
spec:
ports:
- port: 80
targetPort: 80
selector:
app: nginx
type: LoadBalancer
・Service作成
YAMLファイルを元にServiceを作成します。
kubectl create -f nginx-service.yaml
・外部接続用IPの確認
Serviceが起動するとnginxにアクセスできるようになります。
接続する為のIPは、下記コマンドを実行した時に表示される「EXTERNAL-IP」欄に記載されているIPです。
>> kubectl get service
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
frontend 10.3.244.85 130.211.148.1 80/TCP 2m
試しにブラウザから「130.211.148.1」で接続すると、nginxの画面が表示されるかと思います。
最後に
GKEを利用することによって、比較的簡単にkubernetes上にコンテナを配置することができました。
一番上の画像にある「クイックスタートを使用」を利用すると、チュートリアルに沿って操作するだけでサンプルアプリケーションをGKEに構築することができるので、初めての方はそちらもオススメです。