radioc@?

レディオキャットハテナ

【勉強会メモ】Cloud Native Kansai #02

cnjp.connpass.com

  • 日時:2019/03/15(金) 19:00 〜 21:30
  • 場所:エムオーテックス株式会社 – MOTEX Inc.

Kubernetes and Cloud Native Products

※遅刻したため聴けませんでした…

30分でわかる Google Kubernetes Engine

Container@Google

Googleは毎週40億のコンテナを起動

Borg

Large-scale cluster management at Google with Borg

  • BorgからKubernetes
    • Borgの開発に参加していた開発者がk8s

What's GKE

  • GCP上で動作するマネージドk8s
  • マスターノードの管理は全てGoogleが行う
  • Zero-Opsクラスタを目指す
  • 特徴
    • 簡単
    • 高い信頼性
    • 拡張性
    • GCP各サービスとの統合

Simple to Start

信頼性

  • Auto Repairing
    • 故障したり問題のあるNodeを自動でリプレイス
  • Auto Upgrade
  • Regional Cluster
    • マスターを同一リージョン内の3つのゾーンで持つ
  • Regional Persistent Disks BETA

可用性

  • Pod・Node双方に対して水平・垂直のスケーリング機能
    • HPA:Podの水平スケーリング
    • VPA:Podの垂直スケーリング
    • CA:Nodeの水平スケーリング

Integration

  • Load Balancing(tmp)
    • エニーキャストアドレスに対するリクエストを複数分散
    • グローバルインフラで提供Cloud CDNとLB
    • 大阪リージョンももうすぐ

Other Feature

  • Private Cluster
    • Public IPを持たないNodesを利用可能
  • Authorized Network
    • Firewallで許可されたネットワークからのみアクセス可能
  • Shared VPC
    • 異なるプロジェクトあkんで同じVPCにワーカーノードを配置可能
  • Container Native Load Balancing BETA
  • GKE On-Prem BETA
    • オンプレミスのクラスたをGoogle Cloud COnsoleから一元的 に管理
    • Cloud IdentityかオンプレミスのIdpを使う

Webアプリ開発向けゆるふわDocker使いがCloud Naive開発に必要なetc.

www.slideshare.net

おすすめ本

  • Docker/k8s
  • k8s完全ガイド
  • k8s実践入門

Twelve-Factor Appのおさらい

12factor.net

Cloub Native

  • 近代的でダイナミックな環境
  • スケーラブル
  • 組織

変化の激しい環境下でスケーラブルな開発を行うための能力を組織にもたらす

  • 本当に必要ですか?
  • 頻繁に変化が求められていますか?
  • 1日に10回20回リリースしたい?

「とりあえず導入」はやめたほうがいい

今までPerlRubyで開発していた人がSclalaやHaskellで開発するぐらいインパクトがある

  • 覚悟、同士(3人以上)と信頼貯金

とはいえキャッチアップしておきたい

  • まずはコミュニティに参加
  • プロダクトのコンテキストが変わるので、適している設計がある
  • CNの定義としてマイクロサービスをアプローチの代表例にあげている
  • 分散システムを目指すことになる

Cloud Nativeにシステム構築するには?

Design patterns for container-based distributed systems

※参考

コンテナのデザインパターンを学べる論文「Design patterns for container-based distributed systems」を読んだ - kakakakakku blog

コンテナベースの開発向けデザインパターン

Designing Distributed Systems EZ-Book(Azure)

azure.microsoft.com

日本語約が4/19に発売 分散システムデザインパターン

分散システムデザインパターン ―コンテナを使ったスケーラブルなサービスの設計

分散システムデザインパターン ―コンテナを使ったスケーラブルなサービスの設計

BredanさんのGithub

github.com

Sidecar Pattern

  • 共有Volumeを中継してSidecarが主コンテナを補助する

Ambassadors

  • 主コンテナの変わりに通信を肩代わりするコンテナを配置
  • 利点
    • Appは自分の責務に集中
    • 通信はAmbassadorに丸投げ

Adapters

  • Ambassadorとは逆にコンテナグループから外部に対してメトリクスをエクスポート
  • Adapterはモニタリングのみ行う
  • モニタ対象となるAppは複数でもよい

Replicated Load-Balanced Services

  • LBを軸にしてその先を縮退

  • Sharded Service

  • レプリカじゃなくてシャード、つまり、分割

  • 分割によって均等に分散

Scatter/Gather

  • 散布/収集
  • リクエストをRootNodeに投げ
  • 散布、収集

Functions and Event-Driven Processing

  • FunctionはFaaSと考える
  • リクエストに装飾しながら処理を加える

Ownership Election

  • オーナー選出のみを専門で行うコンテナを配置することでアプリは自分の責務だけを果たす
  • PaxosやRAFTのような分散合意アルゴリズムを使う

Work Queue Systems

  • 並列に大量の処理を実行する
  • いわゆるバッチ

Event-Driven Batch Processing

  • 入力が派生したりFilterされるなどして出力が作成されるワークフローシステム

Coordinated Batch Processing

  • 分割した出力を一定ルールに基づいて集約する

どこから始めるか?

labs.mobingi.com

Cloud Native Trail Mpaを参考に段階的に始めていく

github.com

開発スタイルの再検討

  • GitOps

speakerdeck.com

※参考

GitHub Appを使ってGitOpsする - Qiita

どうやって始めるか?

  • Rancher Labsの有償サポート

Datadog ここ掘れワンワン 春の陣

Datadogでコンテナモニタリングしよう

docs.datadoghq.com

  • リアルタイムのパフォーマンス可視化
  • 強力なアラート
  • 履歴の分析

サービスのかどうをモニタリングするための三本柱

  • Trace
  • Metrics
  • Logs

依存関係やボトルネックを可視化

  • 環境構築にかかる時間短縮
  • 環境依存のエラーが減って開発効率向上
  • 簡単に環境構築で手軽に検証
  • デプロイやロールバックが楽になった

クラウド時代のモニタリングのポイントは?

ペットではなく家畜

Tag

  • メトリクスに付帯
  • フィルタリング/グルーピング
  • カスタマイズ可能

何をどうやってモニタリング

  • 基本的にはDatadogエージェントのコンテナを動かすと同一ホスト内の全コンテナとホストのメトリクスを取れる

タグをつける

コンテナはラベル管理必須

  • どんなタグ?
  • 迷ったときはまず以下のタグ
    • source
    • service
    • env
    • role

k8sのモニタリング

  • Node Pod ReplicaSet Deployment DaemonSet問うの状態
  • NodeごとPodごとコンテナ事のリソース使用率 など

マイクロサービスのトレース

  • 分散トレーシング
    • X-Datadog-Trace-Id
  • 外形監視
    • GAになった
    • サービスを外側から監視

複数の拠点から任意のサイトやAPIエンドポイントにHTTP(S)リクエストを送信して監視

DockerからKubernetesへのシフト

www.slideshare.net

状況に応じた構成

  • Docker/docker-composeでだいたいやりたいことができる

Dockerからk8s

Compose on k8s

github.com

どこで使える?

  • 最初からインストール
    • Docker for Mac
    • Docker EE
  • 要インストール
    • Azure AKS
    • GKE
    • Microk8s
    • Minikube

VUIエンジニアが考える「VUIでKuberenetes」

speakerdeck.com

  • デプロイ後に急に嫁におつかいを頼まれてお使い中にポッドを確認したくなった
  • 料理中にふとポットの数を増やしたい
  • Alexaなら自発的な会話が再生できる

コンテナの疲れをk3sとRemoで癒やした話

speakerdeck.com

コンテナ疲れ

  • 技術がてんこ盛り
  • チャレンジングで楽しみたいけどToo Match

k3s

k3s.io

  • ARM対応

コンテナの疲れはコンテナで癒やす

  • ラズパイ
  • Nature Remo

温度、湿度、照度

github.com