KubeCon + CloudNativeCon China 2018参加報告

# はじめに
[KubeCon + CloudNativeCon China 2018](https://events.linuxfoundation.cn/events/kubecon-cloudnativecon-china-2018/) に参加してきたので、面白かったプレゼンテーションについて紹介します。**特にKubernetesでKubernetesを管理する**ような話が多く、個人的にも（会社的にも）興味があったのでそういった話を中心にセッションを選びました。


セッションの動画は[Youtubeに公開されている](https://www.youtube.com/playlist?list=PLj6h78yzYM2OK087kzLgc4jTPVbZjuNfs)ので、より詳しい話はそちらを参照してください。

## Comprehensive Performance Benchmark on Various Well-Known CNI Plugins

https://kccncchina2018english.sched.com/event/FuKF/comprehensive-performance-benchmark-on-various-well-known-cni-plugins-giri-kuncoro-vijay-dhama-go-jek?iframe=no&w=100%&sidebar=yes&bg=no

- CNIの様々な比較
- デフォルトの設定での比較なので、このまま判断に使うのは難しいが、比較項目は役立ちそう
- TCPスループット、TCPレイテンシ、TCPスループットvsパケットサイズ、UDPスループットvsパケットサイズ、CPU使用率、Podがネットワークに繋がるまでの時間、ネットワークポリシーの量とレスポンスタイムの関係
- CalicoはデフォルトがIPIPだったようで、残念(BGPだとどうなるのかが気になった)
- Concurrentは次回にやりたいという

↓多くのCNIプラグインを比較
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/cdf9fe18-d545-5673-2d21-cb35c2238054.png)


### Throughput & Latency
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/38d73bd9-12f3-7d13-107d-31ec5ed67605.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/d96355a1-c00d-86e9-8ef8-759b44229e1b.png)

### Protocol & Packet Sizes

![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/852e955c-bf46-70ad-0e09-1d3036459a08.png)
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/2389d25e-dc89-5708-216b-ededd0451ed1.png)


### CPU Overhead
↓CiliumとWeaveがCPUをよく使っている。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/ea8deb76-a7bc-e320-c2b1-cbf2c02599fe.png)


### Network Launch Time
↓flannelはPodを作ってからネットワークが使えるようになるまでの時間が長い
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/36fbf256-d011-315f-8d59-67259c499db2.png)

### 感想
この数字そのものはデフォルトの設定ということで、改善の余地があると思われるが、CNIプラグイン選定の際のベンチマークの取り方という点で非常に参考になる内容だった。


## Node Operator: Kubernetes Node Management Made Simple
[KubeCon + CloudNativeCon China 2018: Node Operator: Kubernetes Node Managemen...](https://kccncchina2018english.sched.com/event/FuKE/node-operator-kubernetes-node-management-made-simple-joe-chen-ant-financial?iframe=no&w=100%&sidebar=yes&bg=no)

- AlibabaのKaaSで利用されているNode Operatorの紹介

![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/ad5d953b-2539-a462-215a-a52a487ce151.png)

- Meta-ClusterでNode Operator, Kube-on-Kube-Operatorが動作
- Biz-ClusterのMasterは　Node OperatorがMeta-ClusterのNodeとしてマシンをセットアップし、Kube-on-Kube-OperatorがマスターコンポーネントをPodとしてデプロイ
- Biz-ClusterのWorkerは　Node Operatorがマシンをセットアップ、上記Masterのメンバとして登録する
- 最初のクラスタはminikubeで一時的に作ると言っていた。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/379458f5-0266-e57e-9c04-66aa78244121.png)

## Evolving Sigma: Adapting Kubernetes at Alibaba

[KubeCon + CloudNativeCon China 2018: Evolving Sigma: Adapting Kubernetes at A...](https://kccncchina2018english.sched.com/event/FuJe/evolving-sigma-adapting-kubernetes-at-alibaba-xiang-li-alibaba?iframe=no&w=100%&sidebar=yes&bg=no)

- AlibabaのインフラであるSigmaの話
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/27053c29-5f0f-4222-a296-f6ae4d037ee1.png)

- 2018年Sigma3.0からKubernetesベースとなった（2017 Sigma2.0はSwarmベースだったらしく、かなり頻繁に作り直しているようだ）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/1f581f6e-5e58-aea4-0a7e-59ded4e208be.png)

- バッチジョブとKubernetesのPodを共存させてリソースの効率化を図っている
- Sigma3.0への以降はクラスタを2つ用意するのではなく、1つのマシンに新旧2つのエージェントを共有させ、スケジューリングを独自のUnifiedSchedulerで行うことで実現している。（力技感
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/a403c734-79af-8048-a874-8c804cfcd396.png)

- dragonflyの活用
- Kubernetesを拡張している
  - CPU Packing
    - CPUのコアとコンテナを紐づける
  - In-Place set controller
    - Podを再スケジューリングすることなく設定変更
  - Image preheat
    - バッチなどで複数のコンテナを直列で実行する際に、Pullを並列化する
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/1645ab8b-08dd-50d6-bf07-d01dc39c3fdb.png)
割となんでも再実装していて勢いを感じた。

## Model and Operate Datacenter by Kubernetes at eBay
[KubeCon + CloudNativeCon China 2018: Model and Operate Datacenter by Kubernet...](https://kccncchina2018english.sched.com/event/FuKD/model-and-operate-datacenter-by-kubernetes-at-ebay-xiaogang-xin-tommy-mei-ebay?iframe=no&w=100%&sidebar=yes&bg=no)

- eBayがデータセンターをCRDで管理している話

↓このような時代に終りを告げる
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/3051c68d-98aa-c219-966c-342f4508a4f2.png)
↓時代に合わせてインフラをも刷新し続けてきた
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/889f71a8-c27a-141e-ae14-3d8f60dbb846.png)

- 次のようなCRDを用意
  - Rack, NoetworkDevice, ComputeAsset, Region/AZ, NetworkScorp
  - OS, Flavor, ComputeNode
  - Kernel params, Environment config, Network
  - Core components, Addon, Taint
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/3895e9dd-db4c-8fc9-0f92-40a2fa176685.png)


- アップグレードはRackByRackでローリングアップデート
- Kubernetesクラスタもこれで作っている
  - まずはSalt masterをこの仕組みで作る
  - Kubernetesの構築はSaltのrepoで管理されている
- StatefulなアプリケーションはKubernetesにのせずにこの仕組みで管理することもできる

![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/4e2b281f-8d3c-a1a8-ddea-6a986e07db0a.png)

## Deep Dive: CNCF K8s-Conformance WG
[KubeCon + CloudNativeCon China 2018: Deep Dive: CNCF K8s-Conformance WG - Zef...](https://kccncchina2018english.sched.com/event/FuLS/deep-dive-cncf-k8s-conformance-wg-zefeng-wang-huawei-srinivas-brahmaroutu-ibm?iframe=no&w=100%&sidebar=yes&bg=no)

- せっかくなのでDeepDiveも見てみる
- Conformanceテストの時間を短くする方法
  - まずは並列でテストを行う
  - タイムアウトを伸ばす

![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/96cc24df-32cc-eb0b-b078-a0f37ddccfcf.png)

- GFWに阻まれてうまく実行できない
    - 客席にいたDan Khonが中国にもミラーを用意する予定がある、とアナウンスしていた
- Conformanceテストを追加する要件について紹介

![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/dc9528e1-d1a1-bcf7-bce5-ef2e59e88695.png)

- Conformanceテストのドキュメントについて紹介　テストが失敗した時などに役立つとのこと。
  - [k8s-conformance/KubeConformance-1.11.md at master · cncf/k8s-conformance · GitHub](https://github.com/cncf/k8s-conformance/blob/master/docs/KubeConformance-1.11.md)
  - このドキュメントはソースコードから生成することができる
- 途中から客席にいるConformanceTestに詳しい人（偉い人？）が質疑応答に応じはじめて、もうお前前へこいよ 的な展開になった。DeepDive感を感じました。

↓なぜか4人前に立っている
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/f9319a59-799f-9e6d-60da-30bb23382d3a.png)

## Seamless Integration - Take Kubernetes into your Existing Monitoring Stack

[KubeCon + CloudNativeCon China 2018: Seamless Integration - Take Kubernetes i...](https://kccncchina2018english.sched.com/event/FuK4/seamless-integration-take-kubernetes-into-your-existing-monitoring-stack-shaojun-ding-ibm?iframe=no&w=100%&sidebar=yes&bg=no)

Kubernetes以前から存在するモニタリングシステムとKubernetesのモニタリングをどのようにつなげるのかという話。

基本的にはメトリクスをKafkaに送って、既存のモニタリングシステムに送り込むという仕組み。

- cAdvisorをDaemonSetでデプロイして、そのメトリクスを収集する
- PrometheusのサイドカーとしてPromQLを定期的に実行し結果をKafkaに送信する
- PrometheusのRemote_writeの送信先に独自のアダプタを設定し、そのメトリクスをKafkaに送信する
- ExporterをScrapeするGoのプログラムを自前で書いてそのメトリクスをKafkaに送信する

という方法を紹介。それぞれのPros,Consも表にしてある

![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/a9a619f7-a4fb-085c-e82a-effcb42ee5ef.png)

# その他

## 会場に卓球台がある
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/064529ce-c1e1-b889-3083-97b41f24d6bd.png)

## 夜は謎の龍や太鼓の演奏
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/971e58e3-b506-4509-ec7e-df2757c5036f.png)

## 目の前でみかんをすりつぶしてジュースにする自販機
![image.png](https://qiita-image-store.s3.amazonaws.com/0/100375/860aeb95-8f01-2017-840f-a1243f5c7778.png)

# まとめ

Kubernetesを基とした独自のクラウド基盤についての話をたくさん聞くことができた。これも中国という特殊な環境が生み出したものであると感じました。
また、中国には巨大なIT企業がいくつもあり、相当のコストをかけてインフラを開発・運用していることを知りました。
[Z Lab](https://zlab.co.jp/)では、[Kubernetes as a Serviceを開発しています](https://speakerdeck.com/shmurata/how-we-accomplish-noops-by-kubernetes-operator)！ この記事で紹介したような**KubernetesでKubernetesを管理する**話に興味のあるエンジニアの方を募集しています！


この記事は[Z Lab Advent Calendar 2018](https://qiita.com/advent-calendar/2018/zlab) の記事として業務時間中に書きました。