2018年8月24日金曜日

Google Kubernetes Engine を試してみた

概要

GKE (Google Kubernetes Engine) は Google Cloud Platform 上で kubernetes 環境を構築することができるサービスです
過去に GCE というサービスを試しましたがそれが進化して GKE になりました

今回は公式のチュートリアルを試してみました
作業は GUI からではなくすべてコマンドで行います
なおこの作業は有料になるのでご注意ください

環境

  • Google Kubernetes Engine (2018/08/22 時点)
  • Google Cloud Shell (2018/08/22 時点)
  • Chrome 68.0.3440.106

事前準備

  • Google アカウントの取得
  • Google Cloud Platform でプロジェクトの作成
  • 作成したプロジェクトに支払い (クレカ) 情報を紐付ける

は事前に実施しておきましょう
GKE は有料のサービスになるのでプロジェクトに支払い情報がなければいけません

Google Cloud Shell を準備する

gcloud コマンドと kubectl コマンドを使います
ローカルにインストールしても OK ですがブラウザ情報でコマンドを実行することができる「Google Cloud Shell」を今回は使います

新しく Google Cloud Platform のダッシュボード画面を開きます
そして右上の「Active Cloud Shell」を選択すれば OK です
gke1.png

接続までに少し時間がかかるので完了するまで待ちましょう

gcloud コマンドの設定をする

使用するプロジェクトなどを指定します

  • プロジェクトの指定
    • gcloud config set project [project_id]

プロジェクトの設定の確認は gcloud config list で確認できます
Google Cloud Shell を使っていればすでにプロジェクトは作成されていると思います

  • デフォルトリージョンを設定
    • gcloud config set compute/zone asia-south1-b

設定可能なゾーンの一覧は gcloud compute zones list で確認できます
今回は asia-south1-b にしましたがお好きなところをお選びください

クラスタの作成

ではここからが本題になります
まずはクラスタを作成しましょう

  • gcloud container clusters create cluster1

cluster1 という名前のクラスタを作成しています

NAME      LOCATION       MASTER_VERSION  MASTER_IP       MACHINE_TYPE   NODE_VERSION  NUM_NODES  STATUS
cluster1  asia-south1-b  1.9.7-gke.5     35.200.224.251  n1-standard-1  1.9.7-gke.5   3          RUNNING

クラスタ作成されると自動的にコンテナ用のノードも追加されるようです
NUM_NODES が 3 になっていますが 3 台いきなり作成されるようです

ちなみに GUI で確認すると以下のような感じでした
gke2.png

  • gcloud container clusters list

でも確認できます
この時点ですでにお金が発生しているので注意してください

クラスタの認証情報を取得

  • gcloud container clusters get-credentials cluster1

これでクラスタに対して kubectrl コマンドアクセスできるようになります
このあとアプリのデプロイをするのに使います

Fetching cluster endpoint and auth data.
kubeconfig entry generated for cluster1.

.kube/config にファイルとして保存されています

サンプルアプリをデプロイする

hello-app というサンプルアプリがあるのでこれをデプロイします

Deployment を作成する

まずはアプリをデプロイします
デプロイしただけではアプリにアクセスすることができません

  • kubectl run hello-server --image gcr.io/google-samples/hello-app:1.0 --port 8080

イメージはすでに用意してあるサンプルを使用します

deployment "hello-server" created

この情報は GUI 上の「ワークロード」でも確認することができます
gke3.png

  • kubectl get deploy

でも確認できます

デプロイしたアプリを公開する

先程デプロイしたアプリをロードバランサにぶら下げて公開します

  • kubectl expose deployment hello-server --type "LoadBalancer"
service "hello-server" exposed

これでデプロイしたアプリにアクセスすることができます

動作確認

  • kubectl get service hello-server

でアクセスする IP を確認できます

NAME           TYPE           CLUSTER-IP     EXTERNAL-IP      PORT(S)          AGE
hello-server   LoadBalancer   10.51.240.23   35.200.200.238   8080:31668/TCP   6m

上記の場合であれば http://35.200.200.238:8080 にアクセスすればアプリを確認することができると思います

Hello, world!
Version: 1.0.0
Hostname: hello-server-579859fb5b-sttzx

上記のようなテキストが記載された画面が表示されると思います
これでチュートリアルは終了です

お掃除

このままだとお金が発生し続けてしまうのでリソースを削除しましょう

  • kubectl delete service hello-server
  • gcloud container clusters delete cluster1

Deployment は削除しないでもクラスタを削除できます
クラスタを削除するときは確認の旨が聞かれるので「y」を選択しましょう
これでリソースが削除されます

最後に

Google Kubernetes Engine のチュートリアルを試してみました
画面でポチポチするよりも Google Cloud Shell を使ったほうが簡単にできると思います
チュートリアル自体はかなり簡単な内容なので特に躓く点はないかなと思います
またこれをベースに istio のチュートリアルを行うことも可能です

クラスタ内に生成されるインスタンスが n1-standard-1 というサイズのインスタンスで 3 台作成されたのですが GCE には更に格安な f1-micro というインスタンスがあります
今回は試してないですが、もしこれでクラスタを構築できるならこれの方が安く済むと思います

ちなみに今回のチュートリアルでかかった料金は $0.1 でした (請求金額が翌日にならないとわかりません)
gke4.png

参考サイト

0 件のコメント:

コメントを投稿