Kubeadm: armv6l์—์„œ Kubeadm์ด ๊นจ์กŒ์Šต๋‹ˆ๋‹ค.

์— ๋งŒ๋“  2017๋…„ 04์›” 23์ผ  ยท  21์ฝ”๋ฉ˜ํŠธ  ยท  ์ถœ์ฒ˜: kubernetes/kubeadm

๋‚ด raspberry pi zero W์— kubeadm์„ ์„ค์น˜ํ•˜๋ ค๊ณ  ํ–ˆ์ง€๋งŒ "Illegal Instruction"์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค.
๋ผ์ฆˆ๋ฒ ๋ฆฌ ํŒŒ์ด 3(armv7)์—์„œ๋Š” ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

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

armv6l ์ง€์›์˜ ์žฌํ†ตํ•ฉ์„ ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? Pi Zero ๋ฐ ๊ธฐํƒ€ armv6l Pi ์žฅ์น˜์—์„œ Kubernetes๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์„ ๋ณด์ด๋Š” ๋งŽ์€ ๊ฒŒ์‹œ๋ฌผ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. P Zero๋Š” Kubernetes ๋˜๋Š” Swarm ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์—์„œ Micro Services๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. Docker Swarm์€ ์ €์—๊ฒŒ ์ž˜ ๋งž์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ˆ„๊ตฌ๋“ ์ง€ ํ† ๋ก ์„ ์žฌํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Pi clusterhat์€ ์ ์ ˆํ•œ ๋ฐ๋ชจ ์ธํ”„๋ผ์ž…๋‹ˆ๋‹ค.

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

Raspberry Pi Model B+ ๋ฐ armv6์—์„œ๋„ kubeadm 1.6.1๊ณผ ๋™์ผํ•œ ๋ฌธ์ œ์— ์ง๋ฉดํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

$ kubelet --help
Illegal instruction

$ uname -a
Linux pi1 4.4.50-hypriotos+ #2 PREEMPT Sun Mar 19 14:44:01 UTC 2017 armv6l GNU/Linux

kubeadm 1.5.6์œผ๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ–ˆ๋Š”๋ฐ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. 1.6.0์€ 1.6.1๊ณผ ๋™์ผํ•œ ์˜ค๋ฅ˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

@clabu ์˜ˆ 1.5.6์œผ๋กœ ๋‹ค์šด๊ทธ๋ ˆ์ด๋“œํ•˜๋ฉด ์ž‘๋™ํ•˜์ง€๋งŒ 1.6+ ํด๋Ÿฌ์Šคํ„ฐ์— ์ฐธ์—ฌํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

๋จผ์ € ARM :smile:์—์„œ Kubernetes๋ฅผ ์‚ฌ์šฉํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ด๊ฒƒ์€ ์•Œ๋ ค์ง„ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. https://github.com/kubernetes/kubernetes/issues/38067 ์—์„œ ๋…ผ์˜๋˜์—ˆ์œผ๋ฉฐ armel ์ง€์›์„ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค(RPi 1์—์„œ ํฌ๋กœ์Šค ์ปดํŒŒ์ผํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ถ€๋ถ„).

๊ธฐ๋ณธ์ ์œผ๋กœ armhf(GOARM=7)๋Š” Pi 1์—์„œ ์‹คํ–‰ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ RPi 1์„ ์ง€์›ํ•˜๊ธฐ ์œ„ํ•ด -v1.5์—์„œ GOARM=6์ธ armel์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ v1.6์—์„œ ๋ชจ๋‘ armhf๋ฅผ ์‚ฌ์šฉํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒŒ์ด 1.

armel์„ ๋” ์ด์ƒ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  armhf ์ด๋ฏธ์ง€๋ฅผ ๋Œ€์‹  ์‚ฌ์šฉํ•˜๊ณ  GOARM=6 ๋Œ€์‹  GOARM=7์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
๋™๊ธฐ ๋ถ€์—ฌ:

  • Go1.8์—์„œ Go๊ฐ€ ์ง€์›ํ•˜๋Š” ์œ ์ผํ•œ GOARM=6 ๋ณด๋“œ๋Š” ์ตœ์‹  Kubernetes ๋ฒ„์ „์„ ์‹คํ–‰ํ•˜๊ธฐ์—๋Š” ๋„ˆ๋ฌด ๋Š๋ฆฐ Raspberry Pi 1์ž…๋‹ˆ๋‹ค.
  • GOARM=7์„ ์‚ฌ์šฉํ•  ๋•Œ ์•ฝ๊ฐ„์˜ ์„ฑ๋Šฅ ํ–ฅ์ƒ
  • armel(http://hub.docker.com/u/armel) ์ด๋ฏธ์ง€๋Š” armhf(http://hub.docker.com/u/armhf) ์ด๋ฏธ์ง€๋งŒํผ ์ž์ฃผ ์—…๋ฐ์ดํŠธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด https://hub.docker.com/r/armel/debian/ ์€ 8๊ฐœ์›” ์ „์— ์—…๋ฐ์ดํŠธ๋˜์–ด ๋ณด์•ˆ ๊ด€์ ์—์„œ ๋งค์šฐ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. vs https://hub.docker.com/r/armhf/debian/ 3์ผ ์ „์— ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ armhf ์Šค์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ https://hub.docker.com/r/armhf/alpine ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๋„์›€์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋” ์ด์ƒ RPi 1์„ ์ง€์›ํ•˜์ง€ ๋ชปํ•ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.

๋ฌธ์„œํ™”/์ „ํŒŒ์— ๋„์›€์ด ๋˜๊ณ  ์‹ถ๋‹ค๋ฉด ์ œ์•ˆ์„ ํ•˜๊ฑฐ๋‚˜ ์ œ์•ˆ์„ ํ•ด์ฃผ์„ธ์š”.

Pi Zero์—์„œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

Linux p1 4.9.59+ #1047 Sun Oct 29 11:47:10 GMT 2017 armv6l GNU/Linux

armv6l ์ง€์›์˜ ์žฌํ†ตํ•ฉ์„ ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๊นŒ? Pi Zero ๋ฐ ๊ธฐํƒ€ armv6l Pi ์žฅ์น˜์—์„œ Kubernetes๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ๊ด€์‹ฌ์„ ๋ณด์ด๋Š” ๋งŽ์€ ๊ฒŒ์‹œ๋ฌผ์„ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค. P Zero๋Š” Kubernetes ๋˜๋Š” Swarm ํด๋Ÿฌ์Šคํ„ฐ ํ™˜๊ฒฝ์—์„œ Micro Services๋ฅผ ํ˜ธ์ŠคํŒ…ํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค. Docker Swarm์€ ์ €์—๊ฒŒ ์ž˜ ๋งž์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ˆ„๊ตฌ๋“ ์ง€ ํ† ๋ก ์„ ์žฌํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. Pi clusterhat์€ ์ ์ ˆํ•œ ๋ฐ๋ชจ ์ธํ”„๋ผ์ž…๋‹ˆ๋‹ค.

ํŒŒ์ด ์ œ๋กœ์— ๋Œ€ํ•œ ํ˜„์žฌ docker.io ๋นŒ๋“œ๋ฅผ ๋ณด๋ฉด,
์ด๋™ ๋ฒ„์ „: go1.9.3
๋ฐ ๋„์ปค ๋ฒ„์ „: 18.02.0-ce

์ตœ์‹  ๋ฒ„์ „์˜ go๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋…๋ฆฝ ์‹คํ–‰ํ˜• ๋ชจ๋“œ์—์„œ k8์„ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ๋žจ์ด ์ถฉ๋ถ„ํ•˜์ง€ ์•Š๋‹ค๋Š” ๋ฐ ๋™์˜ํ•˜์ง€๋งŒ ๋” ํฐ ๋งˆ์Šคํ„ฐ์˜ ์Šฌ๋ ˆ์ด๋ธŒ๊ฐ€ ๋˜๋ ค๋ฉด ์—ฌ์ „ํžˆ ์œ ์šฉํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ์ถฉ๋ถ„ํ•œ ๋ฆฌ์†Œ์Šค๊ฐ€ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‚ด ํŒŒ์ด 0์„ k8 ๋…ธ๋“œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์†Œ์Šค์—์„œ ๋นŒ๋“œํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•œ์ง€ ์•„๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?

์˜ˆ๋ฅผ ๋“ค์–ด https://hub.docker.com/r/armel/debian/ ์€ 8๊ฐœ์›” ์ „์— ์—…๋ฐ์ดํŠธ๋˜์–ด ๋ณด์•ˆ ๊ด€์ ์—์„œ ๋งค์šฐ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค. vs https://hub.docker.com/r/armhf/debian/ 3์ผ ์ „์— ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์˜ค๋Š˜๋‚ ์—๋Š” ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜์˜ ๊ณต์‹ ์ด๋ฏธ์ง€๊ฐ€ ๋™์‹œ์— ์—…๋ฐ์ดํŠธ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์‚ฌ์‹ค์ด ์•„๋‹™๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด https://hub.docker.com/r/arm32v5/debian/ , https://hub.docker.com/r/arm32v7/debian/ ๋ฐ https://hub.docker.com/r/amd64/ debian/ ์€ ๋ชจ๋‘ 9์ผ ์ „์— ์—…๋ฐ์ดํŠธ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๋˜ํ•œ armhf ์Šค์œ„์น˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ https://hub.docker.com/r/armhf/alpine ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

https://hub.docker.com/r/arm32v6/alpine/ ์€ Pi Zero์—์„œ ์ž˜ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ณด์‹œ๊ธธ ๋ฐ”๋ž๋‹ˆ๋‹ค. Pi Zero๊ฐ€ ์ตœ์‹  k8์„ ์‹คํ–‰ํ•˜์ง€ ๋ชปํ•˜๋„๋ก ๋ง‰๋Š” ๊ฒƒ์€ ๋งค์šฐ ์‹ค๋ง์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

@luxas

+1. ํ—ˆ๋ธŒ๊ฐ€ ์žฌ์ •๋ ฌ๋˜๊ณ  ์ด์ „ ์ €์žฅ์†Œ๊ฐ€ ์—ฌ์ „ํžˆ ์ฃผ๋ณ€์— ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์•ฝ๊ฐ„์˜ ํ˜ผ๋ž€์ด ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ์ตœ์‹  ์ œํ’ˆ์€ ์ž์ฃผ ์—…๋ฐ์ดํŠธ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

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

๋‚˜๋Š” ์—ฌ์ „ํžˆ ClusterHAT์—์„œ k8์„ ๊ตฌ์ถ•ํ•˜๋Š” ์ค‘์ด์ง€๋งŒ Pi Zero์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ปดํŒŒ์ผํ•˜๊ณ  ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ์ ์œผ๋กœ ๋ช‡ ๊ฐ€์ง€ ์ˆ˜์ • ์‚ฌํ•ญ์„ ์ ์šฉํ•˜์—ฌ ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.
https://povilasv.me/raspberrypi-kubelet/

๋‚˜๋Š” wsl์—์„œ ์ผํ–ˆ๋‹ค.
Linux DESKTOP-6GRDDIN 4.4.0-17134-Microsoft #48-Microsoft ๊ธˆ 4์›” 27์ผ 18:06:00 PST 2018 x86_64 x86_64 x86_64 GNU/Linux

1 gcc-arm-linux-gnueabihf ๋Œ€์‹  gcc-arm-linux-gnueabi๋ฅผ ์„ค์น˜ํ•ฉ๋‹ˆ๋‹ค.

sudo apt-get install gcc-arm-linux-gnueabi <- ๋ณ€๊ฒฝ

2 linux/arm์šฉ์œผ๋กœ ๋นŒ๋“œํ•˜๊ธฐ ์ „์— hack/lib/golang.sh์—์„œ set_platform_envs()๋ฅผ ๋‘ ๋ฒˆ ์ˆ˜์ •ํ•ฉ๋‹ˆ๋‹ค.

* GOARM ์ถ”๊ฐ€๋‚ด๋ณด๋‚ด๊ธฐ GOOS=${ํ”Œ๋žซํผ%/ }๋‚ด๋ณด๋‚ด๊ธฐ GOARCH=${ํ”Œ๋žซํผ## /}๋‚ด๋ณด๋‚ด๊ธฐ GOARM=5 <- ์ถ”๊ฐ€* CC ๋ณ€๊ฒฝ
๋Œ€์†Œ๋ฌธ์ž "${platform}"
"๋ฆฌ๋ˆ…์Šค/์•”")
๋‚ด๋ณด๋‚ด๊ธฐ CGO_ENABLED=1
๋‚ด๋ณด๋‚ด๊ธฐ CC=arm-linux-gnueabi-gcc <-๋ณ€๊ฒฝ
;;

GOARM์€ 5์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. 6์„ ์ง€์ •ํ•˜๋ฉด ๋นŒ๋“œ ์ค‘์— ๋ง์ปค ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. (ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†์—ˆ์Šต๋‹ˆ๋‹ค.)

@shinichi-hashitani ๋‚ด Pi Zero์—์„œ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค! ๊ฐ์‚ฌ ํ•ด์š”!

๋˜ํ•œ ๋ง์ปค ์˜ค๋ฅ˜์— ๋Œ€ํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค. Pi Zero์˜ ๊ฒฝ์šฐ GOARM=6์„ ์„ค์ •ํ•˜๊ณ  gcc-arm-linux-gnueabihf๋ฅผ ์œ ์ง€ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ Pi 1์˜ ๊ฒฝ์šฐ GOARM=5๋ฅผ ์„ค์ •ํ•˜๊ณ  ๋Œ€์‹  gcc-arm-linux-gnueabi๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

@shinichi-hashitani ๊ต‰์žฅํ•ด! ์‹œ๋„ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

@shinichi-hashitani make all KUBE_BUILD_PLATFORMS=linux/arm ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ์ถ•ํ•˜์…จ์Šต๋‹ˆ๊นŒ? ๊ทธ๋ฆฌ๊ณ  kubeadm ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ค์ •ํ–ˆ๋‹ค๋ฉด ์–ด๋–ป๊ฒŒ ํ–ˆ์Šต๋‹ˆ๊นŒ? kubelet , init ์Šคํฌ๋ฆฝํŠธ povilasv , kubeadm ๋ฐ kubectl ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๊นŒ? ํšจ๊ณผ๊ฐ€ ์žˆ์—ˆ๋‚˜์š”?

@dbwest ์˜ˆ, ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•˜๊ธฐ ์œ„ํ•ด make all์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•œ ์ •ํ™•ํ•œ ๋ช…๋ น์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

make all WHAT=cmd/kube-proxy KUBE_VERBOSE=5 KUBE_BUILD_PLATFORMS=linux/arm
make all WHAT=cmd/kubelet KUBE_VERBOSE=5 KUBE_BUILD_PLATFORMS=linux/arm
make all WHAT=cmd/kubectl KUBE_VERBOSE=5 KUBE_BUILD_PLATFORMS=linux/arm

๋…ธ๋“œ์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ํ•„์š”ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด ์„ธ ๊ฐœ์˜ ๋ฐ”์ด๋„ˆ๋ฆฌ๋งŒ ํ•„์š”ํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” kubeadm์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋‹ค. ๋‚˜๋Š” Kelsey Hightower์˜ "Kubernetes Hard Way"๋ฅผ ๋”ฐ๋ฅด๊ณ  ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ ์— ์„ค๋ช…๋œ ๋Œ€๋กœ ํ•ด๋‹น ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ ์ ˆํ•œ ์œ„์น˜์— ๋ฐฐ์น˜ํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

@shinichi-hashitani ์–ด๋–ค ๋ฒ„์ „์˜ kubernetes๋ฅผ ๊ตฌ์ถ•ํ•˜๊ณ  ์žˆ์—ˆ๋Š”์ง€ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ?

๋‚˜๋Š” ์ด๊ฒƒ์„ arm v6์šฉ์œผ๋กœ ๋นŒ๋“œํ•˜๋Š” ๋ฐ ์šด์ด ์—†์—ˆ์Šต๋‹ˆ๋‹ค(pi zero w์—์„œ ์‹คํ–‰๋˜๊ธฐ๋ฅผ ํฌ๋งํ•จ).

>= 1.12.0 ๋ฒ„์ „์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค...

vendor/github.com/google/cadvisor/accelerators/nvidia.go:30:2: build constraints exclude all Go files in /private/var/folders/hn/gt2l8vq56vx9slvwry43xmz40000gn/T/tmp.A83ZihlF/_output/local/go/src/k8s.io/kubernetes/vendor/github.com/mindprince/gonvml
!!! [0511 07:36:41] Call tree:
!!! [0511 07:36:41]  1: /private/var/folders/hn/gt2l8vq56vx9slvwry43xmz40000gn/T/tmp.A83ZihlF/hack/lib/golang.sh:601 kube::golang::build_some_binaries(...)
!!! [0511 07:36:41]  2: /private/var/folders/hn/gt2l8vq56vx9slvwry43xmz40000gn/T/tmp.A83ZihlF/hack/lib/golang.sh:736 kube::golang::build_binaries_for_platform(...)
!!! [0511 07:36:41]  3: hack/make-rules/build.sh:27 kube::golang::build_binaries(...)
!!! Error in /private/var/folders/hn/gt2l8vq56vx9slvwry43xmz40000gn/T/tmp.A83ZihlF/hack/lib/golang.sh:561
  Error in /private/var/folders/hn/gt2l8vq56vx9slvwry43xmz40000gn/T/tmp.A83ZihlF/hack/lib/golang.sh:561. 'go install "${build_args[@]}" "$@"' exited with status 1

๊ทธ๋ฆฌ๊ณ  >= 1.10.0 & < 1.12.0 ( 1.10.0 ๋Š” ๋‚ด๊ฐ€ ์ง€๊ธˆ๊นŒ์ง€ ์‹œ๋„ํ•œ ๊ฒƒ ์ค‘ ๊ฐ€์žฅ ์ด๋ฅธ ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค), ์ €๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ์–ป์—ˆ์Šต๋‹ˆ๋‹ค...

F0511 07:39:30.480641   26683 openapi.go:116] Failed loading boilerplate: open /private/var/folders/hn/gt2l8vq56vx9slvwry43xmz40000gn/T/tmp.A83ZihlF/_output/local/go/src/k8s.io/gengo/boilerplate/boilerplate.go.txt: no such file or directory
!!! Error in ./hack/run-in-gopath.sh:33
  Error in ./hack/run-in-gopath.sh:33. '"${@}"' exited with status 255
Call stack:
  1: ./hack/run-in-gopath.sh:33 main(...)
Exiting with status 1
make[1]: *** [pkg/generated/openapi/zz_generated.openapi.go] Error 1
make: *** [generated_files] Error 2

ํŽธ์ง‘ : ์‹ ๊ฒฝ ์“ฐ์ง€ ๋งˆ์„ธ์š” ... Linux ์‹œ์Šคํ…œ์—์„œ ๋นŒ๋“œํ•˜๋ฉด ์ž‘๋™ํ•˜๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ž…๋‹ˆ๋‹ค. ๋งฅ์—์„œ ํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ

@ammmze ,

๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ค๋Š” ์›์ธ์ด ๋ฌด์—‡์ธ์ง€ ์ •ํ™•ํžˆ ์•Œ์ง€ ๋ชปํ•˜์ง€๋งŒ ์•„๋ž˜๋Š” ๋‚ด ์ชฝ์—์„œ ์ž์„ธํžˆ ์„ค๋ช…ํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.
์ฟ ๋ฒ„๋„คํ‹ฐ์Šค - 1.10.2
์ด๋™ - 19.4
์ด๋Ÿฌํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ํฌ๋กœ์Šค ์ปดํŒŒ์ผํ•˜๊ธฐ ์œ„ํ•ด WSL(์•„๋งˆ๋„ Ubuntu 16.x)์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค์‹œ, ๋‚˜๋Š” ์•ฝ๊ฐ„์˜ ์ˆ˜์ •๊ณผ ํ•จ๊ป˜ ์•„๋ž˜๋ฅผ ๋”ฐ๋ž๋‹ค:
https://povilasv.me/raspberrypi-kubelet/
์ด๋ฅผ ์ฐธ์กฐํ•˜์—ฌ ๊ฑฐ์ณ์•ผ ํ•  ๋‹จ๊ณ„๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”๋ชจ์™€ ์ •ํ™•ํ•œ ๋‹จ๊ณ„๋ฅผ ์ค€๋น„ํ–ˆ์ง€๋งŒ ์ผ๋ณธ์–ด๋กœ๋งŒ ์ œ๊ณต๋˜์–ด ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค.
https://qiita.com/ShinHashitani/items/ea9ffdefce8ca5786da6

ํŒŒ์ด ์ œ๋กœ์— ๋Œ€ํ•œ ๋ฐฑ armel ์ง€์› ์ถ”๊ฐ€์— ๋Œ€ํ•œ ์›€์ง์ž„์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ฝค ๋งŽ์€ ๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋ฐ๋ชจ ๋ชฉ์ ์œผ๋กœ ์ €๋ ดํ•œ ๋น„์šฉ/์ „๋ ฅ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ด ์ œ๋กœ์— ๋Œ€ํ•œ ๋ฐฑ armel ์ง€์› ์ถ”๊ฐ€์— ๋Œ€ํ•œ ์›€์ง์ž„์ด ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ๊ฝค ๋งŽ์€ ๊ฒƒ์„ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ ๋ฐ๋ชจ ๋ชฉ์ ์œผ๋กœ ์ €๋ ดํ•œ ๋น„์šฉ/์ „๋ ฅ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“ค๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์•ˆ๋…•ํ•˜์„ธ์š”, ์œ„์˜ ๋…ผ์˜์—์„œ ๋ณผ ์ˆ˜ ์žˆ๋“ฏ์ด ํ•ต์‹ฌ Kubernetes๋Š” armv6l์— ๋Œ€ํ•œ ์ง€์›์„ ์ค‘๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ์ด ์ง€์›์ด ๋‹ค์‹œ ์ถ”๊ฐ€๋  ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

armv6l์—์„œ k8s / kubeadm์„ ์‚ฌ์šฉํ•˜๋ ค๋ฉด ๋ชจ๋“  ํ•ญ๋ชฉ(CNI ์ด๋ฏธ์ง€ ํฌํ•จ)์„ ๋‹ค์‹œ ์ปดํŒŒ์ผํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

multi-arch ์ด๋ฏธ์ง€์ด๊ณ  armv6์„ ํฌํ•จํ•˜๋Š” golang:1.13-alpine docker ์ด๋ฏธ์ง€์—์„œ ์ปดํŒŒ์ผํ•˜์—ฌ ์†Œ์Šค์—์„œ K8s 1.18.3์„ ์„ฑ๊ณต์ ์œผ๋กœ ์ปดํŒŒ์ผํ–ˆ๋‹ค๊ณ  ๋งํ•˜๋ ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค. (์ €๋Š” ์—๋ฎฌ๋ ˆ์ด์…˜์— QEMU๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก Docker๋ฅผ ๊ตฌ์„ฑํ–ˆ์œผ๋ฉฐ ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜์šฉ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.)

git repo๋ฅผ ๋ณต์ œํ•˜๊ณ  readme ํŽ˜์ด์ง€์˜ 4๋‹จ๊ณ„ make ํ”„๋กœ์„ธ์Šค๋ฅผ ๋”ฐ๋ฅด๋ฉด(์ฆ‰, ๋ชจ๋“  WHAT=cmd/component๋ฅผ ์ž‘์„ฑ) kubelet์„ ์ œ์™ธํ•œ ๋ชจ๋“  k8s ๊ตฌ์„ฑ ์š”์†Œ๋Š” ์ •์ ์œผ๋กœ ์ปดํŒŒ์ผ๋˜์–ด ๋‚ด ํŒŒ์ด ์ œ๋กœ์—์„œ ๋…๋ฆฝ ์‹คํ–‰ํ˜• ์‹คํ–‰ ํŒŒ์ผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ข…์†์„ฑ์ด ์—†์Šต๋‹ˆ๋‹ค. (๊ทธ๋ฆฌ๊ณ  golang-alpine์ด ์ž‘๋™์„ ๋ฉˆ์ถ”๋ฉด Arch Linux ARM์„ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ถ€ํŠธ์ŠคํŠธ๋žฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ปดํŒŒ์ผ์— ์ž˜ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.)

์œ ์ผํ•œ ๋ฌธ์ œ๋Š” kubelet์„ ์ปดํŒŒ์ผํ•˜๋Š” ๊ฒƒ์ด ์—ฌ์ „ํžˆ ์‹œ์Šคํ…œ glibc ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์— ๋™์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ, ์•„์ง ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. ์ €๋Š” go ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์•„๋‹ˆ๋ฉฐ go ๋˜๋Š” gcc์— ๋Œ€ํ•ด ์ถ”๊ฐ€ํ•œ ์ปดํŒŒ์ผ ํ”Œ๋ž˜๊ทธ ์ค‘ ์–ด๋–ค ๊ฒƒ๋„ ์ฐจ์ด๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ ๊ฐ™์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. (Kubelet์—๋Š” ์ปดํŒŒ์ผ์— gcc๊ฐ€ ํ•„์š”ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ผ๋ถ€ C ์ฝ”๋“œ๊ฐ€ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.) ์ตœ์•…์˜ ๊ฒฝ์šฐ์—๋Š” ๋‚ด๊ฐ€ ์‹คํ–‰ํ•˜๋Š” ๋ชจ๋“  ์œ ํ˜•์˜ OS์— ๋Œ€ํ•ด ๋„์ปค ์ด๋ฏธ์ง€๋ฅผ ๋ถ€ํŠธ์ŠคํŠธ๋žฉํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ glibc ๋™์  ๋งํฌ๊ฐ€ ์ž‘๋™ํ•˜์ง€๋งŒ ์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ฒŒ.

๋ฐ๋น„์•ˆ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹๊ณต์‹์ ์œผ๋กœ armel์„ ์ง€์›ํ•˜๊ณ  ์ •์ ์œผ๋กœ ๋งํฌ๋œ kubelet ๋ฒ„์ „์ด ์žˆ๋Š” ํŒจํ‚ค์ง€๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฏ€๋กœ ํ˜„์žฌ ์ €์˜ ํ•ดํ‚ค ์†”๋ฃจ์…˜์€ armel deb ํŒจํ‚ค์ง€ ๋‚ด๋ถ€์—์„œ ์ •์  ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋งˆ์ง€๋ง‰์œผ๋กœ ์ด๋Ÿฌํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ(๋ฐ ๋‹ค๋ฅธ ๋ฒ„์ „)๊ฐ€ ์žˆ๋Š” ์ด๋ฏธ์ง€๋กœ ์ž์‹ ์˜ ์ €์žฅ์†Œ๋ฅผ ๋งŒ๋“ค๊ณ  ์ด๋ฅผ ๊ฐ€์ ธ์˜ค๋„๋ก kubeadm์„ ๊ตฌ์„ฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋” ์žฌ๋ฏธ์žˆ๋Š” ๊ฒƒ์€ Docker๊ฐ€ arm6์—์„œ ์‹คํ–‰๋˜์ง€๋งŒ arm7 ์ด๋ฏธ์ง€๋ฅผ ์ž˜๋ชป ๊ฐ€์ ธ์˜ต๋‹ˆ๋‹ค(3๋…„ ์ด์ƒ ์•Œ๋ ค์ง„ ๋ฒ„๊ทธ). ๋”ฐ๋ผ์„œ arm7 ์ด๋ฏธ์ง€๋ฅผ ๋ณ€๊ฒฝํ•˜์—ฌ armel ๋ฒ„์ „๋งŒ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ arm6๊ณผ arm7์„ ๋‘˜ ๋‹ค ๋งŒ๋“ค์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค๊ณ  ์ง„์ž…์ ์ด arm6 ๋˜๋Š” arm7 ํ”„๋กœ๊ทธ๋žจ์„ ์‹œ์ž‘ํ• ์ง€ ์—ฌ๋ถ€๋ฅผ ๋Ÿฐํƒ€์ž„์— ๊ฒฐ์ •ํ•˜๋Š” ์…ธ ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ๋˜๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. ๋งˆ์Šคํ„ฐ๊ฐ€ ์•„๋‹Œ ๋…ธ๋“œ๋Š” kubelet ๋ฐ kube-proxy๋งŒ ์‹คํ–‰ํ•˜๋ฉด ๋˜๋ฏ€๋กœ ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐ ํ•„์š”ํ•œ ์œ ์ผํ•œ ์ด๋ฏธ์ง€์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋‚ด๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์— ๋Œ€ํ•ด ์ฝ์€ ๋˜ ๋‹ค๋ฅธ ํ•ดํ‚น์€ ์˜ฌ๋ฐ”๋ฅธ ์ด๋ฏธ์ง€๋ฅผ ๊ฐ€์ ธ์˜จ ๋‹ค์Œ kubeadm์ด ๊ฐ€์ ธ์˜ค๋ ค๋Š” ์ด๋ฏธ์ง€๊ฐ€ ๋˜๋„๋ก ๋กœ์ปฌ์—์„œ ํƒœ๊ทธ๋ฅผ ๋‹ค์‹œ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋กœ์ปฌ ๋ฒ„์ „๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.)

์ €๋Š” ์‹ค์ œ๋กœ k8s๋ฅผ "์–ด๋ ค์šด ๋ฐฉ๋ฒ•"์œผ๋กœ ์„ค์ •ํ•˜๊ธฐ ์œ„ํ•ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€๋งŒ, kubeadm์ด ํ•จ๊ป˜ ์ž‘๋™ํ•˜๋„๋ก ๋“œ๋กญ์ธ ๊ต์ฒด๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ํ˜ธํ™˜ Docker ์ด๋ฏธ์ง€๋ฅผ ๊ณ„์† ๋งŒ๋“ค ์ƒ๊ฐ์ž…๋‹ˆ๋‹ค. kubelet์ด ์ •์ ์œผ๋กœ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ปดํŒŒ์ผ๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ํ”„๋กœ์„ธ์Šค๋ฅผ Dockerfile๋กœ ์ž๋™ํ™”ํ•˜๊ณ  ์ด๋ฏธ์ง€๋ฅผ Docker Hub์— ๊ณ ์ •ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ด๋ฏธ์ง€์—๋Š” ๋‚ด๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋งŒํผ์˜ ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ด์ƒ์ ์œผ๋กœ๋Š” ๋‹ค์ค‘ ์•„ํ‚คํ…์ฒ˜ ํด๋Ÿฌ์Šคํ„ฐ์—์„œ kubeadm์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ: amd64, arm64, arm6 ๋ฐ arm7. Pi Zero์˜ ์ „์ฒด ํ”„๋กœ๋•์…˜ Docker ๋ฐ K8(์ž‘์—…์ž ๋…ธ๋“œ)์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์ž‘์€ ์ด๋ฏธ์ง€๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ์ตœ์†Œ 50MB-100MB ๋žจ์„ ๋‚จ๊ฒจ ๋‘ก๋‹ˆ๋‹ค. ์ปค๋„์„ ์ œ๊ฑฐํ•˜๋ฉด 30 ๋˜๋Š” 40๋ฉ”๊ฐ€๋ฅผ ์ถ”๊ฐ€๋กœ ํ™•๋ณดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ๋จผ ๋ฏธ๋ž˜์ž…๋‹ˆ๋‹ค. ๋‚ด Pi Zero์—์„œ K8s๊ฐ€ ๊ด€๋ฆฌํ•˜๋Š” nginx ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ๋‹จ์ผ ์ •์  ํŽ˜์ด์ง€๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋‚˜๋Š” ๊ทธ๊ฒƒ์„ ๋‹น๋ถ„๊ฐ„ ์Šน๋ฆฌ๋ผ๊ณ  ๋ถ€๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.


8์›” 7์ผ๋ถ€ํ„ฐ ํŽธ์ง‘: ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ•˜๋„๋ก ๊ด€๋ฆฌํ–ˆ์œผ๋ฉฐ ํ˜„์žฌ arm6, arm7, arm8 ๋ฐ amd64๋กœ ๊ตฌ์„ฑ๋œ K8 ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ ๋‚ด ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ณง ์ž‘์„ฑํ•  ์˜ˆ์ •์ด์ง€๋งŒ ํ˜„์žฌ๋กœ์„œ๋Š” kubeadm์„ ์ž‘์—…์ž ๋…ธ๋“œ๋กœ arm6 ์žฅ์น˜์— ์„ค์น˜ํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. kubeadm ๋ฐ kubelet์šฉ ๋ฐ”์ด๋„ˆ๋ฆฌ์™€ ๋‘ ๊ฐœ์˜ ์ปจํ…Œ์ด๋„ˆ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ผ์‹œ ์ค‘์ง€ ์ปจํ…Œ์ด๋„ˆ ๋ฐ kube-proxy ์ปจํ…Œ์ด๋„ˆ. QEMU๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ ์œผ๋กœ buildx๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋นŒ๋“œํ•˜๊ณ  ๋‚ด Dockerfile ์„ ์ˆ˜์ •

๋˜๋Š” kubeadm ๋ฐ kubelet ์šฉ์œผ๋กœ ๋งŒ๋“  Arch ํŒจํ‚ค์ง€์˜ /usr/bin ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์ •์  ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด Pi Zero์— Arch Linux ARM์„ ์„ค์น˜ํ–ˆ์œผ๋ฏ€๋กœ CNI ํ”Œ๋Ÿฌ๊ทธ์ธ์ด ๋‚ด ์‹œ์Šคํ…œ์— ํŒจํ‚ค์ง€๋กœ ์„ค์น˜๋˜์—ˆ์ง€๋งŒ ๋‚ด Dockerfile๋กœ ๋นŒ๋“œ(๋˜๋Š” Arch Linux ARM ํŒจํ‚ค์ง€ ์—์„œ ๊ฐ€์ ธ์˜ด)ํ•œ ๋‹ค์Œ CNI ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋‹ค์Œ ์œ„์น˜์— ๋ฐฐ์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์‹œ์Šคํ…œ์˜ "/opt/cni/bin/" ๋””๋ ‰ํ† ๋ฆฌ. ํ•ด๋‹น ํด๋”์— ํ•ด๋‹น CNI ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์žˆ๊ณ  kubelet์ด ์„ค์น˜๋˜์–ด ์„œ๋น„์Šค ๋กœ ์ค€๋น„๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ์žฅ์น˜์—์„œ kubeadm์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ œ๋Œ€๋กœ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์œ ์ผํ•œ ์š”๊ตฌ ์‚ฌํ•ญ์€ ์ปจํ…Œ์ด๋„ˆ ์—”์ง„์— ์ด๋ฏธ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์˜ฌ๋ฐ”๋ฅธ kube-proxy ๋ฐ ์ผ์‹œ ์ค‘์ง€ ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๋‚ด Pi Zeroes์—๋Š” ์žฌ๊ณ  Docker๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๊ณ  Docker ํŒŒ์ผ์—์„œ ๋นŒ๋“œํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ์™€ ๊ณต์‹ K8s ์ปจํ…Œ์ด๋„ˆ ๋ถ„์„์„ ๊ฒฐํ•ฉํ•˜์—ฌ kube-proxy ๋ฐ pause ์šฉ ํ˜ธํ™˜ ๊ฐ€๋Šฅํ•œ arm6 ์ปจํ…Œ์ด๋„ˆ๋ฅผ ๋นŒ๋“œํ–ˆ์Šต๋‹ˆ๋‹ค. Kubernetes ๋ฒ„์ „์„ kubeadm์—์„œ v1.18.6์œผ๋กœ ์ง€์ •ํ•˜๋ ค๋ฉด ํ•ด๋‹น ์ปจํ…Œ์ด๋„ˆ์— ๊ฐ๊ฐ "k8s.gcr.io/kube-proxy:v1.18.6" ๋ฐ "k8s.gcr.io/pause:3.2"๋กœ ํƒœ๊ทธ๋ฅผ ๋‹ค์‹œ ์ง€์ •ํ•ด์•ผ ํ•˜์ง€๋งŒ, ์ปจํ…Œ์ด๋„ˆ๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•˜๊ณ  ์‹œ์Šคํ…œ์— ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ํƒœ๊ทธ๊ฐ€ ์ง€์ •๋˜์–ด ์žˆ์œผ๋ฉด kubeadm์€ ๋ถˆ๋งŒ ์—†์ด ์„ฑ๊ณตํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์œ ์ผํ•œ ๋‹ค๋ฅธ ๋ฌธ์ œ๋Š” ์ž‘๋™ํ•˜๋Š” ์˜ค๋ฒ„๋ ˆ์ด ๋„คํŠธ์›Œํฌ์ž…๋‹ˆ๋‹ค. ๋” ๋งŽ์€ ์ปดํŒŒ์ผ ์ง€์˜ฅ์„ ๊ฒช๊ณ  ์‹ถ์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— "arm" ๋ณ€ํ˜•์ด arm6 ๋ฐ arm7์—์„œ ์ž‘๋™ํ•˜๋Š” Flannel์„ ์‚ฌ์šฉํ–ˆ์Šต๋‹ˆ๋‹ค. defautl yaml ํŒŒ์ผ์„ ์‚ฌ์šฉ ํ•˜๋‚˜์˜ ๋‹ค์ค‘ ์•„์น˜ ์ด๋ฏธ์ง€๋กœ ๊ฒฐํ•ฉํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋‚ด๊ฐ€ ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ๊ธฐ๋ณธ yaml ์„ค์น˜ ํŒŒ์ผ์„ ํ•œ ์„น์…˜์œผ๋กœ ์ค„์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubeadm ๋ฐ Docker CE๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ด "์ „์ฒด" K8 ์„ค์น˜๋กœ ๋‚ด Pi Zeroes๋Š” ์•ฝ 55%์˜ CPU ์‚ฌ์šฉ๋Ÿ‰์—์„œ ์œ ํœด ์ƒํƒœ์ด๋ฉฐ ์•ฝ 160MB์˜ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฒ„์ŠคํŠธ ์šฉ๋Ÿ‰์„ ์œ„ํ•ด ์ตœ์†Œ 25%๋ฅผ ๋‚จ๊ฒจ๋‘๊ณ  ์‹ถ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋ฉด ์—ฌ์ „ํžˆ ์•ฝ 20%๊ฐ€ ๋‚จ์Šต๋‹ˆ๋‹ค. ์ด๋Š” 200๋ฐ€๋ฆฌ์ดˆ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. (Pi Zero์—๋Š” ๋‹จ์ผ ์ฝ”์–ด 1GHz CPU๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.) ์•ฝ๊ฐ„์˜ ์ถ”๊ฐ€ ๊ณต๊ฐ„์„ ์ œ๊ณตํ•˜๊ธฐ ์œ„ํ•ด ์ €๋Š” ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ ์ปจํ…Œ์ด๋„ˆ ์š”์ฒญ ๋ฐ ์ œํ•œ์„ 120m๋กœ, RAM์„ 100MB๋กœ ์„ค์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ง€๊ธˆ๊นŒ์ง€๋Š” ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค. ์œ ์ผํ•œ ๋ฌธ์ œ๋Š” ์—ด์ž…๋‹ˆ๋‹ค. ์™œ๋ƒํ•˜๋ฉด ์ œ 0์€ ๊ณต๊ธฐ ๊ณต๊ฐ„์ด ๋งŽ์ง€ ์•Š์€ ๊ท€์—ฌ์šด ์Œ“์„ ์ˆ˜ ์žˆ๋Š” ์ผ€์ด์Šค์— ๋ชจ๋‘ ํ•จ๊ป˜ ์Œ“์—ฌ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

(๋ฌผ๋ก  ๊ด€๋ฆฌ์ž ๋…ธ๋“œ๋Š” Pi Zero๊ฐ€ ์•„๋‹ˆ๋ผ Pi 4์ž…๋‹ˆ๋‹ค.)


2020๋…„ 12์›” 1์ผ๋ถ€ํ„ฐ ํŽธ์ง‘: ์ด๊ฒƒ์ด ์ €์˜ ๋งˆ์ง€๋ง‰ ์—…๋ฐ์ดํŠธ๊ฐ€ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ถ”๊ฐ€ํ•  ๋‚ด์šฉ์€ ๋งŽ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. Kubeadm์—๋Š” ๋‹ค๋ฅธ ๋ชจ๋“  k8s ๊ตฌ์„ฑ ์š”์†Œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ yaml ๊ตฌ์„ฑ ํŒŒ์ผ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์–ด๋Š ๊ฒƒ๋„ ์ž˜ ๋ฌธ์„œํ™”๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค... ํ•˜์ง€๋งŒ ์‹œ๋„ํ•˜๋ฉด ํ˜ผ๋ž€์Šค๋Ÿฌ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

kubeadm ์˜ต์…˜ ์ค‘ ํ•˜๋‚˜๋Š” ์ด๋ฏธ์ง€์— ๋Œ€ํ•œ ์‚ฌ์šฉ์ž ์ง€์ • ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด๋ฏ€๋กœ ๋‹ค์ค‘ ์•„์น˜ ์ด๋ฏธ์ง€๋ฅผ ๋งŒ๋“ค์–ด ๊ฐœ์ธ ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์— ํ‘ธ์‹œํ•œ ๋‹ค์Œ ๋„์ปค์—์„œ ๋‹จ์ˆœํžˆ ์ด๋ฏธ์ง€์— ํƒœ๊ทธ๋ฅผ ๋‹ค์‹œ ์ง€์ •ํ•˜๋Š” ํ•ดํ‚น ๋Œ€์‹  ์„ค์ •์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋„์ปค๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ์ŠคํŠธ๋ ˆ์ดํŠธ ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜ํ–‰ํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค.

arm6์šฉ์œผ๋กœ ์ปดํŒŒ์ผ๋œ ์ปจํŠธ๋กค ํ”Œ๋ ˆ์ธ ๊ตฌ์„ฑ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์•„์ง ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. QEMU์™€ ๊ธฐ๋ณธ ์žฅ์น˜ ๋ชจ๋‘ 1GB ์ด์ƒ์˜ ๋žจ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ Go๊ฐ€ ๋Œ€๋ถ€๋ถ„์˜ ์ œ์–ด ํ‰๋ฉด์„ ์ปดํŒŒ์ผํ•˜๊ธฐ์— ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ ์ˆซ์–‘์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜์—ฌ ๋‚ด AMD64 ์‹œ์Šคํ…œ์— ARM6 ์ปดํŒŒ์ผ ํ•  ์ˆ˜ ์žˆ์–ด์•ผํ•˜๋ฏ€๋กœ ์ด๋™์ด ์ด๋ก ์ ์œผ๋กœ, ๋‹ค๋ฅธ ์•„ํ‚คํ…์ฒ˜์— ๋Œ€ํ•ด ์ปดํŒŒ์ผ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ํ‰์ƒ ๋™์•ˆ ๋‚˜๋Š” ๊ทธ๊ฒƒ์ด ์ž‘๋™ํ•˜๋„๋ก ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ QEMU ๋˜๋Š” ์žฅ์น˜ ์ž์ฒด์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ปดํŒŒ์ผํ•˜๋Š” ๊ฒƒ์œผ๋กœ ๋‚จ์•„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” arm6 ์ œ์–ด ํ‰๋ฉด ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ์—†์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๊ฒƒ์€ ์œ ์ผํ•œ ๋”ธ๊พน์งˆ์ž…๋‹ˆ๋‹ค. Kubelet ๋ฐ kubeadm์€ ์ปดํŒŒ์ผ๋˜๊ณ  ์ผ์‹œ ์ค‘์ง€ ์ปจํ…Œ์ด๋„ˆ์™€ kube-proxy ์ปจํ…Œ์ด๋„ˆ๋Š” ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ buildx๋กœ ๋นŒ๋“œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ž‘์—…์ž ๋…ธ๋“œ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ arm6์—์„œ ์ž‘๋™ํ•˜๋„๋ก ํ•˜๋Š” ๊ฒƒ์€ ์—ฌ์ „ํžˆ โ€‹โ€‹์‰ฝ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ํŒŒ์ด 0์œผ๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ ๋ฆฌ์†Œ์Šค ์‚ฌ์šฉ์„ ์œ„ํ•ด ์กฐ์ •ํ•˜๋ ค๋ฉด kubelet ๊ตฌ์„ฑ ํŒŒ์ผ์„ ๋ฐ˜๋“œ์‹œ ์ฝ์œผ์‹ญ์‹œ์˜ค. (๋˜๋Š” ์ „์ฒด ์žฌ๊ณ  k8 ๋Œ€์‹  k3 ๋˜๋Š” ๋‹ค๋ฅธ ๊ฒฝ๋Ÿ‰ ๋ฐฐํฌํŒ์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.)

์—ฌ๊ธฐ์— ๊ฒŒ์‹œ๋œ ์˜ค๋ž˜๋œ ๋ผ์Šค๋ฒ ๋ฆฌ ๋ชจ๋ธ์— ๋Œ€ํ•œ ๋ฐ”์ด๋„ˆ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. https://github.com/aojea/kubernetes-raspi-binaries
github ์ž‘์—… ์ž‘์—…์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ์œผ๋ฏ€๋กœ ์ž์œ ๋กญ๊ฒŒ ์žฌ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค.

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