# 2021年/小満(前) 非中央集権型のトレース、1万個のコンテナ実験、Cilium 1.10、k8sjp #41
Created: May 20, 2021 7:17 PM
Research: transtracer, tsifter
#prometheus #cillium #rook
Week: May 17, 2021 → May 23, 2021
[小満|暦生活](https://www.543life.com/season/shouman)
> 小満(しょうまん)とは、あらゆる生命が満ち満ちていく時期のこと。
太陽の光を浴び、万物がすくすく成長していく季節です。
今年は梅雨入りが早く、連日雨模様だった。京都市内で土砂崩れ警報が鳴って、朝に起こされたこともあった。
# Research
## 非中央集権型のトレースデータの保存
ネットワークのトレースデータというものは、メトリクスやログほど観測することが一般的ではない。そのため、[https://github.com/yuuki/shawk](https://github.com/yuuki/shawk)のようなトレーシングツールを利用してもらうには、オーバヘッドや管理コスト、金銭コストをなるべく小さくすることが望ましい。
そこで、中央にデータベースを配置するのをやめて、各ホスト上のTracing府rせすに非中央集権型で管理させるのはどうかとJust Ideaで考えた。
![[2021%E5%B9%B4 %E5%B0%8F%E6%BA%80(%E5%89%8D) %E9%9D%9E%E4%B8%AD%E5%A4%AE%E9%9B%86%E6%A8%A9%E5%9E%8B%E3%81%AE%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B9%E3%80%811%E4%B8%87%E5%80%8B%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%AE%9F%E9%A8%93%E3%80%81Cilium 1 10%E3%80%81k8s/Untitled.png]]%20%E9%9D%9E%E4%B8%AD%E5%A4%AE%E9%9B%86%E6%A8%A9%E5%9E%8B%E3%81%AE%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B9%E3%80%811%E4%B8%87%E5%80%8B%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%AE%9F%E9%A8%93%E3%80%81Cilium%201%2010%E3%80%81k8s%2040367af7a2d9441a8107027645a902fd/Untitled.png)
しかし、そのあと、右図のような、中央集権的だが、中央で永続状態をもたないようなアーキテクチャであれば、最初のステップとしては、十分ではないかと考え始めた。 トレースデータのサイズは、見立てでは、メトリクスやログほどかさ張らないため、中央で数時間から数週間分をキャッシュする。永続状態をもたないので、API serverは気楽に運用できる。
![[2021%E5%B9%B4 %E5%B0%8F%E6%BA%80(%E5%89%8D) %E9%9D%9E%E4%B8%AD%E5%A4%AE%E9%9B%86%E6%A8%A9%E5%9E%8B%E3%81%AE%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B9%E3%80%811%E4%B8%87%E5%80%8B%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%AE%9F%E9%A8%93%E3%80%81Cilium 1 10%E3%80%81k8s/Untitled 1.png]]%20%E9%9D%9E%E4%B8%AD%E5%A4%AE%E9%9B%86%E6%A8%A9%E5%9E%8B%E3%81%AE%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B9%E3%80%811%E4%B8%87%E5%80%8B%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%AE%9F%E9%A8%93%E3%80%81Cilium%201%2010%E3%80%81k8s%2040367af7a2d9441a8107027645a902fd/Untitled%201.png)
## 1万個のコンテナ実験
TCP/UDP負荷生成ツールの[connperf](https://github.com/yuuki/connperf)を用いて、1対1万の通信環境を再現するために、1万個のコンテナを起動させて、[https://github.com/yuuki/go-conntracer-bpf](https://github.com/yuuki/go-conntracer-bpf) の負荷試験をしていた。
1台のVM上で、1万個のコンテナを動かそうとすると、connperfの場合は、メモリが160GBぐらい必要になる。[さくらのクラウドに20コア、160GBのプランがある](https://cloud.sakura.ad.jp/specification/server-disk/#server-disk-content01-price)ので、それでもいいのだけど、1物理ホストをほとんど専有するはずなので、ひよって、10VMに分散させて、1000個ずつ起動させた。
10VMを並行で扱うために、自動実験用プログラムのSSHコマンド発行部分を、複数のホストに並行でコマンドを発行できるように、書き換えたりした。 [https://github.com/yuuki/shawk-experiments/blob/ab0267400b458b16d37f349f29bfe1e703e3ef17/tools/runexper/main.go#L116-L139](https://github.com/yuuki/shawk-experiments/blob/ab0267400b458b16d37f349f29bfe1e703e3ef17/tools/runexper/main.go#L116-L139)
[[2021年 啓蟄(前) [[1000コンテナ起動実験,eBPFの統計情報,CNDO2021]] 1000%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E8%B5%B7%E5%8B%95%E5%AE%9F%E9%A8%93%EF%BC%8CeBPF%E3%81%AE%E7%B5%B1%E8%A8%88%E6%83%85%E5%A0%B1%EF%BC%8CCNDO2021]] のときは1000コンテナ起動しようとすると、Docker周りのコンテナ起動時間の問題があった。今回は、さくらクラウドで、イメージのアーカイブを作って、そのアーカイブをもとに、VMを10個起動するだけなので、大した問題はなかった。実験上の利点はほとんどないけど、1ホストで10kコンテナ起動もやってみたくはある。
![[logbook/_attachments/Untitled 2.png]]
## システム制御学会の学会誌に寄稿
[学会誌・論文誌](https://www.iscie.or.jp/pub/journal)
研究室の先生に依頼いただいて、システム制御制御学会の学会誌に、国際会議の参加報告を寄稿した。The 2020 IEEE World Congress on SERVICES (IEEE SERVICES 2020) 参加報告
中身は、以前にブログに書いた通り、 IEEE CLOUD 2020の参加報告となっている。
[クラウド系の国際会議IEEE CLOUD 2020参加録 - ゆううきブログ](https://blog.yuuk.io/entry/2020/ieeecloud2020)
システム制御学会になじみはなかったのだけど、情報システムに限らない、一般システム理論の見地にたった、システム制御手法が研究されている。寄稿した第65巻第5号では、生命システムや脳神経のネットワーク、金融システムのネットワークなどに関する、複雑ネットワーク研究の最前線という特集が組まれている。一般システム理論には前から興味があったので、おもしろそう。
## ポモドーロタイマーアプリ Flow
Focus To-Doというアプリをこれまで使っていたのだけど、最近、[Flow](https://flowapp.info/) というアプリを使い始めた。Focus To-Doは使い勝手はよかったのだけど、なぜか、セッションの途中でチクタク音が鳴らなくなるという問題がでてきた。再起動でもすれば直ったかもしれないけど、気分転換にアプリを変えてみるのもいいかと思って、Flowを選んだ。
Flowは、Focus To-Doより機能は少なめだけど、セッション終了時に画面が強制的に休憩モードにできたり、チクタク音も鳴らせるし、macOSのカレンダーにセッション時間が記録できたりする。あとは、アプリやURLのブロックもできるので、Slackをブロックするようにしたい。
ポモドーロアプリは、無限に存在するので、気分をかえるためにたまに乗り換えるのも悪くない。
# Clips
## What is Observability?
[What is Observability](http://www.brendangregg.com/blog/2021-05-23/what-is-observability.html)
Brendan Greggは、Observabilityは、パフォーマンスの問題解決の手段の1つでしかなく、Observabilityの他にExperimentationがあると述べている。どちらかひとつだけで、問題を解決しようとするのは、片手だけ使うのと同じである。
> "You have two hands. Observability and experimentation."
Observability自体は、"コンピュータエンジニアリングでは、技術がどのように動作しているかを理解する(観察する)ためのツール、データソース、手法"を表す用語だと定義されている。
## Cilium 1.10リリース
[Cilium 1.10: Wireguard, BGP Support, Egress IP Gateway, New Cilium CLI, XDP Load Balancer, Alibaba Cloud Integration and more - Cilium](https://cilium.io/blog/2021/05/20/cilium-110)
この最近の大きな変更が取り込まれたメジャーリリース。Ciliumは、使ったことがないし、あんまり詳しくないんだけど、Ciliumを構成する技術要素がどれもハイレベルで興味深い。
**Egress IP Gateway**: k8s外部との通信に利用するIPアドレスを固定できるようになったので、変動するPod IPの管理に苦労しなくてすむようになった。
**Integrated BGP Support**: k8sと、既存のBGPが動作するネットワークインフラストラクチャを連携できるようになった。
**Standalone Load Balancer**: FacebookのLBであるMaglevのconsistent hashingを利用したXDPベースのロードバランサが搭載された。k8sと独立して利用もできる。
**Wireguard Support**: Wireguardサポートにより、pod間でVPNを貼れるようになった。
**New Cluster Administration CLI**: Ciliumクラスタのインストールや管理のための新しいCLI。 `cilium status`コマンドで、クラスタワイドなステータスを閲覧できたり、`cilium connectivity test` で接続性のチェックができたりする。
**Better performance than ever**: Netfilterによるconnection tracking (conntrack)をスキップできるようになった。
## インフォーマルな文章
[https://messagepassing.github.io/015-poems/06-secondlife/](https://messagepassing.github.io/015-poems/06-secondlife/)
Message Passingに、前職のはてなのカルチャーについて書かれていた。secondlifeさんとは所属時期は重複していないが、ここに書いてあるカルチャーは、少なくとも、僕が退職した2018年末までは、継続されていた。
その時期では、7-8割の人がインフォーマルな文章を書いているということは、もうなかったかもしれない。半分かそれ以下ぐらいだったかどうか。
ウェブ上ではインフォーマルな文章をみかけても、社内でインフォーマルな文章を書きあう楽しさがあるというのは、実際に体験したことがないとよくわからないことかもしれない。
インフォーマルな文章を書けるというのは、そういうことを書いてもいいよという心理の安全があるということになる。インフォーマルな文章を書けば書くほど、互いの人となりもわかってきて、。
中には温度感の高い文章もあったりして、イラッとくることもあった。自分も何度か書いてしまったことがある。全てがよいことばかりではないのだけど、。
[https://twitter.com/yuuk1t/status/1395284417606610950](https://twitter.com/yuuk1t/status/1395284417606610950)
## k8sjp #41
[https://www.youtube.com/watch?v=KpkUB5Q1CmE](https://www.youtube.com/watch?v=KpkUB5Q1CmE)
### KubeCon + CloudNativeCon Europe 2021 Overview (10 min)
[KubeCon + CloudNativeCon Europe 2021 Virtual Overview / Kubernetes Meetup Tokyo #41 / #k8sjp](https://www.slideshare.net/pfi/kubecon-cloudnativecon-europe-2021-virtual-overview-kubernetes-meetup-tokyo-41-k8sjp)
**Kubernetes as the control plane for the hybrid cloud**
- k8sがビルドインリソースが除かれている軽量 Control PlaneだけのAPIサーバをつくっている
- ハイブリッドクラウドのためのマルチクラスタを実現できる
- kcp [https://github.com/kcp-dev/kcp](https://github.com/kcp-dev/kcp) (青山さんに教わっていた)
**Kubernetes Project Updates**
- リリースサイクルが年4回から3回へ
**Cloud Native & WebAssembly**
- エッジでリソースが足りないところでWASMとか
- Kubergarden: Admission Webhook のポリシー管理にWASM
- OCI Registry WASMで配布できる
### Rook: Intro and Ceph Deep Dive (20min)
[Kube Con EU 2021 recap ~ Rook Intro & Ceph Deep Dive](https://speakerdeck.com/sat/kube-con-eu-2021-recap-rook-intro-and-ceph-deep-dive)
- マネージドサービスは、ベンダーロックイン
- Stable: Ceph(コードの2/3), Alpha Cassandra, NFS, YugaByteDB
- メンテしないやつは捨てていく
- Cephのアーキテクチャ
![[logbook/_attachments/Untitled 3.png]]
- Rookのアーキテクチャ
![[logbook/_attachments/Untitled 4.png]]
- OB,OBCはPV,PVCと同じようにオブジェクトストレージを切り出せる
- COSI (Container Object Storage Interface) をサポート予定
- Host-Based cluster
- シンプル。ハードウェア構成をYAMLに書く必要がある。
- PVC-based cluster
- ハードウェア構成を隠蔽できる
- 直感的でない。countを増やしていくと、OSD PodとPVCが増える。
- podのスケジュール先が未定なので、2つのOSD podが同一ノードに配置されることがある。
- TSC TopologySpreadConstraints
- k8sの機能で、所定のドメイン間でPodを均等分散配置
- ラベルを設定する
- サイボウズはなぜRook/Ceph
- スケーラブル、ブロックとオブジェクトストレージ、ラック障害耐性など
- 自分たちで機能追加可能
- Rookへの貢献
- TSCのサポート
- データ破壊問題の解決
- XFS on Cephブロックストレージの問題検出
![[2021%E5%B9%B4 %E5%B0%8F%E6%BA%80(%E5%89%8D) %E9%9D%9E%E4%B8%AD%E5%A4%AE%E9%9B%86%E6%A8%A9%E5%9E%8B%E3%81%AE%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B9%E3%80%811%E4%B8%87%E5%80%8B%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%AE%9F%E9%A8%93%E3%80%81Cilium 1 10%E3%80%81k8s/Untitled 5.png]]%20%E9%9D%9E%E4%B8%AD%E5%A4%AE%E9%9B%86%E6%A8%A9%E5%9E%8B%E3%81%AE%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B9%E3%80%811%E4%B8%87%E5%80%8B%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%AE%9F%E9%A8%93%E3%80%81Cilium%201%2010%E3%80%81k8s%2040367af7a2d9441a8107027645a902fd/Untitled%205.png)
- HDDとNVMe SSDの2つのクラスタ
- 現状は、監視ツールとログ基盤がクラスタAを使っている
- 成熟度はまだこれから。毎週全サーバを再起動している
### PromQL Compatibility Testing - Verifying Vendor Claims for End User Benefit (20 min)
Grafana Agent (→ remote write) + Cortex + (← PromSQL) Grafanaのように、Prometheusに依存しない構成も。
PromQLにより互換性が維持される。
![[2021%E5%B9%B4 %E5%B0%8F%E6%BA%80(%E5%89%8D) %E9%9D%9E%E4%B8%AD%E5%A4%AE%E9%9B%86%E6%A8%A9%E5%9E%8B%E3%81%AE%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B9%E3%80%811%E4%B8%87%E5%80%8B%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%AE%9F%E9%A8%93%E3%80%81Cilium 1 10%E3%80%81k8s/Untitled 6.png]]%20%E9%9D%9E%E4%B8%AD%E5%A4%AE%E9%9B%86%E6%A8%A9%E5%9E%8B%E3%81%AE%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B9%E3%80%811%E4%B8%87%E5%80%8B%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%AE%9F%E9%A8%93%E3%80%81Cilium%201%2010%E3%80%81k8s%2040367af7a2d9441a8107027645a902fd/Untitled%206.png)
PromQLの互換性テスト
![[2021%E5%B9%B4 %E5%B0%8F%E6%BA%80(%E5%89%8D) %E9%9D%9E%E4%B8%AD%E5%A4%AE%E9%9B%86%E6%A8%A9%E5%9E%8B%E3%81%AE%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B9%E3%80%811%E4%B8%87%E5%80%8B%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%AE%9F%E9%A8%93%E3%80%81Cilium 1 10%E3%80%81k8s/Untitled 7.png]]%20%E9%9D%9E%E4%B8%AD%E5%A4%AE%E9%9B%86%E6%A8%A9%E5%9E%8B%E3%81%AE%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B9%E3%80%811%E4%B8%87%E5%80%8B%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%AE%9F%E9%A8%93%E3%80%81Cilium%201%2010%E3%80%81k8s%2040367af7a2d9441a8107027645a902fd/Untitled%207.png)
![[2021%E5%B9%B4 %E5%B0%8F%E6%BA%80(%E5%89%8D) %E9%9D%9E%E4%B8%AD%E5%A4%AE%E9%9B%86%E6%A8%A9%E5%9E%8B%E3%81%AE%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B9%E3%80%811%E4%B8%87%E5%80%8B%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%AE%9F%E9%A8%93%E3%80%81Cilium 1 10%E3%80%81k8s/Untitled 8.png]]%20%E9%9D%9E%E4%B8%AD%E5%A4%AE%E9%9B%86%E6%A8%A9%E5%9E%8B%E3%81%AE%E3%83%88%E3%83%AC%E3%83%BC%E3%82%B9%E3%80%811%E4%B8%87%E5%80%8B%E3%81%AE%E3%82%B3%E3%83%B3%E3%83%86%E3%83%8A%E5%AE%9F%E9%A8%93%E3%80%81Cilium%201%2010%E3%80%81k8s%2040367af7a2d9441a8107027645a902fd/Untitled%208.png)
[MetricFire](https://www.metricfire.com/)
[PromQL Compliance Tests](https://promlabs.com/promql-compliance-tests/)
ゼットラボではThanosを提供している。