6. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
参考にしたセッション
GKE, Kubernetes Sessions:
ABCs of Google Container Engine: tips and best practices (Google Cloud Next '17)
Kubernetes and Google Container Engine (Google Cloud Next '17)
Globally scalable microservices with Container Engine & Cloud Load Balancing (Google Cloud Next ‘17)
Deciding between Compute Engine, Container Engine, App Engine and more (Google Cloud Next '17)
Network Sessions:
Deciding between Compute Engine, Container Engine, App Engine and more (Google Cloud Next '17)
A cloud networking blueprint for securing your workloads (Google Cloud Next '17)
9. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
4つの環境
Compute Engine Container Engine App Engine Cloud Function
10. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Compute Engine
いわゆるVM
フレキシブルなスペックの設定
CPU, GPU, RAM, Disk(HDD/SSD)
使えば使うほど料金割引、 Preemptable VM、分単位課金
ライブマイグレーション
現状のオンプレにあるシステムをそのままクラウドに持っていきたい
11. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Container Engine
フルマネージドなKubernetes
ノード
Kubernetes自体のアップデート
クラスターのオートスケーリング
論理的なインフラ志向
12. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
使いたい場面と制約
使いたい場面 制約
アプリケーションをいろいろな環境 /IaaSで
動かしたい場合
コンテナの利点を最大限活用したい場合
Dev, Ops, セキュリティチームの円滑なコ
ミュニケーションが可能な場合
CI/CDを積極的に行いたい場合
HTTP以外のプロトコル、低レイヤのネット
ワークまで手を出したい場合
コンテナを使わなければいけない
Kubernetes/コンテナを使わないといけない
ので、設計に制約がある
13. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
App Engine
App Engineで動くようにアプリケーションを作成すれば、オペレーションをほぼすべて肩代わ
りしてくれる環境
コーディングに集中できる
App Engine Flexible
コンテナをフルマネージドで運用
SSHでデバッグできる
現状 1000億リクエスト/日 をさばいている
14. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
使いたい場面と制約
使いたい場面 制約
HTTP(S)でリクエスト、リスポンスを行うアプ
リケーションの場合
ステートレスなアプリケーションを運用した
い場合
トラフィックが多いウェブサイトを運用する
場合
AppEngine Standard
Python, Java, PHP, Goで実装
Binary Extensionは使えない
設計、実装で制約がある
AppEngine Flexible
コンテナを使わなければいけない
スケールに合わせて ComputeEngineが
立ち上がる
15. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Cloud Function
サーバーレスでイベントドリブンな環境で機能を提供
GCPのクラウドサービスをトリガにして実行
Cloud Pub/Sub, Cloud Storage
実行した回数だけ料金がかかる
Node.jsのランタイムを使用
16. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
使いたい場面と制約
使いたい場面 制約
サーバーレスで運用したい
GCPのサービスのイベントをトリガにして何
かを処理したい
HTTPのAPIを提供したい
Node.js(Javascript)のみに対応
イベントドリブンでなければいけない
17. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
環境を決める要素
チーム、組織の性質
技術的な必須項目
抽象化したいレイヤ
19. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Kubernetes
コンテナクラスターを管理
複数のクラウドベンダー、オンプレミス環境をサポート
複数のコンテナランタイムをサポート
オープンソース
GOで実装
VMではなく、アプリケーションを管理する
20. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Kubernetes
スケジューリング: どこでコンテナが動くか
生存管理: コンテナを常に動かす
スケーリング: コンテナを増やしたり部屋したりする
サービスディスカバリ : コンテナがどこで動いているか管理
ロードバランシング: 複数コンテナ間の通信
ストレージ: コンテナがデータを保存できる場所を確保
ロギング・モニタリング : コンテナで何が起こっているかを管理
デバッグ・内部検査: コンテナにアタッチ
認証と認可: ユーザの権限を管理
21. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Kubernetesの要素
Pod: 1つ以上のコンテナの集合体。同じ localhost上にあり、必ず同じように
スケジューリングされる
Doployment: Podが何個必要かを定義 (ReplicaSet)し、定義通りにPodが動き、また定義
が変更されたらその変更に従って処理を行う
Service: アプリケーション(Pod)にアクセスするエンドポイントの管理
Node: Podを動かす計算機。kubeletによって管理される
Cluster: Nodeの集合体。Kubernetes Masterによって管理される
Namespace: Clusterを仮想的に分割する
26. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Scale
kubectl autoscale deployment [NAME] --min=3 --max=10
5000ノード、150,000 Pods対応可能に
水平Podスケーリング
クラスターオートスケーリング
gcloud container clusters update [NAME]
--enable-autoscaling --min-nodes=3 --max-nodes=10
27. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Cluster Federation
kubefed
Federated Control plane
GCP オンプレ AWS
asia-northeast-1a
us-east1-b
大手町 sa-east-1
Cross cluster service
discovery
Cluster healthcheck Federated API
28. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Multi-zone Cluster
gcloud container clusters create [NAME] --num-nodes=3
--zone asia-northeast1-a
--additional-zones=asia-northeast1-b, asia-northeast1-c
ゾーンをまたいでクラスターを構築することにより
ゾーン単位の障害を回避
29. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Node Affinity/Anti-Affinity
apiVersion: v1
kind: Pod
metadata:
name: with-node-affinity
spec:
affinity:
nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: failure-domain.beta.kubernetes.io/zone
operator: In
values:
- asia-northeast1-a
- asia-northeast1-b
containers:
- name: with-node-affinity
image: gcr.io/google_containers/pause:2.0
どんなノード上でポッドを作成するか /しないかを指定
30. Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
And more...
Role-based access control(RBAC)
Taints
Tolerations
Dynamic Storage Provisioning
DemonSet updates
CRI
Per Pod Eviction
GPU support (with Docker CRI)
etc...