infra: kubernetes and gke, network
Post on 22-Jan-2018
573 Views
Preview:
TRANSCRIPT
自己紹介
荒川 裕紀@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とかを使っている
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とオンプレミス環境の接続
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
環境を決める要素
チーム、組織の性質
技術的な必須項目
抽象化したいレイヤ
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
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...
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
top related