๋ ธ๋ ์์ ์ ์ฌ์ค IP ์ฃผ์๋ฅผ ๋์ ์ผ๋ก ํ ๋นํ๋ ๊ณต๊ธ์๋ฅผ ์ฌ์ฉํ๊ณ ์๋๋ฐ kubeadm ๊ธฐ๋ฐ ์ค์ ์ด ์ค๋จ๋๋ ๊ฒ ๊ฐ์ต๋๋ค.
๋๋ kubeadm์ผ๋ก ์๋ก์ด ๋ง์คํฐ ์๋ฒ๋ฅผ ์ค์ ํ๊ณ ์ ์๋ํ์ง๋ง ์์คํ
์ ์ข
๋ฃํ๊ณ ๋ค์ ์์ํ ํ ์ฌ์ค IP ์ฃผ์๊ฐ ๋ณ๊ฒฝ๋์์ผ๋ฉฐ ์ด์ kubectl์ ์ฌ์ฉํ ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค Unable to connect to the server: x509: certificate is valid for 10.96.0.1, 10.4.36.13, not 10.4.20.67
(ํ์๋ ๋ง์คํฐ ์๋ฒ์ ์ IP ์ฃผ์์
๋๋ค.)
๊ตฌ์ฑ์ ์ฌ์ค์ ํ๋ ๋ฐฉ์์ผ๋ก kubeadm init
๋ฅผ ์คํํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น? ์๋ฅผ ๋ค์ด ํด๋ฌ์คํฐ ํฌ๋, RC ๋ฑ์ ์ ์งํ๊ณ ์ถ์ง๋ง IP ์ฃผ์ ๋์ ํธ์คํธ ์ด๋ฆ์ ์ฌ์ฉํ๋๋ก ์ธ์ฆ์๋ฅผ ๋ค์ ์ด๊ธฐํํ๊ณ ์ถ์ต๋๋ค.
๊ธฐ๋ณธ IP ์ฃผ์ ๋์ ํธ์คํธ ์ด๋ฆ์ผ๋ก init๋ฅผ ๋ค์ ์คํํ๋ ค๊ณ ํ๋ฉด ๋์ ๋์ํ์ง ์์ต๋๋ค.
[06:20 root<strong i="12">@scumbag01</strong> ~] > kubeadm init --apiserver-advertise-address scumbag01 --skip-preflight-checks
[kubeadm] WARNING: kubeadm is in beta, please do not use it for production clusters.
[init] Using Kubernetes version: v1.7.0
[init] Using Authorization modes: [Node RBAC]
[preflight] Skipping pre-flight checks
[certificates] Using the existing CA certificate and key.
[certificates] Using the existing API Server certificate and key.
[certificates] Using the existing API Server kubelet client certificate and key.
[certificates] Using the existing service account token signing key.
[certificates] Using the existing front-proxy CA certificate and key.
[certificates] Using the existing front-proxy client certificate and key.
[certificates] Valid certificates and keys now exist in "/etc/kubernetes/pki"
a kubeconfig file "/etc/kubernetes/admin.conf" exists already but has got the wrong API Server URL
์ฌ์ค์ ํ๋ ๋์ ์ ์ดํ ์ ์๋ IP ์ฃผ์์ธ 10.4.36.13์ ๋ํด ํ์ฌ ์ฌ์ฉํ ์ ์๋ ์ธ์ฆ์๋ฅผ ์ ํํฉ๋๋ค.
/etc/kubernetes/*.conf
์ ๊ฑฐํ๊ณ ์์ init๋ฅผ ๋ค์ ์คํํ๋ฉด ํธ์คํธ ์ด๋ฆ์ ์ฌ์ฉํ๋ ๋์ ์ฌ์ ํ server: https://10.4.20.67:6443
๋ฅผ ์๋๋ค.
kubeadm init๊ฐ ์ค์ ์ ๋ฎ์ด์ฐ๊ณ ์ ์ธ์ฆ์๋ฅผ ์์ฑํด์ผ ํฉ๋๊น? ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ค์ ํ๊ฑฐ๋ ์๋ก ์์ํ ์ ์๋๋ก ์ด์ kubeadm init
์์ฑ๋ ๋ชจ๋ ์ํฐํฉํธ๋ฅผ ํ๊ดดํ๋ kubeadm reset
๋๋ ์ ์ฌํ ๊ธฐ๋ฅ์ ์ถ๊ฐํ ๊ณํ์ด ์์ต๋๊น?
์ด๋ kubeadm์ ์ ํ ์ฌํญ์ด ์๋๋ผ ์ผ๋ฐ์ ์ธ ๋ณด์ ๊ดํ์
๋๋ค.
์ธ์ฆ์๋ {your-old-IP-here}์ ๋ํด ์๋ช
๋์์ผ๋ฉฐ ๋ณด์ ํต์ ์ {your-new-ip-here}์ ๋ฐ์ํ ์ ์์ต๋๋ค.
๋ฏธ๋ฆฌ ์ธ์ฆ์์ ๋ ๋ง์ IP๋ฅผ ์ถ๊ฐํ ์ ์์ง๋ง...
๋น์ ์ ์๋ต์ ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค.
IP ์ฃผ์๋ ํด๋ผ์ฐ๋ ๊ณต๊ธ์๊ฐ ํ ๋นํ๋ฏ๋ก ์ธ์ฆ์๋ฅผ ๋ฏธ๋ฆฌ ์์ฑํ๋ ๊ฒ์ ์์ผ๋์นด๋๋ก ์ค์ ํ ์ ์๋ ๊ฒฝ์ฐ์๋ง ์๋ํฉ๋๋ค. (์ฃ์กํฉ๋๋ค, ์ ๋ ์ธ์ฆ์์ ๋ํด ์๋ฌด๊ฒ๋ ๋ชจ๋ฆ ๋๋ค.)
๋๋ kubeadm reset
์ค์ ๋ก ์กด์ฌํ๋ค๋ ๊ฒ์ ๊ฐ๊ณผํ๋ค. ์๋ํ๋ฉด ๋ ํผ๋ฐ์ค ๊ฐ์ด๋์ ์ธ๊ธ๋์ง ์์๊ธฐ ๋๋ฌธ์ด๋ค. Reset ๋ฐ init๋ ์ ์๊ฒ ์ถฉ๋ถํ ์ ์๋ํ์ผ๋ฉฐ ๋ง์คํฐ ์์คํ
์ ์ข
๋ฃํ๋ ๊ฒ์ ํผํ ๊ฒ์
๋๋ค. ์ ๋ฌธ์ ๋ ๋๋ฌผ๊ณ ํ๋ก๋์
์ฌ์ฉ ์ฌ๋ก์ ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ๋ค๊ณ ๊ฐ์ ํฉ๋๋ค. ๊ทธ๋๋ ๋ ์ข์ ๋ฐฉ๋ฒ์ด ์๋์ง ๊ถ๊ธํฉ๋๋ค. kubeadm reset
๋จ๊ณ๋ฅผ ๋ชจ๋ฐฉํ ์ ์์ง๋ง ํด๋ฌ์คํฐ ์ค์ ์ ๋ณด์กดํ๊ธฐ ์ํด etcd ๋ฐ์ดํฐ ํด๋๋ฅผ ์ ์งํ์๊ฒ ์ต๋๊น?
์ด๋ ์ชฝ์ด๋ kubeadm์์ ์ํํ ๋ชจ๋ ์์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค! ํด๋ฌ์คํฐ๊ฐ ๋ช ๋ถ ๋ง์ ์์๋๋ ๊ฒ์ ๋ณด๋ ๊ฒ์ ๋ง๋ฒ๊ณผ ๊ฐ์ต๋๋ค. ์ ๋ 0.14๋ถํฐ Kubernetes๋ฅผ ์ฌ์ฉํ๊ณ ์์ผ๋ฉฐ 1.0๋ถํฐ ํ๋ก๋์ ํ๊ฒฝ์์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค.
@analytik ๋๋ ๋น์ ๊ณผ ๋๊ฐ์ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ํ์ฌ ๋คํธ์ํฌ๊ฐ gcr.io๋ฅผ ์ฐจ๋จํฉ๋๋ค. ๊ทธ๋์ ์ค์น๋ฅผ ์ํด ๋๊ธ์ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๊ณต๊ธ์ IP๋ ๊ณ์ ๋์ ์ผ๋ก ๋ณ๊ฒฝ๋๋ฉฐ ๋ด ํต์ ํ์ ์์ง ์์ต๋๋ค. ๊ทธ๋์ ๋์กฐ์ฐจ๋ ํด๊ฒฐ์ฑ
์ ์ฐพ๊ณ ์์ต๋๋ค. ๋๊ธ์ ๊ณ์ ์ฐ๊ฒฐํด๋ ๋คํธ์ํฌ ์ฌ์ค์ ์ผ๋ก ์ธํด IP๊ฐ ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. ์ด์ ๋ํ ํด๊ฒฐ์ฑ
์ด ์์ต๋๊น? ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๊ณ ์์ต๋๊น?
@luxas ์งํ ๋ฐฉ๋ฒ์ ๋ํด ์ ์ํด ์ฃผ์๊ฒ ์ต๋๊น? ์ ๋ K8S์ ์ด๋ณด์์
๋๋ค. ์ด ๊ตฌ์ฑ์ผ๋ก ์์ ํ ์์ค๋์์ต๋๋ค. ์ด ๋์ IP ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐฉ๋ฒ์ ์๋ ค์ฃผ์๊ฒ ์ต๋๊น?
๋ณ๊ฒฝ๋ ๋ง์คํฐ IP๋ ์ด๋ป๊ฒ ์ฒ๋ฆฌํ๊ณ ๊ณ์ ๊ฐ์?
์ด ๋ฌธ์ ์ ๋ํ ์ ๋ฐ์ดํธ๊ฐ ์์ต๋๊น?
๋์ผํ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ์ ์ฒด ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ค์ ํ์ง ์๊ณ ๋ง์คํฐ IP ์์ ์ ์งํํ๋ ๋ฌธ์๊ฐ ์์ต๋๊น?
๋๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ด๊ฒ์ ๋ฌ์ฑํ ์ ์์๋ค:
kubeadm alpha phase certs
์ฌ์ฉํ์ฌ ์ธ์ฆ์ ์ฌ์์ฑ [2]kube-system
๋ค์์คํ์ด์ค์์ configmap ์๋ณ[1]
/etc/kubernetes/pki# for f in $(find -name "*.crt"); do openssl x509 -in $f -text -noout > $f.txt; done
/etc/kubernetes/pki# grep -Rl 12\\.34\\.56\\.78 .
./apiserver.crt.txt
./etcd/peer.crt.txt
/etc/kubernetes/pki# for f in $(find -name "*.crt"); do rm $f.txt; done
[2]
/etc/kubernetes/pki# rm apiserver.crt apiserver.key
/etc/kubernetes/pki# kubeadm alpha phase certs apiserver
...
/etc/kubernetes/pki# rm etcd/peer.crt etcd/peer.key
/etc/kubernetes/pki# kubeadm alpha phase certs etcd-peer
...
[์ผ]
$ kubectl -n kube-system get cm -o yaml | less
...
$ kubectl -n kube-system edit cm ...
์์ฐ, ๋๋์ด ๋ช ๋ น์ ๋ชฐ๋์ต๋๋ค. ํ๋ฅญํ ์ ๋ณด, ๊ทธ ํธ๋ฆญ์ ์ํํ์ต๋๋ค. ๊ณ ๋ง์ต๋๋ค !
configmaps๋ฅผ ์๋์ผ๋ก ์ฐพ์ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ด ์์ต๋๊น?
kubeadm์ด ํฅํ ๋ฆด๋ฆฌ์ค์์ ์ด ํ๋ก์ธ์ค๋ฅผ ๋ค๋ฃฐ ์ ์๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@patricklucas ์ง์งํ๊ฒ
๋ ๋ช ํํ ์ ๋ณด๋ฅผ ์ํ๋ ์ฌ๋๋ค์ ์ํด ๋ค์๊ณผ ๊ฐ์ ๊ฒฝํ์ ํ์ต๋๋ค.
/etc/kubernetes
์๋ ๋ชจ๋ ๊ตฌ์ฑ ํ์ผ์ IP ์ฃผ์๋ฅผ ๊ต์ฒดํฉ๋๋ค.bash
oldip=192.168.1.91
newip=10.20.2.210
cd /etc/kubernetes
# see before
find . -type f | xargs grep $oldip
# modify files in place
find . -type f | xargs sed -i "s/$oldip/$newip/"
# see after
find . -type f | xargs grep $newip
/etc/kubernetes/pki
๋ฐฑ์
bash
mkdir ~/k8s-old-pki
cp -Rvf /etc/kubernetes/pki/* ~/k8s-old-pki
/etc/kubernetes/pki
์ธ์ฆ์ ์๋ณ(์ ๋ฆฌ ๊ฐ๋ฅ)bash
cd /etc/kubernetes/pki
for f in $(find -name "*.crt"); do
openssl x509 -in $f -text -noout > $f.txt;
done
grep -Rl $oldip .
for f in $(find -name "*.crt"); do rm $f.txt; done
์ด์ IP๋ฅผ ์ฐธ์กฐํ kube-system
๋ค์์คํ์ด์ค์์ configmap์ ์๋ณํ๊ณ ํธ์งํฉ๋๋ค.
# find all the config map names
configmaps=$(kubectl -n kube-system get cm -o name | \
awk '{print $1}' | \
cut -d '/' -f 2)
# fetch all for filename reference
dir=$(mktemp -d)
for cf in $configmaps; do
kubectl -n kube-system get cm $cf -o yaml > $dir/$cf.yaml
done
# have grep help you find the files to edit, and where
grep -Hn $dir/* -e $oldip
# edit those files, in my case, grep only returned these two:
kubectl -n kube-system edit cm kubeadm-config
kubectl -n kube-system edit cm kube-proxy
์ด์ ๋จ๊ณ์์ grep์ผ๋ก ์๋ณ๋ ๊ฐ๊ฐ์ ๋ํ ์ธ์ฆ์์ ํค๋ฅผ ๋ชจ๋ ์ญ์ ํ๊ณ ํด๋น ์ธ์ฆ์๋ฅผ ์ฌ์์ฑํฉ๋๋ค.
์ฐธ๊ณ :
kubeadm admin phase certs ...
๋ฅผ ํตํด ์ธ์ฆ์๋ฅผ ๋ค์ ๋ง๋ค๊ธฐ ์ ์ ์ IP ์ฃผ์๋ฅผ ์ ์ฉํด์ผ ํฉ๋๋ค.
rm apiserver.crt apiserver.key
kubeadm alpha phase certs apiserver
rm etcd/peer.crt etcd/peer.key
kubeadm alpha phase certs etcd-peer
bash
sudo systemctl restart kubelet
sudo systemctl restart docker
bash
sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
@mariamTr ^
์ฃผ๋ชฉํด์ผ ํ ๋ ๋ค๋ฅธ ์ฌํญ์ ๊ตฌ์ฑ ํ์ผ์์ k8s ๋ฒ์ ์ ์ง์ ํ์ฌ ์คํ๋ผ์ธ ๋ชจ๋์์ ์ธ์ฆ์๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. https://github.com/kubernetes/kubernetes/issues/54188#issuecomment -418880831
@weisjohn ๋ค์ ์ฌํญ์ ์ฐธ๊ณ ํ์ฌ ์๊ฒฌ์ ์ ๋ฐ์ดํธํด ์ฃผ
kubectl edit cm -nkube-public cluster-info
kubeadm์๋ ํ์ํฉ๋๊น?
๊ทธ๋ ์ง ์์ผ๋ฉด ํ๋ก์ธ์ค ์ค๊ฐ์ ์ด์ /์๋ชป๋ apiserver IP๋ฅผ ์ฌ์ฉํ์ฌ kubeadm join ๋ช ๋ น์ด ๊ณ์ ์คํจํฉ๋๋ค.
๊ฐ์ฌ ํด์!
@weisjohn (https://github.com/kubernetes/kubeadm/issues/338#issuecomment-418879755) ๋ฐ @michaelfig (https://github.com/kubernetes/kubeadm/issues/)์ ๋ชจ๋ ๋จ๊ณ๋ฅผ ์ ์ฉํ์ต๋๋ค. 338#issuecomment-428340099) ๋ชจ๋ ๊ณณ์์ ์ฃผ์๋ฅผ ๋์ฒดํฉ๋๋ค.
์ด๋ kubernetes๊ฐ eth0์ ๊ณต์ฉ IP ๋์ eth1์์ ์๋ก ์์ฑ๋ VPC ์ฃผ์๋ฅผ ์ฌ์ฉํ๋๋ก ํ๋ ๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฌ๋ kubeadm upgrade diff v1.12.3
์คํํ๋ฉด --advertise-address
์์ /etc/kubernetes/manifests/kube-apiserver.yaml
--advertise-address
๋ก ๋ณ๊ฒฝ ์ฌํญ์ ๋๋๋ฆฌ๋ ค๊ณ ํฉ๋๋ค.
์ด๋ค ๋จ์?
kubectl get all --export=true --all-namespaces -o yaml
์๋ ๊ธฐ์กด IP๋ ์ด๋์๋ ์กด์ฌํ์ง ์์ต๋๋ค.
์
๋ฐ์ดํธ: kubeadm upgrade diff
๋ ๋ณ๊ฒฝ์ ์ ์ํ์ง๋ง kubeadm upgrade apply
๋ ์ค์ ๋ก ์ฃผ์๋ฅผ ์ ํ ๋ณ๊ฒฝํ์ง ์์ ๊ฒ์ผ๋ก ๋ํ๋ฌ์ต๋๋ค. (์์ ๊ณผ ๊ฐ์ ๋ง์ ๋ฒ๊ทธ kubernetes 1.13 ์ค ํ๋)
@weisjohn ๊ฐ์ฌํฉ๋๋ค
@patricklucas ์ง์งํ๊ฒ
๋ ๋ช ํํ ์ ๋ณด๋ฅผ ์ํ๋ ์ฌ๋๋ค์ ์ํด ๋ค์๊ณผ ๊ฐ์ ๊ฒฝํ์ ํ์ต๋๋ค.
/etc/kubernetes
์๋ ๋ชจ๋ ๊ตฌ์ฑ ํ์ผ์ IP ์ฃผ์๋ฅผ ๊ต์ฒดํฉ๋๋ค.
shell oldip=192.168.1.91 newip=10.20.2.210 cd /etc/kubernetes # see before find . -type f | xargs grep $oldip # modify files in place find . -type f | xargs sed -i "s/$oldip/$newip/" # see after find . -type f | xargs grep $newip
/etc/kubernetes/pki
๋ฐฑ์
shell mkdir ~/k8s-old-pki cp -Rvf /etc/kubernetes/pki/* ~/k8s-old-pki
- ์ด์ IP ์ฃผ์๋ฅผ ๋์ฒด ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ๋
/etc/kubernetes/pki
์ธ์ฆ์ ์๋ณ(์ ๋ฆฌ ๊ฐ๋ฅ)
shell cd /etc/kubernetes/pki for f in $(find -name "*.crt"); do openssl x509 -in $f -text -noout > $f.txt; done grep -Rl $oldip . for f in $(find -name "*.crt"); do rm $f.txt; done
์ด์ IP๋ฅผ ์ฐธ์กฐํ
kube-system
๋ค์์คํ์ด์ค์์ configmap์ ์๋ณํ๊ณ ํธ์งํฉ๋๋ค.# find all the config map names configmaps=$(kubectl -n kube-system get cm -o name | \ awk '{print $1}' | \ cut -d '/' -f 2) # fetch all for filename reference dir=$(mktemp -d) for cf in $configmaps; do kubectl -n kube-system get cm $cf -o yaml > $dir/$cf.yaml done # have grep help you find the files to edit, and where grep -Hn $dir/* -e $oldip # edit those files, in my case, grep only returned these two: kubectl -n kube-system edit cm kubeadm-config kubectl -n kube-system edit cm kube-proxy
- IP ์ฃผ์ ๋ณ๊ฒฝ(๋ฐฐํฌ์ฉ cli ๋๋ gui๋ฅผ ํตํด)
์ด์ ๋จ๊ณ์์ grep์ผ๋ก ์๋ณ๋ ๊ฐ๊ฐ์ ๋ํ ์ธ์ฆ์์ ํค๋ฅผ ๋ชจ๋ ์ญ์ ํ๊ณ ํด๋น ์ธ์ฆ์๋ฅผ ์ฌ์์ฑํฉ๋๋ค.
์ฐธ๊ณ :
kubeadm admin phase certs ...
๋ฅผ ํตํด ์ธ์ฆ์๋ฅผ ๋ค์ ๋ง๋ค๊ธฐ ์ ์ ์ IP ์ฃผ์๋ฅผ ์ ์ฉํด์ผ ํฉ๋๋ค.rm apiserver.crt apiserver.key kubeadm alpha phase certs apiserver rm etcd/peer.crt etcd/peer.key kubeadm alpha phase certs etcd-peer
- kubelet ๋ฐ docker๋ฅผ ๋ค์ ์์ํ์ญ์์ค.
shell sudo systemctl restart kubelet sudo systemctl restart docker
- ์ ๊ตฌ์ฑ ์์ ๋ณต์ฌ
shell sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
@mariamTr ^
๋จ๊ณ๋ฅผ ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค.
๋ง์คํฐ ๋
ธ๋์์ ์ํํด์ผ ํ๋ ๋ณ๊ฒฝ ์ฌํญ๊ณผ ๊ทธ ํ ์ฌ๊ตฌ์ฑ๋ ๋ง์คํฐ ๋
ธ๋์ ์ฐธ์ฌํ๊ธฐ ์ํด ์ด์ ์์
์ ๋
ธ๋์ ์ ์ฉํด์ผ ํ๋ ์ ์ฐจ์ ๊ฐ์ ์ถ๊ฐ ์ ๋ณด๋ฅผ ์ ๊ณตํ ์ ์์ต๋๊น?
๋ฏธ๋ฆฌ ๊ฐ์ฌ๋๋ฆฝ๋๋ค :)
๋ง์คํฐ IP๋ฅผ ์ฌ์ค ๋คํธ์ํฌ๋ก ์ด๋ํ ๋ ์ค๋ฒ๋ ์ด ๋คํธ์ํฌ๋ ์ ๋ฐ์ดํธํ๋ ๊ฒ์ด ์ ์ฉํ ์ ์์ต๋๋ค. Calico๋ ํด๋น ์ธํฐํ์ด์ค์ ๋ฐ์ธ๋ฉ๋ ๋๊น์ง VPC ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ง ์์์ต๋๋ค.
env:
- name: IP_AUTODETECTION_METHOD
value: interface=eth1
kubeadm ์ํ ๋จ๊ณ ์ธ์ฆ์ apiserver
@weisjohn kubeadm alpha phase certs apiserver๋ v1.13.0์์ ์๋ํ์ง ์์ผ๋ฉฐ "์ด ๋ช ๋ น์ ์์ฒด์ ์ผ๋ก ์คํ๋์ง ์์ต๋๋ค. ์ฌ์ฉ ๊ฐ๋ฅํ ํ์ ๋ช ๋ น ๋ชฉ๋ก์ ์ฐธ์กฐํ์ญ์์ค." ์ ๋ฐ์ดํธ๋ ์๊ฒฌ์ด ์์ต๋๊น?
1.13์์ ๋ช
๋ น์ kubeadm init phase certs apiserver
.
https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init-phase/#cmd -phase-certs
๋งค์ฐ ์ ์ฉํ ์น๋ฃ ๋จ๊ณ - @patricklucas ๋ฐ @weisjohn์๊ฒ ๊ฐ์ฌ๋๋ฆฝ๋๋ค!
์ ์ฒ๋ผ IP ์ฃผ์๊ฐ ์ด๋ฏธ ๋ณ๊ฒฝ๋ ์ํ์์ ์์ํ์ฌ 4๋จ๊ณ์์ configmap์ ๋ณ๊ฒฝํ๊ธฐ ์ํด api-server์ ์ฐ๊ฒฐํ ์ ์๋ ๊ฒฝ์ฐ ํ ๊ฐ์ง ์ถ๊ฐ ํ:
api-server ์ธ์ฆ์๋ ํธ์คํธ ์ด๋ฆ kubernetes
๋ํด ์๋ช
๋์์ผ๋ฏ๋ก /etc/hosts
์ ์ IP ์ฃผ์์ ๋ณ์นญ์ผ๋ก ์ถ๊ฐํ ๋ค์ kubectl --server=https://kubernetes:6443 ...
์์ต๋๋ค.
@bboreham @weisjohn @patricklucas ๊ฒฝํํด ์ฃผ์
์ ๊ฐ์ฌํฉ๋๋ค. ๋ง์คํฐ ๋
ธ๋์์ IP๋ฅผ ๋ณ๊ฒฝํ ํ ์์
์ ๋
ธ๋์์ ๋ฌด์์ ํด์ผ ํ๋์ง ์กฐ์ธ ๋ถํ๋๋ฆฝ๋๋ค.
ํด๋ฌ์คํฐ์ ์ญ์ /์ถ๊ฐํ์๊ฒ ์ต๋๊น? ์๋๋ฉด __/etc/kubernetes/kubelet.conf_ ๋ฐ _/etc/kubernetes/pki/ca.crt_๋ฅผ ์๋์ผ๋ก ๋ณ๊ฒฝํ์๊ฒ ์ต๋๊น?
๋๋ ๊ทธ๊ฒ์ด ์ค๋๋ ๋ฌธ์ ๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์๋ง๋ ๋ด ์๊ฒฌ์ด ๋๊ตฐ๊ฐ์๊ฒ ์ ์ฉ ํ ๊ฒ์
๋๋ค.
๋ถํํ๋ @patricklucas ์ @weisjohn ์ด ์ ์ํ ์๋ฃจ์
์ด ์ ์๊ฒ ํจ๊ณผ๊ฐ ์์์ผ๋ฏ๋ก ์ ๊ฐ ์ง์ ๋ง๋ค์์ต๋๋ค.
systemctl stop kubelet docker
cd /etc/
# backup old kubernetes data
mv kubernetes kubernetes-backup
mv /var/lib/kubelet /var/lib/kubelet-backup
# restore certificates
mkdir -p kubernetes
cp -r kubernetes-backup/pki kubernetes
rm kubernetes/pki/{apiserver.*,etcd/peer.*}
systemctl start docker
# reinit master with data in etcd
# add --kubernetes-version, --pod-network-cidr and --token options if needed
kubeadm init --ignore-preflight-errors=DirAvailable--var-lib-etcd
# update kubectl config
cp kubernetes/admin.conf ~/.kube/config
# wait for some time and delete old node
sleep 120
kubectl get nodes --sort-by=.metadata.creationTimestamp
kubectl delete node $(kubectl get nodes -o jsonpath='{.items[?(@.status.conditions[0].status=="Unknown")].metadata.name}')
# check running pods
kubectl get pods --all-namespaces
@valerius257 ๊ณ ๋ง์์, ๋น์ ์ ์ฐ๋ฆฌ ์ฃผ๋ง์ ์ ์ฅํฉ๋๋ค)
@valerius257 ๊ฐ์ฌํฉ๋๋ค ๐
@patricklucas ๋ฐ @weisjohn์ ๋ชจ๋ ์์ฑ/์ง์๋ฅผ ์๋ ํ์ต๋๋ค . ๊ทธ๋ค์ ๋ด ํด๋ฌ์คํฐ์์ ์๋ํ์ง ์์์ต๋๋ค. ์ข์ ์ ์ ์ด๋ฌํ ์ง์นจ์ด ์ธ์ฆ์ ๋ฐ ํค์ ์ผ๋ถ ์ฃผ์ ์ธก๋ฉด๊ณผ ์ฒ๋ฆฌํด์ผ ํ๋ ์ผ์ ์ ๊ฐ์กฐํ๋ค๋ ๊ฒ์
๋๋ค.
@valerius257์ด ์ธ๊ธํ ์ง์นจ์ ๋ด kubeadm ๋ง์คํฐ ๋ ธ๋์ ๋งค์ฐ ํน์ ํ ๋ฌธ์ ๊ฐ ๋ฐ์ํ ๋๊น์ง ์ํํ๊ฒ ์๋ํ์ต๋๋ค. IP๊ฐ ๋ณ๊ฒฝ๋ kubeadm ๋ง์คํฐ ๋ ธ๋๋ฅผ ๋ณต๊ตฌํ๋ ค๊ณ ํ์ต๋๋ค.
@valerius257์ด ์ธ๊ธํ ๋จ๊ณ์ ํ์ ์์
ํ๋์ ๋จ์ผ ๋ง์คํฐ ๋
ธ๋์์ flannel n/w ํ๋ฌ๊ทธ์ธ์ ์ฌ์ฉํ๊ณ ์์์ต๋๋ค.
Flannel ๋ฌธ์ : kube-flannel-ds-xxxx ๋ฐฑ์คํ๊ฐ ์คํจํ ์ปจํ
์ด๋๋ฅผ ๋ค์ ์์ํจ
ํฌ๋ ์ํ: CrashLoopBackOff. ์ด๋ก ์ธํด core-dns-xxx์ ๊ฐ์ ๋ค๋ฅธ Pod๋ ๋ํ๋์ง ์์ต๋๋ค.
ํด๊ฒฐ: cidr n/w๋ฅผ ์ฌ์ฉํ์ฌ kubeadm init์ผ๋ก ํด๋ฌ์คํฐ๋ฅผ ์์ํ๊ธฐ ๋๋ฌธ์(IP๊ฐ ์ค๋๋์๊ฑฐ๋ ๋ง์คํฐ ๋
ธ๋๋ฅผ ์์ด์ ํ๋ ๋์) ๋ค์ ๋จ๊ณ์์ "/etc/kubernetes/manifests/kube-controller-manager"์์ cidr ์ค์ ์ ์ง์ ์ต๋๋ค. .yaml" ํ์ผ์
๋๋ค.
kubeadm ์ด๊ธฐํ --ignore-preflight-errors=DirAvailable--var-lib-etcd.
๋ฐ๋ผ์ "kubeadm init --token {{ kubeadm_token }} --pod-network-cidr=10.244.0.0/16" "๋ช
๋ น์ ์ฌ์ฉํ์ฌ kubeadm ๋ง์คํฐ ๋
ธ๋(์ฒซ ๋ฒ์งธ IP ์ฃผ์ ํฌํจ)๋ฅผ ์์ํ ๊ฒฝ์ฐ ํ ๋น ํ ์ IP๋ --pod-network-cidr=10.244.0.0/16์ผ๋ก ๋ค์ ๋ช
๋ น์ ์คํํด์ผ ํฉ๋๋ค.
" kubeadm ์ด๊ธฐํ --ignore-preflight-errors=DirAvailable--var-lib-etcd --token {{ kubeadm_token }} --pod-network-cidr=10.244.0.0/16"
๋๋ Spec:containers :command์์ ๋๋ฝ๋ ๊ฒฝ์ฐ ๋ค์ ๋งค๊ฐ๋ณ์๊ฐ ํฌํจ๋ "/etc/kubernetes/manifests/kube-controller-manager.yaml" ํ์ผ์ ์์ ํ์ญ์์ค.
๋ฌธ์ 2:
์ ํ๋ฆฌ์ผ์ด์
๋ค์์คํ์ด์ค ๋๋ kube-system์ ๋ชจ๋ ํฌ๋๋ ๋ค์๊ณผ ๊ฐ์ ํฌ๋ ๋ช
๋ น ์ค๋ช
์์ ์ค๋ฅ๋ฅผ ํ์ํ๊ธฐ ์์ํฉ๋๋ค.
"๊ฒฝ๊ณ FailedScheduling ๊ธฐ๋ณธ ์ค์ผ์ค๋ฌ 0/1 ๋
ธ๋๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. 1๊ฐ ๋
ธ๋์ ํฌ๋๊ฐ ํ์ฉํ์ง ์๋ ์ค์ผ์ด ์์ต๋๋ค."
๋ค์ ๋ช
๋ น์ ์คํํฉ๋๋ค. kubectl taint nodes --all node-role.kubernetes.io/master-
์ฑ ์์
๊ณต๊ฐ ๋๋ kube-system ๋ค์์คํ์ด์ค์์ ์คํ๋๋ ๋ชจ๋ ํฌ๋๋ฅผ ์ค๋ช
ํ๋ฉด ์ธ๊ธ๋ ์ค๋ฅ๊ฐ ๊ด์ฐฐ๋์ง ์์ต๋๋ค. ๋ค์ค ๋
ธ๋ ํด๋ฌ์คํฐ์์๋ ๊ฐ๋ณํ ์ฃผ์๊ฐ ํ์ํฉ๋๋ค.
@patricklucas ์ง์งํ๊ฒ
๋ ๋ช ํํ ์ ๋ณด๋ฅผ ์ํ๋ ์ฌ๋๋ค์ ์ํด ๋ค์๊ณผ ๊ฐ์ ๊ฒฝํ์ ํ์ต๋๋ค.
/etc/kubernetes
์๋ ๋ชจ๋ ๊ตฌ์ฑ ํ์ผ์ IP ์ฃผ์๋ฅผ ๊ต์ฒดํฉ๋๋ค.
shell oldip=192.168.1.91 newip=10.20.2.210 cd /etc/kubernetes # see before find . -type f | xargs grep $oldip # modify files in place find . -type f | xargs sed -i "s/$oldip/$newip/" # see after find . -type f | xargs grep $newip
/etc/kubernetes/pki
๋ฐฑ์
shell mkdir ~/k8s-old-pki cp -Rvf /etc/kubernetes/pki/* ~/k8s-old-pki
- ์ด์ IP ์ฃผ์๋ฅผ ๋์ฒด ์ด๋ฆ์ผ๋ก ์ฌ์ฉํ๋
/etc/kubernetes/pki
์ธ์ฆ์ ์๋ณ(์ ๋ฆฌ ๊ฐ๋ฅ)
shell cd /etc/kubernetes/pki for f in $(find -name "*.crt"); do openssl x509 -in $f -text -noout > $f.txt; done grep -Rl $oldip . for f in $(find -name "*.crt"); do rm $f.txt; done
์ด์ IP๋ฅผ ์ฐธ์กฐํ
kube-system
๋ค์์คํ์ด์ค์์ configmap์ ์๋ณํ๊ณ ํธ์งํฉ๋๋ค.# find all the config map names configmaps=$(kubectl -n kube-system get cm -o name | \ awk '{print $1}' | \ cut -d '/' -f 2) # fetch all for filename reference dir=$(mktemp -d) for cf in $configmaps; do kubectl -n kube-system get cm $cf -o yaml > $dir/$cf.yaml done # have grep help you find the files to edit, and where grep -Hn $dir/* -e $oldip # edit those files, in my case, grep only returned these two: kubectl -n kube-system edit cm kubeadm-config kubectl -n kube-system edit cm kube-proxy
- IP ์ฃผ์ ๋ณ๊ฒฝ(๋ฐฐํฌ์ฉ cli ๋๋ gui๋ฅผ ํตํด)
์ด์ ๋จ๊ณ์์ grep์ผ๋ก ์๋ณ๋ ๊ฐ๊ฐ์ ๋ํ ์ธ์ฆ์์ ํค๋ฅผ ๋ชจ๋ ์ญ์ ํ๊ณ ํด๋น ์ธ์ฆ์๋ฅผ ์ฌ์์ฑํฉ๋๋ค.
์ฐธ๊ณ :
kubeadm admin phase certs ...
๋ฅผ ํตํด ์ธ์ฆ์๋ฅผ ๋ค์ ๋ง๋ค๊ธฐ ์ ์ ์ IP ์ฃผ์๋ฅผ ์ ์ฉํด์ผ ํฉ๋๋ค.rm apiserver.crt apiserver.key kubeadm alpha phase certs apiserver rm etcd/peer.crt etcd/peer.key kubeadm alpha phase certs etcd-peer
- kubelet ๋ฐ docker๋ฅผ ๋ค์ ์์ํ์ญ์์ค.
shell sudo systemctl restart kubelet sudo systemctl restart docker
- ์ ๊ตฌ์ฑ ์์ ๋ณต์ฌ
shell sudo cp /etc/kubernetes/admin.conf $HOME/.kube/config
@mariamTr ^
newip ๋์ ์ ์ด๋ค ip๋ฅผ ์ฃผ์ด์ผํฉ๋๊น?
์ฐ๋ฆฌ ๊ณ ์ ์ ip๋ฅผ ๋ง๋ค ์ ์์ต๋๊น?
@VipinKrizz ์ด ๋ฌธ์ ์ ์ปจํ ์คํธ๋ ์ธํ๋ผ ๋ด ์์ธ์ผ๋ก ์ธํด IP๊ฐ ์ด๋ฏธ ๋ณ๊ฒฝ๋์๋ค๋ ๊ฒ์ ๋๋ค. ํน์ ์ค์ ์ ๋ํด ์ ์๊ณ ์๋ ์ฌ๋ ์ธ์๋ ์ด๋ค IP๋ฅผ ์ฌ์ฉํด์ผ ํ๋์ง ๋๋ตํ ์ ์๋ ์ฌ๋์ด ์์ต๋๋ค.
Slack์์ ์ด์ ๋ํด ์ด์ผ๊ธฐํ ์ฌ๋์ ์ฐพ์ ์ ์์๊น์? Kubeadm ๋ฌธ์ ๋ ์ฌ๋ฐ๋ฅธ ์์น๊ฐ ์๋๋๋ค.
@valerius257 ๊ทธ ์คํฌ๋ฆฝํธ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค. ์ด์ ์ ์ ๊ทผ ๋ฐฉ์์ ์ฌ๋ฌ ๊ฐ์ง ๋จ์ ์ด ์์ต๋๋ค. ๊ทํ์ ์๋ฃจ์ ์ด ์๋ํ์์ ํ์ธํ ์ ์์ง๋ง ๋ชจ๋ k8์์์ ๊ฐ์ด ์์ ๊ฐ์ฅ์๋ฆฌ๊ฐ ๋ง์ด ์์ต๋๋ค. ํ์ฑํ๋ ์๋น์ค/๋ด์ฅ, dns, ํน์ ์คํ ๋ฆฌ์ง ํด๋์ค ๋ฑ์ ๋ชจ๋ ํจ์น๋ฅผ ๋ค์ ์ ์ฉํด์ผ ํ์ต๋๋ค.
ํ์ง๋ง ๋ค, ๋น์ ์ ๋๋ณธ์ด ์ค๋ ์ ๋ฒ ์ด์ปจ์ ๊ตฌํด์คฌ์ต๋๋ค.
@ valerius257 ๊ทํ์ ๋จ๊ณ๋ฅผ ๋ฐ๋์ง๋ง ๋ฌธ์ ๊ฐ ์๋์ ๋ํ๋ฉ๋๋ค.
root@ubuntu :/etc/kubernetes/pki# kubeadm init --ignore-preflight-errors=DirAvailable--var-lib-etcd
W0122 10:15:34.819150 102032 version.go:101] ์ธํฐ๋ท์์ Kubernetes ๋ฒ์ ์ ๊ฐ์ ธ์ฌ ์ ์์ต๋๋ค: URL " https://dl.k8s.io/release/stable-1.txt ": Get https: //dl.k8s.io/release/stable-1.txt : ๋ค์ด์ผ tcp: 127.0.0.53:53์์ dl.k8s.io ์กฐํ: ์๋ฒ ์ค์๋
W0122 10:15:34.819340 102032 version.go:102] ๋ก์ปฌ ํด๋ผ์ด์ธํธ ๋ฒ์ : v1.16.3์ผ๋ก ํด๋ฐฑ
[์ด๊ธฐํ] Kubernetes ๋ฒ์ ์ฌ์ฉ: v1.16.3
[์คํ ์ ] ์คํ ์ ๊ฒ์ฌ ์คํ
[๊ฒฝ๊ณ IsDockerSystemdCheck]: "cgroupfs"๋ฅผ Docker cgroup ๋๋ผ์ด๋ฒ๋ก ๊ฐ์งํ์ต๋๋ค. ๊ถ์ฅ ๋๋ผ์ด๋ฒ๋ "systemd"์
๋๋ค. https://kubernetes.io/docs/setup/cri/ ์ ๊ฐ์ด๋๋ฅผ ๋ฐ๋ฅด์ญ์์ค.
[๊ฒฝ๊ณ DirAvailable--var-lib-etcd]: /var/lib/etcd๊ฐ ๋น์ด ์์ง ์์ต๋๋ค.
[ํ๋ฆฌํ๋ผ์ดํธ] Kubernetes ํด๋ฌ์คํฐ ์ค์ ์ ํ์ํ ์ด๋ฏธ์ง ๊ฐ์ ธ์ค๊ธฐ
[ํ๋ฆฌํ๋ผ์ดํธ] ์ธํฐ๋ท ์ฐ๊ฒฐ ์๋์ ๋ฐ๋ผ 1~2๋ถ ์ ๋ ์์๋ ์ ์์ต๋๋ค.
[ํ๋ฆฌํ๋ผ์ดํธ] 'kubeadm config images pull'์ ์ฌ์ฉํ์ฌ ๋ฏธ๋ฆฌ ์ด ์์
์ ์ํํ ์๋ ์์ต๋๋ค.
[kubelet-start] "/var/lib/kubelet/kubeadm-flags.env" ํ์ผ์ ํ๋๊ทธ๊ฐ ์๋ kubelet ํ๊ฒฝ ํ์ผ ์ฐ๊ธฐ
[kubelet-start] "/var/lib/kubelet/config.yaml" ํ์ผ์ kubelet ๊ตฌ์ฑ ์ฐ๊ธฐ
[kubelet-start] kubelet ์๋น์ค ํ์ฑํ
[certs] certificateDir ํด๋ "/etc/kubernetes/pki" ์ฌ์ฉ
[certs] ๊ธฐ์กด ca ์ธ์ฆ ๊ธฐ๊ด ์ฌ์ฉ
[certs] "apiserver" ์ธ์ฆ์ ๋ฐ ํค ์์ฑ
[certs] apiserver ์๋น ์ธ์ฆ์๋ DNS ์ด๋ฆ [ubuntu kubernetes kubernetes.default kubernetes.default.svc kubernetes.default.svc.cluster.local] ๋ฐ IP [10.96.0.1 192.168.120.137]์ ๋ํด ์๋ช
๋์์ต๋๋ค.
[certs] ๋์คํฌ์ ๊ธฐ์กด apiserver-kubelet-client ์ธ์ฆ์ ๋ฐ ํค ์ฌ์ฉ
[certs] ๊ธฐ์กด front-proxy-ca ์ธ์ฆ ๊ธฐ๊ด ์ฌ์ฉ
[certs] ๋์คํฌ์ ๊ธฐ์กด ํ๋ก ํธ ํ๋ก์ ํด๋ผ์ด์ธํธ ์ธ์ฆ์ ๋ฐ ํค ์ฌ์ฉ
[certs] ๊ธฐ์กด etcd/ca ์ธ์ฆ ๊ธฐ๊ด ์ฌ์ฉ
[certs] ๋์คํฌ์ ๊ธฐ์กด etcd/server ์ธ์ฆ์ ๋ฐ ํค ์ฌ์ฉ
[certs] "etcd/peer" ์ธ์ฆ์ ๋ฐ ํค ์์ฑ
[์ธ์ฆ์] etcd/ํผ์ด ์๋น์ค ์ธ์ฆ์๋ DNS ์ด๋ฆ [ubuntu localhost] ๋ฐ IP [192.168.120.137 127.0.0.1 ::1]์ ๋ํด ์๋ช
๋์์ต๋๋ค.
[certs] ๋์คํฌ์ ๊ธฐ์กด etcd/healthcheck-client ์ธ์ฆ์ ๋ฐ ํค ์ฌ์ฉ
[certs] ๋์คํฌ์ ๊ธฐ์กด apiserver-etcd-client ์ธ์ฆ์ ๋ฐ ํค ์ฌ์ฉ
[certs] ๊ธฐ์กด "sa" ํค ์ฌ์ฉ
[kubeconfig] kubeconfig ํด๋ "/etc/kubernetes" ์ฌ์ฉ
[kubeconfig] "admin.conf" kubeconfig ํ์ผ ์์ฑ
[kubeconfig] "kubelet.conf" kubeconfig ํ์ผ ์์ฑ
[kubeconfig] "controller-manager.conf" kubeconfig ํ์ผ ์์ฑ
[kubeconfig] "scheduler.conf" kubeconfig ํ์ผ ์์ฑ
[์ ์ด ํ๋ฉด] ๋งค๋ํ์คํธ ํด๋ "/etc/kubernetes/manifests" ์ฌ์ฉ
[์ ์ด ํ๋ฉด] "kube-apiserver"์ ๋ํ ์ ์ ํฌ๋ ๋งค๋ํ์คํธ ์์ฑ
[์ ์ด ํ๋ฉด] "kube-controller-manager"์ ๋ํ ์ ์ Pod ๋งค๋ํ์คํธ ๋ง๋ค๊ธฐ
[์ ์ด ํ๋ฉด] "kube-scheduler"์ ๋ํ ์ ์ ํฌ๋ ๋งค๋ํ์คํธ ์์ฑ
[etcd] "/etc/kubernetes/manifests"์์ ๋ก์ปฌ etcd์ ๋ํ ์ ์ Pod ๋งค๋ํ์คํธ ๋ง๋ค๊ธฐ
[wait-control-plane] kubelet์ด "/etc/kubernetes/manifests" ๋๋ ํ ๋ฆฌ์์ ์ ์ ํ๋๋ก ์ปจํธ๋กค ํ๋ ์ธ์ ๋ถํ
ํ๊ธฐ๋ฅผ ๊ธฐ๋ค๋ฆฝ๋๋ค. ์ต๋ 4m0์ด๊ฐ ์์๋ ์ ์์ต๋๋ค.
[kubelet-check] 40์ด์ ์ด๊ธฐ ์ ํ ์๊ฐ์ด ์ง๋ฌ์ต๋๋ค.
[kubelet-check] kubelet์ด ์คํ๋์ง ์๊ฑฐ๋ ์ ์์ ์ด์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
[kubelet-check] 'curl -sSL http://localhost :10248/healthz'์ ๊ฐ์ HTTP ํธ์ถ์ด ์ค๋ฅ๋ก ์ธํด ์คํจํ์ต๋๋ค. Get http://localhost :10248/healthz: dial tcp 127.0.0.1:10248: connect: connection ๊ฑฐ์ ํ๋ค.
[kubelet-check] kubelet์ด ์คํ๋์ง ์๊ฑฐ๋ ์ ์์ ์ด์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
[kubelet-check] 'curl -sSL http://localhost :10248/healthz'์ ๊ฐ์ HTTP ํธ์ถ์ด ์ค๋ฅ๋ก ์ธํด ์คํจํ์ต๋๋ค. Get http://localhost :10248/healthz: dial tcp 127.0.0.1:10248: connect: connection ๊ฑฐ์ ํ๋ค.
[kubelet-check] kubelet์ด ์คํ๋์ง ์๊ฑฐ๋ ์ ์์ ์ด์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
[kubelet-check] 'curl -sSL http://localhost :10248/healthz'์ ๊ฐ์ HTTP ํธ์ถ์ด ์ค๋ฅ๋ก ์ธํด ์คํจํ์ต๋๋ค. Get http://localhost :10248/healthz: dial tcp 127.0.0.1:10248: connect: connection ๊ฑฐ์ ํ๋ค.
[kubelet-check] kubelet์ด ์คํ๋์ง ์๊ฑฐ๋ ์ ์์ ์ด์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
[kubelet-check] 'curl -sSL http://localhost :10248/healthz'์ ๊ฐ์ HTTP ํธ์ถ์ด ์ค๋ฅ๋ก ์ธํด ์คํจํ์ต๋๋ค. Get http://localhost :10248/healthz: dial tcp 127.0.0.1:10248: connect: connection ๊ฑฐ์ ํ๋ค.
[kubelet-check] kubelet์ด ์คํ๋์ง ์๊ฑฐ๋ ์ ์์ ์ด์ง ์์ ๊ฒ ๊ฐ์ต๋๋ค.
[kubelet-check] 'curl -sSL http://localhost :10248/healthz'์ ๊ฐ์ HTTP ํธ์ถ์ด ์ค๋ฅ๋ก ์คํจํ์ต๋๋ค. Get http://localhost :10248/healthz: dial tcp 127.0.0.1:10248: connect: connection ๊ฑฐ์ ํ๋ค.
์ ๊ฐ์ค๋ฝ๊ฒ๋ ๋ค์๊ณผ ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ์ต๋๋ค.
์กฐ๊ฑด์ ๊ธฐ๋ค๋ฆฌ๋ ์๊ฐ์ด ์ด๊ณผ๋์์ต๋๋ค.
์ด ์ค๋ฅ๋ ๋ค์์ผ๋ก ์ธํด ๋ฐ์ํ ์ ์์ต๋๋ค.
- kubelet์ด ์คํ๋์ง ์์ต๋๋ค.
- ์ด๋ค ์์ผ๋ก๋ ๋
ธ๋์ ์๋ชป๋ ๊ตฌ์ฑ์ผ๋ก ์ธํด kubelet์ด ๋น์ ์์
๋๋ค(ํ์ํ cgroups ๋นํ์ฑํ๋จ).
์์คํ
์ ์ ๊ณต๊ธ ์์คํ
์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ๋ค์ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ์ค๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์ต๋๋ค.
- 'systemctl ์ํ kubelet'
- 'journalctl -xeu kubelet'
๋ํ ์ปจํ
์ด๋ ๋ฐํ์์์ ์์ํ ๋ ์ปจํธ๋กค ํ๋ ์ธ ๊ตฌ์ฑ ์์๊ฐ ์ถฉ๋ํ๊ฑฐ๋ ์ข
๋ฃ๋์์ ์ ์์ต๋๋ค.
๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ ํธํ๋ ์ปจํ
์ด๋ ๋ฐํ์ CLI(์: docker)๋ฅผ ์ฌ์ฉํ์ฌ ๋ชจ๋ ์ปจํ
์ด๋๋ฅผ ๋์ดํ์ญ์์ค.
๋ค์์ ๋์ปค์์ ์คํ๋๋ ๋ชจ๋ Kubernetes ์ปจํ
์ด๋๋ฅผ ๋์ดํ๋ ๋ฐฉ๋ฒ์ ํ ๊ฐ์ง ์์
๋๋ค.
- '๋์ปค PS -a | ๊ทธ๋ ํ๋ธ | grep -v ์ผ์ ์ค์ง'
์คํจํ ์ปจํ
์ด๋๋ฅผ ์ฐพ์ผ๋ฉด ๋ค์์ ์ฌ์ฉํ์ฌ ๋ก๊ทธ๋ฅผ ๊ฒ์ฌํ ์ ์์ต๋๋ค.
- '๋์ปค ๋ก๊ทธ CONTAINERID'
์ค๋ฅ ์คํ ๋จ๊ณ wait-control-plane: Kubernetes ํด๋ฌ์คํฐ๋ฅผ ์ด๊ธฐํํ ์ ์์ต๋๋ค.
์ด ์ค๋ฅ์ ์คํ ์ถ์ ์ ๋ณด๋ ค๋ฉด --v=5 ์ด์์ผ๋ก ์คํํ์ญ์์ค.
์น์ ํ๊ฒ ๋์์ฃผ์ธ์
๋๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ์ด๊ฒ์ ๋ฌ์ฑํ ์ ์์๋ค:
- /etc/kubernetes์ ๋ชจ๋ ๊ตฌ์ฑ ํ์ผ์์ IP ์ฃผ์ ๋ฐ๊พธ๊ธฐ
- /etc/kubernetes/pki ๋ฐฑ์
- /etc/kubernetes/pki์์ ์ด์ IP ์ฃผ์๋ฅผ ๋์ฒด ์ด๋ฆ์ผ๋ก ๊ฐ์ง ์ธ์ฆ์ ์๋ณ[1]
- ๊ฐ๊ฐ์ ๋ํ ์ธ์ฆ์์ ํค๋ฅผ ๋ชจ๋ ์ญ์ ํฉ๋๋ค (๋์๊ฒ๋ apiserver ๋ฐ etcd/peer์์ต๋๋ค)
kubeadm alpha phase certs
์ฌ์ฉํ์ฌ ์ธ์ฆ์ ์ฌ์์ฑ [2]- ์ด์ IP[3]๋ฅผ ์ฐธ์กฐํ
kube-system
๋ค์์คํ์ด์ค์์ configmap ์๋ณ- ํด๋น ๊ตฌ์ฑ ๋งต์ ์๋์ผ๋ก ํธ์ง
- kubelet ๋ฐ docker ๋ค์ ์์(๋ชจ๋ ์ปจํ ์ด๋๋ฅผ ๊ฐ์ ๋ก ๋ค์ ์์ฑํ๊ธฐ ์ํด)
[1]
/etc/kubernetes/pki# for f in $(find -name "*.crt"); do openssl x509 -in $f -text -noout > $f.txt; done /etc/kubernetes/pki# grep -Rl 12\\.34\\.56\\.78 . ./apiserver.crt.txt ./etcd/peer.crt.txt /etc/kubernetes/pki# for f in $(find -name "*.crt"); do rm $f.txt; done
[2]
/etc/kubernetes/pki# rm apiserver.crt apiserver.key /etc/kubernetes/pki# kubeadm alpha phase certs apiserver ... /etc/kubernetes/pki# rm etcd/peer.crt etcd/peer.key /etc/kubernetes/pki# kubeadm alpha phase certs etcd-peer ...
[์ผ]
$ kubectl -n kube-system get cm -o yaml | less ... $ kubectl -n kube-system edit cm ...
๋๋ฅผ ์ํด ์ผํ์ต๋๋ค ๊ฐ์ฌํฉ๋๋ค
์ ์ผํ ๊ฒ์ ๋น์ ์ด ์ฌ์ฉํด์ผํ๋ค๋ ๊ฒ์ ๋๋ค.
kubeadm init phase ..
์ต์ kubectl ๋ฒ์ ์ ๊ฒฝ์ฐ
@bboreham
@patricklucas๊ฐ ์ธ๊ธํ ๋จ๊ณ๋ฅผ ๋ฐ๋์ต๋๋ค.
4๋จ๊ณ์์ ์ธ๊ธํ๋ฏ์ด IP๊ฐ ์ด๋ฏธ ๋ณ๊ฒฝ๋์ด api-server์ ์ฐ๊ฒฐํ ์ ์๊ธฐ ๋๋ฌธ์ /etc/hosts์์ ์ผ๋ถ ๊ตฌ์ฑ์ ์ํํด์ผ ํฉ๋๋ค.
๋ค์์ ์ฌ์ฉํ์ฌ ์ธ์ฆ์ ์์ฑ
kubeadm init --kubernetes-version=v1.16.3 ๋จ๊ณ ์ธ์ฆ์ API ์๋ฒ
/etc/hosts์์ ๋ณ๊ฒฝํ์ต๋๋ค.
kubectl --server=https://๋ฅผ ์๋ํ์ต๋๋ค.
/etc/hosts์์ ์ํํด์ผ ํ๋ ํน์ ๊ตฌ์ฑ์??
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋๋ ๊ทธ๊ฒ์ด ์ค๋๋ ๋ฌธ์ ๋ผ๋ ๊ฒ์ ์๊ณ ์์ง๋ง ์๋ง๋ ๋ด ์๊ฒฌ์ด ๋๊ตฐ๊ฐ์๊ฒ ์ ์ฉ ํ ๊ฒ์ ๋๋ค.
๋ถํํ๋ @patricklucas ์ @weisjohn ์ด ์ ์ํ ์๋ฃจ์ ์ด ์ ์๊ฒ ํจ๊ณผ๊ฐ ์์์ผ๋ฏ๋ก ์ ๊ฐ ์ง์ ๋ง๋ค์์ต๋๋ค.