2018/12/27

GKEをつかってKubernetesの片鱗に触れてみましたʕ◔ϖ◔ʔ

GKEを使います


2018年の夏頃にやっとDockerを使い始め、データの永続化などマイクロサービスへのDocker利用を進めてきました。今ではすっかりコンテナ無しでは生きられない体です。

個々のマイクロサービスをコンテナで簡単にデプロイできるようになると、今度はコンテナ群をもっといい感じに管理、運用したいという欲求が出てきました。今こそKubernetesを学ぶ時です。

前回に引き続きGCPを活用します。GKEの利用を通じて、まずはKubernetesに触れたいと思います。



レッツチュートリアル


チュートリアル「クイックスタート | Kubernetes Engine のドキュメント Google Cloud」を実践しますʕ◔ϖ◔ʔ

クラスタを作る

さぁクラスタを作りましょう。

コンテナ クラスタの作成 Kubernetes Engine Google Cloud」を適宜参照します。まずリージョンとゾーンに気をつけてコンピュートゾーンを確認します。次にクラスタ作成時に指定できるマシンタイプについても確認しましょう。

今回私は、東京のコンピュートゾーンであるasia-northeast1-aを選択しました。使用可能なマシンタイプは以下で調べることができます。
gcloud compute machine-types list | grep asia-northeast1-a

2018/12/25 現在では以下の結果となりました。
f1-micro         asia-northeast1-a          1     0.60
g1-small         asia-northeast1-a          1     1.70
n1-highcpu-16    asia-northeast1-a          16    14.40
n1-highcpu-2     asia-northeast1-a          2     1.80
n1-highcpu-32    asia-northeast1-a          32    28.80
n1-highcpu-4     asia-northeast1-a          4     3.60
n1-highcpu-64    asia-northeast1-a          64    57.60
n1-highcpu-8     asia-northeast1-a          8     7.20
n1-highcpu-96    asia-northeast1-a          96    86.40
n1-highmem-16    asia-northeast1-a          16    104.00
n1-highmem-2     asia-northeast1-a          2     13.00
n1-highmem-32    asia-northeast1-a          32    208.00
n1-highmem-4     asia-northeast1-a          4     26.00
n1-highmem-64    asia-northeast1-a          64    416.00
n1-highmem-8     asia-northeast1-a          8     52.00
n1-highmem-96    asia-northeast1-a          96    624.00
n1-standard-1    asia-northeast1-a          1     3.75
n1-standard-16   asia-northeast1-a          16    60.00
n1-standard-2    asia-northeast1-a          2     7.50
n1-standard-32   asia-northeast1-a          32    120.00
n1-standard-4    asia-northeast1-a          4     15.00
n1-standard-64   asia-northeast1-a          64    240.00
n1-standard-8    asia-northeast1-a          8     30.00
n1-standard-96   asia-northeast1-a          96    360.00

ちょっと控えめな感じにg1-smallを使って、my-cluster-1という名称の最初のクラスタを作ります。
gcloud container clusters create my-cluster-1 --machine-type=g1-small

GCPのKubernetes Engineページで確認すると下図のようになっています。

認証情報の取得

以下の操作でkubeconfigファイルにクラスタの認証情報が追加されるそうです。
gcloud config set container/cluster my-cluster-1
gcloud container clusters get-credentials my-cluster-1

さらに、以下を実行するとブラウザが開くのでGCPアカウントでログインすると、認証情報が生成されます。詳しくはこちらを参照ください。
gcloud auth application-default login

デプロイ

お待ちかねのデプロイです。チュートリアルにある通りサンプルを使います。
kubectl run hello-server --image gcr.io/google-samples/hello-app:1.0 --port 8080

GKEのページで確認するとこんな感じ。

今回はワークロードタイプが「ステートレス アプリケーション」の場合のデプロイ方法を実行しています。その他のタイプについては「ワークロードのデプロイの概要」をご覧ください。

公開

作ったからにはインターネットに公開しましょう。
kubectl expose deployment hello-server --type "LoadBalancer"

外部サービスやブラウザからアクセス可能なIPアドレスが割り当てられます。確認してみましょう。
ʕ◔ϖ◔ʔ >  kubectl get service hello-server
NAME           TYPE           CLUSTER-IP      EXTERNAL-IP    PORT(S)          AGE
hello-server   LoadBalancer   10.31.254.101   xx.xxx.xx.xx   8080:31508/TCP   2m
ふむふむ割り当てられましたね(便宜上、External-IPは伏せ字にしました

ブラウザ上のGCPコンソールからも確認してみましょう。

では、このIPアドレスを使ってブラウザからサービスを利用してみます。
いいですね。自分がデプロイしたサービスが公開できました。素晴らしい!(*´ω`*)

後片付け

チュートリアルの確認ができたので、削除の練習も兼ねて後片付けをしましょう。
kubectl delete service hello-server
gcloud container clusters delete my-cluster-1
はい、きれいに消せました。

まとめ


簡単にですがGKEを触ってみることができました。いいですね、デプロイも公開も本当に簡単で感動です(*´ω`*)

しかし、まだまだKubernetesのことについて理解が不十分ですので、次は自作のコンテナイメージを使ったりレプリケーションを駆使した操作などに取り組んでみたいと思います。

0 件のコメント: