32
Google Cloud Anthos Day Kubernetes コンポーネントの 活用方法 ~ マイクロサービス x Kubernetes を始めよう ~ Google Cloud カスタマーエンジニア 村上 大河

活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

  • Upload
    others

  • View
    23

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

Google Cloud

Anthos Day

Kubernetes コンポーネントの活用方法

~ マイクロサービス x Kubernetes を始めよう ~

Google Cloud カスタマーエンジニア 村上 大河

Page 2: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

(samuraitaiga) Taiga

Murakami

Infrastructure Modernization Specialist, Google Cloud Customer Engineering

テクノロジー● Database / Virtualization / Container / Microservices ● DevOps / Agile Development

好きなプロダクト● Firebase (Firestore)

$ whoami

Page 3: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

Kubernetes (k8s)OSS のコンテナ オーケストレーション システム

Google 内部で使われている Borg をインスパイア

オンプレでもクラウドでも運用可能

Kubernetes の特徴

● 複数のコンテナに対する管理機構

● manifest による宣言的な定義/管理

● オートスケール

● ローリング アップデート、自己修復

Page 4: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

● GCP 上で動作する Kubernetes のマネージ ドサービス

● マスターノードの管理は全て Google が行う

● 自動アップグレード

● GCP の各種サービスとのインテグレーション

Google Kubernetes Engine ( GKE )

Page 5: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

一つのマイクロサービス実現方法

API Gateway

Microservice A Microservice B Microservice n・・・・・

Application

Datastore

RPCRPC

RPC

異なる技術スタックでマイクロサービスを実現(例: プログラム言語、フレームワーク、データベース等 )

Page 6: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

その道の途中

API Gateway

Microservice A Microservice n・・・・・

Application

Datastore

RPCRPC

RPC

Monolith α

異なる技術スタックでマイクロサービスを実現(例: プログラム言語、フレームワーク、データベース等 )

Page 7: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

Kubernetes における関心事

POD (Container)

Cluster

POD (Container) ・・・・・

POD (Container)

開発者

SRE

Page 8: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

5 つの実装パターンと関連する Kubernetes コンポーネントを紹介

開発者 - マイクロサービス化を進める

1. クラウドのマネージドサービスを活用する

2. 段階的なマイグレーション

3. ステートフル アプリケーションの分割

SRE - 効率かつ安定に運用する

4. リソースと権限の分離

5. 複数経路のロギング

Page 9: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

01開発者の世界

Page 10: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

凡例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 外のコンポーネント

Page 11: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

終了ヘルスチェックスタートアップ初期化

Pod のライフサイクル

Init Container Container

PostStart Hook

StartupProbe LivenessProbe

ReadinessProbe

PreStop Hook

Pod 作成リクエスト Pod 削除リクエスト

t

Page 12: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

クラウドのマネージドサービスを活用する

API Gateway

Microservice A Microservice B Microservice n・・・・・

Application

RPCRPC

RPC

クラウドの力を最大限利用して、効率的にアプリケーションを構築・運用する

Managed Service

Internet Gateway(LB)

パターン1

Datastore

etc...

APM

ML

Page 13: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

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

Page 14: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

Micro Service

段階的マイグレーション既存のステートフルアプリケーション ( モノリシック ) を優先度の高い機能毎に抜き出しアジリティを向上する

モノリシック アプリケーション

広告

チェックアウト

プロダクトカタログ

通貨

レコメンデーション

カート

相互に呼び出し ( RPC )

パターン2

モノリシック アプリケーション

広告

チェックアウト

プロダクトカタログ

通貨

レコメンデーション

カート

レコメンデーション

Page 15: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

オンプレミス

段階的マイグレーション ( 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

Page 16: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

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 リソースを管理

Page 17: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

ステートフルアプリケーションの分割

Application

Datastore

Application

Datastore

Application

Datastore

Application

Datastore

・・・

既存の ステートフルアプリケーション を様々な観点で分割し、スケーラビリティの確保や影響範囲の縮小といったメリットを得る

パターン3

Page 18: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

分割したアプリケーション数作成

Volume

StatefulSet

Ingress

Service(NodePort)

Persistent Volume Claim

ConfigMap

Secret

Persistent Volume

PodContainer

Container

Kubernetes の世界だけで完結。Kubernetesやコンテナによりインフラコストや管理コストを削減可能

パターン3

Kubernetes 視点

Page 19: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

GKE で可用性と拡張性の確保を今すぐ実現

パターン3

Region

Zone A Zone B

RegionalPersistent Disk

PodContainer

ContainerPod

Container

Container

Point Region 内のどこのゾーンからでも利用可能なディスクにより、障害発生時にステートフル アプリケーションをフェイルオーバー可能。また読み込み専用であれば、複数コンテナから一つのディスクを読み込み可能。

Failoverオンプレミス /

パブリッククラウド

VM Migrate for Anthos

Point VM を GKE 上のコンテナに変換可能

Page 20: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

02SRE の世界

Page 21: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

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

Page 22: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

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

管理系の操作

Page 23: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

Cluster

Kubernetes コンポーネント概要 ~ 運用視点 ~

Node Node・・・

Namespace Pod

Container

Container

Resource Quota

Namespace Pod

Container

ContainerPod

Container

Container

DaemonSet

Page 24: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

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

Page 25: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

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 アカウントやグループを用いて認証した情報を使い、権限管理が可能。

Page 26: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

GKE で効率化に向けて使用状況を可視化

パターン4

Point usage metering 機能により、様々なリソースの使用状況を取得。これによりNamespace、ラベル毎など様々な角度でリソース状況の分析が可能となる。

Page 27: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

Anthos Config Management で複数クラスターに対する管理を簡略化

Point Git レポジトリで設定を集中管理し、複数クラスターへの適用を自動化。これにより管理コストの削減が望める。

パターン4

Page 28: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

Cluster

複数経路のロギング

Node

Pod

Container

Container( Sidecar )

パターン5

LogDWH

Pod ContainerDaemonSet

分析用ログ (アクセスログ等) を書き込み

運用に関するログ ( warning 以上のアプリケーション、システムログ ) を書き込み

Monitoring Service

ログの過剰送信によるシステム障害を防ぎ、安定した運用を行う。

Page 29: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

Cluster

Node

Pod

Container

Container( Sidecar )

パターン5

Log

Pod ContainerDaemonSet

簡単な設定とマネージドサービスの利用ですぐに安定したロギングを実行することが可能

Stackdriver

BigQuery

Point デフォルトで Pod が標準出力・標準エラー出力に書き込んだ内容がログとしてが収集され、Stackdriverに保存される。またログを収集するPod は Google が管理

Point ストリーミングによるデータ入力に対応しているため、複雑なパイプラインの作成が不要

GKE と マネージド サービスでお手軽に構築

Fluentd

etc...

Logstash

Fluent Bit

Page 30: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

03まとめ

Page 31: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

マイクロサービス x Kubernetes を始めよう

5 つの実装パターン

開発者

1. クラウドのマネージドサービスを活

用する

2. 段階的なマイグレーション

3. ステートフルアプリケーションの分割

SRE

4. リソースと権限の分離

5. 複数経路のロギング

Page 32: 活用方法 Google Cloud Kubernetes Google Cloud ......Kubernetes (k8s) OSS のコンテナ オーケストレーション システム Google 内部で使われている Borg をインスパイア

Thank you