google container engine を始めてみよう
TRANSCRIPT
Container Engine を始めてみよう
Google Cloud Platform Sales Engineer Kiyoshi Fukuda
Google Cloud Platform 2
基盤およびオペレーション
データサービス
アプリケーションサービス実行環境
Building what’s next 3
Complete Range of Compute
Building what’s next 4
Google App Engine
インフラではなくコードにフォーカス
好きな言語で開発
クリックするだけでデプロイ可能
自動的にスケールアウト
セキュリティスキャナにより脆弱性を発見
Google Cloud Platform 4
Data Services
Foundation - Infrastructure & Operations
Application Runtime Services
Building what’s next 5
Google Compute Engine
Googleインフラの上に構築された仮想マシン
柔軟なプラットフォームの構築
Best Of Bleed
GCE プリエンプティブルVMを使うと通常のVM価格の30%で利用可能
ライブマイグレーション
Data Services
Foundation - Infrastructure & Operations
Application Runtime Services
Google Cloud Platform 5
Building what’s next 6
Google Container Engine
コンテナによる革命が起こりつつある
開発者にとって :開発環境、テスト環境の構築が容易
マイクロサービスを構築するのが容易
1コマンドで容易にクラスタをアップデート可能
運用管理者にとって :Kubernetes が管理してくれる
アプリケーションのデプロイが容易
ポータビリティ
Data Services
Foundation - Infrastructure & Operations
Application Runtime Services
Google Cloud Platform 6
Copyright 2015 Google Inc
Googleでは10年間に渡り、すべてのサービスをコンテナで動かしてきた毎週20億以上のコンテナを立ち上げている
Images by Connie Zhou
コンテナ イメージ
依存性
アプリケーション コード
コンテナはアプリケーションコードとその依存性を一つの
ユニットとしてまとめる
これにより、アプリケーションとインフラを疎結合にするこ
とができる
• 伝統的なIT環境において、インフラエンジニアはアプリケーションの実
行環境を正しく整えることが重要
• コンテナはアプリケーションとその依存性がまとまっているので、例え
ば、開発環境、テスト環境、本番環境をまたいだデプロイが容易になる
• オンプレミス、プライベートクラウド、パブリッククラウド等ことなる実行
環境間の移動が容易になる
コンテナとは?
VM vs Container
軽量仮想マシンに比べて
軽量でシンプル。数十ミリ秒で起動
ポータブル様々な実行環境に対応し、
デプロイメントが容易
効率性リソース使用量が少なく、コンピュートリソースを細分化して効率的に利用可能
なぜコンテナなのか?
Copyright 2015 Google Inc
コンテナ管理の課題
Node Node
Cluster
Node
???
● 複数のノードに対するコンテナのデプロイは?
● ノード障害が発生した場合は?
● コンテナ障害が発生した場合は?
● アプリケーションのアップグレードはどうやって管理する?
Kubernetes κυβερνήτης: Greek for “pilot” or “helmsman of a ship”
the open source cluster manager from Google
CNCF(Cloud Native Computing Foundation)の発足
KubernetesMaster/Scheduler
クラスタ : 実行環境
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ノード
Log Roller
Web Server
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
KubernetesMaster/Scheduler
ポッド : デプロイ単位
コンテナ
コンテナ
ポッド
FE
FE
FE
FE
FE
FE
BE
BE
BE BEBE
BE
BEBE
BE
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
Kubernetes - Master/Scheduler
多数のポッドを識別するには?
labels: role: frontend
FE
FE
FE
FE
FE
FE
BE
BE
BE BEBE
BE
BEBE
BE
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
Kubernetes - Master/Scheduler
ラベル: オブジェクトを識別
labels: role: frontend stage: production
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
Kubernetes - Master/Scheduler
FE
FE
FE
FE
FE
FE
BE
BE
BE BEBE
BE
BEBE
BE
ラベル: オブジェクトを識別
FE FE FE FE
replicas: 4template: ...labels: role: frontend stage: production
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
Kubernetes - Master/Scheduler
レプリケーションコントローラ: ポッドの実行状態を管理
FE
replicas: 1template: ...labels: role: frontend stage: production
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
Kubernetes - Master/Scheduler
レプリケーションコントローラ: ポッドの実行状態を管理
FE FE FE
replicas: 3template: ...labels: role: frontend stage: production
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
Kubernetes - Master/Scheduler
レプリケーションコントローラ: ポッドの実行状態を管理
id: backend-serviceport: 9000labels: role: backend stage: production
Backend Service
BE BE BE BE
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
MachineHost
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
ContainerAgent
サービス: エンドポイントを抽象化
FE
port: 9000
Load-Balancing
ポッドは自動配置される!
でも、FEはどうやってBEにアクセスするの?
Kubernetesのクラスタを構築する
Container EngineGoogle Cloud Platform
Container EngineGoogle Cloud Platform