Upload
others
View
23
Download
0
Embed Size (px)
Citation preview
Google Cloud
Anthos Day
Kubernetes コンポーネントの活用方法
~ マイクロサービス x Kubernetes を始めよう ~
Google Cloud カスタマーエンジニア 村上 大河
(samuraitaiga) Taiga
Murakami
Infrastructure Modernization Specialist, Google Cloud Customer Engineering
テクノロジー● Database / Virtualization / Container / Microservices ● DevOps / Agile Development
好きなプロダクト● Firebase (Firestore)
$ whoami
Kubernetes (k8s)OSS のコンテナ オーケストレーション システム
Google 内部で使われている Borg をインスパイア
オンプレでもクラウドでも運用可能
Kubernetes の特徴
● 複数のコンテナに対する管理機構
● manifest による宣言的な定義/管理
● オートスケール
● ローリング アップデート、自己修復
● GCP 上で動作する Kubernetes のマネージ ドサービス
● マスターノードの管理は全て Google が行う
● 自動アップグレード
● GCP の各種サービスとのインテグレーション
Google Kubernetes Engine ( GKE )
一つのマイクロサービス実現方法
API Gateway
Microservice A Microservice B Microservice n・・・・・
Application
Datastore
RPCRPC
RPC
異なる技術スタックでマイクロサービスを実現(例: プログラム言語、フレームワーク、データベース等 )
その道の途中
API Gateway
Microservice A Microservice n・・・・・
Application
Datastore
RPCRPC
RPC
Monolith α
異なる技術スタックでマイクロサービスを実現(例: プログラム言語、フレームワーク、データベース等 )
Kubernetes における関心事
POD (Container)
Cluster
POD (Container) ・・・・・
POD (Container)
開発者
SRE
5 つの実装パターンと関連する Kubernetes コンポーネントを紹介
開発者 - マイクロサービス化を進める
1. クラウドのマネージドサービスを活用する
2. 段階的なマイグレーション
3. ステートフル アプリケーションの分割
SRE - 効率かつ安定に運用する
4. リソースと権限の分離
5. 複数経路のロギング
01開発者の世界
凡例Container Registry
Container Image
Container Image
PodContainerContainer
PodContainerContainer
Volume
Kubernetes コンポーネント概要(開発者視点)
Deployment
ReplicaSet
Horizontal Pod
Autoscaler
Metrics Server
VerticalPod
Autoscaler
StatefulSet Ingress
Service
Persistent Volume Claim
ConfigMap
Secret
Persistent Volume
PodContainer
Container
Container Image
downloadcreate / update
Kubernetesコンポーネント
Kubernetes 外のコンポーネント
終了ヘルスチェックスタートアップ初期化
Pod のライフサイクル
Init Container Container
PostStart Hook
StartupProbe LivenessProbe
ReadinessProbe
PreStop Hook
Pod 作成リクエスト Pod 削除リクエスト
t
クラウドのマネージドサービスを活用する
API Gateway
Microservice A Microservice B Microservice n・・・・・
Application
RPCRPC
RPC
クラウドの力を最大限利用して、効率的にアプリケーションを構築・運用する
Managed Service
Internet Gateway(LB)
パターン1
Datastore
etc...
APM
ML
Kubernetes 視点
Ingress
Service(Node Port)
Pod Secret
IAM
Managed Service
RepliciaSet
Horizontal Pod
AutoscalerProvisioning
Tools
Service(Cluster IP)
Pod
ProvisionProvision
Kubernetes の世界で多くの事が実現できるが、クラウドの世界で設定を行う必要もある
IAM Credential
Other microservice
RPC ( my-service.ns.svc.cluster.local )
パターン1
Datastore
etc...
APM
ML
Micro Service
段階的マイグレーション既存のステートフルアプリケーション ( モノリシック ) を優先度の高い機能毎に抜き出しアジリティを向上する
モノリシック アプリケーション
広告
チェックアウト
プロダクトカタログ
通貨
レコメンデーション
カート
相互に呼び出し ( RPC )
パターン2
モノリシック アプリケーション
広告
チェックアウト
プロダクトカタログ
通貨
レコメンデーション
カート
レコメンデーション
オンプレミス
段階的マイグレーション ( Kubernetes 視点 )既存のステートフルアプリケーション ( モノリシック ) を高い重要度の機能毎に抜き出しアジリティを向上する
Service( LoadBalancer )
Pod
Service( ExternalName / Headless )
FQDN / IP access
RepliciaSet
Horizontal Pod
Autoscaler
Service( NodePort )
LoadBalancer
Monolithic Application
クラウド
VPN tunnel
RPC
パターン2
Managed Service
Other microservice
GKE で Kubernetes の世界に集中
パターン1, 2
Ingress
Service(Node Port)
Pod ServiceAccountRepliciaSet
Horizontal Pod
Autoscaler
Service(Cluster IP)
Pod
Provision
RPC ( my-service.ns.svc.cluster.local )
CloudIAM
CloudSpanner
Point スケーラブルなフルマネージド リレーショナル データベース
Point Google Cloud API にアクセスするときに自動的に IAM アカウントとして認証 ( Workload Identity )
Cloud LoadBalancing
Point パフォーマンスとスケーラビリティに優れた負荷分散
ConfigConnector( CRD )
Point Kubernetes と同様の構成ファイルで GCP リソースを管理
ステートフルアプリケーションの分割
Application
Datastore
Application
Datastore
Application
Datastore
Application
Datastore
・・・
既存の ステートフルアプリケーション を様々な観点で分割し、スケーラビリティの確保や影響範囲の縮小といったメリットを得る
パターン3
分割したアプリケーション数作成
Volume
StatefulSet
Ingress
Service(NodePort)
Persistent Volume Claim
ConfigMap
Secret
Persistent Volume
PodContainer
Container
Kubernetes の世界だけで完結。Kubernetesやコンテナによりインフラコストや管理コストを削減可能
パターン3
Kubernetes 視点
GKE で可用性と拡張性の確保を今すぐ実現
パターン3
Region
Zone A Zone B
RegionalPersistent Disk
PodContainer
ContainerPod
Container
Container
Point Region 内のどこのゾーンからでも利用可能なディスクにより、障害発生時にステートフル アプリケーションをフェイルオーバー可能。また読み込み専用であれば、複数コンテナから一つのディスクを読み込み可能。
Failoverオンプレミス /
パブリッククラウド
VM Migrate for Anthos
Point VM を GKE 上のコンテナに変換可能
02SRE の世界
Cluster
Kubernetes コンポーネント概要 ~ インフラ視点 ~
Node Node・・・
Namespace Pod
Container
ContainerPod
Container
Container
NamespacePod
Container
ContainerPod
Container
Container
・・・
Master
Cluster
Node Node・・・
Namespace Pod
Container
ContainerPod
Container
Container
NamespacePod
Container
ContainerPod
Container
Container
Master
Role Based Access Control ( RBAC )Cluster
Kubernetes コンポーネント概要~ 権限視点 ~
PodContainer
Container
PodContainerContainer
PodContainer
Container
PodContainer
Container
Namespace α
Namespace β
Role
Authentication Service
Cluster Role
Role Binding
Cluster Role Binding
管理系の操作
Cluster
Kubernetes コンポーネント概要 ~ 運用視点 ~
Node Node・・・
Namespace Pod
Container
Container
Resource Quota
Namespace Pod
Container
ContainerPod
Container
Container
DaemonSet
Staging Cluster
リソースと権限の分離Namespace はマイクロサービス(機能)毎に分割、 Cluster は環境毎に分割しアクセス制御を行う
パターン4
Production Cluster
Node Node
・・・
Namespace( Microservice A )
PodContainer
Container
インフラチームMicroservice A 開発チーム
開発 チーム( Role )
インフラチーム( Cluster Role )
Role Binding
LDAP, SAML, Kerberos, x509, etc...( Authentication Service )
Cluster Role Binding
コンテナの情報、ログに対する読み取りを許可
フル権限を許可
PodContainer
Container
Namespace( Microservice B )
PodContainer
ContainerPod
Container
Container
Staging Cluster
認証・認可も Google サービスを利用して効率的に運用が可能
パターン4
Production Cluster
Node Node
・・・
Namespace( Microservice A )
PodContainer
Container
インフラチームMicroservice A 開発チーム
開発 チーム( Role )
インフラチーム( Cluster Role )
Role Binding
Cluster Role Binding
コンテナの情報、ログに対する読み取りを許可
フル権限を許可
PodContainer
Container
Namespace( Microservice B )
PodContainer
ContainerPod
Container
Container
GKE で認証 / 認可を簡略化
Google Managed Acount(G Suite, Cloud Identity, Gmail, etc…)
Point 独自で認証機構を作成する必要がない。GCP のログインに利用する Google アカウントやグループを用いて認証した情報を使い、権限管理が可能。
GKE で効率化に向けて使用状況を可視化
パターン4
Point usage metering 機能により、様々なリソースの使用状況を取得。これによりNamespace、ラベル毎など様々な角度でリソース状況の分析が可能となる。
Anthos Config Management で複数クラスターに対する管理を簡略化
Point Git レポジトリで設定を集中管理し、複数クラスターへの適用を自動化。これにより管理コストの削減が望める。
パターン4
Cluster
複数経路のロギング
Node
Pod
Container
Container( Sidecar )
パターン5
LogDWH
Pod ContainerDaemonSet
分析用ログ (アクセスログ等) を書き込み
運用に関するログ ( warning 以上のアプリケーション、システムログ ) を書き込み
Monitoring Service
ログの過剰送信によるシステム障害を防ぎ、安定した運用を行う。
Cluster
Node
Pod
Container
Container( Sidecar )
パターン5
Log
Pod ContainerDaemonSet
簡単な設定とマネージドサービスの利用ですぐに安定したロギングを実行することが可能
Stackdriver
BigQuery
Point デフォルトで Pod が標準出力・標準エラー出力に書き込んだ内容がログとしてが収集され、Stackdriverに保存される。またログを収集するPod は Google が管理
Point ストリーミングによるデータ入力に対応しているため、複雑なパイプラインの作成が不要
GKE と マネージド サービスでお手軽に構築
Fluentd
etc...
Logstash
Fluent Bit
03まとめ
マイクロサービス x Kubernetes を始めよう
5 つの実装パターン
開発者
1. クラウドのマネージドサービスを活
用する
2. 段階的なマイグレーション
3. ステートフルアプリケーションの分割
SRE
4. リソースと権限の分離
5. 複数経路のロギング
Thank you