Slide 1

Slide 1 text

Masaya Aoyama CyberAgent KubeCon + CloudNativeCon EU 2022 Recap Kubernetes Meetup Tokyo #51 amsy810 @amsy810

Slide 2

Slide 2 text

- Co-chair ੨ࢁ ਅ໵ + CREATIONLINE - 技術アドバイザ + SAKURA Internet Research Center – 客員研究員 + 3-shake 技術顧問 + PLAID - Organizer - KaaS Product Owner - Publications Twitter: @amsy810

Slide 3

Slide 3 text

F#1' 'BMDP &&UFTUJOH MPOHMJWFEQPET FUD https://gihyo.jp/admin/column/newyear/2022/cloudnative-prospect

Slide 4

Slide 4 text

Cilium project Welcome, Vision & Updates Thomas Graf & Liz Rice, Isovalent; Laurent Bernaille, Datadog https://sched.co/ytq0

Slide 5

Slide 5 text

$JMJVNGBNJMZ

Slide 6

Slide 6 text

F#1'ͷద༻ྖҬ • 原因の切り分けを⾏う際に低レイヤーの情報を Pod やコンテナと紐付けた形で利⽤したい • Sidecar-less 等でアプリケーションから不可視な状態で様々なデータを収集したい • オーバーヘッドを極⼒抑えた形で導⼊したい Networking Observability Security servicemesh Cilium CNI Hubble tetragon tetragon ebpf ※ Falco / Pixie でしか取れないデータなどもあると思います

Slide 7

Slide 7 text

$JMJVN$/* iptables 部分の eBPF 代替 = 低レイヤーでのネットワーク関連処理(O11yを合わせて実現) L7 レイヤーの情報を元にした処理

Slide 8

Slide 8 text

$JMJVN4FSWJDF.FTI

Slide 9

Slide 9 text

)VCCMF サービス間通信の依存関係可視化 【Cilium】 • TCPコネクション等のL3/L4通信 • HTTPリクエストやL7通信 【Hubble】 • L3/L4/L7のサービス間通信の状況 • DNSクエリ等の通信状況 • Network Policy の拒否 リアルタイムのデータ収集 定期的なデータ収集

Slide 10

Slide 10 text

5FUSBHPO ルールを定義し、 リアルタイムの制御も可能 Falco のようにルールセットは 公開されていなさそう Kubernetes のワークロード情報と紐付け可能 カーネルの情報やイベント情報を収集

Slide 11

Slide 11 text

F#1'ͷద༻ྖҬ • 原因の切り分けを⾏う際に低レイヤーの情報を Pod やコンテナと紐付けた形で利⽤したい • Sidecar-less 等でアプリケーションから不可視な状態で様々なデータを収集したい • オーバーヘッドを極⼒抑えた形で導⼊したい Networking Observability Security servicemesh Cilium CNI Hubble tetragon tetragon ebpf ※ Falco / Pixie でしか取れないデータなどもあると思います

Slide 12

Slide 12 text

Better Bandwidth Management with eBPF Daniel Borkmann & Christopher M. Luciano, Isovalent https://sched.co/ytsQ

Slide 13

Slide 13 text

&%5Λར༻ͨ͠ଳҬ੍ޚ eBPF を⽤いて帯域制御の管理を向上 ・EDT(Early Departure Timestamp)を利⽤ ・timestamp を cilium が eBPF を⽤いて制御 Evolving from AFAP – Teaching NICs about time Earliest Departure Timeモデル Replacing HTB with EDT and BPF タイミングホイール スケジューラー

Slide 14

Slide 14 text

᫔᫓੍ޚ ##3

Slide 15

Slide 15 text

##3XJUI1PE

Slide 16

Slide 16 text

##3XJUI1PE

Slide 17

Slide 17 text

Falco to Pluginfinity and Beyond Leonardo Grasso & Jason Dellaluce, Sysdig https://sched.co/ytlz

Slide 18

Slide 18 text

Falco architecture • カーネルモジュールか eBPF でデータを収集 • Libsinsp: フィールドの抽出や加⼯ • Libscap: イベントの収集

Slide 19

Slide 19 text

Falco plugin • カーネルモジュールか eBPF でデータを収集 • Libsinsp: フィールドの抽出や加⼯ • Libscap: イベントの収集 SDK は Go と C++ (WIP) 動的共有ライブラリを⽣成して読み込む

Slide 20

Slide 20 text

Falco plugin

Slide 21

Slide 21 text

Falco plugin

Slide 22

Slide 22 text

Falco plugin https://github.com/falcosecurity/plugins

Slide 23

Slide 23 text

Metrics as a First-Class citizen in the E2E Testing landscape Matej Gera & Jéssica Lins, Red Hat https://sched.co/ytuD

Slide 24

Slide 24 text

E2Eテストで Metrics を⽤いる • 正常終了化否かのバイナリチェック(2値)よりも詳細なアサーション • 「前提条件を満たすか」 や 「特定のメトリクスがXになるまで待つ」 といった柔軟な制御 • 複雑なテストシナリオを簡単に扱える • より詳細な情報を元にテスト結果を可視化 https://github.com/efficientgo/e2e 利⽤実績 • Cortex(もともと Cortex で利⽤するために作成) • Thanos • Observatorium

Slide 25

Slide 25 text

efficientgo/e2e • docker 環境でアプリケーションを起動 • Prometheus の起動や Scrape などはフレームワークが隠蔽 Envtestのように環境を⽣成 (docker利⽤) アプリケーションの起動 (source code からは 🙅?) https://github.com/efficientgo/e2e/blob/b021e438f0224113fdc106 48344826f15bf89e76/env.go#L68-L80

Slide 26

Slide 26 text

Prometheusの初期化 メトリクスが特定の値になるまで待機 メトリクスが特定の値になるまで待機 インタラクティブな処理も利⽤可能

Slide 27

Slide 27 text

Supporting Long-Lived Pods Using a Simple Kubernetes Webhook Clément Labbe, Slack https://sched.co/ytmo

Slide 28

Slide 28 text

1PEͱ/PEFͷMJGFTQBO؅ཧ taints と tolerations を使って、ノードの寿命とPodが要求する寿命をゆるく制御 実際問題あまり⽌められてほしくないPodが存在 ・最初からやり直しになるバッチジョブ ・同期し直しになる分散キャッシュ ・Singleton なアプリケーション VMノードの停⽌予告や Preemptible でも応⽤可能

Slide 29

Slide 29 text

1PEͱ/PEFͷMJGFTQBO؅ཧ ノードには残りの寿命を表すtaintsが付与 (slack.com/lifespan-remaining: “14”) • 1⽇経過するごとに1ずつ減らしていく

Slide 30

Slide 30 text

1PEͱ/PEFͷMJGFTQBO؅ཧ Podが 7 ⽇の lifespan をラベルで指定(slack.com/lifespan-requested: "7") Podは7〜14⽇のtolerationsがついた状態で起動してくる(mutating) • 「slack.com/lifespan-remaining: 7」 • 「slack.com/lifespan-remaining: 14」

Slide 31

Slide 31 text

1PEͱ/PEFͷMJGFTQBO؅ཧ Podは残りの寿命が7⽇以上のノードにのみスケジューリングされる形になる • Slack社ではNoSchedule effectを使っているので、最低それだけ起動することが(だいたい)保証されている • NoExecuteではないので期限切れになった際にPodが削除されることが保証されるわけではない

Slide 32

Slide 32 text

開催⽇︓ 2022/8/5(⾦) CFP締め切り︓ 2022/6/13(⽉) オンライン・参加費無料

Slide 33

Slide 33 text

Thank you for your attention Twitter: @amsy810