[Lubomir] ์ฐธ๊ณ : ๊ฐ๋ฅํ ์์ ์ฌํญ์ด ์ฌ๊ธฐ์ ์ ์ถ๋์์ต๋๋ค.
https://github.com/kubernetes/kubernetes/pull/66264
๋ฒ๊ทธ ๋ณด๊ณ ์
kubeadm ๋ฒ์ ( kubeadm version
) :
kubeadm version : & version.Info {Major : "1", Minor : "7", GitVersion : "v1.7.3 + 2c2fe6e8278a5", GitCommit : "2c2fe6e8278a5db2d15a013987b53968c743f2a1", GitTreeState : "not a git tree", BuildDate : "1970-01 -01T00 : 00 : 00Z ", GoVersion :"go1.8 ", ์ปดํ์ผ๋ฌ :"gc ", ํ๋ซํผ :"linux / arm "}
ํ๊ฒฝ :
kubectl version
) :ํด๋ผ์ฐ๋ ์ ๊ณต ์
์ฒด ๋๋ ํ๋์จ์ด ๊ตฌ์ฑ :
arm32 (bananapi-๊ธฐ๋ณธ์ ์ผ๋ก raspberrypi2)
OS (์ : / etc / os-release) :
(๋ด OS ์ด๋ฏธ์ง)
ID = "containos"
NAME = "containos"
VERSION = "v2017.07"
VERSION_ID = "v2017.07"
PRETTY_NAME = "containos v2017.07"
์ปค๋ (์ : uname -a
) :
Linux master2 4.9.20 # 2 SMP 8 ์ 16 ์ผ ์์์ผ 15:36:20 AEST 2017 armv7l GNU / Linux
๊ธฐํ :
kubeadm init
๋ "์ ์ด ํ๋ฉด์ ๊ธฐ๋ค๋ฆฌ๋ ์ค"๋จ๊ณ์์ ~ ์์ํ ์์ ์์ต๋๋ค. docker ps / logs ์กฐ์ฌ์ ๋ฐ๋ฅด๋ฉด apiserver๊ฐ ์ข
๋ฃ๋๊ณ (SIGTERM) ๊ณ์ ๋ค์ ์์๋ฉ๋๋ค.
๋ชจ๋ ์์ :) ํนํ apiserver๊ฐ ๋ํ๋๊ณ ๋๋จธ์ง ํ๋ก์ธ์ค๋ ์งํ๋ฉ๋๋ค.
๋๋ฆฐ ๋จธ์ ์์ kubeadm init
๋ฅผ ์คํํฉ๋๋ค.
๋๋ฅผ ์ํด, ๋ชจ๋ ์ปจํ ์ด๋๊ฐ ํ ๋ฒ์ ์์๋๋ ๋์ apiserver๋ ์ฒซ ๋ฒ์งธ ๋ก๊ทธ ์ค์์ HTTP ์ฟผ๋ฆฌ์ ์๋ตํ๋ ๋ฐ ์ฝ 90 ์ด (!)๊ฐ ๊ฑธ๋ฆฝ๋๋ค. ๋๋ ๊ทธ ์์ ์์ ๊ทธ๊ฒ์ด ๋ฌด์์ํ๊ณ ์๋์ง ์์ธํ ๋ณด์ง ์์์ง๋ง ๋ก๊ทธ๋ etcd ๋ถํธ ์คํธ๋ฉ์ฒ๋ผ ๋ณด์ด๋ ๊ฒ์ ์ธ๊ธํฉ๋๋ค.
๋ด ์ ์ ๋ ์์ ์ฌํญ์ apiserver initialDelaySeconds
๋ฅผ 180s๋ก ์ค์ ํ๋ ๊ฒ์
๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๋ค๋ฅธ ๊ณณ์์๋ ๋น์ทํ ๊ฒ์
๋๋ค. ๊ณต๊ฒฉ์ ์ธ ์ด๊ธฐ ์ง์ฐ์ ๊ฐ์ง ์ด์ ๊ฐ ๊ฑฐ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
(์์ฃผ ์คํจ๊ฐ ๋ฐ์ํ ๊ฒ์ผ๋ก ์์๋๋ ๋จ์ ํ ์คํธ๊ฐ ์๋๋ผ๋ฉด ํ๋ก๋์ ์ํํธ์จ์ด์ ๋ํ ์ ๊ฒฝํ์ ๋ฐ๋ฅด๋ฉด ์๊ฐ ์ด๊ณผ์ ๋ํ ์ฌ๋ฐ๋ฅธ ์๋ฃจ์ ์ ๊ฑฐ์ ํญ์ ๋ ์ค๋ ๊ธฐ๋ค๋ฆด ๊ฒ์ ๋๋ค.)
ํ์ฌ ์ปจํธ๋กค ํ๋ ์ธ ํฌ๋์ ๋ํด InitialDelaySeconds
๋ฐ TimeoutSeconds
๋ฅผ ๋ชจ๋ 15๋ก ์ค์ ํ ๊ฒ ๊ฐ์ต๋๋ค. ์ด๋ kube-up.sh
๋ ๋ง์ฐฌ๊ฐ์ง์
๋๋ค. ๋ชจ๋ ์ด๋ฏธ์ง๋ฅผ ํ๊บผ๋ฒ์ ๊ฐ์ ธ ์ค๋ ์ด๊ธฐ ์์์ด ๋๋ฆฌ๋ค๋ ๊ฒ์ ์๊ณ ์์ง๋ง ๋ชจ๋ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์จ ํ apiserver๊ฐ ์์๋ ํ /healthz
๊ฒ์ฌ์ ์๋ตํ๋ ๋ฐ ์ผ๋ง๋ ๊ฑธ๋ฆฌ๋์?
์ ์ ๋ ฅ ๊ธฐ๊ณ๋ฅผ ์์ฉํ๊ธฐ ์ํด์ด ๋ ๊ฐ์ ๋ชจ๋ ์กฐ์ ํด์ผ ํ ๊ฒ์ ๋๋ค.
์ผ๋จ ์์๋๋ฉด 15 ์ด ๋ฏธ๋ง์ ์ํ ํ์ธ์ ์๋ต ํ ์ ์์ต๋๋ค. ์ค์ ๋ก apiserver๊ฐ exec ()์ ์ค์ ๋ก afaics ์๋น์ค๋ฅผ ์ ๊ณต ํ ์ค๋น๊ฐ ๋ ์ฌ์ด์ ์ํํ๋ ๋ชจ๋ ์ถ๊ฐ ์์ ์ ๋๋ค.
์ค, ๊ทธ๋ฆฌ๊ณ ๋์ปค ํ ํ์์ InitialDelaySeconds afaics (์ข์)์ ํฌํจ๋์ง ์์ต๋๋ค. ์ ์ ๋คํธ์ํฌ ๋งํฌ๋ฅผ ํตํด ๋ ํฐ (์ผ๋ฐ ์ฐ๋ถํฌ) ์ด๋ฏธ์ง๊ฐ์๋ ๋ค๋ฅธ ์์์ ๊ฐ์ ธ ์ค๊ธฐ์ ๋ช ๋ถ์ด ๊ฑธ๋ฆด
๋๋ ๊ฐ์ ๋ฌธ์ ๋ฅผ ๊ฒช๊ณ ์์ต๋๋ค. ๋๋ฆฐ ๊ธฐ๊ณ๋ก kubeadm
๋ ์์ํ ์์ ์์ต๋๋ค. v1.7.4 ์ฌ์ฉ
@anguslees ๋ฐ @koalalorenzo , ์๋์ผ๋ก ํ์ฑ ํ๋ก๋ธ ์ค์ ์ ๋ณ๊ฒฝํ๋ฉด ( /etc/kubernetes/manifests/
์์ ๋งค๋ํ์คํธ ํ์ผ์ ํธ์งํ์ฌ) ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋๋์ง ํ์ธํ ์ ์์ต๋๊น? ๋ํ ์ต๊ทผ์ Slack์์ ์ฌ์ฉ์๊ฐ ๋์ผํ ์ฆ์์ ๋ณด์ด์ง๋ง ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ ๋ง์ ํธ์คํธ ์ ํ์ผ๋ก ์ด๋ํ ๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ ๋์๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์ ์ฝ์ ๋ถ๋ช ํ ๊ฐ๋ฅ์ฑ์ด์๋ ์ฌ๋ก๋ฅผ ๋ณด์์ต๋๋ค.
์ฝ๋ฉ์ ์๊ฐ์ ํฌ์ํ๊ธฐ ์ ์์ด ์ ๊ทผ ๋ฐฉ์์ด ๋ฌธ์ ๋ฅผ ์ค์ ๋ก ํด๊ฒฐํ ์ ์๋์ง ํ์ธํ๊ณ ์ถ์ต๋๋ค. ๊ฐ์ฌ!
ํ๋์จ์ด ์ง์ ๊ฐ์ํ์์ด QEMU์์ kubeadm์ ์ฌ์ฉํ๋ ค๊ณ ํ ๋๋์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค (๋งค์ฐ ๋๋ฆฌ๊ธฐ ๋๋ฌธ์ ๋์ ์๊ฐ์ ๋๋ค). InitialDelaySeconds ๋ฐ TimeoutSeconds๋ฅผ ๋๋ฆฌ๋ฉด ๋์์ด๋ฉ๋๋ค. ๊ทธ๋ฌ๋ฉด ๊ฒฐ๊ตญ ํด๋ฌ์คํฐ๊ฐ ๋ํ๋ฉ๋๋ค.
@pipejakob kubeadm ์คํ์ ์ฌ๋ฐ๋ฅธ ์ง์ ์์ ๋ค๋ฅธ ํฐ๋ฏธ๋์์ ์ด๊ฒ์ (๋ด bananapi์์) ์คํํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
sed -i 's/initialDelaySeconds: [0-9]\+/initialDelaySeconds: 180/' /etc/kubernetes/manifests/kube-apiserver.yaml
(๋ณดํต ์๋์ผ๋ก docker kill
old / restart-looping apiserver ์ปจํ
์ด๋, ์ ์ ํฌ๋๋ก ์๋ ์ ๋ฆฌ๋๋์ง ํ์คํ์ง ์์ต๋๋ค)
ํธ์ ๋ด์ ๊ฐ๊ธฐ ํ์ธ ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
์ ๊ฒฝ์ฐ์๋ ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด 3์์์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์์ ํ์ธํ ์ ์์ต๋๋ค. 180์ผ๋ก ๋ณ๊ฒฝํ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ง๋ง ์ ๊ฒฝ์ฐ์๋ ๋จ์ํ ๋ค์๊ณผ ๊ฐ์ด ์ฌ๋ง ํ ๊ฒ์ฒ๋ผ ๋ฌธ์ # 106๋ ๋ฐ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
9 ์ 1 ์ผ 10:47:30 raspberrypi kubelet [6053] : W0901 10 : 47 : 30.020409 6053 kubelet.go : 1596] ๋ฏธ๋ฌ ํฌ๋ "kube-apiserver-raspberrypi_kube-system (7c03df63-8efa-1) ์ญ์ ์ค
1e7-ae86-b827ebdd4b52) "๊ฐ ์ค๋ ๋์๊ธฐ ๋๋ฌธ์
๋๋ค.
kubelet ํ๋ก์ธ์ค๋ฅผ ์๋์ผ๋ก HUPํ์ฌ ๋ค์ ์ด์์ผํ์ต๋๋ค.
๋๋ ๋ํ ์ด๊ฒ์ ๊ฐ์ง๊ณ ์์์ ํ์ธํ ์ ์์ผ๋ฉฐ ์ ์ ์ ์ ๊ตฌํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋๋ Raspberry Pi 2B๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์ง๋๋ฌ ๋์ init ๋จ๊ณ์ ๋จธ๋ฌผ ๋ ์ต๋๋ค. ์ ์ด ํ๋ ์ธ์ ๊ธฐ๋ค๋ฆฌ๊ธฐ ์์ํ๋ฉด ํ ์ค์ง๋ฆฌ ๋ผ์ด๋๋ฅผ ์คํ ํ ํ ์์ผ๋ก ๋์๊ฐ์ต๋๋ค.
์ด ๋ฌธ์ ๋ kubeadm
v1.8.0์ ์ฌ์ ํ ์กด์ฌํ๋ฉฐ kubeadm
์์ฒด๊ฐ ์ด์ ๋๋ถ๋ถ์ ์์
์ ๋ํด 1 ๋ถ ์๊ฐ ์ด๊ณผ๊ฐ ์๊ธฐ ๋๋ฌธ์ ๋ ์ฌ๊ฐํฉ๋๋ค. 1 ๋ถ ์ ํ ์๊ฐ์ ์์๋ก ์ ํํ ๊ฒ์ผ๋ก ๋ณด์ด๋ฉฐ, ์ํ๊น๊ฒ๋ a) ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ณ ๋๋ฒ๊ทธ / ํด๊ฒฐํ ์ถฉ๋ถํ ์๊ฐ์ด ์์ต๋๋ค (์ : sed hack), b) apiserver๊ฐ ์์๋ ์ถฉ๋ถํ ์๊ฐ (~ ๋๋ฅผ ์ํด 90s), initialDelaySeconds๊ฐ ํ์ฅ ๋ ๊ฒฝ์ฐ ์๋ c) kubeadm
afaics๋ฅผ ํดํน / ์ฌ ๊ตฌ์ถํ์ง ์๊ณ ๋ ๋๋ฆด ์ ์์ต๋๋ค.
์๊ฐ ์ด๊ณผ๋ ํนํ ๋ณต์กํ ์ต์ข
์ผ๊ด์ฑ ์์คํ
์์ ์ฌ๋ฐ๋ฅธ ๋
ผ๋ฆฌ๋ฅผ ๊นจ๋จ๋ฆฝ๋๋ค. "๋จ์ง"๋๋ฌธ์ ์ถ๊ฐํด์๋ ์๋ฉ๋๋ค. kubeadm
์ (๋) ๋ ํฐ ๋ฐฐํฌ ์์คํ
์ด ์์กด ํ ์์๋ ๋น๋ฉ ๋ธ๋ก์ด๋ผ๋ ๊ฒ์ ์ดํดํฉ๋๋ค. ๋ฐ๋ผ์ kubeadm ์์ฒด์์ ๋ชจ๋ ์๊ฐ ์ ํ์ ์ ๊ฑฐ ํ ๊ฒ์ ๋๋ดํ๊ฒ ์ ์ํ๊ณ (๋ค์ํ ๋จ๊ณ๋ ๊ณ์ํด์ ๊ณ์ ์ฌ ์๋ํด์ผ ํจ) ์์ ์์ค์ ์ปจํ
์คํธ์์ ์ ์ ํ ๊ฒฝ์ฐ ์ ์ฒด ์๊ฐ ์ ํ์ ์ถ๊ฐํ๊ธฐ ์ํด ์์ ์์ค ํ๋ก์ธ์ค์ ์์กดํฉ๋๋ค. ๋จ์ / ์ง์ ์ฌ์ฉ ์ฌ๋ก์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. "์ฌ์ฉ์๊ฐ ํฌ๊ธฐํ๊ณ ^ c๋ฅผ ๋๋ฅผ ๋๊น์ง ์ฌ์๋"๋ฅผ ์๋ฏธํฉ๋๋ค. ๊ทธ๋ฐ PR์ด ํ์ฉ๋ฉ๋๊น?
@anguslees ์ฐ๋ฆฌ๋ ์ด์ ์ "์์ํ ๊ธฐ๋ค๋ฆผ"ํ๋์ํ์ต๋๋ค. ํ์ง๋ง ๊ทธ๊ฒ์ UX PoV์์ ๋งค์ฐ ์ฐจ์ ์ฑ ์ด์๊ธฐ ๋๋ฌธ์ ์ด์ ํ์ ์์์ด ์์ต๋๋ค. ์ํ๋ ๊ฒฝ์ฐ ์ด๋ฌํ ์ ํ ์๊ฐ ์ค ์ผ๋ถ๋ฅผ ๋๋ฆด ์ ์์ต๋๋ค.
๋ฌธ์ ๋ kubeadm์ ์ฌ์ฉ์ด ๋ ๋ฐฐ๋ผ๋ ๊ฒ์ ๋๋ค. ์ฐ๋ฆฌ ๋ ๋ค ์ฌ์ฉ์๊ฐ kubeadm์ ๋ํ ํ์ผ๋ก ์ ๋ ฅํ์ฌ ์ด๋ค ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ๋๋ ์์ ์์ค์ ์๋น์๊ฐ ์๋์ง ์๊ณ ์ถ์ดํฉ๋๋ค.
.. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ์ฌ๊ธฐ์ ์ด๋ค ๋ฐฉํฅ์ผ๋ก ๊ฐ๊น์? ํ์ฌ ์ ๋ 10 ๋ฐฐ ๋ง์ ์๊ฐ ์ ํ์ด์๋ kubeadm
ํฌํฌ๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ, ์ธ์ ๊ฐ๋ ํ์ค kubeadm
๋ฐ์ด๋๋ฆฌ๋ฅผ ๋ค์ ์ฌ์ฉํ ์ ์๋ค๊ณ ๋ฏฟ๊ณ ์ถ์ต๋๋ค _.
@anguslees ์ฐ๋ฆฌ๋ ์ด์ ์ "์์ํ ๊ธฐ๋ค๋ฆผ"ํ๋์ํ์ต๋๋ค. ํ์ง๋ง ๊ทธ๊ฒ์ UX PoV์์ ๋งค์ฐ ์ฐจ์ ์ฑ ์ด์๊ธฐ ๋๋ฌธ์ ์ด์ ํ์ ์์์ด ์์ต๋๋ค. ์ํ๋ ๊ฒฝ์ฐ ์ด๋ฌํ ์ ํ ์๊ฐ ์ค ์ผ๋ถ๋ฅผ ๋๋ฆด ์ ์์ต๋๋ค.
๊ตฌ์ฑ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๊ฒ์ ์ด๋ป์ต๋๊น? ๋ชจ๋๋ฅผ ์์ ํ๋ ๋จ์ผ ์ต์ ์ ๊ฐ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๊น?
/ ๊ณง ์ค์
๋ชจ๋๋ฅผ ์์ ํ๋ ๋จ์ผ ์ต์ ์ ๊ฐ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ ๋๊น?
์๋ง๋, ๋๋ ๋ชจ๋ ์๊ฐ ์ ํ์ ๋ํด ์ด๋ค ์ข ๋ฅ์ "๊ฐ์ค์น"๊ฐ ๊ณฑํด์ง ์ ์์ต๋๋ค. ๊ทธ๋ ์ง ์์ผ๋ฉด 20 ๊ฐ์ง ๋ค๋ฅธ ์ ํ์ ์๊ฐ ์ ํ ํ๋๊ทธ๋ก ๊ตฌ์ฑ ์ง์ฅ์ ๋ค์ด๊ฐ ๊ฒ์ ๋๋ค. :)
raspberry pi 2 ํด๋ฌ์คํฐ์์ kubeadm ์ ๊ทธ๋ ์ด๋๋ฅผ ์ฌ์ฉํ์ฌ ๋์ผํ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ๊ณผ๋ํ ์๊ฐ ์ด๊ณผ๋ก ์ธํด ์ ๊ทธ๋ ์ด๋๊ฐ ์คํจํฉ๋๋ค. ๋งค๋ํ์คํธ์์ ํ์ฑ ์ํ ํ๋ก๋ธ ์ค์ ์ ๋ณ๊ฒฝํด๋ ๋์์ด๋์ง ์์ต๋๋ค. ์ด๋ค ์์ด๋์ด?
์ ๋ kubeadm ์ฝ๋๋ฒ ์ด์ค์ ํ์ ์์ค์ ์์์ ์๊ฐ ์ด๊ณผ๋ฅผ ์ ์ฉํ๋ ๋์ kubeadm ์๊ฐ ์ด๊ณผ๊ฐ ํธ์ถ ์ปจํ ์คํธ (๋๋๋ณด๋ค ์ ๊ตํ ์ค๋ฅ ๋ณต๊ตฌ ์ ๋ต์ ์ผ๋ถ)์์ ์์๋๋ ํจํด์ ์ ์ํฉ๋๋ค.
๊ฐ์ฅ ๊ฐ๋จํ ํํ๋ก ์ด๊ฒ์ kubeadm์์ ๋ชจ๋ ์๊ฐ ์ด๊ณผ๋ฅผ ์ ๊ฑฐํ๊ณ ์ ์ฒด "xx ๋ถ ๋์ ์คํ ํ ๋ค์ ์๋ฃ๋์ง ์์ผ๋ฉด ์ค๋จ"์ ์ญ ํ์ด๋จธ๋ก ๋์ฒดํ๋ ๊ฒ๊ณผ ๊ฑฐ์ ๋๊ฐ์ด ์๋ํฉ๋๋ค (kubeadm์ ์ค๋ฅ๋ฅผ ๋ง์ด ์ฒ๋ฆฌ ํ ์ โโ์๊ธฐ ๋๋ฌธ์ ๋๋ค). ๋ ์ค๋ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ ์ด์ธ์ ํ๋ณต).
์๋ ๋งค๋ํ์คํธ livenessProbe ์๊ฐ ์ ํ์ ๊ฒฝ์ฐ ๋ง ๊ทธ๋๋ก ํ ์ค์ง๋ฆฌ ํจ์น์
๋๋ค. ๋ถํํ๋ "์ ์ == ์ค๋ฅ๋ก๋ถํฐ์ ํธ์ฐจ"์ค๋ฅ๊ฐ kubeadm ์ฝ๋๋ฒ ์ด์ค ์ ์ฒด์ ๋ ํผ ์ก๊ธฐ ๋๋ฌธ์ livenessProbe ๋ง ์์ ํ๋ ๊ฒ๋ง์ผ๋ก๋ ๋ ์ด์ ์ถฉ๋ถํ์ง ์์ต๋๋ค. ๋ฌธํ์ ์ธ์์ ๋ฐ๊พธ๋ ๊ฒ์ ์ด๋ ต ๊ธฐ ๋๋ฌธ์ ๋๊ตฐ๊ฐ๊ฐ ๋ผ์ฆ๋ฒ ๋ฆฌ ํ์ด์ ์ค์นํ๊ณ ์ถ๋ค๋ฉด ๊ทธ ๋์ kubeadm์ ํฌํฌ ๋ฒ์ ์ด ์์ต๋๋ค . ( make cross WHAT=cmd/kubeadm KUBE_BUILD_PLATFORMS=linux/arm
๋น๋)
@anguslees ํจ์น ๋ kubeadm์ ์ปดํ์ผ ๋ 1.9.4 ๋ฒ์ ์ด ์์ต๋๊น? ํจ์น ๋ ๋ฒ์ ์ ์ปดํ์ผํ๋ ๋ฐ ๋ฌธ์ ๊ฐ ์์ต๋๋ค.
kubeadm์ด ํ๋๊ทธ ๋ค์์ด ๋์์ด ์๋ค๋ ๊ฒ์ ๋๋์ต๋๋ค. ์๋ง๋ PR์ด ์์๋๋ก์ ๋๊น?
/ ํ ๋น @liztio
๊ทธ๋์ ์ฐ๋ฆฌ๋ 1.11์์ ์ด๊ฒ์ ์ํฅ์ ๋ฏธ์น ์์๋ ๋ ๊ฐ์ง ๋ฌธ์ ๋ฅผ ์์ ํ์ต๋๋ค.
์ด๊ฒ์ด rasberry pi-gear์์๋ง ๋ฐ์ํ๋ค๋ฉด ์ต์ ๊ณตํต ๋ถ๋ชจ๋ฅผ ํ์ ํ๋ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค.
์ง์ํ ๊ณํ ์ธ ๊ฐ์ฅ ๋ฎ์ ๋์ ํ๋ซํผ์ ๋ฌด์์ ๋๊น?
Raspberry Pi 2๋ Kubernetes๋ฅผ ์คํํ๋ ค๋ ๊ฐ์ฅ ๋ฎ์ ํ๋ซํผ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๋น ํ๋์จ์ด ์ง์ QEMU๋ฅผ ์ฌ์ฉํ ํ ์คํธ ๋ ๊ณ ๋ คํ๊ธฐ์๋ ๋๋ฌด ์ด๊ตญ์ ์ ๋๋ค.
Pi๊ฐ ๋๋ฆฐ I / O๋ก ์ธํด ๋ง์ ์ด๋ ค์์ ๊ฒช๊ณ ์๋ค๋ ์ ์ ๊ณ ๋ คํ ๋ ๋ชจ๋ ์ด๋ฏธ์ง๋ฅผ ๋ฏธ๋ฆฌ ํ๋งํ๋ฉด ์ด๋ฏธ ๋ง์ ๋์์ด๋์ง๋ง ์ค์ ์๊ฐ ์ด๊ณผ๋ฅผ ํ์ธํ๋ ค๋ฉด ์ค์ ํ ์คํธ๊ฐ ํ์ํฉ๋๋ค.
imo rasberry pi2๋ ์ง์ํ๊ธฐ์ ๋๋ฌด ์ค๋๋์์ต๋๋ค. http://socialcompare.com/en/comparison/raspberrypi-models-comparison ์ 2015 ๋ ์ ๋์์ต๋๋ค.
>= 3
์ด ๋ ํฉ๋ฆฌ์ ์ผ๋ก ๋ณด์
๋๋ค.
๋ฏธ๋ฆฌ ์ก์ ๋น๊ธฐ๋ ์ด๋ฏธ์ง๋ ๋์์ด๋์ง ์์ต๋๋ค. livenessProbe ํ์ด๋จธ๋ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ์ฌ ๋๊น์ง ์์๋์ง ์์ต๋๋ค ( ์์์ ์ง์
์์ ์ฌํญ์ initialDelaySeconds ์๊ฐ ์ ํ์ ์ฐ์ฅํ๋ ๊ฒ ์ ๋๋ค. kubeadm์ ํ์ฌ ์๊ฐ ์ด๊ณผ ๊ฐ์ ์ค๋ฅ ๊ฐ์ง๊ฐ ์๋ ๋น ๋ฅธ UX ๊ฒฝํ์ "๊ฐ์ "ํ๊ธฐ ์ํด ์ค์ฉ๋๊ณ ์์ต๋๋ค.
ํธ์ง : ๊ทธ๋ฆฌ๊ณ ํ์คํ ์์ํ๋ ๋ฐ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฝ๋๋ค. apiserver intialDelaySeconds ์๊ฐ ์ ํ (๋ฐ kubeadm ์์ฒด์์ ์ฌ์ฉ๋๋ ๋ค๋ฅธ ์ค์น ์ ์ฉ ์๊ฐ ์ ํ)์ ๋๋ฆฌ๋ฉด ์ ์ด ํด๋ฌ์คํฐ๊ฐ 3xRPi2์์ ์ ์๋ํฉ๋๋ค. ๋๋ ์ ์ฐ๋ฆฌ๊ฐ ์ด๊ฒ์ ๋ํด ์ฌ์ ํ ์ด์ผ๊ธฐํ๊ณ ์๋์ง ์ดํดํ์ง ๋ชปํฉ๋๋ค : /
1.9.3์ ARM64 ํด๋ฌ์คํฐ๊ฐ ์๊ณ 1.9.7๋ก ์ฑ๊ณต์ ์ผ๋ก ์ ๋ฐ์ดํธ๋์์ง๋ง 1.9.7์์ 1.10.2๋ก ์ ๊ทธ๋ ์ด๋ํ๋ ๋ฐ ์๊ฐ ์ด๊ณผ ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค.
๋๋ ์ฌ์ง์ด kubeadm์ ํธ์งํ๊ณ ๋ค์ ์ปดํ์ผํ์ฌ ๋์ผํ ๊ฒฐ๊ณผ๋ก ํ์ ์์ (๋ง์ง๋ง ์ปค๋ฐ https://github.com/anguslees/kubernetes/commits/kubeadm-gusfork์ ๊ฐ์ด)์ ๋๋ ค ๋ณด์์ต๋๋ค.
$ sudo kubeadm upgrade apply v1.10.2 --force
[preflight] Running pre-flight checks.
[upgrade] Making sure the cluster is healthy:
[upgrade/config] Making sure the configuration is correct:
[upgrade/config] Reading configuration from the cluster...
[upgrade/config] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -oyaml'
[upgrade/version] You have chosen to change the cluster version to "v1.10.2"
[upgrade/versions] Cluster version: v1.9.7
[upgrade/versions] kubeadm version: v1.10.2-dirty
[upgrade/version] Found 1 potential version compatibility errors but skipping since the --force flag is set:
- Specified version to upgrade to "v1.10.2" is higher than the kubeadm version "v1.10.2-dirty". Upgrade kubeadm first using the tool you used to install kubeadm
[upgrade/prepull] Will prepull images for components [kube-apiserver kube-controller-manager kube-scheduler]
[upgrade/apply] Upgrading your Static Pod-hosted control plane to version "v1.10.2"...
Static pod: kube-apiserver-kubemaster1 hash: ed7578d5bf9314188dca798386bcfb0e
Static pod: kube-controller-manager-kubemaster1 hash: e0c3f578f1c547dcf9996e1d3390c10c
Static pod: kube-scheduler-kubemaster1 hash: 52e767858f52ac4aba448b1a113884ee
[upgrade/etcd] Upgrading to TLS for etcd
Static pod: etcd-kubemaster1 hash: 413224efa82e36533ce93e30bd18e3a8
[etcd] Wrote Static Pod manifest for a local etcd instance to "/etc/kubernetes/tmp/kubeadm-upgraded-manifests346927148/etcd.yaml"
[certificates] Using the existing etcd/ca certificate and key.
[certificates] Using the existing etcd/server certificate and key.
[certificates] Using the existing etcd/peer certificate and key.
[certificates] Using the existing etcd/healthcheck-client certificate and key.
[upgrade/staticpods] Moved new manifest to "/etc/kubernetes/manifests/etcd.yaml" and backed up old manifest to "/etc/kubernetes/tmp/kubeadm-backup-manifests190581659/etcd.yaml"
[upgrade/staticpods] Not waiting for pod-hash change for component "etcd"
[upgrade/etcd] Waiting for etcd to become available
[util/etcd] Waiting 30s for initial delay
[util/etcd] Attempting to get etcd status 1/10
[util/etcd] Attempt failed with error: dial tcp 127.0.0.1:2379: getsockopt: connection refused
[util/etcd] Waiting 15s until next retry
[util/etcd] Attempting to get etcd status 2/10
[util/etcd] Attempt failed with error: dial tcp 127.0.0.1:2379: getsockopt: connection refused
[util/etcd] Waiting 15s until next retry
[util/etcd] Attempting to get etcd status 3/10
[util/etcd] Attempt failed with error: dial tcp 127.0.0.1:2379: getsockopt: connection refused
[util/etcd] Waiting 15s until next retry
[util/etcd] Attempting to get etcd status 4/10
[upgrade/staticpods] Writing new Static Pod manifests to "/etc/kubernetes/tmp/kubeadm-upgraded-manifests346927148"
[controlplane] Wrote Static Pod manifest for component kube-apiserver to "/etc/kubernetes/tmp/kubeadm-upgraded-manifests346927148/kube-apiserver.yaml"
[controlplane] Wrote Static Pod manifest for component kube-controller-manager to "/etc/kubernetes/tmp/kubeadm-upgraded-manifests346927148/kube-controller-manager.yaml"
[controlplane] Wrote Static Pod manifest for component kube-scheduler to "/etc/kubernetes/tmp/kubeadm-upgraded-manifests346927148/kube-scheduler.yaml"
[upgrade/staticpods] The etcd manifest will be restored if component "kube-apiserver" fails to upgrade
[certificates] Using the existing etcd/ca certificate and key.
[certificates] Using the existing apiserver-etcd-client certificate and key.
[upgrade/staticpods] Moved new manifest to "/etc/kubernetes/manifests/kube-apiserver.yaml" and backed up old manifest to "/etc/kubernetes/tmp/kubeadm-backup-manifests190581659/kube-apiserver.yaml"
[upgrade/staticpods] Waiting for the kubelet to restart the component
[upgrade/apply] FATAL: couldn't upgrade control plane. kubeadm has tried to recover everything into the earlier state. Errors faced: [timed out waiting for the condition]
kubeadm์ด ์ฌ์ฉ๋๊ณ apiserver๊ฐ ์์๋ ๊ฒฝ์ฐ ์ฒ์ ์์ํ ๋ ํฌ์ธํธ ์ธก์ ์ ์๋ ํ ์ ์์ต๋๋ค. ์๋ง๋ ์ฒซ ๋ฒ์งธ ์ด๊ธฐํ์์ ์ธก์ ์ ์ ์ฉ๋๋ ์๊ฐ ์ ํ์ ๋ํด ๋์ค ๋จ๊ณ์์ ๊ตฌ์ฑ์ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. ๋ํ ๋ก๊ทธ๋ฅผ ๋ณด๋ healtz ๊ฒ์ฌ์ ์ํด apiserver๊ฐ ์ซ๊ฒจ ๋๋ค๋ ๊ฒ์ ์์ ๋ด๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ์ ์ด๋ ๋ฌธ์ ๋ฅผ ์ธ์ํ๊ธฐ ์ํด ๋ ๋์ ๋ก๊น ์ ํ๋ณด ํ ์ ์์ต๋๋ค. livenessprobe๊ฐ ๋ฌธ์ ๋ผ๋ ๊ฒ์ ์์๋ด๋ ๋ฐ ๊ฝค ์ค๋ ์๊ฐ์ด ๊ฑธ๋ ธ์ต๋๋ค. ๋๋ ๋ด๊ฐ ์ด๋ณด์๋ผ๋ ๊ฒ์ ์ธ๊ธํด์ผํ๋ฉฐ, ์ ์ด๋ kubeadm์ ์คํจ ์ถ๋ ฅ์์ โโ์ธ๊ธํ๋ ๊ฒ์ด ๋์์ด ๋ ๊ฒ์ ๋๋ค.
RaspberryPi 3๋ ๋ฏธ๋ฆฌ ๊ฐ์ ธ์จ ์ด๋ฏธ์ง์์๋์ด ๋ฌธ์ ๋ฅผ ๋ณด์ฌ์ค๋๋ค. API ์๋ฒ๋ ํ์ด์ง๋ฅผ ์ ๊ณต ํ ์์๋ ์์น์ ๋๋ฌํ๋ ๋ฐ 2-3 ๋ถ ์ ๋ ๊ฑธ๋ฆฝ๋๋ค.
์ง๊ธ์ kubeadm์ด ์คํ๋๋ ๋์ ๋ฐฑ๊ทธ๋ผ์ด๋์์ YAML ํ์ผ์ ํจ์นํ๊ณ ์๊ธฐ ๋๋ฌธ์์ด๋ฅผ ๊ตฌ์ฑ ํ ์ ์์ผ๋ฉด ์ข์ ๊ฒ์ ๋๋ค.
@carlosedp ์ ๊ทธ๋ ์ด๋ ์ค์ ๋ด๊ฐํ๋ ์ผ์ apiserver๊ฐ ๋ถํ ๋๋ ๋์ kubelet์ ๋ค์ด์ํค๋ ๊ฒ์ ๋๋ค. ์ผ์ข ์ ํดํค์ด์ง๋ง apiserver๊ฐ ๊ฐ๋ ๋ ๋๊น์ง ์ํ ๊ฒ์ฌ๊ฐ ์คํ๋์ง ์๋๋กํฉ๋๋ค.
ํ์ง๋ง ์์งํ kubeadm upgrade
์ ARM์ ๋ด ๊ฒฝํ์ ๊ทธ๋ ๊ฒ ์ ์๋ํ์ง ์์ต๋๋ค.
@brendandburns 1.9๊น์ง ์๋ฒฝํ๊ฒ ์๋ํ์ต๋๋ค. ๋ธ๊พน์ง์์ด 1.8 ํด๋ฌ์คํฐ๋ฅผ ๋ฐฐํฌ ํ ๋ค์ 1.9๋ก ๋ ๋ฒ ์ ๊ทธ๋ ์ด๋ํ์ต๋๋ค. 1.10์์์ด ๋ฌธ์ ๋ฅผ ์ผ์ผํค๋ ์์ธ์ด ๋ฌด์์ธ์ง ์ ์ ์์ต๋๋ค.
์๊ฐ ์ ํ์ด 1.11์์ 5 ๋ถ์ผ๋ก ๋ณ๊ฒฝ๋๋ ๊ฒ์ ํ์ธํ์ต๋๋ค (https://github.com/kubernetes/kubernetes/pull/64988/files#diff-2056df5f0c3a4828b3f9a2510a7533c7L45). 1.11์ ์ฌ์ฉํด ๋ณด์ จ์ต๋๊น?
ํด๊ฐ๋ฅผ ๋ง์น๊ณ ๋์์จ ํ์ด ํดํน์ ์๋ํด ๋ณผ ๊ฒ์ ๋๋ค. ํ ๊ณ ๋ง์!
ํธ์ ๋ด์ ๊ฐ๊ธฐ
์, 1.11์ ์๋ํ์ฌ ์๊ฐ ์ด๊ณผ ์ฆ๊ฐ๊ฐ ํด๊ฒฐ๋์๋์ง ํ์ธํ์ญ์์ค.
/ cc @ kubernetes / sig-cluster-lifecycle-bugs
์ผ! ์ด ๋ฌธ์ ๋ ๋ฐ์ํฉ๋๋ค.
ํฅ๋ฏธ๋กญ๊ฒ๋ Raspberry 3์์ ํด๋ฌ์คํฐ ๋ง์คํฐ๋ฅผ ์ฒ์๋ถํฐ ๋น๋ ํ ์ ์์ง๋ง 3+์์๋ ์ง์์ ์ผ๋ก ์คํจํฉ๋๋ค.
์ด์จ๋ ํ์ฌ ์ฌ์ฉํ๊ณ ์๋ ๋ฒ์ (https://blog.hypriot.com/post/setup-kubernetes-raspberry-pi-cluster/์ ๋จ๊ณ๋ณ ๋ฌธ์์ ๋ฐ๋ผ)์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
kubeadm version: &version.Info{Major:"1", Minor:"11", GitVersion:"v1.11.0", GitCommit:"91e7b4fd31fcd3d5f436da26c980becec37ceefe", GitTreeState:"clean", BuildDate:"2018-06-27T20:14:41Z", GoVersion:"go1.10.2", Compiler:"gc", Platform:"linux/arm"}
๋ค๋ฅธ ๊ฒ๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก apiserver ์ปจํ ์ด๋๋ ๊ฒฐ๊ตญ ์ผ์ด๋์ง ๋ง kubeadm์ด ๊ตฌ์ ๋๊ธฐ ์ ์๋ ์ผ์ด๋์ง ์์์ ์๋์ผ๋ก ํฝ์ ํ๊ธฐ์๋ ๋๋ฌด ๊ฒฝํ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ฅผ ๋ฆผ๋ณด์ ๋จ๊ฒจ ๋ก๋๋ค.
๋น ๋ฅธ ์
๋ฐ์ดํธ : ์คํ ์ค
watch -n 1.0 "sed -i 's/initialDelaySeconds: [0-9]\+/initialDelaySeconds: 180/' /etc/kubernetes/manifests/kube-apiserver.yaml"
๋ณ๋์ ํฐ๋ฏธ๋์์ ๋ด ํด๋ฌ์คํฐ๊ฐ ์ผ์ด๋๋๋ก ํ์ฉํ์ต๋๋ค.
์๋
ํ์ธ์.
1.11์ ํ
์คํธ ํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
๋ค๋ฅธ ๊ฒ๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก apiserver ์ปจํ ์ด๋๋ ๊ฒฐ๊ตญ ์ผ์ด๋์ง ๋ง kubeadm์ด ๊ตฌ์ ๋๊ธฐ ์ ์๋ ์ผ์ด๋์ง ์์์ ์๋์ผ๋ก ํฝ์ ํ๊ธฐ์๋ ๋๋ฌด ๊ฒฝํ์ด ์๊ธฐ ๋๋ฌธ์ ๋๋ฅผ ๋ฆผ๋ณด์ ๋จ๊ฒจ ๋ก๋๋ค.
๊ทํ์ ๊ฒฝ์ฐ apiserver๊ฐ ์์๋๋ ๋ฐ ์ผ๋ง๋ ๋ง์ ์๊ฐ์ด ์์๋ฉ๋๊น?
์ด๊ฒ์ ๊ตฌ์ฑ ๊ฐ๋ฅํ๊ฒ ๋ง๋ค์ด์ผ ํ ๊ฒ ๊ฐ์ต๋๋ค.
๋งํ๊ธฐ๋ ์ด๋ ต์ง๋ง 1 ๋ถ ์ ๋๋ผ๊ณ ์๊ฐํ์ง๋ง ์ ๋๋ก ์ธก์ ํ๋ ๋ฐฉ๋ฒ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค.
๋ํ ์ด์ ๋ง์คํฐ๊ฐ ์๋ ์ค์ด๋ฏ๋ก ๋ค๋ฅธ ์๊ฐ ์ด๊ณผ ๋ฌธ์ ๋ก ๋ณด์ด๋ ๋
ธ๋๋ฅผ ์ถ๊ฐํ์ง ๋ชปํ์ต๋๋ค.
`[ํ๋ฆฌ ํ๋ผ์ดํธ] ํ๋ฆฌ ํ๋ผ์ดํธ ๊ฒ์ฌ ์คํ
[๊ฒฝ๊ณ RequiredIPVSKernelModulesAvailable] : ๋ค์ ํ์ ์ปค๋ ๋ชจ๋์ด๋ก๋๋์ง ์์๊ธฐ ๋๋ฌธ์ IPVS ํ๋ก์๊ฐ ์ฌ์ฉ๋์ง ์์ต๋๋ค. [ip_vs_rr ip_vs_wrr ip_vs_sh ip_vs] ๋๋ ๋ด์ฅ ์ปค๋ ipvs ์ง์ ์์ : map [ip_vs_rr : {} ip_vs_rr : {} ip_vs_rr : {} ip_vs_rr : nf_conntrack_ipv4 : {} ip_vs : {}]
๋ค์ ๋ฐฉ๋ฒ์ผ๋ก์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
I0708 19 : 02 : 20.256325 8667 kernel_validator.go : 81] ์ปค๋ ๋ฒ์ ํ์ธ ์ค
I0708 19 : 02 : 20.256846 8667 kernel_validator.go : 96] ์ปค๋ ๊ตฌ์ฑ ์ ํจ์ฑ ๊ฒ์ฌ
[๊ฒฝ๊ณ SystemVerification] : docker ๋ฒ์ ์ด ๊ฐ์ฅ ์ต๊ทผ์ ๊ฒ์ฆ ๋ ๋ฒ์ ๋ณด๋ค ๋์ต๋๋ค. Docker ๋ฒ์ : 18.03.1-ce. ์ต๋ ๊ฒ์ฆ ๋ฒ์ : 17.03
[๋ฐ๊ฒฌ] API ์๋ฒ "192.168.2.2:6443"์ ์ฐ๊ฒฐ ์๋ ์ค
[๊ฒ์] ํด๋ฌ์คํฐ ์ ๋ณด ๊ฒ์ ํด๋ผ์ด์ธํธ ์์ฑ, " https://192.168.2.2 : 6443"์์ ์ ๋ณด ์์ฒญ
[๋ฐ๊ฒฌ] ๊ณ ์ ๋ ๊ณต๊ฐ ํค์ ๋ํด TLS์ ์ ํจ์ฑ์ ๊ฒ์ฌํ๊ธฐ ์ํด " https://192.168.2.2 : 6443"์์ ๋ค์ ์ ๋ณด ์์ฒญ
[๋ฐ๊ฒฌ] ํด๋ฌ์คํฐ ์ ๋ณด ์๋ช
๋ฐ ์ฝํ
์ธ ๊ฐ ์ ํจํ๋ฉฐ TLS ์ธ์ฆ์๊ฐ ๊ณ ์ ๋ ๋ฃจํธ์ ๋ํด ์ ํจ์ฑ์ ๊ฒ์ฌํ๋ฉฐ API ์๋ฒ "192.168.2.2:6443"์ ์ฌ์ฉํฉ๋๋ค.
[๋ฐ๊ฒฌ] API ์๋ฒ "192.168.2.2:6443"๊ณผ ์ฑ๊ณต์ ์ผ๋ก ์ฐ๊ฒฐ
[kubelet] kube-system ๋ค์ ์คํ์ด์ค์ "kubelet-config-1.11"ConfigMap์์ kubelet ๊ตฌ์ฑ ๋ค์ด๋ก๋
[kubelet] "/var/lib/kubelet/config.yaml"ํ์ผ์ kubelet ๊ตฌ์ฑ ์ฐ๊ธฐ
[kubelet] "/var/lib/kubelet/kubeadm-flags.env"ํ์ผ์ ํ๋๊ทธ๊ฐ์๋ kubelet ํ๊ฒฝ ํ์ผ ์์ฑ
[ํ๋ฆฌ ํ๋ผ์ดํธ] kubelet ์๋น์ค ํ์ฑํ
[tlsbootstrap] kubelet์ด TLS ๋ถํธ ์คํธ๋ฉ์ ์ํํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฌ๋ ์ค ...
[kubelet-check] kubelet์ด ์คํ๋์ง ์๊ฑฐ๋ ์ ์์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
[kubelet-check] kubelet์ด ์คํ๋์ง ์๊ฑฐ๋ ์ ์์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
[kubelet-check] kubelet์ด ์คํ๋์ง ์๊ฑฐ๋ ์ ์์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
[kubelet-check] kubelet์ด ์คํ๋์ง ์๊ฑฐ๋ ์ ์์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
[kubelet-check] kubelet์ด ์คํ๋์ง ์๊ฑฐ๋ ์ ์์ด ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ํ๊น๊ฒ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์กฐ๊ฑด์ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด ์ด๊ณผ๋์์ต๋๋ค.
์ด ์ค๋ฅ์ ์์ธ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
-kubelet์ด ์คํ๋๊ณ ์์ง ์์ต๋๋ค.
-์ด๋ค ๋ฐฉ์ ์ผ๋ก๋ ๋
ธ๋์ ์๋ชป๋ ๊ตฌ์ฑ์ผ๋ก ์ธํด kubelet์ด ๋น์ ์ ์ํ์
๋๋ค (ํ์ํ cgroup ๋นํ์ฑํ ๋จ).
systemd-powered ์์คํ
์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์ค๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
- 'systemctl ์ํ kubelet'
- 'journalctl -xeu kubelet'
์กฐ๊ฑด์ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด ์ด๊ณผ๋์์ต๋๋ค .`
์ด ์๊ฐ ๋์ ๋จ์ผ ๋์ปค ์ปจํ ์ด๋๊ฐ ๋ด ๋ ธ๋์ ํ์๋์ง ์์ต๋๋ค.
[๊ฒฝ๊ณ ํ์ IPVSKernelModulesAvailable] :
์ฃผ์ ์์ ๋ฒ์ด๋ ๊ฒ์ ๋ํด ์ฌ๊ธฐ์ ์ด์ผ๊ธฐํ๊ณ ์์ต๋๋ค.
https://github.com/kubernetes/kubeadm/issues/975
๋ํ ์ด์ ๋ง์คํฐ๊ฐ ์๋ ์ค์ด๋ฏ๋ก ๋ค๋ฅธ ์๊ฐ ์ด๊ณผ ๋ฌธ์ ๋ก ๋ณด์ด๋ ๋ ธ๋๋ฅผ ์ถ๊ฐํ์ง ๋ชปํ์ต๋๋ค.
[kubelet-check] 'curl -sSL http : // localhost : 10248 / healthz'์ ๋์ผํ HTTP ํธ์ถ์ด ๋ค์ ์ค๋ฅ์ ํจ๊ป ์คํจํ์ต๋๋ค. Get http : // localhost : 10248 / healthz : dial tcp [:: 1] : 10248 : connect : ์ฐ๊ฒฐ์ด ๊ฑฐ๋ถ๋์์ต๋๋ค.
kubelet์ ์์ํ ์ ์์ต๋๋ค. kubelet ๋ก๊ทธ๋ฅผ ๋ ์ ์ดํด๋ณด์ญ์์ค.
- 'systemctl status kubelet'
- 'journalctl -xeu kubelet'
ํ์ฑ ํ๋ก๋ธ๋ ๊ตฌ์ฑ ๊ฐ๋ฅํด์ผํ์ง๋ง kubeadm ๊ตฌ์ฑ์์์ด๋ฅผ ์ํํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋ํด ์ด์ผ๊ธฐํด์ผํฉ๋๋ค.
๋๋ ์ด๊ฒ์ด ์ฌ์ฉ๋๋ ๊ฐ์ด๋ผ๊ณ ์๊ฐํ๋ฏ๋ก kubeadm์ ์ง์ ๋น๋ํ๋ ๊ฒฝ์ฐ ๋ค์์ ์ฌ์ฉํด๋ณด์ญ์์ค.
https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/util/staticpod/utils.go#L95 -L96
๊ทธ๋ฌ๋ ์ด๋ ๊ฒํ๋ฉด ๋ชจ๋ ์ปจํธ๋กค ํ๋ ์ธ ๊ตฌ์ฑ ์์์ ๋ํ ์๊ฐ ์ด๊ณผ๊ฐ ์ฆ๊ฐํฉ๋๋ค.
ํธ์ง : Github์์ ์ฃผ์ ํ์์ ์ฌ๋ฐ๋ฅด๊ฒ ์ง์ ํ๊ธฐ์๋ ๋๋ฌด ์ด๋ฆฌ์์ ๊ฒ ๊ฐ์ต๋๋ค.
Here are the log outputs of both systemctl status kubelet and journalctl -xeu kubelet. "No cloud provider specified is the only thing that springs to eye.
`root@djg-clusterpi3:/home/djgummikuh# systemctl status kubelet
โ kubelet.service - kubelet: The Kubernetes Node Agent
Loaded: loaded (/lib/systemd/system/kubelet.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/kubelet.service.d
โโ10-kubeadm.conf
Active: active (running) since Sun 2018-07-08 19:55:15 CEST; 2min 12s ago
Docs: http://kubernetes.io/docs/
Main PID: 9233 (kubelet)
Memory: 14.4M
CPU: 17.064s
CGroup: /system.slice/kubelet.service
โโ9233 /usr/bin/kubelet --bootstrap-kubeconfig=/etc/kubernetes/bootstrap-kubelet.conf --kubeconfig=/etc/kubernetes/kubelet.conf --config=/var/lib/kubelet/config.yaml --cgroup-driver=cgroupfs --cni-bin-dir=/opt/cni/bin --cni-conf-dir=/etc/cni/net.d --network-pl
Jul 08 19:55:15 djg-clusterpi3 systemd[1]: Started kubelet: The Kubernetes Node Agent.
Jul 08 19:55:15 djg-clusterpi3 kubelet[9233]: Flag --cgroup-driver has been deprecated, This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more inform
Jul 08 19:55:15 djg-clusterpi3 kubelet[9233]: I0708 19:55:15.665304 9233 feature_gate.go:230] feature gates: &{map[]}
Jul 08 19:55:15 djg-clusterpi3 kubelet[9233]: Flag --cgroup-driver has been deprecated, This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more inform
Jul 08 19:55:15 djg-clusterpi3 kubelet[9233]: I0708 19:55:15.675950 9233 feature_gate.go:230] feature gates: &{map[]}
Jul 08 19:55:15 djg-clusterpi3 kubelet[9233]: I0708 19:55:15.676273 9233 feature_gate.go:230] feature gates: &{map[]}
Jul 08 19:55:31 djg-clusterpi3 kubelet[9233]: I0708 19:55:31.963686 9233 server.go:408] Version: v1.11.0
Jul 08 19:55:31 djg-clusterpi3 kubelet[9233]: I0708 19:55:31.964029 9233 feature_gate.go:230] feature gates: &{map[]}
Jul 08 19:55:31 djg-clusterpi3 kubelet[9233]: I0708 19:55:31.964378 9233 feature_gate.go:230] feature gates: &{map[]}
Jul 08 19:55:31 djg-clusterpi3 kubelet[9233]: I0708 19:55:31.965040 9233 plugins.go:97] No cloud provider specified.
Jul 08 19:55:15 djg-clusterpi3 systemd[1]: Started kubelet: The Kubernetes Node Agent.
-- Subject: Unit kubelet.service has finished start-up
-- Defined-By: systemd
-- Support: https://www.debian.org/support
--
-- Unit kubelet.service has finished starting up.
--
-- The start-up result is done.
Jul 08 19:55:15 djg-clusterpi3 kubelet[9233]: Flag --cgroup-driver has been deprecated, This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more inform
Jul 08 19:55:15 djg-clusterpi3 kubelet[9233]: I0708 19:55:15.665304 9233 feature_gate.go:230] feature gates: &{map[]}
Jul 08 19:55:15 djg-clusterpi3 kubelet[9233]: Flag --cgroup-driver has been deprecated, This parameter should be set via the config file specified by the Kubelet's --config flag. See https://kubernetes.io/docs/tasks/administer-cluster/kubelet-config-file/ for more inform
Jul 08 19:55:15 djg-clusterpi3 kubelet[9233]: I0708 19:55:15.675950 9233 feature_gate.go:230] feature gates: &{map[]}
Jul 08 19:55:15 djg-clusterpi3 kubelet[9233]: I0708 19:55:15.676273 9233 feature_gate.go:230] feature gates: &{map[]}
Jul 08 19:55:31 djg-clusterpi3 kubelet[9233]: I0708 19:55:31.963686 9233 server.go:408] Version: v1.11.0
Jul 08 19:55:31 djg-clusterpi3 kubelet[9233]: I0708 19:55:31.964029 9233 feature_gate.go:230] feature gates: &{map[]}
Jul 08 19:55:31 djg-clusterpi3 kubelet[9233]: I0708 19:55:31.964378 9233 feature_gate.go:230] feature gates: &{map[]}
Jul 08 19:55:31 djg-clusterpi3 kubelet[9233]: I0708 19:55:31.965040 9233 plugins.go:97] No cloud provider specified.`
์ด ๋ก๊ทธ์๋ ์ค๋ฅ๊ฐ ํ์๋์ง ์์ต๋๋ค.
์,ํ์ง๋ง ๊ทธ๊ฒ์ด ์ ๊ฐ ๋ฏฟ๋ ๋ฌธ์ ์ ์ผ๋ถ์ ๋๋ค. ์ฒ์์ [ERROR]๋ผ๋ ๋จ ํ๋์ ๊ฒฐ๋ก ์ ์ฐพ์ ์ ์์ต๋๋ค. ๊ทธ๊ฒ์ด ๋๋ฅผ ๋๋ฌด ์ค๋ง์ํค๋ ๊ฒ์ ๋๋ค :-)
์ด์จ๋ , ๋ด ์๋ง์ง์ฐฝ์ ํฌ๋งท ํด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค :-D
๊ทธ๋ ๋ค๋ฉด ์ข์ ๋ค์ ๋จ๊ณ๋ ๋ฌด์์ผ๊น์?
๊ทธ๋ ๋ค๋ฉด ์ข์ ๋ค์ ๋จ๊ณ๋ ๋ฌด์์ผ๊น์?
์์ ์ธ๊ธํ๋ฏ์ด :
ํ์ฑ ํ๋ก๋ธ๋ ๊ตฌ์ฑ ๊ฐ๋ฅํด์ผํ์ง๋ง kubeadm ๊ตฌ์ฑ์์์ด๋ฅผ ์ํํ๋ ๊ฐ์ฅ ์ข์ ๋ฐฉ๋ฒ์ ๋ํด ์ด์ผ๊ธฐํด์ผํฉ๋๋ค.
๋๋ ์ด๊ฒ์ด ์ฌ์ฉ๋๋ ๊ฐ์ด๋ผ๊ณ ์๊ฐํ๋ฏ๋ก kubeadm์ ์ง์ ๋น๋ํ๋ ๊ฒฝ์ฐ ๋ค์์ ์ฌ์ฉํด๋ณด์ญ์์ค.
https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/util/staticpod/utils.go#L95 -L96
๊ทธ๋ฌ๋ ์ด๋ ๊ฒํ๋ฉด ๋ชจ๋ ์ปจํธ๋กค ํ๋ ์ธ ๊ตฌ์ฑ ์์์ ๋ํ ์๊ฐ ์ด๊ณผ๊ฐ ์ฆ๊ฐํฉ๋๋ค.
oof ๋๋ kubeadm์ ์ง์ ๋น๋ํ์ง ์๊ณ apt.kubernetes.io์์ apt๋ฅผ ํตํด ๊ฐ์ ธ์ต๋๋ค. ๋ด ์ปดํจํฐ์์ ์ด๋ํ๊ธฐ์ํ ๋น๋ ํ์ดํ ๋ผ์ธ๊ณผ ์๊ฒฉ์ผ๋ก ์ ์ฌํ ๊ฒ์ ์์ต๋๋ค (์์ง ๋ค๋ฃจ์ง ์์์ต๋๋ค). ํด๋ฌ์คํฐ๋ฅผ ๋ง๋ค ๋์ ๊ฐ์ด ํด๋ฌ์คํฐ์ ๊ฐ์ ํ ๋ ์์ ํด์ผ ํ ์ ์ฌํ ํ์ผ์ด ์๊ธฐ๋ฅผ ๋ฐ๋์ง๋ง ์ด๋ฌํ ๊ฐ์ด utils.go์ ํ๋ ์ฝ๋ฉ๋์ด์๋ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค.
์ด ์๋ฃจ์
์ ์๋ํด ๋ณผ ์๋ ์์ง๋ง ๊น๋ค ๋กญ์ต๋๋ค.
https://github.com/kubernetes/kubeadm/issues/413#issuecomment -402916173
๋ฌธ์ ๋ ์ด๊ฒ์ด ๊ตฌ์ฑ ๋ณ๊ฒฝ์ด ํ์ํ๊ณ 1.11.X ๋ฆด๋ฆฌ์ค์ ํฌํจ๋ ์ ์๋ค๊ณ ์๊ฐํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค (ํ์ง๋ง ์๋ํด ๋ณผ ์ ์์ต๋๋ค). ๋ํ ๋จผ์ ๋ ผ์ํด์ผํฉ๋๋ค.
๋ง์คํฐ๊ฐ ์๋ ์ค์ด๋ผ๊ณ ๋งํ ์ฃผ์์์ ์ด๋ฏธ ์ํ ํ ์์ ์ ๋๋ค (๋ด watch -n 1.0 ๋ช ๋ น์ด ์ํ ํ ์์ ์ ๋๋ค). ์ง๊ธ ์ผ์ด๋๊ณ ์๋ ๊ฒ์ kubeadm join์ด ์๋ํ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ ๊ฐ ๋ณผ ์์๋ ํ kubeadm join์ ์ด๋์๋ ํจ์น ํ yaml ํ์ผ์ ๋ฐฐ์นํ์ง ์์ต๋๋ค.
๋ค๋ฅธ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. ๋งํ๊ธฐ ์ด๋ ต๋ค.
์ฌ์ฉ ๋ ๊ฐ์ด๋ฏ๋ก kubeadm์ ์ง์ ๋น๋ํ๋ ๊ฒฝ์ฐ ๋ค์์ ์ฌ์ฉํด๋ณด์ญ์์ค.
https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/util/staticpod/utils.go#L95 -L96
๊ทธ๋์ ์ ๋ ์ฌ๊ธฐ์ InitialDelaySeconds ํ์ ์์์ด 1 ๋ ํ _still_ 15 ์ด๋ผ๋ ๊ฒ์ ์์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ๊ฒ์ด ์ค์ ๋ก ํ์ค์ ๋ํ๋ด๋ ๊ฒ์ผ๋ก ์ฆ๊ฐ๋์ง ์์ ์ด์ ๋ฅผ ์ดํดํ ์ ์์ต๋๋ค. ์ด ๋ฒ๊ทธ ๋ณด๊ณ ์๊ฐ ์ด๋ค ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๊น? ๋๋ ์ด๋ฏธ kubeadm ๋ด๋ถ ์ํด์์๋ ๋๊ตฐ๊ฐ๊ฐ ๊ทธ๊ฒ์ ์๋ฃํ๊ณ ๋ช ๋ถ ์์ ํฉ์น ์ ์๋ค๊ณ ๋๊ผ๊ธฐ ๋๋ฌธ์ ์ฒ์์์ด ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ๊ธฐ์ํ PR์ ์ ์ํ์ง ์์์ต๋๋ค. ๊ทธ๋ฌ๋ "PR ๋ถ์กฑ"์ด ์๋ค๋ฉด ๊ทธ๋ ๊ฒํ๊ฒ๋์ด ๊ธฐ์ฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์์ผ๋ก ๋์ ๊ฐ์ง ์์ ์ ์ผํ ์ด์ ์ ๋๋ค.
๋ชจ๋ ์ฌ๋๋ค์ด ์๋ ๋ฒ๊ทธ ๋ณด๊ณ ์๊ฐ ์ ํจํ์ง ์๋ค๊ณ ์ ์ธํ๋ ์ด์ ๋ฅผ ์ฐพ์ผ๋ ค๊ณ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋น ๋ฅธ ๋ถํฌ๋ช ์๊ฐ ์ด๊ณผ ์คํจ๋ ๋๋ฆฐ ์ฑ๊ณต๋ณด๋ค ๋ ๋์ UX์ ๋๋ค), ๋จ์ง initialDelay ์๊ฐ ์ด๊ณผ๋ฅผ ๋๋ ค ๋ฐ์ด๋๋ฆฌ๊ฐ ๋ช ํํ๊ฒ ๋ณด์ฌ์ฃผ๋ ์ค์ initialDelay๋ฅผ ๋ฐ์ํ โโ๋ค์ ์ค์ ๋ก ๋ ผ์ํ ๋งํ ๋ค๋ฅธ ๊ฒ์ผ๋ก ์ด๋ํ๋ ๋์ .
๊ทธ๋์ ์ ๋ ์ฌ๊ธฐ์ InitialDelaySeconds ํ์ ์์์ด ์ฌ์ ํ 1 ๋ ํ 15 ์ด๋ผ๋ ๊ฒ์ ์ฃผ๋ชฉํ๊ณ , ์ ๊ทธ๊ฒ์ด ์ค์ ๋ก ํ์ค์ ๋ํ๋ด๋ ๊ฒ์ผ๋ก ์ฆ๊ฐ๋์ง ์์๋์ง ์ดํดํ์ง ๋ชปํฉ๋๋ค. ์ด ๋ฒ๊ทธ ๋ณด๊ณ ์๊ฐ ์ด๋ค ์ฉ๋๋ก ์ฌ์ฉ๋ฉ๋๊น? ๋๋ ์ด๋ฏธ kubeadm ๋ด๋ถ ์ํด์์๋ ๋๊ตฐ๊ฐ๊ฐ ๊ทธ๊ฒ์ ์๋ฃํ๊ณ ๋ช ๋ถ ์์ ํฉ์น ์ ์๋ค๊ณ ๋๊ผ๊ธฐ ๋๋ฌธ์ ์ฒ์์์ด ๋ฒํธ๋ฅผ ๋ณ๊ฒฝํ๊ธฐ์ํ PR์ ์ ์ํ์ง ์์์ต๋๋ค. ๊ทธ๋ฌ๋ "PR ๋ถ์กฑ"์ด ์๋ค๋ฉด ๊ทธ๋ ๊ฒํ๊ฒ๋์ด ๊ธฐ์ฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์์ผ๋ก ๋์ ๊ฐ์ง ์์ ์ ์ผํ ์ด์ ์ ๋๋ค.
์ ์ฒด ๋ฌธ์ ๊ฐ ์๋กญ๊ธฐ ๋๋ฌธ์ ๊ทํ์ ์ง๋ฌธ์ ๋ตํ ์๋ ์์ง๋ง ์ด๋ฒ ์ฃผ์ ์ด์ ๋ํด ์ด์ผ๊ธฐ ํ ์ ์์ต๋๋ค. kubeadm ๋ค์์๋ ํ์ ํฐ ๋ชฉํ๋ฅผ ๊ฐ์ง ์๊ท๋ชจ ํ์ด๋ฉฐ ์ข ์ข ์ด์ ๊ฐ์ ํน์ ์์ ์ ์ํ ํ ์ฌ๋์ด ์์ต๋๋ค.
๋ชจ๋ ์ฌ๋๋ค์ด ์๋ ๋ฒ๊ทธ ๋ณด๊ณ ์๊ฐ ์ ํจํ์ง ์๋ค๊ณ ์ ์ธํ๋ ์ด์ ๋ฅผ ์ฐพ์ผ๋ ค๊ณ ํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋น ๋ฅธ ๋ถํฌ๋ช ์๊ฐ ์ด๊ณผ ์คํจ๋ ๋๋ฆฐ ์ฑ๊ณต๋ณด๋ค ๋ ๋์ UX์ ๋๋ค), ๋จ์ง initialDelay ์๊ฐ ์ด๊ณผ๋ฅผ ๋๋ ค ๋ฐ์ด๋๋ฆฌ๊ฐ ๋ช ํํ๊ฒ ๋ณด์ฌ์ฃผ๋ ์ค์ initialDelay๋ฅผ ๋ฐ์ํ โโ๋ค์ ์ค์ ๋ก ๋ ผ์ํ ๋งํ ๋ค๋ฅธ ๊ฒ์ผ๋ก ์ด๋ํ๋ ๋์ .
์, ์ต์ ์ ์ด๋ฏธ์ด ์ค๋ ๋์์ ๋ ผ์๋์์ต๋๋ค. ์ฌ๋ฐ๋ฅธ ์ต์ ์ ์ ํํ๊ณ ๊ตฌํํ๋ ๋ฌธ์ ์ ๋๋ค.
์ค์ ๋ก ์ ์ฒด ํ๋ก์ธ์ค์ ๋ํ ์๊ฐ ์ ํ์ ์ค์ ํ๋ ์ต์ ๊ณผ ํจ๊ป "์๊ฐ ์ ํ ์์"์ผ๋ก ๊ธฐ๋ณธ ์ค์ ํ๋ ๊ฒ์ด ํฉ๋ฆฌ์ ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค (์ด ๋ฌธ์ ์ ์๋ถ๋ถ์์ ์ ์ํ๋๋ก).
์ด์ ๋ ๋ด๊ฐ ์๊ฐํ ์์๋ ๋๋ถ๋ถ์ ์ฌ์ฉ ์ฌ๋ก๋ ํน์ ๋จ๊ณ๊ฐ X ์ด ๋ด์ ์คํ๋๋์ง ์ฌ๋ถ์ ์๊ดํ์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ถ์ฐ ์์คํ ์์ ์ฒ๋ฆฌ๋๋ ๋ชจ๋ ๊ฒ์ด ์ต์ข ์ผ๊ด์ฑ (๊ฒฝ์ฐ์ ๋ฐ๋ผ ๋ค๋ฅธ ๋ ธ๋๋ฅผ ์คํ๋งํ๋ ๊ฒ์ด ๋ ์ ๋ ดํ๊ธฐ ๋๋ฌธ)์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ค์ ์ ์กฐ์ํ๋ ๊ฒ๋ณด๋ค).
๊ทธ๋ฌ๋ ์์ ์๋ฃจ์ ์ผ๋ก์ kubeadm init ํญ๋ชฉ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๊ตฌ์ฑ ํ์ผ์์ kubeadm join์ ๋ํ ์ ํ ์๊ฐ ์ค์ ์ ์ค์ ๋ก ์ฝ๋ ๊ฒ์ผ๋ก ์ถฉ๋ถํ๋ฏ๋ก ๊ธฐ๋ด ์ ํ ์๊ฐ ๋์ฒด๋ฅผ ์ฌ์ฉํ ํดํน์ด ์๋ํฉ๋๋ค. ํดํน์ ๋๋ค. ๋ค๋ฅด๊ฒ ์๊ฐํ์ง ๋ง์ธ์.ํ์ง๋ง ๋์ฐํ ํดํน์ด ํด๊ฒฐ ๋ฐฉ๋ฒ์ด์๋ ๊ฒ๋ณด๋ค ๋ซ์ต๋๋ค.
๋๋ ์ถ์ธก์ด ํญ์ ์๋ชป ๋ ์ ์๊ณ ,์ด ๊ฒฝ์ฐ์๋ ์ค์ ๋ก ๋ชฉ์ ์ ๋ถํฉํ์ง ์์ ์ ์์ผ๋ฉฐ (์๊ฐ ์ด๊ณผ๋ฅผ ๊ทน๋ณตํ๊ธฐ์ํ ๋์ฒ ์ ๋ต์ด ๋จ์ํ ๊ตฌ์ ๋๊ธฐ ๋๋ฌธ์) ํฉ๋ฆฌ์ ์ธ ์๊ฐ ์ด๊ณผ๋ฅผ "์ถ์ธก"ํ๋ ค๋ ์๋์ ๋ฐ๋ํ๊ณ ์์ต๋๋ค. ๋ ๊ฐ์ ๋์ผํ ์์คํ ์ด ๋ฌด์ํ ๋ง์ ์ด์ ๋ก ์๋ก ๋ค๋ฅด๊ฒ ์๋ ํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
@anguslees @DJGummikuh ์ฐ๋ฆฌ๋ ์ต๊ทผ SIG ํ์์์ ๊ทธ๊ฒ์ ๋ํด ์ด์ผ๊ธฐํ์ต๋๋ค.
์ด๊ฒ์ ๊น๋ค๋ก์ด ๋ฌธ์ ์ด์ง๋ง ๋ค์์ ๋ฌด์์ ๋ฉ๋ชจ์ ๋๋ค.
๋ฉ๋ชจ:
์ด๊ฒ์๋ณด์ธ์ : kubernetes / kubernetes # 64357 ์ฌ์ฉ์๊ฐ ํ์ฑ ํ๋ก๋ธ ๋ฌธ์ ๋ฅผ ์ ํ๋ณด๊ณ ํ์ง ์์ต๋๋ค. ์ ๊ทธ๋ฐ์ง ์์ธ์?
์๋์, ์ง๊ธ์ ์ ํ๋์จ์ด์์ ์ค์ ๋ก ์ฌํ ํ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋
ธ๋ ๊ฒฐํฉ์์ํ ํ ํฐ์ด ๊ฒฝ๊ณผํ๊ธฐ ๋๋ฌธ์ "๋๋์ฒด"๋ผ๊ณ ์๊ฐํ๊ณ kubeadm์ด ํด๋ฌ์คํฐ ๋ง์คํฐ๋ฅผ ์ฌ์ค์ ํ๊ณ ๋ค์ ์ด๊ธฐํํ๋ ค๊ณ ์๋ํ์ต๋๋ค. ๋ด Raspberry Pi 3+์ ๋ง์คํฐ. ๊ตฌ์ฑ ์๊ฐ ์ ํ์ 180 ์ด์์ 300 ์ด๋ก ์ฐจ์ด์์ด ๋ ๋ ธ์ต๋๋ค. ๊ทธ๋์ ์ ๋ ์ด๊ฒ์ด ๊ฒฝ์ ์กฐ๊ฑด์ด๋ผ๋ ์๊ฐ์ ์ข์ํฉ๋๋ค.
์ฌ์ ํ ๋ ๋์ ์๊ฐ ์ ํ์ ์์ฒญํ๋ผ๋ ๊ทํ์ ์ ์์ ํ์ํฉ๋๋ค. ๋ง์ด ์ํ์ง ์๊ณ ํ์ด (๋๋ฆฐ ํ๋์จ์ด, ์ฐ๋ฆฌ ๋ชจ๋ ๋์ ํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค :-)) ์กฐ๊ธ ๋ ๋ง์ ํธํก ๊ณต๊ฐ์ ์ ๊ณตํฉ๋๋ค.
apiserver์ ARM64 ๊ด๋ จ ๋ฌธ์ :
https://github.com/kubernetes/kubernetes/issues/64649
์ฃผ๋ง ๋์ ๋ด (์ฌ์ ํ ์คํจ :-() Pi Cluster๋ก ๋ ๋ง์ ์ฐ๊ตฌ๋ฅผ ์ํํ์ต๋๋ค.
OS๋ฅผ ๋ค์ ์ค์นํ์ง ์๊ณ Pi 2์์ Pi 3+๋ก ์
๋ฐ์ดํธํ๋ฉด ๋ฌธ์ ๊ฐ ๋ฐ์ํ ์ ์๋ค๊ณ ์๊ฐํ๊ธฐ ๋๋ฌธ์ ๋
ธ๋ ์ค ํ๋๋ฅผ ๋ค์ ์ค์นํ์ต๋๋ค. ์ด๊ฒ์ ์ฌ์ค์ด ์๋๋ฉฐ ๋ฌธ์ ๋ ์๋ก์ด OS์์๋ ๋์ผํฉ๋๋ค.
๋ํ ์๊ฐ ์ด๊ณผ๊ฐ ๋์ด๋ kubernetes๋ฅผ ์ปดํ์ผํ๊ธฐ ์ํด ๋
ธ๋ ฅํ๊ณ ํ
์คํธํ์ต๋๋ค. ๋ํ ์ด๊ฒ์ ์ค์ ๋ก ์ด๋ค ๊ฒฐ๊ณผ๋ ์ฐ์ถํ์ง ๋ชปํ์ต๋๋ค.
๋ง์คํฐ๋ฅผ ์์ํ ์ ์์์ง๋ง (๊ตฌ์ฑ ํ์ผ์ ํจ์นํ๊ธฐ์ํ ์๊ณ ํด๊ฒฐ ๋ฐฉ๋ฒ์ผ๋ก) ํด๋ฌ์คํฐ๋ฅผ ๋ ๋ฒ์งธ ๋
ธ๋์ ๊ฒฐํฉํ๋ ๊ฒ์ ์ฑ๊ณตํ์ง ๋ชปํ์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ์ ์ฉํ ๋ก๊ทธ ์ถ๋ ฅ์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ ๋ง ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ kubernetes ๊ตฌ์ฑ ์์๊ฐ ์ํธ ์์ฉํ์ฌ ์ค์ ์ถ๊ฐ ํ ์์น๋ฅผ ์๊ธฐ์ ์ถฉ๋ถํ์ง ์์ต๋๋ค.
๋์ ํ ์ฌ๋์ด ์์ต๋๊น? ^^
์ด๊ฒ์ kubeadm ์ธ๋ถ์ ๋ฌธ์ ์ ๋๋ค ...
API ๊ธฐ๊ณ ์ฌ๋๋ค์ ๋ฌธ์ ์ ๋ํ ์๊ฒฌ์ ๋ํ ๋ด ์์ฒญ์ ๋ณด์ง ์์์ผ๋ฏ๋ก ํฐ์ผ์ด ์ด๋ฏธ ๊ธฐ๋ก๋์ง ์์ ํ ๋๊ตฐ๊ฐ๊ฐ kubernetes/kubernetes
์ ์ฅ์์ ๋ก๊ทธ์ธํ๊ณ /sig api-machinery
ํ๊ทธ๋ฅผ ์ง์ ํด์ผํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ช ๊ฐ์ง ์ ์ฉํ ๋ก๊ทธ ์ถ๋ ฅ์ ์ถ๊ฐํ๋ ๊ฒ์ด ์ ๋ง ์ข์ต๋๋ค. ๊ทธ๋ฌ๋ kubernetes ๊ตฌ์ฑ ์์๊ฐ ์ํธ ์์ฉํ์ฌ ์ค์ ์ถ๊ฐ ํ ์์น๋ฅผ ์๊ธฐ์ ์ถฉ๋ถํ์ง ์์ต๋๋ค.
์์์ผ๋ก systemd drop-in ํ์ผ์์ kubelet์ ๋ํด --v 4
๋ฅผ ํ์ฑํํ๋ฉด GLOG ๋ก๊ฑฐ์ ๋์ ์์ธ ์ ๋ณด๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
๋ค์๊ณผ ๊ฐ์ด kubeadm ๊ตฌ์ฑ์ ์ ์ด ํ๋ ์ธ ๊ตฌ์ฑ ์์์ ๋ํด ๋์ผํ ์์
์ ์ํ ํ ์๋ ์์ต๋๋ค.
https://kubernetes.io/docs/setup/independent/control-plane-flags/
์ด๊ฒ์ ๋ด Raspberry Pi 3 ํด๋ฌ์คํฐ์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ์ต๋๋ค : https://github.com/kubernetes/kubernetes/pull/66264
@joejulian ์ข์ ๋๋ ๊ทธ๊ฒ์ ํจ์น ํ ์ ์์๊ณ ์ด์ ๋ด ํด๋ฌ์คํฐ๋ ์์๋ฉ๋๋ค. ๋ง์นจ๋ด ๋ช ์ฃผ ๋์์ ๊ณ ๋ ๋์! ๊ฐ์ฌํฉ๋๋ค :-)
@joejulian ์กฐ์ฌํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค!
์ ์ฌ์ ์ธ ์์ ์ฌํญ์ https://github.com/kubernetes/kubernetes/pull/66264 ์์ ์ฐพ์ ์ ์์ต๋๋ค.
์ถํ ๊ณต์ง๊ฐ์์ ๋๊น์ง ์ข ๋ฃ๋ฉ๋๋ค.
/๋ซ๊ธฐ
kubeadm init ํ์ผ์ ์ด๋ฌํ ์ค์ ์ ์ ๋ฌํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? apiServerExtraArgs
์ผ๊น์? ํ์ผ์ ํจ์นํ๊ธฐ ์ํด ํ์ผ์ ๊ฐ์ํ๋ ๊ฒ์ ๊ณ ํต์ค๋ฝ๊ณ ์๋ํํ๊ธฐ๊ฐ ๋ค์ ์ด๋ ต์ต๋๋ค.
์๊ธฐ. ์๋ง๋ ๊ทธ๊ฒ์ ์ถ๊ฐํ๊ธฐ ์ข์ ๊ธฐ๋ฅ์ด ๋ ๊ฒ์ ๋๋ค.
๋์ค์ ์ ๋ฐ์ดํธ๋ฅผ ํตํด ํ์ธํด์ผ ํ ์ฌํญ์ด ๋ ๋ง์ด ์ถ๊ฐ๋์์ผ๋ฉฐ PR์ด ์ ๊ณต ํ ์ฐ์ฅ ๋ ํ์ ์์์ด ๋ ์ด์ ์ถฉ๋ถํ์ง ์์์ต๋๋ค. ํ์ ์์ ๊ด๋ฆฌ๋ฅผ ํฌ๊ธฐํ์ต๋๋ค. ๋๋ฅผ์ํ ํด๊ฒฐ์ฑ ์ ecdsa ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์์ต๋๋ค.
๋ํ etcd๋ฅผ ํฌํจํ ์ปจํธ๋กค๋ฌ ์๋น์ค๋ ์ด์ Raspberry Pi๊ฐ ์ ์ด ํ๋ ์ธ์ ํธ์คํ ํ๋ ๋ ธ๋ ์๋ฅผ ๋ ๋ฐฐ๋กํ๋ ๊ฒ๋ณด๋ค ๋ ๋ง์ ๋จ์ ์ฐจ์งํ๋ฏ๋ก Rock64s๋ก ์ ๊ทธ๋ ์ด๋ํ์ต๋๋ค.
๋ง์ฅ๋์ ์ค๋กํ์ง๋ง ๋ด ์กฐ์ข ๊ธฐ๋ ๊ทธ ์ดํ๋ก ๊ฒฌ๊ณ ํด์ก์ต๋๋ค.
๋ฐฉ๊ธ Raspberry Pi 3+์ ์ค์นํ๋ ค๊ณ ์๋ํ์ผ๋ฉฐ ์ค์น๊ฐ ์ค์ ๋ก ์คํจํ๋์ง ํ์ธํ ์ ์์ต๋๋ค. ์์ ๋์ด๋ kube-apiserver.yaml์์ 'watch'ํธ๋ฆญ์ ์ฌ์ฉํ๋ ๊ฒ์ ์ผ๊ด๋๊ฒ ์๋ํ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋๋ฌด ์ฌ์์ง๋ ์๊ฐ, kubeadm์ ์ด์ Docker (18.09) ๋ฒ์ ์ด ์ง์๋์ง ์๋๋ค๊ณ ๋ถํํฉ๋๋ค. 18.06์ผ๋ก ๋น ๋ฅด๊ฒ ๋ ๋๋ฆฌ๋ฉด ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์์ต๋๋ค.
kubeadm 1.13์์๋ api ์๋ฒ ์๊ฐ ์ด๊ณผ๋ฅผ ์ ์ด ํ ์์๋ ClusterConfig-> ApiServer ์๋์ ๊ตฌ์ฑ ํ๋๊ทธ๋ฅผ ์ถ๊ฐํฉ๋๋ค.
https://godoc.org/k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1beta1
timeoutForControlPlane
API ์๋ฒ ์๊ฐ ์ ํ์ ์ ์ด ํ ์์๋ ClusterConfig-> ApiServer ์๋์ ๊ตฌ์ฑ ํ๋๊ทธ์ ๋๋ค.
์ฝ๋๋ฒ ์ด์ค์์ TimeoutForControlPlane
ํ๋ฉด ๊ธฐ๋ณธ๊ฐ์ด 4 ๋ถ์ด๋ผ๊ณ ์๊ฐํ๋ฉฐ kubeadm ์์ฒด๊ฐ apiserver๊ฐ ์ ์์ด ๋ ๋๊น์ง ๋๊ธฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ง์ฐ์๋ง ์ฌ์ฉ๋ฉ๋๋ค. ํนํ kubelet ์์ฒด์์ ์ฌ์ฉํ๋ apiserver livenessprobe๋ฅผ ๋ณ๊ฒฝํ์ง _ ์์ต๋๋ค _. ๊ทธ ๋ง์ต๋๊น?
์ด ๋ฌธ์ ์ ๋ํ ๋ ผ์์์ ๋ฐ๋ก ์ด ์ ๊ธฐ ๋ ๊ฒ์ ๋ณธ ์ ์ด ์๋ค๊ณ ์๊ฐํฉ๋๋ค. livenessProbe initialDelaySeconds๋ฅผ ๋๋ฆฌ๊ณ ๋ค๋ฅธ ๋ฌธ์ ๋ก ์ด๋ํ์ง _ ์๋ _ ์ด์ ๊ฐ ์์ต๋๊น?
์ฐธ๊ณ : ๋น ๋ฅธ ์ฝ๊ธฐ์์ ๋ณผ ์์๋ ํ TimeoutForControlPlane
์ (๋) ์ฌ๋ฌ ์ด๋ฏธ์ง๋ฅผ ๊ฐ์ ธ ์ค๋ ๋์ ์ ์ฒด ๋๋ ์ถ๊ฐ ์๊ฐ ์ด๊ณผ + ์ฌ์๋ ๋ฃจํ์ ๊ฐ์ ์ฆ๊ฐ ๋ apiserver ์์ ์ง์ฐ์ ๋ํ ๋ค๋ฅธ ๋น ์คํจ ์์ธ๋ ๊ณ ๋ คํ์ง ์์ต๋๋ค. ๋ชจ๋ ๊ฒ์ด ์ด๊ธฐ ์ค์น ์๊ฐ์ ์๋ ด๋๋ ๋์ ๋ฐ๋ณต๋ฉ๋๋ค (์๊ฐ ์ด๊ณผ + ์ฌ ์๋๋ ๋ฐ๋ณต์ ์ผ๋ก k8s ๋์์ธ ํจํด์
๋๋ค ... ๊ทธ๋ฆฌ๊ณ ์ด๊ฒ์๋ก๋ ๋ ์์คํ
์์ ๊ฐ๋ ๋ฐ์ํฉ๋๋ค. ์์ํ๊ณ ๊ด์ฐฎ์ต๋๋ค). ๊ฐ์ธ์ ์ผ๋ก 4 ๋ถ์ ๋น ๋ฅธ ์คํจ๋ฅผ ๊ธฐ๋ํ๋ ์ฑ๊ธํ ๋ํ ํ ์ฌ์ฉ์์๊ฒ๋ ๋๋ฌด ๊ธธ๊ณ ์์๋๋ ์ฑ๊ณต์ ๋ ์ค๋ ๊ธฐ๋ค๋ฆด ์ค๋น๊ฐ ๋๋ก๋ / ๋๋ฆฐ / ์๋ ์์คํ
์ ์ค์น ํ๋ก์ธ์ค์๋ ๋๋ฌด ์งง๋ค๊ณ ์๊ฐํฉ๋๋ค. ์ด๋ป๊ฒ ๋์ฐฉํ๋์ง, ๊ธฐ๋ณธ์ ์ผ๋ก 5 ๋ถ์ผ๋ก ์ค์ ํ ์ ์์ต๋๊น? SIGINT๊น์ง ๊ณ์ ์ฌ ์๋ ํ ์ ์์ต๋๊น? ํธ์ถ ํ๊ฒฝ์์ ์์ํ์ง ์๊ณ ๋ด๋ถ์ ์ผ๋ก ์ธ์์ ์ธ ๋ฒฝ์๊ณ ๋ง๊ฐ์ผ์ ๋ถ๊ณผํ๋ ์ด์ ๋ ๋ฌด์์
๋๊น?
Afaics TimeoutForControlPlane
๋ ๋จ์ง ์๋ ๋ ์ ์ผํ UX๊ฐ ๋ง๊ฐ์ผ์ ๋๋ฌํ์ง ์์ ๋๊น์ง ๋งค๊ฐ ๋ณ์๋ฅผ ์ฆ๊ฐ์ํค๋ ๊ฒ ๋ฟ์ธ ์์์ ์น๋ช
์ ์ธ ๋ด๋ถ ๋ง๊ฐ์ผ์ ๋งค๊ฐ ๋ณ์๋ก ๋
ธ์ถํ๋ ๊ฒ์
๋๋ค. ๋๋, ์ฐ๋ฆฌ๋ ์ ์ด์ ์์์ ์น๋ช
์ ์ธ ๋ด๋ถ ๊ธฐํ์ ๋ถ๊ณผํ์ง _ ์์ ์ ์์ต๋๋ค _...
๊ทธ๊ฒ์ ํ๋ฅญํ ์ ์ด๋ฉฐ ์ ์ ์ผ๋ก ๋์ํฉ๋๋ค.
ํนํ kubelet ์์ฒด์์ ์ฌ์ฉํ๋ apiserver livenessprobe๋ฅผ ๋ณ๊ฒฝํ์ง ์์ต๋๋ค. ๊ทธ ๋ง์ต๋๊น?
์, ์์ง kubeadm์์ ํ์ฑ ์ํ ํ๋ก๋ธ๋ฅผ ์์ ํ ๊ณํ์ด ์์ต๋๋ค.
์ด rpi ๋ฌธ์ ๋ sig-cluster-lifecyle ํ์์์ "๋ฐ์ํด์๋ ์๋๋ ์ผ", "๊ฑฐ์ kubelet์ ๊ฒฝ์ ์กฐ๊ฑด๊ณผ ๋น์ทํด ๋ณด์", "์ rpi์์๋ง ๋ฐ์ํ๊ณ ๋ค๋ฅธ ๋๋ฆฐ ์ฅ์น์์๋ ๋ฐ์ํ์ง ์๋์ง"๋ก ๊ฒ์ฆ๋์์ต๋๋ค. ๋๋ฆฐ ์ฅ์น๋ฅผ ์ง์ ํ ์คํธํ์ง ์์ ์์ ์ธ์ ํด์ผํฉ๋๋ค.
์ฆ,์ด ๊ฐ์ ๋์ด๋ ๋ฐ ๋์ํ์ต๋๋ค.
https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/util/staticpod/utils.go#L97
์ข์ ์์ ์ด ์๋๋ฉฐ ๋ค๋ฅธ ๋ฒ๊ทธ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ ์ธ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๋ป๊ฒ ๋์ฐฉํ๋์ง, ๊ธฐ๋ณธ์ ์ผ๋ก 5 ๋ถ์ผ๋ก ์ค์ ํ ์ ์์ต๋๊น?
1.11 ์ด์ ์๋ ์ด๋ฏธ์ง ๊ฐ์ ธ ์ค๊ธฐ๋ฅผ ๊ณ ๋ คํ๊ธฐ ๋๋ฌธ์ ์๊ฐ ์ ํ์ 4 ๋ถ์ด๋๊ธฐ ์ ์ 30 ๋ถ์ด์์ต๋๋ค.
4 ๋ถ ๋ 5 ๋ถ์ ๋ํ ์๊ฒฌ์ด ์๋ค๋ฉด ์ฃผ์ ์ ๋ํ ๊ฐ์ ์ ๊ฐ์ง ์ ์์ฝ ๋ PR์ด 1.14์์ ์ฑ๊ณตํ ์ ์์ต๋๋ค.
์ด rpi ๋ฌธ์ ๋ sig-cluster-lifecyle ํ์์์ "๋ฐ์ํด์๋ ์๋๋ ์ผ", "๊ฑฐ์ kubelet์ ๊ฒฝ์ ์กฐ๊ฑด๊ณผ ๋น์ทํด ๋ณด์", "์ rpi์์๋ง ๋ฐ์ํ๊ณ ๋ค๋ฅธ ๋๋ฆฐ ์ฅ์น์์๋ ๋ฐ์ํ์ง ์๋์ง"๋ก ๊ฒ์ฆ๋์์ต๋๋ค.
์ด๊ฒ๋ค์ ๋ชจ๋ ๋ค๋ฅธ ๊ณณ์์ ๋ค๋ฅธ ๋ฒ๊ทธ๋ฅผ ๊ณ์ ์ฐพ์์ผํ๋ ์ด์ ์ด์ง๋ง, ๊ทธ๊ฒ๋ค ์ค ์ด๋ ๊ฒ๋ initialDelaySeconds๋ฅผ ์ฆ๊ฐ์ํค๋ ์ด์ ๊ฐ ์๋๋๋ค. ์ค์ ๋ก initialDelaySeconds๋ฅผ ๋๋ฆฌ๋ ๋ฐ ๋จ์ ์ด ์์ต๋๊น?
๋ค๋ฅธ ๋ฐฉํฅ์์ ์ ๊ทผํ๊ธฐ ์ํด kubeadm์์ ์ฌ์ฉํ ์์๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด์๋ kubernetes์ ๋ค๋ฅธ ๊ณณ์์ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ์๊ณ ์๋ค๋ฉด ์๋์ ๋ํ "์ ์ ์ ์ง"ํ๊ณ ์๋ ค์ง ํ์ ๋ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ ๊ฒ์ด kubeadm์ ์ญํ ์ ๋๊น? ๊ทธ๊ฒ์ ์ฌ๋๋ค์ด ์ค์ ๋ฐฐํฌ์ ์ค์ ๋ก ์ฌ์ฉํ ๊ฒ์ผ๋ก ๊ธฐ๋ํ๋ ๋๊ตฌ๊ฐ๋๋ ๋ชฉํ์ ์์ถฉ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ง๊ธ๊น์ง ํด๋ฌ์คํฐ์ ํจ์น๋ฅผ ์ ์ฉํ์ง ์๊ณ kubeadm์ ์ฌ์ฉํ์ฌ ์ ํ ์๊ฐ์ ๋๋ฆด ์ ์์์ต๋๋ค (1 ๋ ์ด์ ์ ์ ํจ์น๋ก๋ณด๊ณ ํ์์๋ ๋ถ๊ตฌํ๊ณ ).
(์ด ๋ฌธ์ ์ ๋ํ ๋ถ๋ง์ด ์ ๋งํฌ๋ก ์์ด ๋์์ ์ฌ๊ณผ๋๋ฆฝ๋๋ค)
4 ๋ถ ๋ 5 ๋ถ์ ๋ํ ์๊ฒฌ์ด ์๋ค๋ฉด
ํ์จ. kubeadm์์ _no_ timeout์ ๋ํ ์ฌ๋ก๋ฅผ ๋ง๋ค๋ ค๊ณ ํ์ง๋ง ์์ง ๊ทธ ์ ์์ ์ค๋๋ ฅ์๊ฒ ํํํ๋ ๋ฐฉ๋ฒ์ ์ฐพ์ง ๋ชปํ์ต๋๋ค (์๋ฅผ ๋ค์ด์ด ๋ฌธ์ ์ ๋ค๋ฅธ ์คํจํ ์๋ ์ฐธ์กฐ).
์ด๊ฒ๋ค์ ๋ชจ๋ ๋ค๋ฅธ ๊ณณ์์๋ ๋ค๋ฅธ ๋ฒ๊ทธ๋ฅผ ๊ณ์ ์ฐพ์์ผํ๋ ์ด์ ์ด์ง๋ง, ๊ทธ๊ฒ๋ค ์ค ์ด๋ ๊ฒ๋ initialDelaySeconds๋ฅผ ์ฆ๊ฐ์ํค์ง ์๋ ์ด์ ๊ฐ ์๋๋๋ค. ์ค์ ๋ก initialDelaySeconds๋ฅผ ๋๋ฆฌ๋ ๋ฐ ๋จ์ ์ด ์์ต๋๊น?
์ฝ๊ฐ์ ๋ณํ์ด์ง๋ง, ๋ฌธ์ ๋ฅผ ์ผ์ผํค์ง ์๋ ์์คํ ์๋ ์ ์ฉ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์์ด ์ฆ๊ฐ๋ฅผ ์ถ๊ฐํ์ง ์๊ธฐ๋ก ๋์ํ์ต๋๋ค.
๋ค๋ฅธ ๋ฐฉํฅ์์ ์ ๊ทผํ๊ธฐ ์ํด kubeadm์์ ์ฌ์ฉํ ์์๋ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด์๋ kubernetes์ ๋ค๋ฅธ ๊ณณ์์ ๋ฌธ์ ๊ฐ ์๋ค๋ ๊ฒ์ ์๊ณ ์๋ค๋ฉด ์๋์ ๋ํ "์ ์ ์ ์ง"ํ๊ณ ์๋ ค์ง ํ์ ๋ ๊ฒฐ๊ณผ๋ฅผ ์์ฑํ๋ ๊ฒ์ด kubeadm์ ์ญํ ์ ๋๊น? ๊ทธ๊ฒ์ ์ฌ๋๋ค์ด ์ค์ ๋ฐฐํฌ์ ์ค์ ๋ก ์ฌ์ฉํ ๊ฒ์ผ๋ก ๊ธฐ๋ํ๋ ๋๊ตฌ๊ฐ๋๋ ๋ชฉํ์ ์์ถฉ๋๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ต์ข
์ฌ์ฉ์๋ฅผ ํฅํ๋ ๊ฒ์ด kubeadm์ ๋ชฉํ์
๋๋ค. ์ฌ์ค์
๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ rpis์ ๋ํ ๋ณด๊ณ ์ ์ผ ๋ฟ์ด๋ฉฐ ์ค์ ๋ฒ๊ทธ๋ sig-api-machinery (api ์๋ฒ) ๋ฐ sig-node (kubelet)๋ก ์์ค์ปฌ๋ ์ด์
๋์ด์ผํ๋ฉฐ ๊ฐ๋ฅํ ๊ฒฝ์ฐ kubeadm ์ธ๋ถ์์ ์ฌํ๋์ด์ผํฉ๋๋ค.
์ง๊ธ๊น์ง ํด๋ฌ์คํฐ์ ํจ์น๋ฅผ ์ ์ฉํ์ง ์๊ณ kubeadm์ ์ฌ์ฉํ์ฌ ์ ํ ์๊ฐ์ ๋๋ฆด ์ ์์์ต๋๋ค (1 ๋ ์ด์ ์ ์ ํจ์น๋ก๋ณด๊ณ ํ์์๋ ๋ถ๊ตฌํ๊ณ ).
kubeadm์ ํจ์น ํ ํ์๊ฐ ์์ผ๋ฉฐ ๋์ ๋งค๋ํ์คํธ ํ์ผ์ ํจ์น ํ ์ ์์ต๋๋ค.
kubeadm 1.13์ ์ด๊ธฐ ๋จ๊ณ๋ฅผ ์ต์์ ๋ช
๋ น์ผ๋ก ์ ํํฉ๋๋ค. ์ : kubeadm init phase [phase-name]
๋จ๊ณ๋ ์ฃผ๋ก ์ฌ์ฉ์๊ฐ ์ ์ด ํ๋ฉด ๋
ธ๋๊ฐ ์์ฑ๋๋ ๋ฐฉ์์ ๋ํ ์ฌ์ฉ์ ์ง์ ์ ์ด๋ฅผ ์ํ๊ธฐ ๋๋ฌธ์ ์กด์ฌํฉ๋๋ค.
kubeadm init --help
๋ฅผ ์ํํ๋ฉด ๋จ๊ณ๊ฐ ์คํ๋๋ ์์๊ฐ ํ์๋ฉ๋๋ค.
kubeadm init
๋ช
๋ น์ ์ ์ ํ ๋จ๊ณ๋ก ๋๋ ์ ์๋๋ก ์ ์ด ํ๋ ์ธ ๊ตฌ์ฑ ์์์ ๋ํด ์ฌ์ฉ์ ์ง์ ๋งค๋ํ์คํธ๋ฅผ ์ฌ์ฉํ๊ณ control-plane
๋จ๊ณ๋ฅผ ๊ฑด๋ ๋๋๋ค. ํ์ฌ --skip-phases
์์ต๋๋ค.
1.11๊ณผ 1.12์์ ์ด๋ฏธ ํ ์ ์์ง๋ง ๋ ๊ฐ๋จํฉ๋๋ค.
๋ฌธ์ ๋ฅผ ์ผ์ผํค์ง ์๋ ์์คํ ์๋ ์ ์ฉ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ทธ๋์ .. ๊ทธ๊ฒ ๋ญ๊ฐ ์๋ชป๋๊ฑฐ์ผ? ์ฐ๋ฆฌ๋ ์ผ๋ถ ์์คํ ์์๋ง ํธ๋ฆฌ๊ฑฐ๋๋ ๋ฒ๊ทธ๋ฅผ ํญ์ ์์ ํฉ๋๋ค. ํ์ ์์์ด์๋ ๊ณณ์ด๋ฉด ์ด๋์์๋ ํ๊ฒฝ์ ์ผ๋ถ๊ฐ ์๋ ๊ฐ์ฅ ๋๋ฆฐ ์์คํ ์ ๋ง๊ฒ ์กฐ์ ํด์ผํฉ๋๋ค.
์ด๊ฒ์ ๋ํ ๋ ๋ค๋ฅธ ๊ฐ๋๋ ์์ ๋ด๋น์๋ก์ ์ค๋ฒ๋ก๋ ์ํฉ, ํนํ apiserver ์์ฒด์์ ๊ณ๋จ์ ์ค๋ฅ๊ฐ ๋๋ ต๋ค๋ ๊ฒ์ ๋๋ค. Afaics, livenessprobe ํ์ ์์ ์ ๋๊ตฐ๊ฐ์ "์ ์"์์ด๋์ด์์ ๋ฒ์ด๋ ๋๋ฟ๋ง ์๋๋ผ ์์ initialDelaySeconds๋ ์ฅ์ ์ด ์์ต๋๋ค . kubeadm์ ๊ธฐ๋ณธ livenessprobe๋ ๋ชจ๋ ํ๋ซํผ์์ ๋ถํ์ํ๊ฒ ๊ณต๊ฒฉ์ ์ ๋๋ค.
๋์ผํ ์์ ์ ๊ณ์ ๋ฐ๋ณตํด์ ๋ฏธ์ํ์ง๋ง initialDelaySeconds๋ฅผ ํ์ฅํ๋ ๋ฐ์๋ ์ค์ฉ์ ์ด๊ณ ์ด๋ก ์ ์ธ ์ด์ ๊ฐ ๊ฐ๋ ฅํ๊ณ , ์๊ฒ ์ ์งํ๋ ๋ฐ๋ ์ฃผ์ฅ์ ์ดํดํ์ง ๋ชปํ๊ณ ์์ต๋๋ค.
์ด ์์ ์์ kubeadm ๊ตฌ์ฑ ์ต์ ์ ์ถ๊ฐ ํ ๊ฐ๋ฅ์ฑ์ ๊ฑฐ์ ์์ต๋๋ค.
๋๋ ์ด๊ฒ์ด ์ด๋ฏธ 1.13์์ 3 ๊ฐ์ ๋ช ๋ น์ผ๋ก ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ ์ค๋ช ํ๋ ค๊ณ ํด์ :
sudo kubeadm reset -f
sudo kubeadm init phase control-plane all --config=testkubeadm.yaml
sudo sed -i 's/initialDelaySeconds: 15/initialDelaySeconds: 20/g' /etc/kubernetes/manifests/kube-apiserver.yaml
sudo kubeadm init --skip-phases=control-plane --ignore-preflight-errors=all --config=testkubeadm.yaml
์ต์ ์ ์ํ์ง ์์ต๋๋ค. ํ์ฌ ๊ณ ์ ๊ฐ (15)์ ๋ค๋ฅธ ๊ณ ์ ๊ฐ (์์ 360์ด ์ ์๋จ)์ผ๋ก ๋ณ๊ฒฝํด์ผํ๋ค๊ณ ๋งํ๋ ค๊ณ ํฉ๋๋ค.
..ํ์ง๋ง ๋ ์ด์ ๋์ด ๋ด๊ณ ์ถ์ง ์์ต๋๋ค. ํ์ฌ ๊ฐ์น๋ฅผ ๊ณ ์ํ๋ ๊ฒ์ด ๋ถ๋ช ํ ๊ฒฐ์ ์ด๋ฏ๋ก ํจ๋ฐฐ๋ฅผ ์ฒ ํํ๊ฒ ์ต๋๋ค. ์ํด ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. :)
@ neolit123 ๊ทธ ์กฐํฉ์ ํ๋ฅญํด ๋ณด์ ๋๋ค. ๋ด๊ฐ ๋ฌธ์ํ ํ ๊ฒ๋ณด๋ค ํจ์ฌ ์ฌ์ ์ต๋๋ค. ์ปจํธ๋กค ํ๋ ์ธ ์ธํธ๋ฅผ ๊ธฐ๋ค๋ฆฐ ๋ค์ ๋ค๋ฅธ ํฐ๋ฏธ๋์์ sed๋ฅผ ๋น ๋ฅด๊ฒ ์คํํด์ผํฉ๋๋ค. https://github.com/alexellis/k8s-on-raspbian/blob/master/GUIDE.md
์ง์นจ์ ํ ์คํธํ๊ณ ๊ฐ์ด๋๋ฅผ ์ ๋ฐ์ดํธ ํ ๊ฒ์ ๋๋ค.
@ neolit123 ์ด๊ฒ์ RPi3 B +์์ ์์ ๊ตฌ์ฑ์ ์ฌ์ฉํ์ฌ ์ป์ ๊ฒ์ ๋๋ค.
[certs] apiserver serving cert is signed for DNS names [rnode-1 kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] and IPs [10.96.0.1 192.168.0.110 192.168.0.26 192.168.0.26]
[certs] Generating "sa" key and public key
[kubeconfig] Using kubeconfig folder "/etc/kubernetes"
[kubeconfig] Writing "admin.conf" kubeconfig file
[kubeconfig] Writing "kubelet.conf" kubeconfig file
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x8 pc=0xaa7204]
goroutine 1 [running]:
k8s.io/kubernetes/cmd/kubeadm/app/phases/kubeconfig.validateKubeConfig(0xfa93f2, 0xf, 0xfb3d32, 0x17, 0x4032210, 0x68f, 0x7bc)
/workspace/anago-v1.13.1-beta.0.57+eec55b9ba98609/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/app/phases/kubeconfig/kubeconfig.go:236 +0x120
k8s.io/kubernetes/cmd/kubeadm/app/phases/kubeconfig.createKubeConfigFileIfNotExists(0xfa93f2, 0xf, 0xfb3d32, 0x17, 0x4032210, 0x0, 0xf7978)
/workspace/anago-v1.13.1-beta.0.57+eec55b9ba98609/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/app/phases/kubeconfig/kubeconfig.go:257 +0x90
k8s.io/kubernetes/cmd/kubeadm/app/phases/kubeconfig.createKubeConfigFiles(0xfa93f2, 0xf, 0x3ec65a0, 0x3f71c60, 0x1, 0x1, 0x0, 0x0)
/workspace/anago-v1.13.1-beta.0.57+eec55b9ba98609/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/app/phases/kubeconfig/kubeconfig.go:120 +0xf4
k8s.io/kubernetes/cmd/kubeadm/app/phases/kubeconfig.CreateKubeConfigFile(0xfb3d32, 0x17, 0xfa93f2, 0xf, 0x3ec65a0, 0x1f7a701, 0xb9772c)
/workspace/anago-v1.13.1-beta.0.57+eec55b9ba98609/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/app/phases/kubeconfig/kubeconfig.go:93 +0xe8
k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases.runKubeConfigFile.func1(0xf66a80, 0x4208280, 0x0, 0x0)
/workspace/anago-v1.13.1-beta.0.57+eec55b9ba98609/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/kubeconfig.go:155 +0x168
k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow.(*Runner).Run.func1(0x3cc2d80, 0x0, 0x0)
/workspace/anago-v1.13.1-beta.0.57+eec55b9ba98609/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow/runner.go:235 +0x160
k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow.(*Runner).visitAll(0x3ec9270, 0x3f71d68, 0x4208280, 0x0)
/workspace/anago-v1.13.1-beta.0.57+eec55b9ba98609/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow/runner.go:416 +0x5c
k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow.(*Runner).Run(0x3ec9270, 0x24, 0x416bdb4)
/workspace/anago-v1.13.1-beta.0.57+eec55b9ba98609/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/app/cmd/phases/workflow/runner.go:208 +0xc8
k8s.io/kubernetes/cmd/kubeadm/app/cmd.NewCmdInit.func1(0x3e97b80, 0x3e900e0, 0x0, 0x3)
/workspace/anago-v1.13.1-beta.0.57+eec55b9ba98609/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/app/cmd/init.go:141 +0xfc
k8s.io/kubernetes/vendor/github.com/spf13/cobra.(*Command).execute(0x3e97b80, 0x3e3ff80, 0x3, 0x4, 0x3e97b80, 0x3e3ff80)
/workspace/anago-v1.13.1-beta.0.57+eec55b9ba98609/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/vendor/github.com/spf13/cobra/command.go:760 +0x20c
k8s.io/kubernetes/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0x3e96140, 0x3e97b80, 0x3e96780, 0x3d82100)
/workspace/anago-v1.13.1-beta.0.57+eec55b9ba98609/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/vendor/github.com/spf13/cobra/command.go:846 +0x210
k8s.io/kubernetes/vendor/github.com/spf13/cobra.(*Command).Execute(0x3e96140, 0x3c8c0c8, 0x116d958)
/workspace/anago-v1.13.1-beta.0.57+eec55b9ba98609/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/vendor/github.com/spf13/cobra/command.go:794 +0x1c
k8s.io/kubernetes/cmd/kubeadm/app.Run(0x3c9c030, 0x0)
/workspace/anago-v1.13.1-beta.0.57+eec55b9ba98609/src/k8s.io/kubernetes/_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/app/kubeadm.go:48 +0x1b0
main.main()
_output/dockerized/go/src/k8s.io/kubernetes/cmd/kubeadm/kubeadm.go:29 +0x20
kubeadm version
kubeadm version: &version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.1", GitCommit:"eec55b9ba98609a46fee712359c7b5b365bdd920", GitTreeState:"clean", BuildDate:"2018-12-13T10:36:44Z", GoVersion:"go1.11.2", Compiler:"gc", Platform:"linux/arm"}
kubeadm-config.yaml์์-192.168.0.26์ 192.168.0.110์ ๊ฐ๋ฆฌํค๋ LB์ ๋๋ค.
apiVersion: kubeadm.k8s.io/v1beta1
kind: ClusterConfiguration
kubernetesVersion: stable
apiServer:
certSANs:
- "192.168.0.26"
controlPlaneEndpoint: "192.168.0.26:6443"
์ธ๋ถ config / lb IP ์์ด๋ ๋์ผํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ต๋๋ค.
์๋ ์ค
๋๋ ์ฌ๋๋ค์๊ฒ ํ๋์ kubeadm์ ์ฌ์ฉํ๋๋ก ์ด๊ตฌํ์ผ๋ฉฐ ์ฌ์ง์ด ํ๊ต๋ ํ์ด ํด๋ฌ์คํฐ์์ ์คํํ๊ธฐ๋ฅผ ์ํ์ต๋๋ค. ์ฝ๋ ๊ธฐ๋ฐ์ ๋ณต์กํ๊ฒ ๋ง๋ค๊ณ ์ถ์ง ์๋ค๋ ๊ฒ์ ์ดํดํ์ง๋ง, ์ฌ์ฉ์ ๊ธฐ๋ฐ์ด ์ด๋ฌํ ์์ ์ฅ์น์์ ์คํ์ ์ง์ํ๋ ๊ฒ์ด ์ข์ ์ผ์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๊ฒ์ ์ ์ ์ฌ๋๋ค์ด ๊ทธ๋ ์ง ์์ผ๋ฉด ๊ทธ๋ ์ง ์์ ์๋์๋ ์นํ ํ๋์จ์ด์ ์ฟ ๋ฒ๋ค ํฐ์ค ํ์ด์ด๋ฅผ ์ฐจ๊ฒ ํด์ค๋ค. ์์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ํจํ์ง๋ง์ด ์ฌ์ฉ ์ฌ๋ก์์๋ ํจ์ฌ ๋ ์ด๋ ต์ต๋๋ค.
ํํ์ ์ด๋ป์ต๋๊น? ๊ตฌ์ฑ ๊ฐ๋ฅํ๊ฒ ๋ง๋๋ ๋์ x86_64๊ฐ ์๋๋ผ๋ฉด ๊ธฐ๋ณธ ์๊ฐ ์ ํ์ ๋ ๋๊ฒ ์ค์ ํ๋ ๊ฐ๋จํ ํด๋ฆฌ์คํฑ์ ์ถ๊ฐ ํ์๊ฒ ์ต๋๊น?
[kubeconfig] "admin.conf"kubeconfig ํ์ผ ์์ฑ
[kubeconfig] "kubelet.conf"kubeconfig ํ์ผ ์์ฑ
ํจ๋ : ๋ฐํ์ ์ค๋ฅ : ์ ํจํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ๋๋ nil ํฌ์ธํฐ ์ญ ์ฐธ์กฐ
[์ ํธ SIGSEGV : ๋ถํ ์๋ฐ ์ฝ๋ = 0x1 addr = 0x8 pc = 0xaa7204]
์ด์ํ๊ฒ๋ admin.conf
์ (๋) ๋จธ์ ์์ฑ์ด๋ฉฐ ์ปจํ
์คํธ๋ฅผ ๊ฐ๋ฆฌํค๋ current-context
ํ์ผ์ด์๋ ์ ํจํ Config
์ ํ์ ํฌํจํด์ผํฉ๋๋ค.
๊ณตํฉ์ ๋ค์ ์ค์์ ๋น๋กฏ๋ฉ๋๋ค.
https://github.com/kubernetes/kubernetes/blob/master/cmd/kubeadm/app/phases/kubeconfig/kubeconfig.go#L236
์์ : point_up :๊ณผ ๋๊ฐ์ ์ค๋ฅ๊ฐ ๋ค์๊ณผ ๊ฐ์ด ํ์๋ฉ๋๋ค.
modify_kube_apiserver_config(){
sed -i 's/failureThreshold: [0-9]/failureThreshold: 15/g' /etc/kubernetes/manifests/kube-apiserver.yaml && \
sed -i 's/timeoutSeconds: [0-9][0-9]/timeoutSeconds: 20/g' /etc/kubernetes/manifests/kube-apiserver.yaml && \
sed -i 's/initialDelaySeconds: [0-9][0-9]/initialDelaySeconds: 120/g' /etc/kubernetes/manifests/kube-apiserver.yaml
}
kubeadm init phase control-plane all --config=$${KUBEADM_CONFIG_FILE} && \
modify_kube_apiserver_config && \
kubeadm init \
--skip-phases=control-plane \
--ignore-preflight-errors=all \
--config=$${KUBEADM_CONFIG_FILE} \
--v 4
๋ค์ ์คํฌ๋ฆฝํธ๋ kubeadm ๋ฒ์ 1.12, 1.13 ( ๋๋ถ๋ถ ์ ๊ฒฝ์ฐ)์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํฉ๋๋ค.
modify_kube_apiserver_config(){
while [[ ! -e /etc/kubernetes/manifests/kube-apiserver.yaml ]]; do
sleep 0.5s;
done && \
sed -i 's/failureThreshold: [0-9]/failureThreshold: 18/g' /etc/kubernetes/manifests/kube-apiserver.yaml && \
sed -i 's/timeoutSeconds: [0-9][0-9]/timeoutSeconds: 20/g' /etc/kubernetes/manifests/kube-apiserver.yaml && \
sed -i 's/initialDelaySeconds: [0-9][0-9]/initialDelaySeconds: 240/g' /etc/kubernetes/manifests/kube-apiserver.yaml
}
# ref https://github.com/kubernetes/kubeadm/issues/413 (initialDelaySeconds is too eager)
if [[ ${var.arch} == "arm" ]]; then modify_kube_apiserver_config & fi
kubeadm init \
--config=$${KUBEADM_CONFIG_FILE} \
--v ${var.kubeadm_verbosity}
๋๋ ๊ฐ์ ์ํฉ์ ์์๊ณ @ neolit123์ด ์ ์ํ ์ ๊ทผ ๋ฐฉ์๊ณผ ๋์ผํ ์ค๋ฅ๊ฐ ๋ฐ์
@stephenmoloney๋ก ์คํฌ๋ฆฝํธ๋ฅผ ์คํํ ์ ์์์ต๋๋ค. bash ์คํฌ๋ฆฝํ
์ ์ต์ํ์ง ์์ต๋๋ค. ์๋ง๋ ์ ์๋ชป ์ผ ๊ฒ์
๋๋ค.
๊ทธ๋์ ๋๊ตฌ๋ ๊ด์ฌ์ด์๋ ๊ฒฝ์ฐ๋ฅผ ๋๋นํ์ฌ ์คํฌ๋ฆฝํธ๋ฅผ python (Raspbian์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ค์น๋๋ฏ๋ก ์ถ๊ฐ ์ข ์์ฑ์ด ํ์ ์์)์ผ๋ก ์ด์ํ์ต๋๋ค.
import os
import time
import threading
filepath = '/etc/kubernetes/manifests/kube-apiserver.yaml'
def replace_defaults():
print('Thread start looking for the file')
while not os.path.isfile(filepath):
time.sleep(1) #wait one second
print('\033[94m -----------> FILE FOUND: replacing defaults \033[0m')
os.system("""sed -i 's/failureThreshold: [0-9]/failureThreshold: 18/g' /etc/kubernetes/manifests/kube-apiserver.yaml""")
os.system("""sed -i 's/timeoutSeconds: [0-9][0-9]/timeoutSeconds: 20/g' /etc/kubernetes/manifests/kube-apiserver.yaml""")
os.system("""sed -i 's/initialDelaySeconds: [0-9][0-9]/initialDelaySeconds: 240/g' /etc/kubernetes/manifests/kube-apiserver.yaml""")
t = threading.Thread(target=replace_defaults)
t.start()
os.system("kubeadm init")
์คํํ๊ธฐ : sudo python however_you_name_the_file.py
@stephenmoloney ๋ฐ @ neolit123 ์๋ฃจ์
์ ์๋ ค ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค!
์๋ ํ์ธ์! ์ด ๋ฌธ์ ๋ ๋ง์ ๋์์ด๋์์ต๋๋ค
kustomize๋ฅผ ์ฌ์ฉํ์ฌ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฉ์ง ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๋ค.
mkdir /tmp/kustom
cat > /tmp/kustom/kustomization.yaml <<EOF
patchesJson6902:
- target:
version: v1
kind: Pod
name: kube-apiserver
namespace: kube-system
path: patch.yaml
EOF
cat > /tmp/kustom/patch.yaml <<EOF
- op: replace
path: /spec/containers/0/livenessProbe/initialDelaySeconds
value: 30
- op: replace
path: /spec/containers/0/livenessProbe/timeoutSeconds
value: 30
EOF
sudo kubeadm init --config config.yaml -k /tmp/kustom
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
@pipejakob kubeadm ์คํ์ ์ฌ๋ฐ๋ฅธ ์ง์ ์์ ๋ค๋ฅธ ํฐ๋ฏธ๋์์ ์ด๊ฒ์ (๋ด bananapi์์) ์คํํ๋ฉด ๋ชจ๋ ๊ฒ์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ํ๋์ง ํ์ธํ ์ ์์ต๋๋ค.
(๋ณดํต ์๋์ผ๋ก
docker kill
old / restart-looping apiserver ์ปจํ ์ด๋, ์ ์ ํฌ๋๋ก ์๋ ์ ๋ฆฌ๋๋์ง ํ์คํ์ง ์์ต๋๋ค)