๋ด raspberry pi zero W์ kubeadm์ ์ค์นํ๋ ค๊ณ ํ์ง๋ง "Illegal Instruction"์ด ํ์๋ฉ๋๋ค.
๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด 3(armv7)์์๋ ์ ์๋ํฉ๋๋ค.
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
sudo apt-get install gcc-arm-linux-gnueabi <- ๋ณ๊ฒฝ
* 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 ์์
์์
์ผ๋ก ์์ฑ๋์์ผ๋ฏ๋ก ์์ ๋กญ๊ฒ ์ฌ์ฌ์ฉํ์ญ์์ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
armv6l ์ง์์ ์ฌํตํฉ์ ๋ ผ์ํ ์ ์์ต๋๊น? Pi Zero ๋ฐ ๊ธฐํ armv6l Pi ์ฅ์น์์ Kubernetes๋ฅผ ์ฌ์ฉํ๋ ๋ฐ ๊ด์ฌ์ ๋ณด์ด๋ ๋ง์ ๊ฒ์๋ฌผ์ ์ฐพ์์ต๋๋ค. P Zero๋ Kubernetes ๋๋ Swarm ํด๋ฌ์คํฐ ํ๊ฒฝ์์ Micro Services๋ฅผ ํธ์คํ ํ๋ ๋ฐ ์ ํฉํฉ๋๋ค. Docker Swarm์ ์ ์๊ฒ ์ ๋ง์ต๋๋ค. ๋ฐ๋ผ์ ๋๊ตฌ๋ ์ง ํ ๋ก ์ ์ฌํ์ฉํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์ ๋๋ค. Pi clusterhat์ ์ ์ ํ ๋ฐ๋ชจ ์ธํ๋ผ์ ๋๋ค.