<p>kubeadm์€ --node-ip ์˜ต์…˜์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋กํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.</p>

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

๊ธฐ๋Šฅ ์š”์ฒญ

kubeadm ์„ ์‚ฌ์šฉํ•˜์—ฌ K8S ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ฐฐํฌํ•˜๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ์ ์œผ๋กœ ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž ๋‚ด๋ถ€ IP ์ฃผ์†Œ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ kubelet์˜ --node-ip ์˜ต์…˜์„ ์„ค์ •ํ•˜๋Š” ์˜ต์…˜์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์ด (ํด๋ผ์šฐ๋“œ ๊ฐ„ ๋ฐฐํฌ ์‚ฌ์šฉ ์‚ฌ๋ก€์˜ ๊ฒฝ์šฐ) ์ •๋ง ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค (https://kubernetes.io/docs/admin/kubelet/ ์ฐธ์กฐ).

๋”ฐ๋ผ์„œ <public_master_ip> ๋…ธ๋“œ์—์„œ kubeadm init ํ˜ธ์ถœ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

kubeadm init --token=<token> --api-advertise-addresses=<public_master_ip> --node-ip=<public_master_ip>

<public_worker_ip> ๊ฐ€์žˆ๋Š” ๋…ธ๋“œ์˜ kubeadm ์กฐ์ธ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

kubeadm join --token=<token> --node-ip=<public_worker_ip>

์ด๋ฅผ ํ†ตํ•ด kubeadm์€ ํฌ๋กœ์Šค ํด๋ผ์šฐ๋“œ ๊ณต๊ธ‰์ž ๋ฐฐํฌ์— ์‰ฝ๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚ด๊ฐ€ ๋ชจ๋ฅด๋Š” ๋‹ค๋ฅธ ์˜ต์…˜์ด ์žˆ์œผ๋ฉด ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋‚ด ๊ฒ€์ƒ‰์€ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค (kubeadm ์‚ฌ์šฉ).

documentatioimprovement help wanted prioritimportant-longterm

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

@stepin ๋ฐฉ๊ธˆ cat: /etc/sysconfig/kubelet: No such file or directory ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

/etc/systemd/system/kubelet.service.d/20-custom.conf ๋„ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ทธ๊ณณ์—์„œ ๋ฌด์—‡์„ ํ•˜์…จ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ๋งํ•œ ๊ฒƒ์ด ์‚ฌ์‹ค์ด๋ผ๋ฉด config hot potato ๊ฒŒ์ž„์ด ๊ณ„์†๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ kubelet ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ ์œ„์น˜๋ฅผ ์ฐพ์„ ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค : /etc/default/kubelet

๋ฏธ๋ž˜์˜ ์—ฌํ–‰์ž์—๊ฒŒ๋Š” (์ ์–ด๋„ ๋‹ค์Œ ์ฃผ ๋™์•ˆ) ์ด๊ฒƒ์€ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

PRIVATE_IP=10.99.0.0
echo "KUBELET_EXTRA_ARGS=--node-ip=$PRIVATE_IP" > /etc/default/kubelet
systemctl daemon-reload
systemctl restart kubelet

๋ถ„๋ช…ํžˆ ํŠน์ • ๋…ธ๋“œ์—์žˆ๋Š” IP๋กœ ๋ณ€๊ฒฝํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋ฉด์ฑ… ์กฐํ•ญ : ์ €๋Š” Kubernetes๋ฅผ ํ™•์ธํ•˜๋Š” ์ค‘์ด๋ฏ€๋กœ ์ด๊ฒƒ์ด ๋”์ฐํ•œ ์ผ์„ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ /etc/systemd/system/kubelet.service.d/10-kubeadm.conf ๋Š” /etc/default/kubelet ๊ฐ€๋ฆฌ ํ‚ค๋ฏ€๋กœ ์ด๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

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

์ด ๋•Œ๋ฌธ์— ํ˜„์žฌ DigitalOcean์—์„œ Kubernetes ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ kubelet์€ ๊ธฐ๋ณธ ๊ฒŒ์ดํŠธ์›จ์ด์˜ IP๋ฅผ ๋ฐ”์ธ๋”ฉํ•˜๊ณ  ๋…ธ์ถœ / ๋ธŒ๋กœ๋“œ ์บ์ŠคํŠธํ•ฉ๋‹ˆ๋‹ค.์ด ๊ฒฝ์šฐ์—๋Š” ์ธํ„ฐ๋„ท ํŠธ๋ž˜ํ”ฝ์— ์ง๋ฉดํ•˜๋Š” ๊ณต์šฉ IP์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ ๋‹ค์Œ Weave์™€ ๊ฐ™์€ ํฌ๋“œ ๋„คํŠธ์›Œํ‚น ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์„ค์ •ํ•˜๋Š” ์‹œ์ ์— ๋„๋‹ฌํ•˜๋ฉด ๋งˆ์Šคํ„ฐ์˜ ๊ด‘๊ณ  IP๊ฐ€ ๋‚ด๋ถ€ ๋„คํŠธ์›Œํฌ์˜ IP ์ฃผ์†Œ์ด์ง€๋งŒ ์ž‘์—…์ž ๋…ธ๋“œ๊ฐ€ ๊ณต์šฉ ์ฃผ์†Œ๋ฅผ ๋…ธ์ถœํ•˜๋ ค๊ณ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ „์ฒด ์ง€์˜ฅ์ด ๋Š์Šจํ•ด์ง‘๋‹ˆ๋‹ค.

์ด ์†”๋ฃจ์…˜์€ ์•„๋ž˜์— ๋–จ์–ด ์žฅ์น˜ ํŒŒ์ผ์„ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค /etc/systemd/system/kubelet.service.d/10-kubeadm.conf ์ถ”๊ฐ€ํ•˜๊ธฐ --node-ip=<private_worker_ip> ์ž‘๋™ํ•˜๋„๋ก, ๋‹ค์‹œ๋กœ๋“œ ๋‹จ์œ„ ๋‹ค์‹œ ์‹œ์ž‘ kubelet์„.

kubeadm ์ด ๊ธฐ๋ณธ์ ์œผ๋กœ @nkratzke ์™€ ๊ฐ™์€ ์˜ต์…˜์„ ์ „๋‹ฌํ•˜์—ฌ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ ํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ์ข‹์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค!

/etc/systemd/system/kubelet.service.d/10-kubeadm.conf ํŒŒ์ผ์˜ ์„ค์ •์— --node-ip=<private-worker-ip> ์˜ต์…˜์„ ์ถ”๊ฐ€ํ•ด๋„ ์•ž์„œ ์„ค๋ช…ํ•œ ์„ค์ •์—์„œ์ด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์ง€ ์•Š์Œ์„ ํ™•์ธํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๋…ธ๋“œ๊ฐ€์ด ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์ˆ˜์‹  ๋Œ€๊ธฐํ•˜๋”๋ผ๋„ Kubernetes๋Š” ๊ธฐ๋ณธ ๊ฒŒ์ดํŠธ์›จ์ด๋ฅผ ๊ณ„์† ์‚ฌ์šฉํ•˜์—ฌ ๋…ธ๋“œ๊ฐ„์— ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.์ด ๊ฒฝ์šฐ์—๋Š” ๊ณต์šฉ IP ์ฃผ์†Œ์ž…๋‹ˆ๋‹ค.

๋‚˜๋Š” ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๋‹น์‹ ์˜ ๋ฐฉ๋ฒ•์„ ์‹œ๋„ํ–ˆ์ง€๋งŒ ๋‚˜์—๊ฒŒ๋„ ํšจ๊ณผ๊ฐ€ ์—†์—ˆ์Šต๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜๊ฒŒ ๋งŒ๋“ค์—ˆ์Šต๋‹ˆ๊นŒ?

@agsergi Private Networking ์˜ต์…˜์ด ํ™œ์„ฑํ™” ๋œ DigitalOcean์—์„œ k8s ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์„ค์ •ํ•˜๋ ค๊ณ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ๊ธฐ๋Šฅ์„ ๋น„ํ™œ์„ฑํ™”ํ•˜๋ฉด ๋‚˜์—๊ฒŒ ๋„์›€์ด๋˜์—ˆ์ง€๋งŒ ๊ฐ™์€ ๋ณดํŠธ์— ์žˆ๋Š”์ง€ ํ™•์‹คํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ปดํ“จํ„ฐ์— ๋‘ ๊ฐœ ์ด์ƒ์˜ NIC๊ฐ€ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์œผ๋ฉด์ด ๋ฌธ์ œ๊ฐ€ ์—ฌ์ „ํžˆ ์กด์žฌํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๋ถ„,
๋‚ด VM์— ๋‘ ๊ฐœ์˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” NAT ์šฉ์ด๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” hostonly-adaptor ์šฉ์ž…๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ kubeadmin์€ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ๊ธฐ๋ณธ ์ธํ„ฐํŽ˜์ด์Šค IP (๋‚ด ๊ฒฝ์šฐ NAT)๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ๋‹ค์Œ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
$ sudo kubeadm init --apiserver-advertise-address =

๊ทธ๋ฆฌ๊ณ  ๊ทธ๊ฒƒ์€ ๋‚˜๋ฅผ ์œ„ํ•ด ์ผํ–ˆ์Šต๋‹ˆ๋‹ค.

@luxas ์ด ํƒœ๊ทธ๊ฐ€ ์ข…๋ฅ˜ / ์ง€์›์œผ๋กœ ์ง€์ •๋˜๋Š” ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? ๊ธฐ๋ณธ ๊ฒฝ๋กœ์˜ ์†Œ์Šค๊ฐ€ ์•„๋‹Œ ๋…ธ๋“œ IP์™€ ํ•จ๊ป˜ kubeadm์„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

@evocage ์—๋Š” --apiserver-advertise-address =๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

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

Scaleway์—์„œ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๋งˆ์Šคํ„ฐ๋ฅผ ์ดˆ๊ธฐํ™” ํ•  ๋•Œ --apiserver-advertise-address=<private_net_IP> ํ–ˆ์ง€๋งŒ ๋…ธ๋“œ ( kubeadm join --toke=<token> <master_private_IP>:6443 )๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ์„ ๋•Œ kube-proxy ๋ฐ weave-net ํฌ๋“œ๊ฐ€ ์‹œ์ž‘๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค (์˜ค๋ฅ˜ ๋™๊ธฐํ™” ํฌ๋“œ).

๊ทธ๋Ÿฌ๋‚˜ ๊ณต๊ฐœ IP๋ฅผ ๋‚ด ๋…ธ๋“œ์— ์—ฐ๊ฒฐํ•˜๊ณ  ์žฌ๋ถ€ํŒ…ํ•˜๋ฉด ๋ชจ๋“  ๊ฒƒ์ด ์ž˜ ์ง„ํ–‰๋ฉ๋‹ˆ๋‹ค.

์–ด๋–ค ์ƒ๊ฐ?

์ผ๋ถ€ ํฌํŠธ๋งŒ VM์œผ๋กœ ์ „๋‹ฌํ•  ์ˆ˜์žˆ๋Š” ๋‹จ์ผ IP๋กœ VM ํ˜ธ์ŠคํŠธ์—์„œ kubernetes๋ฅผ ์„ค์ •ํ•˜๋ ค๊ณ  ํ•  ๋•Œ ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ž‘๋™ํ•˜๋„๋กํ•˜๋Š” ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๊นŒ?

+1ํ•˜๊ณ  ์‹ถ์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” ๊ทธ๋“ค ๋ชจ๋‘์— ๊ฐœ์ธ IP๋ฅผ ๊ฐ€์ง„ Digitalocean VM ์„ธํŠธ์—์„œ ์‹คํ–‰ํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๊ณ  ์žˆ์ง€๋งŒ ๊ณต์šฉ ์ฃผ์†Œ๋Š” ์–ด๋–ป๊ฒŒ ๋“  ํด๋Ÿฌ์Šคํ„ฐ๋กœ ๊ณ„์† ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

๋‚˜๋Š” ์ด๊ฒƒ์„ ๋งˆ์Šคํ„ฐ์—์„œ ์‹คํ–‰ํ•˜์—ฌ ๊ฐœ์ธ IP๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

kubeadm init --apiserver-advertise-address=<private-master-ip> init

--node-ip=<private-node-ip> ์„ /etc/systemd/system/kubelet.service.d/10-kubeadm.conf , ๋ฐ๋ชฌ์„ ๋‹ค์‹œ๋กœ๋“œํ•˜๊ณ , kubelet์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ ๋‹ค์Œ ์‹คํ–‰ :

kubeadm join --token <token> <private-master-ip>:6443 --discovery-token-ca-cert-hash sha256:<hash>

@mongrelion master <-> node ๊ฐ„์˜ ์–ด๋–ค ์œ ํ˜•์˜ ํ†ต์‹ ์ด ์—ฌ์ „ํžˆ ๊ณต์šฉ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๊นŒ? ๋‚˜๋Š” ์ด๊ฒƒ์„ ๋ณต์ œ ํ•  ์ˆ˜ ์—†์—ˆ๊ธฐ ๋•Œ๋ฌธ์— kubernetes๊ฐ€ ์˜ˆ๊ธฐ์น˜ ์•Š๊ฒŒ ์ž‘๋™ํ•˜๋Š”์ง€ ์•Œ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

ํ•ด๋ƒˆ์–ด! ๋งˆ์Šคํ„ฐ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์œ„์น˜์—์„œ ์‹œ์ž‘๋˜๋„๋กํ•˜๋Š” --apiserver-advertise-address ์™€ kubelet ๊ตฌ์„ฑ์˜ --node-ip ์กฐํ•ฉ์ด ๋งˆ๋ฒ•์˜ ์กฐํ•ฉ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ์š”์ฒญ์— ๋”ฐ๋ผ --node-ip ์˜ต์…˜์„ kubeadm ์ง์ ‘๋‘๋ฉด ๊ตฌ์„ฑ ํŒŒ์ผ์ด ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดˆ๊ธฐํ™”๋˜๋ฏ€๋กœ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋Œ๋ฆฌ๋ ค๋Š” ์ €์™€ ๊ฐ™์€ ๋‹จ์„œ์—†๋Š” ์ดˆ๋ณด์ž์—๊ฒŒ ๋„์›€์ด ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค. :)

๊ทธ ์š”์•ฝ์— ๋Œ€ํ•ด @jamiehannaford ์—๊ฒŒ ๊ฐ์‚ฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ์ด๊ฒƒ์„ ๋” ๋ˆˆ์— ๋„๊ฒŒ ๋ฌธ์„œํ™”ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๊นŒ?

@luxas ์˜ˆ,์ด ์‚ฌ์šฉ ์‚ฌ๋ก€๋ฅผ ๋ช…์‹œ ์ ์œผ๋กœ ๋ฌธ์„œํ™”ํ•˜๋Š” ๊ฒƒ์ด ์œ ์šฉ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@jamiehannaford v1.9 ์˜ ๋ฌธ์„œ ๊ฐœํŽธ์— ์ด๊ฒƒ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด https://github.com/kubernetes/website/pull/6103 ์— ์ถ”๊ฐ€ ํ•  ๋‹จ๋ฝ์„ ๋ณด๋‚ด์ฃผ์„ธ์š”.

ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ ๋๋‚œ

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

ํ”ผ๋“œ๋ฐฑ๋„์ฃผ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. kubeadm์„ ์‚ฌ์šฉํ•˜์—ฌ ์•ˆ์ „ํ•œ ๋‹จ์ผ ๋…ธ๋“œ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๊ตฌ์ถ•ํ•˜๋ ค๊ณ ํ•ฉ๋‹ˆ๋‹ค.
๋ชจ๋“  kubernetes ์„œ๋น„์Šค๋ฅผ localhost์— ๋ฐ”์ธ๋”ฉํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ด ๋ช…๋ น์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฉฐ ํด๋Ÿฌ์Šคํ„ฐ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.
kubeadm init \ --pod-network-cidr=10.244.0.0/16 \ --apiserver-advertise-address=127.0.0.1 \ --apiserver-cert-extra-sans=127.0.0.1,staging.my-server.net
๊ทธ๋Ÿฌ๋‚˜ /etc/kubernetes/admin.conf ๋ฐ ์นœ๊ตฌ๋Š” ๋งˆ์Šคํ„ฐ์˜ ๊ณต์šฉ IP ์ฃผ์†Œ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
server: https://75.xx.yy.zz:6443

--node ์ ‘๊ทผ ๋ฐฉ์‹์„ ์‹œ๋„ํ•ด ๋ณด ๊ฒ ์ง€๋งŒ ์ด์— ๋Œ€ํ•œ ํ•ด๊ฒฐ์ฑ…์„ ์ฐพ๋„๋ก ๋„์™€ ์ฃผ์‹œ๋ฉด ๊ฐ์‚ฌํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‚ด ์‚ฌ์šฉ ์‚ฌ๋ก€ :

์Šคํ…Œ์ด์ง• ํ™˜๊ฒฝ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  HA์— ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š” ์†Œ๊ทœ๋ชจ ํ”„๋กœ์ ํŠธ์˜ ํ”„๋กœ๋•์…˜ ํ™˜๊ฒฝ์œผ๋กœ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์€ ๊ฐ•๋ ฅํ•œ ๋จธ์‹ ์ด ์žˆ์Šต๋‹ˆ๋‹ค. SSH๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  kubectl์„ ์‚ฌ์šฉํ•˜์—ฌ ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ์ œ์–ด ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌ,

์—ฌ๊ธฐ์— @ Mosho1 ๊ณผ ๋˜‘๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ๊ณ  ๊ทธ ๋ฐ‘์œผ๋กœ ๋‚ด๋ ค๊ฐ”์Šต๋‹ˆ๋‹ค.

๋‚˜๋Š” DO์™€ CoreOS๋ฅผ ์‚ฌ์šฉํ•˜์ง€๋งŒ ์ด๊ฒƒ์€ ์‹ค์ œ๋กœ ๋‘ ๊ฐ€์ง€ ๋ชจ๋‘ ์™€

๋ฌด์Šจ ์ผ์ž…๋‹ˆ๋‹ค kubelet ๊ฐ€ ์„ค์ •์œผ๋กœ kubeadm ์ธํ„ฐํŽ˜์ด์Šค์—์„œ ์™ธ๋ชจ์™€ ์‚ฌ์šฉํ•  ์ˆ˜์žˆ๋Š” ํ• ๋‹น ๋œ IP ๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค์— ๊ด€๊ณ„์—†์ด ๋ฏน์Šค์— ์ž์‹ ์˜ ๊ฐœ์ธ ์„œ๋ธŒ๋„ท์„ ๊ฐ€์ง€๊ณ  ๊ฒฐ์ • ๋“ฑ์„ ์ˆ˜ํ–‰ํ•˜๊ณ  ์‹ถ์–ด "๋ฉ”์ธ"์œผ๋กœ ๊ฐ„์ฃผํ•˜๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค (์ฒซ ๋ฒˆ์งธ? WAN ํ•˜๋‚˜? ๋ชฐ๋ผ์š”). ์ด๊ฒƒ์€ ifconfig ๋ฅผ ํ†ตํ•ด ๋ณผ ์ˆ˜ ์—†์ง€๋งŒ ip addr ๋ฅผ ํ†ตํ•ด ์‰ฝ๊ฒŒ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฒฝ๋กœ๋„ ์„ค์ •๋˜์–ด ์žˆ์ง€๋งŒ ๋…ธ๋“œ eth0 ์„ ์—ฐ๊ฒฐํ•˜๋Š” DO ๋„คํŠธ์›Œํฌ๋ฅผ ํ†ตํ•ด ๋‚ ์•„๊ฐˆ ๊ฐ€๋Šฅ์„ฑ์€ ์—†์Šต๋‹ˆ๋‹ค.

ํŽธ์ง‘ : @klausenbusk ๋•๋ถ„์—

ํ•ด๊ฒฐ์ฑ…์€ ์‹ค์ œ๋กœ ์‚ฌ์šฉํ•  IP๋ฅผ kubelet์—๊ฒŒ ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์„ ํƒ์  ๊ฐœ์ธ ๋„คํŠธ์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๊ณต์šฉ ๋„คํŠธ์›Œํฌ ๋˜๋Š” ๊ฐœ์ธ ๋„คํŠธ์›Œํฌ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

--node-ip ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ KUBELET_EXTRA_ARGS ๊ฐ€ ๋‹จ์œ„ ํŒŒ์ผ์— ์ด๋ฏธ ์„ค์ •๋˜์–ด ์žˆ์ง€ ์•Š๋‹ค๊ณ  ๊ฐ€์ •ํ•ฉ๋‹ˆ๋‹ค.

$ DROPLET_IP_ADDRESS=$(ip addr show dev eth0 | awk 'match($0,/inet (([0-9]|\.)+).* scope global eth0$/,a) { print a[1]; exit }')
$ echo $DROPLET_IP_ADDRESS  # check this, jus tin case
$ echo "Environment=\"KUBELET_EXTRA_ARGS=--node-ip=$DROPLET_IP_ADDRESS\"" >> /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
$ systemctl daemon-reload
$ systemctl restart kubelet

@lloeki ์ž‘์„ฑํ•ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. https://github.com/kubernetes/website/blob/master/docs/setup/independent/troubleshooting-kubeadm.md ์—์„œ ๋ฌธ์„œ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ด์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

๋”ฐ๋ผ์„œ WAN ํ•˜๋‚˜ (eth0)๋ฅผ ์„ ํƒํ•˜๊ณ , ๊ณต์šฉ IP๋ฅผ ๋ณด๊ฑฐ๋‚˜ ๋ฌด์‹œํ•˜๊ณ , ๋‘ ๋ฒˆ์งธ ๊ฐœ์ธ ์„œ๋ธŒ๋„ท (์ œ ๊ฒฝ์šฐ์—๋Š” 10.19.0.0/255)์„ ์ถ”๊ฐ€ํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ™์€ ๋งํฌ์—์„œ.

ํ™•์‹คํ•ฉ๋‹ˆ๊นŒ? ์•ต์ปค IP ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค ( curl http://169.254.169.254/metadata/v1/interfaces/public/0/anchor_ipv4/address ์™€ ๋น„๊ต)

@klausenbusk ๋‹น์‹ ์€ ์ ˆ๋Œ€์ ์œผ๋กœ ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๊ฑด ์ œ ๋ถ€๋ถ„์—์„œ ์žฌ๋ฏธ์žˆ๋Š” ์ถ”์ธก์ด์—ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ์ด์ œ --node-ip ์‚ฌ์šฉํ•˜๋Š” ๋งˆ์Šคํ„ฐ ๋…ธ๋“œ์—์„œ ๊ฐ€์ ธ์˜จ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ kubelet์ด ์œ ์šฉํ•˜์ง€ ์•Š์„ ๋•Œ ์œ ์šฉ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฐ€์ •ํ•˜์— ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

$ curl http://169.254.169.254/metadata/v1/interfaces/public/0/anchor_ipv4/address
10.19.0.39
$ ip addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether xx:xx:xx:xx:xx:xx brd ff:ff:ff:ff:ff:ff
    inet yyy.yyy.yyy.yyy/20 brd yyy.yyy.yyy.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet 10.19.0.39/16 brd 10.19.255.255 scope global eth0
       valid_lft forever preferred_lft forever

๋ฌธ์„œ๋ฅผ ์—…๋ฐ์ดํŠธ ํ•ด์ฃผ์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?

@jamiehannaford ๋‚ด๊ฐ€ ํ•  ์ˆ˜์žˆ๋Š” ๊ฒƒ ๊ฐ™์€๋ฐ :)

/ ํ• ๋‹น @liztio

๋‚˜๋Š” ์ด๊ฒƒ์„ ๋ณด์•˜๊ณ  ์‚ฌ์šฉ์ž๊ฐ€ --node-ip ์ธ์ˆ˜๋ฅผ kubeadm์— ์ถ”๊ฐ€ํ•˜๋„๋ก ์š”์ฒญํ•˜๋”๋ผ๋„ kubelet ๊ตฌ์„ฑ์„ ์ˆ˜์ •ํ•˜๊ณ  ์—ฌ๊ธฐ์— ์ œ์•ˆ ๋œ @jamiehannaford ์™€ ๊ฐ™์€ ๋งค๊ฐœ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ๊ถŒ์žฅ๋˜๋Š” ์ ‘๊ทผ ๋ฐฉ์‹์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
https://github.com/kubernetes/kubeadm/issues/203#issuecomment -335416377

(๋˜๋Š” kublet์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— $ KUBELET_EXTRA_ARGS์— ์ถ”๊ฐ€).

kubeadm์— ์ถ”๊ฐ€ cmd ์ธ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ์•Š๊ธฐ๋กœ ๊ฒฐ์ • ํ–ˆ์œผ๋ฏ€๋กœ kubeadm MasterConfig ์˜ต์…˜์œผ๋กœ์ด๋ฅผ ํ™œ์„ฑํ™” ํ•  ๊ณ„ํš์ด์—†๋Š” ํ•œ์ด ๋ฌธ์ œ๋ฅผ ๋‹ซ๋Š” ๊ฒƒ์ด ์•ˆ์ „ ํ•  ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค (์–ด๋–ป๊ฒŒ ๋“  ?? ... ์‚ฌ์šฉ์ž๊ฐ€ kubelet ๊ตฌ์„ฑ์„ ํŽธ์ง‘ํ•˜๊ณ  ๋ณ€๊ฒฝ ์‚ฌํ•ญ์— ์ˆ˜๋™์œผ๋กœ ํœด์‹).

ํŽธ์ง‘ : ๋˜๋Š” ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ ๋™์  kubelet ๊ตฌ์„ฑ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๊นŒ?

์œ„์˜ ๋ฌธ์„œ ๋ณ€๊ฒฝ์— ๋Œ€ํ•œ ๋ชจ๋“  ์ œ์•ˆ์ด ๋ณ‘ํ•ฉ ๋œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํŠธ์œ— ๋‹ด์•„ ๊ฐ€๊ธฐ

์ด๊ฑธ ๋‹ซ์•„๋„ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

Kubernetes 1.11์—์„œ /etc/systemd/system/kubelet.service.d/20-custom.conf์˜ KUBELET_EXTRA_ARGS ์„ค์ •์€ ๋” ์ด์ƒ ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. / etc / sysconfig / kubelet์—์„œ ์„ค์ •ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค (์•ฝ๊ฐ„ ๋‹ค๋ฅธ ๊ตฌ๋ฌธ ์ด ํŒŒ์ผ ์ค‘).

@stepin ๋ฐฉ๊ธˆ cat: /etc/sysconfig/kubelet: No such file or directory ์–ป์—ˆ์Šต๋‹ˆ๋‹ค.

/etc/systemd/system/kubelet.service.d/20-custom.conf ๋„ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๊ทธ๊ณณ์—์„œ ๋ฌด์—‡์„ ํ•˜์…จ๋Š”์ง€ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋‹น์‹ ์ด ๋งํ•œ ๊ฒƒ์ด ์‚ฌ์‹ค์ด๋ผ๋ฉด config hot potato ๊ฒŒ์ž„์ด ๊ณ„์†๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์—์„œ kubelet ๊ตฌ์„ฑ์— ๋Œ€ํ•œ ๋˜ ๋‹ค๋ฅธ ์œ„์น˜๋ฅผ ์ฐพ์„ ์ˆ˜์žˆ์—ˆ์Šต๋‹ˆ๋‹ค : /etc/default/kubelet

๋ฏธ๋ž˜์˜ ์—ฌํ–‰์ž์—๊ฒŒ๋Š” (์ ์–ด๋„ ๋‹ค์Œ ์ฃผ ๋™์•ˆ) ์ด๊ฒƒ์€ ์ž‘๋™ํ•˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

PRIVATE_IP=10.99.0.0
echo "KUBELET_EXTRA_ARGS=--node-ip=$PRIVATE_IP" > /etc/default/kubelet
systemctl daemon-reload
systemctl restart kubelet

๋ถ„๋ช…ํžˆ ํŠน์ • ๋…ธ๋“œ์—์žˆ๋Š” IP๋กœ ๋ณ€๊ฒฝํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋ฉด์ฑ… ์กฐํ•ญ : ์ €๋Š” Kubernetes๋ฅผ ํ™•์ธํ•˜๋Š” ์ค‘์ด๋ฏ€๋กœ ์ด๊ฒƒ์ด ๋”์ฐํ•œ ์ผ์„ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ /etc/systemd/system/kubelet.service.d/10-kubeadm.conf ๋Š” /etc/default/kubelet ๊ฐ€๋ฆฌ ํ‚ค๋ฏ€๋กœ ์ด๊ฒƒ์ด ์˜ฌ๋ฐ”๋ฅธ ์ผ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

@jazoom- ์˜๊ฒฌ์„ ๋ณด๋‚ด ์ฃผ์…”์„œ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค. ๋“œ๋””์–ด systemd ๋‹จ์œ„ ํŒŒ์ผ์„ ๋” ์ž์„ธํžˆ ์ฝ์„ ์ˆ˜์žˆ๊ฒŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋‚˜๋Š” 1.10์—์„œ ๋™์ผํ•œ ๊ตฌ์„ฑ์„ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฏธ์ณ ๊ฐ€๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ณ  ๋ชจ๋“  ๊ฒƒ์ด ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค ... 1.11์—์„œ ๊ตฌ์„ฑ์„ ๊ฐ€์ ธ์˜ค๊ณ  ๋‚ด๊ฐ€ ์„ค์ • ํ•œ ์‚ฌ์šฉ์ž ์ •์˜ --node-ip ๋Š” ์ „ํ˜€ ์ ์šฉํ•˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค. /etc/default/kubelet ์— ์ถ”๊ฐ€ ์ธ์ˆ˜๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์ „ํ™˜ํ•˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

@geerlingguy ์ฒœ๋งŒ ์—์š”.

์ ์–ด๋„ "1.11 ํด๋Ÿฌ์Šคํ„ฐ๋ฅผ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ๋งˆ๋‹ค ์ž‘๋™ํ•œ๋‹ค"๋Š” ๊ฒฝ์šฐ๋Š” ์•„๋‹ˆ์—ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์žฌํ˜„ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ๋Š” ์ •๋ง ๋‹น์‹ ์„ ๋ฏธ์น˜๊ฒŒ ๋งŒ๋“ค ๊ฒƒ์ž…๋‹ˆ๋‹ค.

"Kubeadm 1.13"์—์„œ์ด ๋ฌธ์ œ๋ฅผ ๋งŒ๋‚ฌ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ˆ˜์ •ํ–ˆ์Šต๋‹ˆ๋‹ค.

1) '/var/lib/kubelet/kubeadm-flags.env'์— "--node-ip"๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

[root@Node-18121 ~]# cat /var/lib/kubelet/kubeadm-flags.env
KUBELET_KUBEADM_ARGS=--cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1 --node-ip=10.10.10.1

2) Kubelet ๋‹ค์‹œ ์‹œ์ž‘ :

systemctl daemon-reload && systemctl restart kubelet

^ NIC์— ํ‘œ์‹œ๋˜์ง€ ์•Š๋Š” ์œ ๋™ IP๋กœ ์ž‘๋™ํ•˜๋„๋กํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์•„๋Š” ์‚ฌ๋žŒ์ด ์žˆ์œผ๋ฉด ์•Œ๋ ค์ฃผ์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์„ฑ๊ณตํ–ˆ์Šต๋‹ˆ๋‹ค.

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

https://wiki.hetzner.de/index.php/Cloud_floating_IP_persistent/en์„ ์‹œ๋„
Hetzner์—์„œ ์ž‘๋™ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
Eugen

์ด๊ฒƒ์€ ์™„๋ฒฝํ•˜๊ฒŒ ์ž‘๋™ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

"Kubeadm 1.13"์—์„œ์ด ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  1. "/var/lib/kubelet/kubeadm-flags.env"์— "--node-ip"๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.
[root@Node-18121 ~]# cat /var/lib/kubelet/kubeadm-flags.env
KUBELET_KUBEADM_ARGS=--cgroup-driver=systemd --network-plugin=cni --pod-infra-container-image=k8s.gcr.io/pause:3.1 --node-ip=10.10.10.1
  1. Kubelet์„ ๋‹ค์‹œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.
systemctl daemon-reload && systemctl restart kubelet

๊ณ ๋งˆ์›Œ, ์ด์‚ฌ

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