34
Infra: Kubernetes and GKE, Network 荒川 裕紀 aka KUMA

Infra: Kubernetes and GKE, Network

Embed Size (px)

Citation preview

Infra: Kubernetes and GKE, Network

荒川 裕紀 aka KUMA

自己紹介

荒川 裕紀@kumakumakkk

エンジニア新規事業開発、BPR、海外渉外などを担当

bq_sushi #2, gcpja night #31, OpenStack Summit 2015などで発表

Golang/nginx/h2o/Redis/MySQLzsh/Ansible/Spinnaker/Ubuntu/Alpinefastly/k8s/GCP/AWSCisco/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:80Service

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 Federationkubefed

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: v1kind: Podmetadata: name: with-node-affinityspec: 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)TaintsTolerationsDynamic Storage ProvisioningDemonSet updatesCRIPer Pod EvictionGPU 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 InterconnectCloud RouterIPSec VPN

etc...