Japan Container Days v18.04参加してきました
見た内容
サイバーエージェントにおけるプライベートコンテナ基盤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で作った理由としては詰め込みすぎてマシンが死んだら影響範囲がでかい
- ロードバランサーの話
type:LoadBalancer
はOctavia、MetalLB、CloudProvider Integrationを独自実装- GKE 互換のオンプレコンテナ基盤 AKE (Adtech Container Engine) アーキテクチャ完全公開!
- 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のモデルも動いている、なんかよくわからないけどめっちゃでかいんだということが分かった
- コンテナ化したときにでかいファイル使うっていうのはめっちゃ難しいよね
- はーほんと事例すごくてすごいっていう気持ちにさせられるけど小さなことからコツコツとやっていこう
機械学習の運用ってどんなことしてるのか雰囲気が分かってとても参考になりました #containerdaysjp
— オオシママサト (@_mpon) 2018年4月19日
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の
Read
はReady
、準備OKみたいな意味の方。読むのReadじゃなかった
あーReadinessProbeのReadって Readyの方だったのか、ずっと読むのReadだとおもてた・・ #containerdaysjp
— オオシママサト (@_mpon) 2018年4月19日
- k8sの基本的な機能の紹介の発表だ
- Paas、Serverlessの話かな?
- Open Service Broker APIの話だ
- うーむ、まぁterraformでいいかという気にもなってしまう
- Managed Kubernetesの話、AKS
- サーバレスコンテナサービス、よい、Azureにもあるんだ、これからもっといっぱい出てきそう
- Azure Container Instances 起動は数秒以内
- virtual kubelet GitHub - virtual-kubelet/virtual-kubelet: Virtual Kubelet is an open source Kubernetes kubelet implementation.
ACI(Azure Container Instances)でクラスタを意識せずに立ち上げる、virtual kubeletがいることでk8sのnodeのように見える。なるほど、EKS でFargateって言ってたのも、きっとこういうことか #containerdaysjp
— オオシママサト (@_mpon) 2018年4月19日
- Service Mesh
- Istio、LINKERD、CONDUIT
- サーキットブレーカー、スロットリングなど
- Istio、LINKERD、CONDUIT
- CI/CD、Helmの話、モニタリングとログ収集の話
Custom MetricsとMultiple Metricsを使ってKubernetesのクラスタの強みを最大限活用する
- Kodai Sakabe(Wantedly)
- HPA(Horizontal Pod Auto Scalers)の話
- 124 services, 80+nodes, 3k+ containers
- 閾値ではなく割合でモニタリングする
- resouce metrics
- Heapsterがとってくる標準のやつ
- custom metrics
- google stackdriverならとれる
- AWSユーザーはPrometheusとCustom Metrics API Serverをインストールするみたい
- kopsでやってるんだ
- custom metricsとかはHPAをやりたいときに使えることがあるみたい
- GitHub - kubernetes/kube-state-metrics: Add-on agent to generate and expose cluster-level metrics.とはまた違うのか
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を束ねることができる仕組みを使っている
難しくて知らないことばっかりだったけど、ネットワークの話おもしろかった #containerdaysjp
— オオシママサト (@_mpon) 2018年4月19日
Spinnakerを利用したKubernetesへの継続的デリバリ
- Takashi Mizouchi(AP Communications)
- https://www.slideshare.net/devsumi/15blspinnaker
- spinnakerはヨットの帆という意味
- どっちかというと初学者向け、こういうtweetされてた情報を知りたかった
あんまり触れられてない気がするけど、Spinnaker は最低メモリ要件が地味に大きい (8 GB+、Bakery 含まず) 。気軽に試そうとするとちょっとびっくりするかもしれない。 #containerdaysjp
— チェシャ猫@技術書典4 き-33 (@y_taka_23) 2018年4月19日
Kubernetesのない世界 すべてがサーバーレスになる
- Shingo Yoshida(Section9/Serverless),Yasuhiro HARA(SUPINF/Serverless)
- Less Ops, More Code
- これはそう、実現できればなんでもOK
Less Ops, More Code、これはほんとそう、これを目指してる #containerdaysjp
— オオシママサト (@_mpon) 2018年4月19日
- AWS Fargate、Azure Container Instances、
- Google App Engineはあえて外したとのこと <-どうして?
- サーバーレスはイベントドリブン用でコンテナはwebのような待ち受けるサービスだよねと
- マイクロサービスが絡み合う状態 death star
- iopipe https://www.iopipe.com/
- Lambdaをラップしてグローバル変数やLambdaの起動ステートといったメトリクスを収集して送るSaas
- 課金が10倍ぐらいになっちゃう
- Epsagon
- cloud watch logsに送りつけたものをいい感じに見せるやつ
- いいかも https://www.epsagon.com/
Fargate高いという問題、めっちゃ安くしちゃえばk8sどうこうじゃなく簡単にシェア獲得できるのでは #containerdaysjp
— オオシママサト (@_mpon) 2018年4月19日
Dockerだけじゃないコンテナruntime徹底比較!
- Makoto Hasegawa(CyberAgent)
- ちょっとブースを回っていた
- rktはロケットと読む
CRI-O
vsContainerd
- Containerdの方がパフォーマンス、速度ともによい
runC
ってなにDocker(containerd)は、コンテナの管理などを行い、コンテナ生成・実行はrunCが行っている。
kata-runtime
- Storage driver
- なんじゃろうこれは
- devicemapper、overlay、overlay2
Dockerじゃなんでダメなのか?が分からないので分からない・・ 見えているものが違うんだろうな #containerdaysjp
— オオシママサト (@_mpon) 2018年4月19日
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、
システムの全体像が把握できない、分かる #containerdaysjp
— オオシママサト (@_mpon) 2018年4月19日
ブースで聞いた話
- 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がある、じぶんたちがやってる単位と違かった
- お話をいろいろ聞かせていただき感謝です。ありがとうございました!! > 懇親会でお話しした方たち