まーぽんって誰がつけたの?

iOS→Scala→インフラなおじさん技術メモ

Japan Container Days v18.04参加してきました

Japan Container Days v18.12

見た内容

f:id:masato47744:20180420081943p:plain

サイバーエージェントにおけるプライベートコンテナ基盤AKEを支える技術

  • 2016年新卒入社すごい @amsy810 アドテクスタジオ
  • 30万リクエスト/sec ぐらいくる
  • Nvdia-Docker 知らない、GPUとか機械学習とかそういう人用のやつ
  • k8s v1.7でProduction Readyになったとのこと、意外と最近だ
  • nginx ingress controllerパフォーマンス出ない
  • AKEは2人で1年でちょこちょこ作ってきたみたい
  • Multi COE
    • マルチコンテナオーケストレーション、Docker Swarm、Kubernetesを使えるようにしてるみたい
  • OpenStack Integration
    • Keystone、Designate、Cinder、Heatみたいなツールがある、知らない世界
    • OpenStack Magnum、Rancher 2.0、Tectonic
    • baremetalじゃなくてVMで作った理由としては詰め込みすぎてマシンが死んだら影響範囲がでかい
  • ロードバランサーの話
  • Ingressの話
  • チューニング
    • Network tuning、カーネルチューニング、ハイパーバイザーチューニング
  • コンテナランタイム
    • docker、cri-o、containerd、rkt

マイクロサービスアプリケーションとしての機械学習

  • メルカリのひと Takuma Yamaguchi
  • 出品時の画像認識機能をリリース on k8s
  • 畳み込みニューラルネットワークは40年前から出ている、福島さんと言う方
  • 機械学習とかの人材、採用してて思うのは学生で既に実用レベルの人がいるらしいので人材も増えていくだろうとのこと
  • 機械学習だとソースコードと学習モデルの整合性というのがある
  • 学習環境というのがあって大きな計算リソースが必要
  • 機械学習エンジニアはモデルを書くのが得意でAPIやシステムっていうのあまりやらない
  • メルカリの画像認識機能の導入時の話
    • 1サーバで4reqs/sec、100milion/day
    • Workerでは常時25GBメモリ、起動10ふん
    • 機械学習モデルのファイルサイズは15GB
    • モデルは定期的に更新しGPUが必要
    • API(Gunicorn + Django) + Queue + WOrker (TensorFlow)
    • SRE: Dockerfileをください、あとはなんとかします
    • 強い
  • 出品時のカテゴリとか色とかの推測に使っている
    • Appleのキーボードをとったらそれのカテゴリが入っている
    • 色のフィルタリングって実は難しい
  • Mercari画像はS3にあるのとGPUのEC2が使いたいのでAWSで動いていてそれ以外はGCP
  • Queueにいれて、Worker(TensorFlow)が動く、Persistent Volumeから15GBのモデルを読み込んで動く
  • DeployはSpinnakerでやってるのでk8sを意識したことがない
  • こいうのが1週間後に出来上がっている
    • はーすごいね
  • 手動だとモデルとサーバー側のコードで不整合がでてきてしまったみたい、運用の限界があった
  • 機械学習のモデルは頻繁に更新するようだ、モデルの軽量化というのはすごい大変みたい
  • Googleでは1TBのモデルも動いている、なんかよくわからないけどめっちゃでかいんだということが分かった
    • コンテナ化したときにでかいファイル使うっていうのはめっちゃ難しいよね
  • はーほんと事例すごくてすごいっていう気持ちにさせられるけど小さなことからコツコツとやっていこう

Yahoo!JAPANのkubernets-as-a-serviceで開発するアプリケーション開発

  • Yahoo!ズバトク on k8s Masaya Ozawa コマースカンパニー 決済金融統括本部
  • openstackを使っていた
  • concurse ci使っている
  • デプロイ早くなった、まぁパッケージングがDockerになればそりゃ早い
  • 障害時、OpenstackのHypervisorダウンしたら、電話かかってきて、手動でサービスout/inする
    • 復旧作業がいらない
  • ログ調査はSplunkでログ検索やグラフ化、レポート作成
    • これはやらないといけないなー、Datadogでやれるはずなんだけどなかなか後回しになっている・・
  • Worker Nodeの数の最適化、共通機能の切り出し(アプリ的な意味で)、カナリア、feature toggle
    • feature toggleもやりたいなー、大きなbranchを作らないような開発手法にしていきたい

Yahoo!JAPANのKubernetes-as-a-service

  • ゼットラボ株式会社 @superbrothers
    • インフラ基盤技術の調査・研究開発のための子会社
    • 組織的な話だけど、こう言う風に子会社化すれば色々やりやすくなるんだろうなー
  • ゼロダウンタイムのkubernetsのアップグレード
    • nodeのrolling updateみたいなことを実装してる、kopsにも入ってたな、そういうかんじだろう
  • Ingress Controller
    • nghttpx-ingress-lb使ってる
    • ingressホストのDNS自動登録
      • これ作りたい、external-dnsだとwildcardみたいなことができない
  • Automate all the things
    • この画像ってこれだったんや
  • 分散システム基盤としてのKubernetes
  • CRDを作っててこれでclusterの定義とかしてる
  • カスタムコントローラの実装

Kubernets x Paas コンテナアプリケーションのNoOpsへの挑戦

  • Azrureてくのろじースペシャリスト @yokawasa Ventures- > yahoo -> microsoft
  • ReadinessProbeのReadReady、準備OKみたいな意味の方。読むのReadじゃなかった
  • Service Mesh
    • Istio、LINKERD、CONDUIT
      • サーキットブレーカー、スロットリングなど
  • CI/CD、Helmの話、モニタリングとログ収集の話

Custom MetricsとMultiple Metricsを使ってKubernetesのクラスタの強みを最大限活用する

Container Networking Deep dive

  • NTT 市原 裕史
  • CNM(Container Network Model)
  • Container Network Interface(CNI)
  • Linux bridge、veth(ブイイーサと読んでた)、iptables、openVswitch、VPP
  • k8s by kubeadm、docker、flannel、calico
  • flannel
    • vxlan
    • ip rでパケットのルーティング見る
    • veth -> flannel
    • ip nでMac address見る
    • fdb entryというのを見てどのNodeか分かるのでvxlanでカプセリングして投げる
    • workerが追加されるタイミングで1 route、1 arp entry、1 FDB entryが追加される
  • calico
    • BGPを用いてルーティング情報を伝搬可能
    • linux bridgeは使っていない
    • ipatablesでがんばっている
    • calicoの場合1pod 起動毎16ルール増加
    • vethのさきっぽってどういうことじゃい
  • IPIPパケット
    • IPパケットをIPパケットでくるむ、なんかもうよくわからんけどなんとなく分かった
    • トンネリング
  • パフォーマンス改善
    • オフロード機能を適切に設定する、VXLANハードウェアオフロード
    • トンネリングプロトコルを用いない
      • Flannelはhost-gwモード、Calico:ルータへのBGP伝搬
  • DPDKやXDPなどのパケット処理高速化技術を用いる
  • network policy(calico)
  • ipsetというlinuxのipを束ねることができる仕組みを使っている

Spinnakerを利用したKubernetesへの継続的デリバリ

Kubernetesのない世界 すべてがサーバーレスになる

  • Shingo Yoshida(Section9/Serverless),Yasuhiro HARA(SUPINF/Serverless)
  • Less Ops, More Code
    • これはそう、実現できればなんでもOK
  • AWS Fargate、Azure Container Instances、
    • Google App Engineはあえて外したとのこと <-どうして?
  • サーバーレスはイベントドリブン用でコンテナはwebのような待ち受けるサービスだよねと
  • マイクロサービスが絡み合う状態 death star
  • iopipe https://www.iopipe.com/
    • Lambdaをラップしてグローバル変数やLambdaの起動ステートといったメトリクスを収集して送るSaas
    • 課金が10倍ぐらいになっちゃう
  • Epsagon

Dockerだけじゃないコンテナruntime徹底比較!

  • Makoto Hasegawa(CyberAgent)
  • ちょっとブースを回っていた
  • rktはロケットと読む
  • CRI-O vs Containerd
  • Containerdの方がパフォーマンス、速度ともによい
  • runCってなに

    Docker(containerd)は、コンテナの管理などを行い、コンテナ生成・実行はrunCが行っている。

  • kata-runtime

  • Storage driver
    • なんじゃろうこれは
  • devicemapper、overlay、overlay2

Istioと共にマイクロサービスに立ち向かえ!

  • Aya Igarashi(Z Lab)
  • James Lewis & Martin Fowlerでバズり始めたとな。知らんかった martinfowler.com
  • Istioはギリシャ語で帆という意味
  • Envoy
    • API経由で設定変更が可能
  • Problem1: ServiceMeshを制御し切れない問題
    • /v1/だったらこっちみたいな柔軟なルーティングができる
    • カナリアリリース、リクエストのミラー
    • proxyはiptablesでいい感じにやるタイプのやつ
  • Problem2: 鍵と証明書の管理を自動化
    • どういう場面で困るんだろうか
    • アプリケーション間で相互通信するときにTLSで通信する
  • Problem3: システム全体像が把握できない
    • 可視化ツールとの連携
    • ZipKin、Prometheus、ServiceGraph、

ブースで聞いた話

  • Rancherの話
    • k8sラッパーかと思ってたけど違かった、が、2.0からはやっぱりラッパーとしてもできる
  • IBM Cloud
    • IBMのpublic cloudがあるというのを知った
    • オンプレ版の場合、メインフレームの上にk8sを構築するとかもできるらしい
  • 教育系の話、会社名を忘れてしまった・・
    • Dockerの教育とかをしてて引き合いは多いとのこと、主に開発寄りの会社が多い、SIerは1年後とか増えてくるのではないか

懇親会で聞いた話

  • デプロイどうしてますか?
    • githubのmergeタイミングでCIが起動してデプロイする。githubが起点になるのであまりCIの方を見に行かない
  • imageのタグ書き換えは?
    • sedでやってますね
    • Helmを入れるのは基盤側としてはまだ難しい、いろんなtemplateを作ることになったりif文増えたり、helmのtemplateの知識を覚えてもらわないといけないし
  • マイクロサービスの単位は?
    • 小さかった、各サービスごとにDBがある、じぶんたちがやってる単位と違かった
  • お話をいろいろ聞かせていただき感謝です。ありがとうございました!! > 懇親会でお話しした方たち