Slide 1

Slide 1 text

VolumePluginの仕組みと実装解説

Slide 2

Slide 2 text

varsion: v2 name: "Kyohei Mizumoto" role: "SRE" interests: - "kubernetes" - "public cloud" - "golang" twitter: "@kyohmizu" url: "https://kyohmizu.com/" whoami

Slide 3

Slide 3 text

今⽇話すこと VolumePluginの概要 Volume作成の仕組み 実装解説 VolumeManager VolumePlugin (emptyDir/ConfigMap/Secret)

Slide 4

Slide 4 text

注意点 kubernetes v1.20.2ベースでお話しします Linuxノードに直接作成するVolumeが対象です (Windowsノード、CSI等は取り扱いません) 理解不⾜により内容に誤りがある可能性があります…︕

Slide 5

Slide 5 text

kubeletについて こちらを参照 https://speakerdeck.com/bells17/kubelet

Slide 6

Slide 6 text

VolumePluginについて kubelet内で動作するPlugin pod.spec.volumesに基づいてノード上にVolumeを作成する Volumeの種類ごとにPluginが⽤意されている https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.20/#volume-v1-core

Slide 7

Slide 7 text

Volume作成の仕組み

Slide 8

Slide 8 text

引⽤︓https://speakerdeck.com/bells17/kubelet?slide=17

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

Volume作成の仕組み desired state of world ノードに作成・アタッチすべきVolume⼀覧 actual state of world ノードに作成・アタッチされたVolume⼀覧 desired state of world populator ノードにスケジュールされたPod⼀覧からdswを更新する reconciler dswとaswを⽐較し、未作成のVolumeの作成とaswの更新を⾏う

Slide 12

Slide 12 text

実装解説

Slide 13

Slide 13 text

実装解説 VolumePlugin定義 初期化 (kubelet起動時) Volume作成の流れ VolumePluginの実装 emptyDir ConfigMap Secret

Slide 14

Slide 14 text

実装解説 emptyDir/ComfigMap/Secretの保存パスについて Secretはメモリ領域(tmpfs)に作成される ComfigMap/Secretの動的更新と修復 emptyDirのv1.20での修正内容

Slide 15

Slide 15 text

実装解説 資料のリンク https://gist.github.com/kyohmizu/23ab1e76ebc2a2984694b144a0be9b78