gcp ja night #31 での発表資料です。
http://gcpja.connpass.com/event/23874/
[補足記事]
http://qiita.com/na_ga/items/d89b320ba098a0941043
http://qiita.com/na_ga/items/7c3cc3f52dd4068fd319
GKE の用語
• Pod
• コンテナのグループ
• 1コンテナ以上で作成
• Replication Controller (RC)
• Pod のレプリカ管理
• 管理下の Pod のリサイズを担当
Pod
GKE Node
Pod Pod
GKE Node
Pod Pod Pod
RC
Management Pod Replica
GKE の用語
• Pod
• コンテナのグループ
• 1コンテナ以上で作成
• Replication Controller (RC)
• Pod のレプリカ管理
• 管理下の Pod のリサイズを担当
• Service
• Pod に対する LB みたいなやつ
• iptables で DNAT → kube-proxy
Pod
GKE Node
Pod Pod
GKE Node
Pod Pod Pod
Service RC
Layer4 Load Balancer
Multi Container Pod
• ennis-app pod
• 用途
• Web アプリケーションコンテナ
• 全てのログは 127.0.0.1:24224 を経由して BigQuery に投げている
• コンテナ
• API (ennis-node-con, TCP:3000, 3001)
• Fluentd (ennis-fluentd-con, TCP:24224)
Multi Container Pod
# get service list
$ kubectl get service
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR
ennis-app-srv 10.187.254.39 nodes 3000/TCP,3001/TCP name=ennis-app-rc-pods
kubernetes 10.187.240.1 <none> 443/TCP <none>
# get replication controller list
$ kubectl get rc
CONTROLLER CONTAINER(S) IMAGE(S)
ennis-app-rc-1453323827 ennis-node-con asia.gcr.io/xxxxx/ennis-node:1.9.5
ennis-fluentd-con asia.gcr.io/xxxxx/fluentd-aggregator:1.0.1
# get pod list
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
ennis-app-rc-1453323827-0ampm 2/2 Running 0 2h
ennis-app-rc-1453323827-5xvfk 2/2 Running 0 2h
ennis-app-rc-1453323827-gvr4z 2/2 Running 0 2h
Single Container Pod
• ennis-nginx pod
• 用途
• GCE-LB の Default Backend として設定する
• url-maps に該当しないリクエストは nginx 経由で転送させる
• ex: http(s)://107.178.243.152/ → https://takusuta.com/
• コンテナ
• Nginx (ennis-nginx-proxy-con, TCP:80)
Single Container Pod
# get service list
$ kubectl get service
NAME CLUSTER_IP EXTERNAL_IP PORT(S) SELECTOR
ennis-nginx-srv 10.107.251.130 nodes 80/TCP name=ennis-nginx-rc-pods
kubernetes 10.107.240.1 <none> 443/TCP <none>
# get replication controller list
$ kubectl get rc
CONTROLLER CONTAINER(S) IMAGE(S)
ennis-nginx-rc ennis-nginx-proxy-con asia.gcr.io/xxxxx/nginx-proxy:1.0.2
# get pod list
$ kubectl get pod
NAME READY STATUS RESTARTS AGE
ennis-nginx-rc-3byoj 1/1 Running 0 7h
ennis-nginx-rc-i6dbs 1/1 Running 0 7h
ennis-nginx-rc-sefai 1/1 Running 0 7h