Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Infra: Kubernetes and GKE, Network

723 views

Published on

https://gdg-tokyo.connpass.com/event/52811
で発表した、Google Cloud Next 17 ExtendedのInfraパートの資料です。

Published in: Technology
  • Be the first to comment

Infra: Kubernetes and GKE, Network

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

×