Infra: Kubernetes and GKE, Network
荒川 裕紀 aka KUMA
自己紹介
荒川 裕紀
@kumakumakkk
エンジニア
新規事業開発、BPR、海外渉外などを担当
bq_sushi #2, gcpja night #31,
OpenStack Summit 2015
などで発表
Golang/nginx/h2o/Redis/MySQL
zsh/Ansible/Spinnaker/Ubuntu/Alpine
fastly/k8s/GCP/AWS
Cisco/Aruba/Ubiquiti Networks
とかを使っている
!?
66 Sessions!
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)
Agenda
● どの環境を選ぶべきか?
GCE, GKE, AppEngine, Cloud Function
● Kubernetesとは
● What’s new in Kubernetes 1.6
● GCPとオンプレミス環境の接続
Proprietary + Confidential
どの環境を選ぶべきか
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
4つの環境
Compute Engine Container Engine App Engine Cloud Function
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Compute Engine
いわゆるVM
フレキシブルなスペックの設定
 CPU, GPU, RAM, Disk(HDD/SSD)
使えば使うほど料金割引、 Preemptable VM、分単位課金
ライブマイグレーション
現状のオンプレにあるシステムをそのままクラウドに持っていきたい
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Container Engine
フルマネージドなKubernetes
 ノード
 Kubernetes自体のアップデート
 クラスターのオートスケーリング
論理的なインフラ志向
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
使いたい場面と制約
使いたい場面 制約
アプリケーションをいろいろな環境 /IaaSで
動かしたい場合
コンテナの利点を最大限活用したい場合
Dev, Ops, セキュリティチームの円滑なコ
ミュニケーションが可能な場合
CI/CDを積極的に行いたい場合
HTTP以外のプロトコル、低レイヤのネット
ワークまで手を出したい場合
コンテナを使わなければいけない
Kubernetes/コンテナを使わないといけない
ので、設計に制約がある
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
App Engine
App Engineで動くようにアプリケーションを作成すれば、オペレーションをほぼすべて肩代わ
りしてくれる環境
 コーディングに集中できる
App Engine Flexible
 コンテナをフルマネージドで運用
 SSHでデバッグできる
現状 1000億リクエスト/日 をさばいている
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が 
立ち上がる
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Cloud Function
サーバーレスでイベントドリブンな環境で機能を提供
GCPのクラウドサービスをトリガにして実行
 Cloud Pub/Sub, Cloud Storage
実行した回数だけ料金がかかる
Node.jsのランタイムを使用
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
使いたい場面と制約
使いたい場面 制約
サーバーレスで運用したい
GCPのサービスのイベントをトリガにして何
かを処理したい
HTTPのAPIを提供したい
Node.js(Javascript)のみに対応
イベントドリブンでなければいけない
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
環境を決める要素
チーム、組織の性質
技術的な必須項目
抽象化したいレイヤ
Proprietary + Confidential
Kubernetesとは
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Kubernetes
コンテナクラスターを管理
複数のクラウドベンダー、オンプレミス環境をサポート
複数のコンテナランタイムをサポート
オープンソース
GOで実装
VMではなく、アプリケーションを管理する
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Kubernetes
スケジューリング: どこでコンテナが動くか
生存管理: コンテナを常に動かす
スケーリング: コンテナを増やしたり部屋したりする
サービスディスカバリ : コンテナがどこで動いているか管理
ロードバランシング: 複数コンテナ間の通信
ストレージ: コンテナがデータを保存できる場所を確保
ロギング・モニタリング : コンテナで何が起こっているかを管理
デバッグ・内部検査: コンテナにアタッチ
認証と認可: ユーザの権限を管理
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を仮想的に分割する
Namespace
Deployment(ReplicaSet)
Pod
webserver
App
Pod
webserver
App
19.168.1.1:80
Service
Pod
webserver
App
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Demo
Proprietary + Confidential
Kubernetes 1.6 and GKE
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
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
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
ゾーンをまたいでクラスターを構築することにより
ゾーン単位の障害を回避
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
どんなノード上でポッドを作成するか /しないかを指定
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...
Proprietary + Confidential
ネットワーク
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
XPN (Cross Project Network)
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
Private/Carrier Interconnect
Source: Lorem ipsum dolor sit amet, consectetur adipiscing elit. Duis non erat sem
And more...
CDN Interconnect
Cloud Router
IPSec VPN
etc...

Infra: Kubernetes and GKE, Network

  • 1.
    Infra: Kubernetes andGKE, Network 荒川 裕紀 aka KUMA
  • 2.
    自己紹介 荒川 裕紀 @kumakumakkk エンジニア 新規事業開発、BPR、海外渉外などを担当 bq_sushi #2, gcpjanight #31, OpenStack Summit 2015 などで発表 Golang/nginx/h2o/Redis/MySQL zsh/Ansible/Spinnaker/Ubuntu/Alpine fastly/k8s/GCP/AWS Cisco/Aruba/Ubiquiti Networks とかを使っている
  • 4.
  • 5.
  • 6.
    Source: Lorem ipsumdolor 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)
  • 7.
    Agenda ● どの環境を選ぶべきか? GCE, GKE,AppEngine, Cloud Function ● Kubernetesとは ● What’s new in Kubernetes 1.6 ● GCPとオンプレミス環境の接続
  • 8.
  • 9.
    Source: Lorem ipsumdolor sit amet, consectetur adipiscing elit. Duis non erat sem 4つの環境 Compute Engine Container Engine App Engine Cloud Function
  • 10.
    Source: Lorem ipsumdolor sit amet, consectetur adipiscing elit. Duis non erat sem Compute Engine いわゆるVM フレキシブルなスペックの設定  CPU, GPU, RAM, Disk(HDD/SSD) 使えば使うほど料金割引、 Preemptable VM、分単位課金 ライブマイグレーション 現状のオンプレにあるシステムをそのままクラウドに持っていきたい
  • 11.
    Source: Lorem ipsumdolor sit amet, consectetur adipiscing elit. Duis non erat sem Container Engine フルマネージドなKubernetes  ノード  Kubernetes自体のアップデート  クラスターのオートスケーリング 論理的なインフラ志向
  • 12.
    Source: Lorem ipsumdolor sit amet, consectetur adipiscing elit. Duis non erat sem 使いたい場面と制約 使いたい場面 制約 アプリケーションをいろいろな環境 /IaaSで 動かしたい場合 コンテナの利点を最大限活用したい場合 Dev, Ops, セキュリティチームの円滑なコ ミュニケーションが可能な場合 CI/CDを積極的に行いたい場合 HTTP以外のプロトコル、低レイヤのネット ワークまで手を出したい場合 コンテナを使わなければいけない Kubernetes/コンテナを使わないといけない ので、設計に制約がある
  • 13.
    Source: Lorem ipsumdolor sit amet, consectetur adipiscing elit. Duis non erat sem App Engine App Engineで動くようにアプリケーションを作成すれば、オペレーションをほぼすべて肩代わ りしてくれる環境  コーディングに集中できる App Engine Flexible  コンテナをフルマネージドで運用  SSHでデバッグできる 現状 1000億リクエスト/日 をさばいている
  • 14.
    Source: Lorem ipsumdolor 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 ipsumdolor sit amet, consectetur adipiscing elit. Duis non erat sem Cloud Function サーバーレスでイベントドリブンな環境で機能を提供 GCPのクラウドサービスをトリガにして実行  Cloud Pub/Sub, Cloud Storage 実行した回数だけ料金がかかる Node.jsのランタイムを使用
  • 16.
    Source: Lorem ipsumdolor sit amet, consectetur adipiscing elit. Duis non erat sem 使いたい場面と制約 使いたい場面 制約 サーバーレスで運用したい GCPのサービスのイベントをトリガにして何 かを処理したい HTTPのAPIを提供したい Node.js(Javascript)のみに対応 イベントドリブンでなければいけない
  • 17.
    Source: Lorem ipsumdolor sit amet, consectetur adipiscing elit. Duis non erat sem 環境を決める要素 チーム、組織の性質 技術的な必須項目 抽象化したいレイヤ
  • 18.
  • 19.
    Source: Lorem ipsumdolor sit amet, consectetur adipiscing elit. Duis non erat sem Kubernetes コンテナクラスターを管理 複数のクラウドベンダー、オンプレミス環境をサポート 複数のコンテナランタイムをサポート オープンソース GOで実装 VMではなく、アプリケーションを管理する
  • 20.
    Source: Lorem ipsumdolor sit amet, consectetur adipiscing elit. Duis non erat sem Kubernetes スケジューリング: どこでコンテナが動くか 生存管理: コンテナを常に動かす スケーリング: コンテナを増やしたり部屋したりする サービスディスカバリ : コンテナがどこで動いているか管理 ロードバランシング: 複数コンテナ間の通信 ストレージ: コンテナがデータを保存できる場所を確保 ロギング・モニタリング : コンテナで何が起こっているかを管理 デバッグ・内部検査: コンテナにアタッチ 認証と認可: ユーザの権限を管理
  • 21.
    Source: Lorem ipsumdolor 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を仮想的に分割する
  • 22.
  • 23.
    Source: Lorem ipsumdolor sit amet, consectetur adipiscing elit. Duis non erat sem
  • 24.
    Source: Lorem ipsumdolor sit amet, consectetur adipiscing elit. Duis non erat sem Demo
  • 25.
  • 26.
    Source: Lorem ipsumdolor 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 ipsumdolor 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 ipsumdolor 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 ipsumdolor 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 ipsumdolor 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...
  • 31.
  • 32.
    Source: Lorem ipsumdolor sit amet, consectetur adipiscing elit. Duis non erat sem XPN (Cross Project Network)
  • 33.
    Source: Lorem ipsumdolor sit amet, consectetur adipiscing elit. Duis non erat sem Private/Carrier Interconnect
  • 34.
    Source: Lorem ipsumdolor sit amet, consectetur adipiscing elit. Duis non erat sem And more... CDN Interconnect Cloud Router IPSec VPN etc...