2019年2月4日月曜日

GKEのおさらいと料金アラート通知設定

■GKEのおさらい

模擬試験でてんで駄目だった部分や、ドキュメント読んでるだけではなかなか実感がわかなかった部分のおさらいを兼ねて

KubernetesEngineのクイックスタートをやってみる。

ガワをつくるだけなら本でやったのでせっかくだからSDKをローカルのPCにインストールしてそこでコマンドプロンプトから実行してみる事にした。
書いてある通りにやるだけなので勉強にはならないかと思ったけど、意外とやると勉強になるかもしれない。模擬試験で適当にやってしまった部分が理解出来たので良かった。

コマンド/説明

gcloud config set project [PROJECT_ID]gcloud config set project >_<デフォルトプロジェクトの指定
gcloud config set compute/zone [COMPUTE_ZONE]gcloud config set compute/zone asia-east1-aゾーンの設定。
gcloud container clusters create [CLUSTER_NAME]gcloud container clusters create gkecluster
ゾーンの設定が間違っているとエラーになる。
kubernetesが作成できるリージョンとゾーンの名称が違った。GUIで作成していれば間違った組み合わせにはならない。
作成が完了すると↓のメッセージが出力
NAME LOCATION MASTER_VERSION MASTER_IP MACHINE_TYPE NODE_VERSION NUM_NODES STATUS
gkecluster asia-east1-a 1.11.6-gke.2 35.185.141.127 n1-standard-1 1.11.6-gke.2 3 RUNNING
gcloud container clusters get-credentials [CLUSTER_NAME]gcloud container clusters get-credentials gkecluster認証情報を取得
gcloud components install kubectlkubectlコマンドが効くようになる
kubectl run hello-server --image gcr.io/google-samples/hello-app:1.0 --port 8080サンプルアプリを起動する
kubectl expose deployment hello-server --type "LoadBalancer"サンプルアプリを公開する
kubectl get service hello-server外部IPなどの情報を取得する(EXTERNAL-IPの部分)

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
hello-server LoadBalancer >_< >_< 8080:31619/TCP 1m
http://[EXTERNAL_IP]:8080ブラウザで実際に見てみる
Hello worldという文字列が表示されていればOK
kubectl delete service hello-server
gcloud container clusters delete [CLUSTER_NAME]
gcloud container clusters delete gkecluster
課金されちゃうので、止めて消す。


実際にクバちゃんのクラスタ作成する前に打ったgcloud configのコマンドでデフォルト設定を指定している。模擬試験でも出てたね!
本見ながらGUIで操作して作る時には躓かなかった所で躓いたりしてるのが面白い。
ゾーン設定が間違っていたのでcreateコマンドがエラーになった。
ゾーンでは無くリージョンの名称を調べて入れていたのだけど、そのconfig setコマンドはエラーにならなかったのにcreateの段になってからエラーになった。

デフォルト設定を指定する時は”gcloud”クバちゃんを操作する時は"kubectl"で!
模擬試験のフィードバックにもそんな説明があったね。

■料金通知設定

とまあ、これだけだと何なので予算のアラート設定を仕込んでみる。
特にドキュメントも読まずに適当にGCPのコンソールから[お支払い]-[予算とアラート]画面を開いて予算の作成を選ぶ。
そこで通知先のアカウントを選べるのでIAM設定で新しいユーザーで適当なフリーアドレスでユーザーを作成してみようと思ったのだけれど、gmailじゃないと駄目なのね。
仕方ないので今の自分のアカウントにさらにKubernetesEngine管理者とプロジェクトの支払い管理者という役割を追加。

で、また予算画面に戻り請求先アカウントを指定。
で、下の方に通知の管理なるものがあったのでそれにチェックを入れてみるけれどPub/Subに接続してトピックを作成しないと使えませんと警告が出た。

★pub/subとは
ストリーム分析パイプラインの基盤となるスケーラブルで耐久性のあるイベント取り込み・配信システム 別々に開発されたアプリケーションの間で安全かつ高可用な通信を実現します

よくわからん。
模擬試験では何かのサービスとサービスの間にこんなGCPのサービスがあった気がする。
GCPのサービスを覚えないといけないのでドキュメントを読んでいるのだけれど、アプリケーションがあって、後ろにデータベースやデータ分析用のサービスがあって場合によってはGCEのインスタンスなんかがある図がちょろちょろ出てくる。その合間にデータ分析サービスとしてpub/subがいる。
料金のアラート通知も確かにデータ分析の分類か。なるほど。
”お支払い"の機能もGCPのサービスなのでkubernetes-pub/sub-お支払いという接続なのかしらん?


少なくとも上の一連のコマンドの実行時にデフォルト設定でクラスタを作成しているので
asia-east1-aに三つのインスタンスが作成されてインスタンスグループになり、ロードバランサの設定もされて100GBのディスク三つを使用している。
正確には何と何を結んでいるんだろう。

とりあえずメッセージ通りにトピックを作成するだけでいいようだ。
プロジェクト名/topic/は固定されてて名前つけるだけ。
で、また予算画面でチェックいれて終了。
最初から100%オーバーしている状態で設定した場合でも超過メッセージが来るのかテスト。


おお、凄い。ちゃんと来た。
一年間、もしくは300ドル分は使えるのでまだまだ大丈夫だけど今日はもうクラスタ停止させて寝よう。
この前三日間消さずに放置してた分の請求内訳みたら250円くらいかかってた。
CPU使用率0%でもちゃんと費用は掛かる!

このGCPとか他のクラウドサービスのDBとか機械学習の従量課金制の仕組みって、バグとか凄いアタックで処理量が増えた場合でも普通に請求されちゃうんだよね?

大企業の場合、料金計算ってどうしてるんだろう。
予算編成とか大変だろうに。想定外になったからってサービス停止なんか出来ないよね。

0 件のコメント:

コメントを投稿