公式チュートリアル
概要
1つめのチュートリアルのを試した際の記録
パラメータいじった結果や、補足、チュートリアルに載っていない実行結果を残す
ステップ 4: コンテナ クラスタを作成する
3ノードクラスタを組んでいるけど、2ノード(2個の仮想マシンインスタンス)にしてみた。
1
|
> gcloud container clusters create hello-cluster --num-nodes=2
|
確認コマンド
1
2
3
4
|
> gcloud compute instances list
NAME ZONE MACHINE_TYPE PREEMPTIBLE INTERNAL_IP EXTERNAL_IP STATUS
gke-hello-cluster-default-pool-511b5600-5064 asia-northeast1-a n1-standard-1 10.146.0.2 35.243.121.74 RUNNING
gke-hello-cluster-default-pool-511b5600-pnq3 asia-northeast1-a n1-standard-1 10.146.0.3 34.85.81.14 RUNNING
|
ステップ 5: アプリケーションをデプロイする
チュートリアルに実行結果が載っていないのでメモ
メッセージが長かったので失敗したのかと思った
1
2
3
|
> kubectl run hello-web --image=asia.gcr.io/gke-study-999999/hello-app:v1 --port 8080
kubectl run --generator=deployment/apps.v1 is DEPRECATED and will be removed in a future version. Use kubectl run --generator=run-pod/v1 or kubectl create instead.
deployment.apps/hello-web created
|
ステップ 6: アプリケーションをインターネットに公開する
Hello, world! と表示され世界に公開されている

ステップ 7: アプリケーションをスケールアップする
コンテナの凄いところはここだなと実感した、スケールアップするのがなまら早い!
コンテナ1個だったところから、3個にスケールアップマンド実行
1
2
|
> kubectl scale deployment hello-web --replicas=3
deployment.extensions/hello-web scaled
|
スケールアップコマンド打った直後にpod内のコンテナ確認
1
2
3
4
5
|
> kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-web-65848d764f-hv6hk 1/1 Running 0 6s # 今増えた!!
hello-web-65848d764f-p6b7d 1/1 Running 0 6s # 〃
hello-web-65848d764f-pn92n 1/1 Running 0 18m # 最初からの
|
ステップ 8: アプリの新しいバージョンをデプロイする
(または、イメージを作成する前に “Hello, World!” という文字列を
“Hello, Kubernetes Engine!” に変更できます)。
チュートリアルでは説明だけで終わっているので実際に変更してみた。
1
2
3
4
5
6
7
8
9
|
// hello responds to the request with a plain-text "Hello, world" message.
func hello(w http.ResponseWriter, r *http.Request) {
log.Printf("Serving request: %s", r.URL.Path)
host, _ := os.Hostname()
// World! -> Kubernetes! に変更
fmt.Fprintf(w, "Hell, Kubernetes!\n")
fmt.Fprintf(w, "Version: 1.0.0\n")
fmt.Fprintf(w, "Hostname: %s\n", host)
}
|
次に、イメージ更新で既存のデプロイにローリング更新を適用します。
適用するコマンドを実行
1
|
kubectl set image deployment/hello-web hello-web=asia.gcr.io/gke-study-999999/hello-app:v2
|
確認するコマンド
気づいたら時には新しいコンテナに全部入れ替わっていた、早い!!
NAMEが前と違う
1
2
3
4
5
|
> kubectl get pods
NAME READY STATUS RESTARTS AGE
hello-web-78578f7f46-8krbz 1/1 Running 0 98s
hello-web-78578f7f46-cbglg 1/1 Running 0 94s
hello-web-78578f7f46-nm4gk 1/1 Running 0 95s
|
ブラウザを更新すると、Hello, Kubernetes! に変更されていた
もちろんホスト名も変わっている

クリーンアップ
次のコマンドの出力を監視して、ロードバランサが削除されるまで待ちます。
この表示がでればOK
1
2
|
> gcloud compute forwarding-rules list
Listed 0 items.
|
自由研究
チュートリアルのクラスタ作成のコマンド
1
|
> gcloud container clusters create hello-cluster --num-nodes=2
|
その結果、作られたクラスタをダッシュボードから確認

gcloud container clusters createのドキュメント
を確認して、オプションをつけてみる
- ノードのバージョンのオプション指定
最新を使ってみる
--cluster-version "latest"
- ノードイメージのオプション指定
デフォルトのCOS(Container-Optimized OS)が適切な感じがする
明示的に指定してみる
ノードイメージのドキュメント
--image-type "COS"
- マシンタイプのオプション指定
デフォルトがn1-standard-1だったので、
ランクを下げてみる
--machine-type "g1-small"
- ブートディスクのオプション指定
デフォルトがpd-standardで、pd-ssdも指定できる
SSDに変更してみる
--disk-type "pd-ssd"
- ノードあたりのブートディスクサイズのオプション指定
ノードの仮想マシンの起動ディスクのデフォルト容量が100GB
50GBにしてみる
--disk-size "50"
メモ
ノードバージョン、ノードイメージの使える値の確認コマンド
1
2
3
4
5
6
7
8
9
10
11
12
|
> gcloud container get-server-config
Fetching server config for asia-northeast1-a
defaultClusterVersion: 1.12.8-gke.6
defaultImageType: COS
validImageTypes:
- COS
- UBUNTU
- COS_CONTAINERD # COSのベータ版
validMasterVersions:
- 1.13.6-gke.6 # latestがこれにあたる
- 1.13.6-gke.5
略
|
マシーンタイプの確認コマンド
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
> gcloud compute machine-types list --filter="zone:( asia-northeast1-a )"
NAME ZONE CPUS MEMORY_GB DEPRECATED
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-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
n1-ultramem-160 asia-northeast1-a 160 3844.00
n1-ultramem-40 asia-northeast1-a 40 961.00
n1-ultramem-80 asia-northeast1-a 80 1922.00
|
オプション付けてクラスタ作成
1
|
> gcloud container clusters create custom-cluster --cluster-version "latest" --image-type "COS" --machine-type "g1-small" --disk-type "pd-ssd" --disk-size "50" --num-nodes=2
|

無事、完成した。クリーンアップする。
クラスタしか作成していないので下記のコマンドで一発削除
1
|
> gcloud container clusters delete custom-cluster
|
感想
GCRの使い方も含めて勉強になるチュートリアル。
前回やったハンズオン
よりコンテナが動く基盤の部分が理解しやすかった。
ただ、クラスタのオプションに関しては前回のハンズオンがとても役に立ちました。
クラスタ作成はオプション試して意味を調べた分、クラスタ部分の理解が深まった。