Trident: Kubernetes ๋ฒ„์ „์ด ์—…๋ฐ์ดํŠธ๋œ ํ›„ Trident CSI Node ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋“ฑ๋ก ์ทจ์†Œ๋จ

์— ๋งŒ๋“  2020๋…„ 11์›” 25์ผ  ยท  4์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: NetApp/trident

๋ฒ„๊ทธ ์„ค๋ช…

Kubernetes ๋ฒ„์ „์ด v1.18.9์—์„œ v1.19.4๋กœ ์—…๋ฐ์ดํŠธ๋œ ํ›„ ํ•œ ๋…ธ๋“œ์˜ Trident CSI ๋…ธ๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ( csi.trident.netapp.io )์ด ์ด์ œ ๋“ฑ๋ก ์ทจ์†Œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์ด ๋…ธ๋“œ์˜ ํฌ๋“œ๋Š” ๋” ์ด์ƒ Trident ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธ ๋ฐ ๋งˆ์šดํŠธ ํ•ด์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€

kubelet ๋กœ๊ทธ์— ๋‹ค์Œ ๋ฉ”์‹œ์ง€๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.

csi.trident.netapp.io ๋“ฑ๋ก ์†Œ์ผ“( /var/lib/kubelet/plugins_registry/csi.trident.netapp.io-reg.sock )์ด ์ œ๊ฑฐ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋“ฑ๋ก์ด ์ทจ์†Œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

I1119 05:47:54.246972 6550 plugin_watcher.go:212] ์›ํ•˜๋Š” ์ƒํƒœ ์บ์‹œ์—์„œ ์†Œ์ผ“ ๊ฒฝ๋กœ /var/lib/kubelet/plugins_registry/csi.trident.netapp.io-reg.sock ์ œ๊ฑฐ ์ค‘
I1119 05:47:53.162305 6550 reconciler.go:139] operationExecutor.UnregisterPlugin์ด "/var/lib/kubelet/plugins_registry/csi.trident.netapp.io-reg.sock"์—์„œ ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•ด ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค(ํ”Œ๋Ÿฌ๊ทธ์ธ ์„ธ๋ถ€ ์ •๋ณด: &{/var /lib/kubelet/plugins_registry/csi.trident.netapp.io-reg.sock 2020-11-04 05:08:19.553684094 +0000 UTC m=+38.893901704 0x704c200 csi.io.trident}
I1119 05:47:53.163390 6550 csi_plugin.go:177] kubernetes.io/csi: csi.trident.netapp.io ํ”Œ๋Ÿฌ๊ทธ์ธ์— ๋Œ€ํ•œ registrationHandler.DeRegisterPlugin ์š”์ฒญ

csi.trident.netapp.io ์„ ์ฐพ์„ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ํฌ๋“œ์—์„œ ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธ ํ•ด์ œํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

E1119 09:02:52.819122 6550 nestedpendingoperations.go:301] "{v olumeName:kubernetes.io/csi/csi.trident.netapp.io ^pvc-75a6fd7f-7aee-45e8-a5fa-d45dee45deapodName์— ๋Œ€ํ•œ ์ž‘์—… -4e0c-9e71-cba46dfc3657 nodeName:}"์ด(๊ฐ€) ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค. 2020-11-19 09:04:54.819071328 +0000 UTC m=+1310234.159288938(durationBeforeRetry 2m2s)๊นŒ์ง€ ์žฌ์‹œ๋„๊ฐ€ ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ค๋ฅ˜: "UnmountVolume.TearDown์ด "๋ฐ์ดํ„ฐ" ๋ณผ๋ฅจ์— ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค(๊ณ ์œ  ์ด๋ฆ„: "kubernetes.io/csi/csi.trident.netapp.io^pvc-75a6fd7f-7aee-45e8-a5fa-d4500272528e") ํฌ๋“œ "ad18a7d1-40c -9e71-cba46dfc3657"(UID: "ad18a7d1-4090-4e0c-9e71-cba46dfc3657"): kubernetes.io/csi: mounter.SetUpAt์—์„œ CSI ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค: ๋“œ๋ผ์ด๋ฒ„ ์ด๋ฆ„ ๋ชฉ๋ก csi.trident.netapp.io๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋“ฑ๋ก๋œ CSI ๋“œ๋ผ์ด๋ฒ„ ์ˆ˜"

๋‘ ๊ฐœ์˜ trident-csi๊ฐ€ ๋™์‹œ์— ์‹คํ–‰ ์ค‘์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด ๋…ธ๋“œ์—์„œ ๋‘ ๊ฐœ์˜ trident-csi (๋…ธ๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ) ํฌ๋“œ๊ฐ€ ๋งค์šฐ ์งง์€ ์‹œ๊ฐ„ ๋™์•ˆ ๋™์‹œ์— ์‹คํ–‰๋˜๊ณ  ์žˆ์—ˆ๊ณ  ์ƒˆ ํฌ๋“œ๊ฐ€ ์‹œ์ž‘๋œ ํ›„ ์ด์ „ driver-registrar ์ด ์ค‘์ง€๋˜์—ˆ์Œ์„ ๋ฐœ๊ฒฌํ–ˆ์Šต๋‹ˆ๋‹ค.

driver-registrar ๋Š” SIGTERM( node_register.go#L113-L116 )์„ ์ˆ˜์‹ ํ•  ๋•Œ ๋“ฑ๋ก ์†Œ์ผ“( /var/lib/kubelet/plugins_registry/csi.trident.netapp.io-reg.sock )์„ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ์†Œ์ผ“์„ ์ œ๊ฑฐํ•˜๋ฉด kubelet์ด Trident ํ”Œ๋Ÿฌ๊ทธ์ธ์„ ๋“ฑ๋ก ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์ด ๋ฌธ์ œ์˜ ์›์ธ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

image

์—…๋ฐ์ดํŠธ ํ›„ DaemonSet์ด ๋‹ค์‹œ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Trident-csi(๋…ธ๋“œ ํ”Œ๋Ÿฌ๊ทธ์ธ) ํฌ๋“œ๋Š” DaemonSet์—์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋ชจ๋“  ๋…ธ๋“œ์—์„œ ํ•˜๋‚˜์˜ ํฌ๋“œ๋งŒ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Kubernetes๊ฐ€ ์—…๋ฐ์ดํŠธ๋œ ํ›„ trident-csi Daemonset์ด trident-operator ์— ์˜ํ•ด ๋‹ค์‹œ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. DaemonSet์„ ์‚ญ์ œํ•˜๋ฉด ๋‘ ๊ฐœ์˜ ํฌ๋“œ(์ด์ „ ๋ฐ ์ƒˆ ํฌ๋“œ)๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

trident-operator ๋กœ๊ทธ์—์„œ ์ด๋ฅผ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ trident-csi Daemonset์ด ์‚ญ์ œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

time="2020-11-19T05:47:45Z" level=debug msg="Kubernetes DaemonSet๋ฅผ ์‚ญ์ œํ–ˆ์Šต๋‹ˆ๋‹ค." DaemonSet=์‚ผ์ง€์ฐฝ-csi ๋„ค์ž„์ŠคํŽ˜์ด์Šค=์‚ผ์ง€์ฐฝ

trident-csi Daemonset์€ ๊ทธ ํ›„ ๊ณง ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

time="2020-11-19T05:47:45Z" level=debug msg="๊ฐ์ฒด ์ƒ์„ฑ ์ค‘." ์ข…๋ฅ˜=DaemonSet ์ด๋ฆ„=trident-csi ๋„ค์ž„์ŠคํŽ˜์ด์Šค=ํŠธ๋ผ์ด๋˜ํŠธ

Kubernetes๊ฐ€ ์—…๋ฐ์ดํŠธ๋œ ํ›„ shouldUpdate ํ”Œ๋ž˜๊ทธ๊ฐ€ true๋กœ ์„ค์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค( controller.go#L1110 ). shouldUpdate ํ”Œ๋ž˜๊ทธ๋กœ ์ธํ•ด trident-csi Daemonset์ด ์‚ญ์ œ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค( installer.go#L1489-L1494 ).

ํ™˜๊ฒฝ

  • Trident ๋ฒ„์ „: trident-operator๊ฐ€ ์žˆ๋Š” 20.10.0
  • ์‚ฌ์šฉ๋œ ํŠธ๋ผ์ด๋˜ํŠธ ์„ค์น˜ ํ”Œ๋ž˜๊ทธ: silenceAutosupport: true (ํŠธ๋ผ์ด๋˜ํŠธ ์—ฐ์‚ฐ์ž)
  • ์ปจํ…Œ์ด๋„ˆ ๋Ÿฐํƒ€์ž„: Docker 19.03.13
  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ๋ฒ„์ „: v1.19.4
  • ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ดํ„ฐ: ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค
  • Kubernetes ์ง€์› ๊ธฐ๋Šฅ ๊ฒŒ์ดํŠธ:
  • ์šด์˜ ์ฒด์ œ: ์šฐ๋ถ„ํˆฌ 18.04
  • NetApp ๋ฐฑ์—”๋“œ ์œ ํ˜•: ONTAP AFF 9.1P14
  • ๋‹ค๋ฅธ:

์žฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด

Kubernetes ๋ฒ„์ „์„ ์—…๋ฐ์ดํŠธํ•˜๋ฉด ์ด ๋ฌธ์ œ๊ฐ€ ์žฌํ˜„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ฟ ๋ฒ„๋„คํ‹ฐ์Šค ์—…๋ฐ์ดํŠธ๋Š” ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๊ณ  ํ•ญ์ƒ ์ผ์–ด๋‚˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์–‘ํ•œ ์‹œ์—ฐ์„ ํ†ตํ•ด ์ด ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋™์ž‘์„ ํ™•์ธํ–ˆ๋‹ค.

๋‘ ๊ฐœ์˜ trident-csi๋กœ ์ธํ•ด kubelet์ด Trident ํ”Œ๋Ÿฌ๊ทธ์ธ ๋“ฑ๋ก์„ ์ทจ์†Œํ•ฉ๋‹ˆ๋‹ค.

  1. Trident CSI ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ๋…ธ๋“œ์— ๋“ฑ๋ก๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.
$ kubectl describe csinodes.storage.k8s.io <NODE_NAME>
...
Spec:
  Drivers:
    csi.trident.netapp.io:
      Node ID:        <NODE_NAME>
      Topology Keys:  [topology.kubernetes.io/zone]
  1. trident-csi DaemonSet๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๊ฐ ๋…ธ๋“œ์—์„œ 2๊ฐœ์˜ trident-csi ํฌ๋“œ๋ฅผ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค.
$ kubectl get ds -n trident trident-csi -o json | jq '.metadata.name|="trident-csi-2"' | kubectl apply -f -
  1. ์‹คํ–‰๋  ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ ๋‹ค์Œ ๋ณต์‚ฌํ•œ trident-csi-2 DaemonSet๋ฅผ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค.
$ kubectl delete ds -n trident trident-csi-2
  1. ๋…ธ๋“œ์˜ ๋“œ๋ผ์ด๋ฒ„ ์„น์…˜์—์„œ Trident CSI ๋“œ๋ผ์ด๋ฒ„๊ฐ€ ์‚ฌ๋ผ์กŒ๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. (์‹œ๊ฐ„์ด ์ข€ ๊ฑธ๋ฆฝ๋‹ˆ๋‹ค)
$ kubectl describe csinodes.storage.k8s.io <NODE_NAME>
Spec:

DaemonSet์„ ๋‹ค์‹œ ์ƒ์„ฑํ•˜๋ฉด ๋‘ ๊ฐœ์˜ ํฌ๋“œ(์ด์ „ ๋ฐ ์ƒˆ ํฌ๋“œ)๋ฅผ ๋™์‹œ์— ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. trident-csi DaemonSet์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. DaemonSet์€ ๊ณง trident-operator์— ์˜ํ•ด ๋‹ค์‹œ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
$ kubectl delete ds -n trident trident-csi
  1. ๊ฐ ๋…ธ๋“œ์— ๋‘ ๊ฐœ์˜ trident-csi ํฌ๋“œ๊ฐ€ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
$ kubectl get pods -n trident -o wide

์˜ˆ์ƒ๋˜๋Š” ํ–‰๋™
ํฌ๋“œ๋Š” Kubernetes ๋ฒ„์ „์ด ์—…๋ฐ์ดํŠธ๋œ ํ›„ Trident ๋ณผ๋ฅจ์„ ๋งˆ์šดํŠธ ๋ฐ ๋งˆ์šดํŠธ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ถ”๊ฐ€ ์ปจํ…์ŠคํŠธ
์—†์Œ

bug tracked

๊ฐ€์žฅ ์œ ์šฉํ•œ ๋Œ“๊ธ€

์ด ์ˆ˜์ • ์‚ฌํ•ญ์€ Trident v21.01 ๋ฆด๋ฆฌ์Šค์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  4 ๋Œ“๊ธ€

์•ˆ๋…•ํ•˜์„ธ์š” @tksm

์ด ๋ฌธ์ œ์— ๋Œ€ํ•œ ์„ธ๋ถ€ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•˜๊ณ  ๊ทผ๋ณธ ์›์ธ์„ ์ž์„ธํžˆ ์‚ดํŽด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๊ท€ํ•˜์˜ ๋ถ„์„์€ ๋งค์šฐ ๋„์›€์ด ๋ฉ๋‹ˆ๋‹ค. daemonset ํฌ๋“œ์˜ ์ข…๋ฃŒ์™€ ์žฌ์ƒ์„ฑ ์‚ฌ์ด์˜ ์ฐฝ์€ ์ค‘์š”ํ•˜๋ฉฐ ํ›„์ž๋Š” ์ „์ž๊ฐ€ ์™„๋ฃŒ๋œ ๊ฒฝ์šฐ์—๋งŒ ๋ฐœ์ƒํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์šด์˜์ž๋Š” ๋ฐ๋ชฌ์…‹ ์ƒ์„ฑ ์ „์— ์ด์ „ ๋ฐ๋ชฌ์…‹์— ์†ํ•œ ํฌ๋“œ๊ฐ€ ๋ชจ๋‘ ์‚ญ์ œ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•œ ๋‹ค์Œ ์ƒˆ๋กœ์šด ๋ฐ๋ชฌ์…‹๋งŒ ์ƒ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ถ๊ธˆํ•ด์„œ ์—…๊ทธ๋ ˆ์ด๋“œ ์ค‘์— ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ํด๋Ÿฌ์Šคํ„ฐ์˜ ์ˆ˜๋ฅผ ๋ฌผ์–ด๋ด๋„ ๋ ๊นŒ์š”?

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์•ˆ๋…•ํ•˜์„ธ์š”, @ntap-arorar

ํ™•์ธํ•ด์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์˜ ์•„์ด๋””์–ด๊ฐ€ ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ๋กœ ๋ช‡ ๊ฐœ์˜ ํด๋Ÿฌ์Šคํ„ฐ๋งŒ ์—…๊ทธ๋ ˆ์ด๋“œํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ง€๊ธˆ๊นŒ์ง€ ํ•˜๋‚˜์˜ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ๋งŒ ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด ์ˆ˜์ • ์‚ฌํ•ญ์€ Trident v21.01 ๋ฆด๋ฆฌ์Šค์— ํฌํ•จ๋ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋Š” ์ปค๋ฐ‹ 820579d ๋กœ ์ˆ˜์ •๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ํŽ˜์ด์ง€๊ฐ€ ๋„์›€์ด ๋˜์—ˆ๋‚˜์š”?
0 / 5 - 0 ๋“ฑ๊ธ‰