์ ์ ๋ ๋ง์ ๊ณ ๊ฐ์ด ํด๋ฌ์คํฐ ๋ด์ ์๋น์ค์ ์ก์ธ์คํ ์ ์๋๋ก Kubernetes ํด๋ฌ์คํฐ์ ๋ํ ์ก์ธ์ค๋ฅผ ์ ๊ณตํด๋ฌ๋ผ๊ณ ์์ฒญํ๊ณ ์์ต๋๋ค. ์ด๋ฅผ ํตํด ์ผ๋ถ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์๋น์ค์ ์ง์ ์ฐ๊ฒฐํ๊ณ ๋ก์ปฌ ์ ํ๋ฆฌ์ผ์ด์ ์ ํด๋ฌ์คํฐ ๋ด์ ์ ํ๋ฆฌ์ผ์ด์ ๊ณผ ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด ๋ก์ปฌ ์ปดํจํฐ์์ ์๋น์ค๋ก ์ฐ๊ฒฐํด์ผ ํ๋ ๊ฒฝ์ฐ๊ฐ ์์ต๋๋ค. memcached.staging.svc.cluster.local
. ์ฐ๋ฆฌ๋ ํด๋ผ์ด์ธํธ๊ฐ ์ฐ๊ฒฐ๋๋ ํด๋ฌ์คํฐ ๋ด์ VPN์ ์ฌ์ฉํ์ฌ ์ด ๊ธฐ๋ฅ์ ์ ๊ณตํฉ๋๋ค. ์ด๋ฅผ ์ํด ํฌ๋, ์๋น์ค์ ์๋ธ๋ท์ ์๋ฆฌ๊ณ ํด๋ฌ์คํฐ DNS๋ฅผ ํด๋ผ์ด์ธํธ์ ํธ์ํฉ๋๋ค. ๋ฐ๋ผ์ ํด๋ผ์ด์ธํธ๊ฐ ์๋น์ค์ ์ฐ๊ฒฐ์ ์๋ํ ๋ memcached.staging.svc.cluster.local
, ์์ฒญ์ ํด๋ฌ์คํฐ DNS๋ก ์ด๋ํ๊ณ ์ด์ ๋ํ ์๋ต์ผ๋ก ํด๋ฌ์คํฐ ์๋น์ค ๋คํธ์ํฌ ๋๋ Pod ์ฃผ์์์ ์ด ์๋น์ค์ ์ฃผ์๋ฅผ ๋ฐ์ต๋๋ค.
kubeadm์ ์ฌ์ฉํ์ฌ K8s ํด๋ฌ์คํฐ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ์ฌ๊ธฐ์ ๊ธฐ๋ณธ ์๋น์ค ์๋ธ๋ท์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. 192.168.0.0/16
์ด๊ณ ํฌ๋ ๋คํธ์ํฌ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. 10.244.0.0/16
. ์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ ๊ฒ์ด ์ ์๋ํ์ง๋ง ๋ช ๊ฐ์ง ์ฌํญ์ด ์์ต๋๋ค.
- ์๋ธ๋ท
192.168.*.*
ํด๋ผ์ด์ธํธ ์ฌ๋ฌด์ค ๋คํธ์ํฌ์์ ์์ฃผ ์ฌ์ฉ๋๋ฉฐ ๊ฐ๋ฐ์ ํ ๋คํธ์ํฌ์์๋ ํจ์ฌ ๋ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ถฉ๋์ด ๋ฐ์ํฉ๋๋ค. ํ ๋ผ์ฐํฐ๋ ์ด ์๋ธ๋ท์์ ์๋ํ๊ณ VPN์ ์ด๋ฌํ ์๋ธ๋ท์ ํด๋ฌ์คํฐ์์ ํด๋ผ์ด์ธํธ๋ก ํธ์ํฉ๋๋ค. - ์ฌ๋ฌ ํด๋ฌ์คํฐ(ํ๋ก๋์ , ์คํ ์ด์ง ๋ฐ/๋๋ ์ฌ๋ฌ ๊ฐ๋ฐ ํด๋ฌ์คํฐ)๊ฐ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ชจ๋ ํด๋ฌ์คํฐ๋ ํฌ๋์ ์๋น์ค์ ๋ํด ๋์ผํ ์๋ธ๋ท์ ๊ฐ๊ฒ ๋๋ฏ๋ก ์ฌ๋ฌ ํด๋ฌ์คํฐ์ ์๋น์ค๋ฅผ ๋์์ ์์ ํ๋ ๋ฐ ํฐ ์ด๋ ค์์ด ๋ฐ์ํฉ๋๋ค.
์ฐ๋ฆฌ๋ ์ผ๋ฐ์ ์ผ๋ก ๋ชจ๋ ํด๋ฌ์คํฐ๊ฐ ์๋ก ๋ค๋ฅธ ๋คํธ์ํฌ๋ฅผ ๊ฐ๋๋ก ๋์ผํ ํ๋ก์ ํธ ๋ด์ ์๋น์ค ๋ฐ ํฌ๋์ ๋ํด ์๋ก ๋ค๋ฅธ ์๋ธ๋ท์ ์ฌ์ฉํ๋ ๋ฐฉ์์ ์ค๋ ์ ๋ถํฐ ์ฑํํ์ต๋๋ค. ๊ทธ๋ฌ๋ ์ด์ ์ค์ธ ํด๋ฌ์คํฐ๋ ๋ง์ ์๋น์ค, ์ํ ์ ์ฅ ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ์ ์คํํ๊ธฐ ๋๋ฌธ์ ์ฒ์๋ถํฐ ๋กค์ค๋ฒํ๊ณ ์ถ์ง ์์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ์ฐ๋ฆฌ๋ ์ค์ค๋ก์๊ฒ ์ง๋ฌธํ์ต๋๋ค. ๊ธฐ์กด ํด๋ฌ์คํฐ์์ ์๋ธ๋ท์ ๋ณ๊ฒฝํ๋ ๋ฐฉ๋ฒ์ ๋ฌด์์ ๋๊น?
์๋ฃจ์ ๊ฒ์
๊ฐ์ฅ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ ๋ค์ ๋ง๋๋ ๊ฒ์
๋๋ค. ๋ชจ๋ ClusterIP ์ ํ์ ์๋น์ค. ์ต์
์ผ๋ก,
๋ค์ ํ๋ก์ธ์ค์๋ ๋ฌธ์ ๊ฐ ์์ต๋๋ค. ๋ชจ๋ ๊ตฌ์ฑ์ด ์๋ฃ๋ ํ ํฌ๋๋ /etc/resolv.conf์์ ์ด์ IP๋ฅผ DNS ์ด๋ฆ ์๋ฒ๋ก ์ฌ์ฉํฉ๋๋ค.
์ฌ์ ํ ํด๊ฒฐ์ฑ ์ ์ฐพ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ kubeadm Reset์ ์ฌ์ฉํ์ฌ ์ ์ฒด ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ค์ ํ๊ณ ๋ค์ ์ด๊ธฐํํด์ผ ํ์ต๋๋ค.
๊ทธ๋ฌ๋ ์ด๊ฒ์ ๋ชจ๋ ์ฌ๋์๊ฒ ์ ํฉํ์ง ์์ต๋๋ค... ์ฐ๋ฆฌ ์ฌ๋ก์ ๋ํ ์์ธํ ์๊ฐ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ํ๋๋ฌ์ด ์ฌ์ฉ๋ฉ๋๋ค.
- ํด๋ผ์ฐ๋์ ํ๋์จ์ด ๋ชจ๋์ ํด๋ฌ์คํฐ๊ฐ ์์ต๋๋ค.
- ํด๋ฌ์คํฐ์ ๋ชจ๋ ์๋น์ค๋ฅผ ์ฌ๋ฐฐํฌํ๋ ๊ฒ์ ํผํ๊ณ ์ถ์ต๋๋ค.
- ์ผ๋ฐ์ ์ผ๋ก ์ต์ํ์ ๋ฌธ์ ๋ก ๋ชจ๋ ์์ ์ ์ํํ ํ์๊ฐ ์์ต๋๋ค.
- Kubernetes ๋ฒ์ ์ 1.16.6์ ๋๋ค(๊ทธ๋ฌ๋ ์ถ๊ฐ ๋จ๊ณ๋ ๋ค๋ฅธ ๋ฒ์ ์์๋ ์ ์ฌํฉ๋๋ค).
- ์ฃผ์ ์์
์ ์๋น์ค ์๋ธ๋ท๊ณผ ํจ๊ป kubeadm์ ์ฌ์ฉํ์ฌ ๋ฐฐํฌ๋ ํด๋ฌ์คํฐ์์
192.168.0.0/16
, ๋ค์์ผ๋ก ๋์ฒด172.24.0.0/16
.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ Kubernetes์์ etcd์ ๋ฌด์์ ์ด๋ป๊ฒ ์ ์ฅํ๋์ง, ์ด๋ฅผ ํตํด ๋ฌด์์ ํ ์ ์๋์ง ์ค๋ซ๋์ ๊ด์ฌ์ ๊ฐ์ ธ์์ต๋๋ค. ๊ทธ๋์ ์ฐ๋ฆฌ๋ ๋ค์๊ณผ ๊ฐ์ด ์๊ฐํ์ต๋๋ค.etcd์ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธํ๊ณ ๊ธฐ์กด IP ์ฃผ์(์๋ธ๋ท)๋ฅผ ์ IP ์ฃผ์(์๋ธ๋ท)๋ก ๋ฐ๊พธ๋ ๊ฒ์ ์ด๋จ๊น์??ยป
etcd์ ๋ฐ์ดํฐ ์์
์ ์ํด ๊ธฐ์ฑ ๋๊ตฌ๋ฅผ ๊ฒ์ํ์ง๋ง ๋ฌธ์ ๋ฅผ ์์ ํ ํด๊ฒฐํ๋ ๋๊ตฌ๋ฅผ ์ฐพ์ง ๋ชปํ์ต๋๋ค. (๊ทธ๋ฐ๋ฐ etcd์์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ์์
ํ ์ ์๋ ์ ํธ๋ฆฌํฐ์ ๋ํด ์๊ณ ๊ณ์๋ค๋ฉด ๋งํฌ๋ฅผ ์๋ ค์ฃผ์๋ฉด ๊ฐ์ฌํ๊ฒ ์ต๋๋ค.) ๊ทธ๋ฌ๋ ์ข์ ์ถ๋ฐ์ ์
์ด ์ ํธ๋ฆฌํฐ๋ ์ธ์ฆ์๋ฅผ ์ฌ์ฉํ์ฌ etcd์ ์ฐ๊ฒฐํ๊ณ ๋ช
๋ น์ ์ฌ์ฉํ์ฌ ๊ทธ๊ณณ์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ์ ์์ต๋๋ค. ls
, get
, dump
.
etcdhelper ์ถ๊ฐ
๋ค์ ์๊ฐ์ ๋ ผ๋ฆฌ์ ์ ๋๋ค. "etcd์ ๋ฐ์ดํฐ๋ฅผ ์ฐ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ์ฌ ์ด ์ ํธ๋ฆฌํฐ๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ ๋ง๋ ์ด์ ๋ ๋ฌด์์ ๋๊น?"
๋ ๊ฐ์ง ์๋ก์ด ๊ธฐ๋ฅ์ ๊ฐ์ถ etcdhelper์ ์์ ๋ ๋ฒ์ ์ด ๋์์ต๋๋ค. changeServiceCIDR
ะธ changePodCIDR
. ๊ทธ๋
์๊ฒ ์ฝ๋๋ฅผ ๋ณผ ์ ์์ด์
์๋ก์ด ๊ธฐ๋ฅ์ ๊ธฐ๋ฅ์ ๋ฌด์์ธ๊ฐ์? ์ฐ์ฐ changeServiceCIDR
:
- ๋์๋ฆฌ์ผ๋ผ์ด์ ๋ฅผ ์์ฑํฉ๋๋ค.
- CIDR์ ๋์ฒดํ๊ธฐ ์ํด ์ ๊ท์์ ์ปดํ์ผํฉ๋๋ค.
- ํด๋ฌ์คํฐ์์ ClusterIP ์ ํ์ ์ฌ์ฉํ๋ ๋ชจ๋ ์๋น์ค๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
- etcd์ ๊ฐ์ Go ๊ฐ์ฒด๋ก ๋์ฝ๋ฉํฉ๋๋ค.
- ์ ๊ท์์ ์ฌ์ฉํ์ฌ ์ฃผ์์ ์ฒ์ XNUMX๋ฐ์ดํธ๋ฅผ ๋ฐ๊ฟ๋๋ค.
- ์๋น์ค์ ์ ์๋ธ๋ท์ IP ์ฃผ์๋ฅผ ํ ๋นํฉ๋๋ค.
- ์ง๋ ฌ ๋ณํ๊ธฐ๋ฅผ ๋ง๋ค๊ณ , Go ๊ฐ์ฒด๋ฅผ protobuf๋ก ๋ณํํ๊ณ , etcd์ ์ ๋ฐ์ดํฐ๋ฅผ ์๋๋ค.
๊ธฐ๋ฅ changePodCIDR
๋ณธ์ง์ ์ผ๋ก ์ ์ฌ changeServiceCIDR
- ์๋น์ค ์ฌ์์ ํธ์งํ๋ ๋์ ๋
ธ๋์ ๋ํด์๋ง ํธ์งํ๊ณ ๋ณ๊ฒฝํฉ๋๋ค. .spec.PodCIDR
์ ์๋ธ๋ท์ผ๋ก.
์ฐ์ต
์๋น์ค CIDR ๋ณ๊ฒฝ
์์ ๊ตฌํ ๊ณํ์ ๋งค์ฐ ๊ฐ๋จํ์ง๋ง ํด๋ฌ์คํฐ์ ๋ชจ๋ ํฌ๋๋ฅผ ๋ค์ ์์ฑํ ๋ ๋ค์ดํ์์ด ๋ฐ์ํฉ๋๋ค. ์ฃผ์ ๋จ๊ณ๋ฅผ ์ค๋ช ํ ํ, ์ด๋ก ์ ์ผ๋ก ์ด๋ฌํ ๋ค์ดํ์์ ์ต์ํํ ์ ์๋ ๋ฐฉ๋ฒ์ ๋ํ ์๊ฐ๋ ๊ณต์ ํ๊ฒ ์ต๋๋ค.
์ค๋น ๋จ๊ณ:
- ํ์ํ ์ํํธ์จ์ด๋ฅผ ์ค์นํ๊ณ ํจ์น๋ etcdhelper๋ฅผ ์กฐ๋ฆฝํฉ๋๋ค.
- etcd ๋ฐฑ์
๋ฐ
/etc/kubernetes
.
serviceCIDR ๋ณ๊ฒฝ์ ์ํ ๊ฐ๋ตํ ์คํ ๊ณํ:
- apiserver ๋ฐ ์ปจํธ๋กค๋ฌ ๊ด๋ฆฌ์ ๋งค๋ํ์คํธ ๋ณ๊ฒฝ
- ์ธ์ฆ์ ์ฌ๋ฐ๊ธ;
- etcd์์ ClusterIP ์๋น์ค๋ฅผ ๋ณ๊ฒฝํฉ๋๋ค.
- ํด๋ฌ์คํฐ์ ๋ชจ๋ ํฌ๋๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
๋ค์์ ์ ์ฒด ์์ ์์๋ฅผ ์์ธํ ์ค๋ช ํ ๊ฒ์ ๋๋ค.
1. ๋ฐ์ดํฐ ๋คํ๋ฅผ ์ํด etcd-client๋ฅผ ์ค์นํฉ๋๋ค.
apt install etcd-client
2. etcdhelper๋ฅผ ๋น๋ํ์ญ์์ค.
- Golang์ ์ค์นํฉ๋๋ค:
GOPATH=/root/golang mkdir -p $GOPATH/local curl -sSL https://dl.google.com/go/go1.14.1.linux-amd64.tar.gz | tar -xzvC $GOPATH/local echo "export GOPATH="$GOPATH"" >> ~/.bashrc echo 'export GOROOT="$GOPATH/local/go"' >> ~/.bashrc echo 'export PATH="$PATH:$GOPATH/local/go/bin"' >> ~/.bashrc
- ์ฐ๋ฆฌ๋ ์ฐ๋ฆฌ ์์ ์ ์ํด ์ ์ถํฉ๋๋ค
etcdhelper.go
, ์ข ์์ฑ์ ๋ค์ด๋ก๋ํ๊ณ ๋ค์์ ์์งํฉ๋๋ค.wget https://raw.githubusercontent.com/flant/examples/master/2020/04-etcdhelper/etcdhelper.go go get go.etcd.io/etcd/clientv3 k8s.io/kubectl/pkg/scheme k8s.io/apimachinery/pkg/runtime go build -o etcdhelper etcdhelper.go
3. ๋ฐฑ์ etcd๋ฅผ ๋ง๋์ญ์์ค:
backup_dir=/root/backup
mkdir ${backup_dir}
cp -rL /etc/kubernetes ${backup_dir}
ETCDCTL_API=3 etcdctl --cacert=/etc/kubernetes/pki/etcd/ca.crt --key=/etc/kubernetes/pki/etcd/server.key --cert=/etc/kubernetes/pki/etcd/server.crt --endpoints https://192.168.199.100:2379 snapshot save ${backup_dir}/etcd.snapshot
4. Kubernetes ์ ์ด ํ๋ ์ธ ๋งค๋ํ์คํธ์์ ์๋น์ค ์๋ธ๋ท์ ๋ณ๊ฒฝํฉ๋๋ค. ํ์ผ์์ /etc/kubernetes/manifests/kube-apiserver.yaml
ะธ /etc/kubernetes/manifests/kube-controller-manager.yaml
๋งค๊ฐ๋ณ์๋ฅผ ๋ณ๊ฒฝํด ๋ณด์ธ์ --service-cluster-ip-range
์ ์๋ธ๋ท์ผ๋ก: 172.24.0.0/16
๋์ 192.168.0.0/16
.
5. kubeadm์ด apiserver์ ๋ํ ์ธ์ฆ์(ํฌํจ)๋ฅผ ๋ฐ๊ธํ๋ ์๋น์ค ์๋ธ๋ท์ ๋ณ๊ฒฝํ๊ณ ์์ผ๋ฏ๋ก ์ฌ๋ฐ๊ธํด์ผ ํฉ๋๋ค.
- ํ์ฌ ์ธ์ฆ์๊ฐ ๋ฐ๊ธ๋ ๋๋ฉ์ธ๊ณผ IP ์ฃผ์๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
openssl x509 -noout -ext subjectAltName </etc/kubernetes/pki/apiserver.crt X509v3 Subject Alternative Name: DNS:dev-1-master, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, DNS:apiserver, IP Address:192.168.0.1, IP Address:10.0.0.163, IP Address:192.168.199.100
- kubeadm์ ๋ํ ์ต์ ๊ตฌ์ฑ์ ์ค๋นํด ๋ณด๊ฒ ์ต๋๋ค.
cat kubeadm-config.yaml apiVersion: kubeadm.k8s.io/v1beta1 kind: ClusterConfiguration networking: podSubnet: "10.244.0.0/16" serviceSubnet: "172.24.0.0/16" apiServer: certSANs: - "192.168.199.100" # IP-ะฐะดัะตั ะผะฐััะตั ัะทะปะฐ
- ๊ธฐ์กด crt์ ํค๋ฅผ ์ญ์ ํด ๋ณด๊ฒ ์ต๋๋ค. ์ญ์ ํ์ง ์์ผ๋ฉด ์ ์ธ์ฆ์๊ฐ ๋ฐ๊ธ๋์ง ์์ต๋๋ค.
rm /etc/kubernetes/pki/apiserver.{key,crt}
- API ์๋ฒ์ ๋ํ ์ธ์ฆ์๋ฅผ ์ฌ๋ฐ๊ธํด ๋ณด๊ฒ ์ต๋๋ค.
kubeadm init phase certs apiserver --config=kubeadm-config.yaml
- ์ ์๋ธ๋ท์ ๋ํด ์ธ์ฆ์๊ฐ ๋ฐ๊ธ๋์๋์ง ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
openssl x509 -noout -ext subjectAltName </etc/kubernetes/pki/apiserver.crt X509v3 Subject Alternative Name: DNS:kube-2-master, DNS:kubernetes, DNS:kubernetes.default, DNS:kubernetes.default.svc, DNS:kubernetes.default.svc.cluster.local, IP Address:172.24.0.1, IP Address:10.0.0.163, IP Address:192.168.199.100
- API ์๋ฒ ์ธ์ฆ์๋ฅผ ๋ค์ ๋ฐ๊ธํ ํ ํด๋น ์ปจํ
์ด๋๋ฅผ ๋ค์ ์์ํฉ๋๋ค.
docker ps | grep k8s_kube-apiserver | awk '{print $1}' | xargs docker restart
- ๊ตฌ์ฑ์ ๋ค์ ์์ฑํด ๋ณด๊ฒ ์ต๋๋ค.
admin.conf
:kubeadm alpha certs renew admin.conf
- etcd์ ๋ฐ์ดํฐ๋ฅผ ํธ์งํด ๋ณด๊ฒ ์ต๋๋ค.
./etcdhelper -cacert /etc/kubernetes/pki/etcd/ca.crt -cert /etc/kubernetes/pki/etcd/server.crt -key /etc/kubernetes/pki/etcd/server.key -endpoint https://127.0.0.1:2379 change-service-cidr 172.24.0.0/16
๊ฒฝ๊ณ ! ํ์ฌ ๊ธฐ์กด ํฌ๋์์๋ ๋๋ฉ์ธ ํ์ธ์ด ํด๋ฌ์คํฐ์์ ์๋์ ์ค์งํฉ๋๋ค.
/etc/resolv.conf
์ด์ CoreDNS ์ฃผ์(kube-dns)๊ฐ ๋ฑ๋ก๋๊ณ kube-proxy๋ iptables ๊ท์น์ ์ด์ ์๋ธ๋ท์์ ์ ์๋ธ๋ท์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค. ๋ํ ์ด ๊ธฐ์ฌ์์๋ ๊ฐ๋ ์ค์ง ์๊ฐ์ ์ต์ํํ๊ธฐ ์ํ ๊ฐ๋ฅํ ์ต์ ์ ๋ํด ์ค๋ช ํฉ๋๋ค. - ๋ค์์คํ์ด์ค์์ ConfigMap์ ์์ ํด ๋ณด๊ฒ ์ต๋๋ค.
kube-system
:kubectl -n kube-system edit cm kubelet-config-1.16
- ์ฌ๊ธฐ์์ ๊ต์ฒด
clusterDNS
kube-dns ์๋น์ค์ ์ IP ์ฃผ์๋ก:kubectl -n kube-system get svc kube-dns
.kubectl -n kube-system edit cm kubeadm-config
- ์ฐ๋ฆฌ๊ฐ ๊ณ ์ณ์ค๊ฒ
data.ClusterConfiguration.networking.serviceSubnet
์ ์๋ธ๋ท์ผ๋ก. - kube-dns ์ฃผ์๊ฐ ๋ณ๊ฒฝ๋์์ผ๋ฏ๋ก ๋ชจ๋ ๋
ธ๋์์ kubelet ๊ตฌ์ฑ์ ์
๋ฐ์ดํธํด์ผ ํฉ๋๋ค.
kubeadm upgrade node phase kubelet-config && systemctl restart kubelet
- ๋จ์ ๊ฒ์ ํด๋ฌ์คํฐ์ ๋ชจ๋ Pod๋ฅผ ๋ค์ ์์ํ๋ ๊ฒ์
๋๋ค.
kubectl get pods --no-headers=true --all-namespaces |sed -r 's/(S+)s+(S+).*/kubectl --namespace 1 delete pod 2/e'
๊ฐ๋ ์ค์ง ์๊ฐ ์ต์ํ
๊ฐ๋ ์ค์ง ์๊ฐ์ ์ต์ํํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์๊ฐ:
- ์ ์ด ํ๋ ์ธ ๋งค๋ํ์คํธ๋ฅผ ๋ณ๊ฒฝํ ํ ์๋ฅผ ๋ค์ด ๋ค์ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ์ kube-dns ์๋น์ค๋ฅผ ์์ฑํฉ๋๋ค.
kube-dns-tmp
๊ทธ๋ฆฌ๊ณ ์ ์ฃผ์172.24.0.10
. - ํ์ธ
if
kube-dns ์๋น์ค๋ฅผ ์์ ํ์ง ์๋ etcdhelper์์. - ๋ชจ๋ kubelet์ ์ฃผ์๋ฅผ ๋ฐ๊ฟ๋๋ค.
ClusterDNS
์ด์ ์๋น์ค๋ ์ ์๋น์ค์ ๋์์ ๊ณ์ ์๋ํฉ๋๋ค. - ์ ํ๋ฆฌ์ผ์ด์ ์ด ํฌํจ๋ ํฌ๋๊ฐ ์์ฐ์ค๋ฌ์ด ์ด์ ๋ก ๋๋ ํฉ์๋ ์๊ฐ์ ์๋์ผ๋ก ๋กค์ค๋ฒ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฝ๋๋ค.
- ์๋น์ค ์ญ์
kube-dns-tmp
๊ทธ๋ฆฌ๊ณ ๋ณํserviceSubnetCIDR
kube-dns ์๋น์ค์ ๊ฒฝ์ฐ.
์ด ๊ณํ์ ์ฌ์ฉํ๋ฉด ์๋น์ค ์ ๊ฑฐ ๊ธฐ๊ฐ ๋์ ๊ฐ๋ ์ค์ง ์๊ฐ์ ์ต๋ XNUMX๋ถ์ผ๋ก ์ต์ํํ ์ ์์ต๋๋ค. kube-dns-tmp
์๋น์ค์ ์๋ธ๋ท ๋ณ๊ฒฝ kube-dns
.
ํฌ๋๋คํธ์ํฌ ์์
๋์์ ๊ฒฐ๊ณผ etcdhelper๋ฅผ ์ฌ์ฉํ์ฌ podNetwork๋ฅผ ์์ ํ๋ ๋ฐฉ๋ฒ์ ์ดํด๋ณด๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์์ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ตฌ์ฑ ์์ ์ค
kube-system
; - kube-controller-manager ๋งค๋ํ์คํธ ์์
- etcd์์ ์ง์ podCIDR์ ๋ณ๊ฒฝํฉ๋๋ค.
- ๋ชจ๋ ํด๋ฌ์คํฐ ๋ ธ๋๋ฅผ ์ฌ๋ถํ ํฉ๋๋ค.
์ด์ ์ด๋ฌํ ์์ ์ ๋ํด ์์ธํ ์์๋ณด์ธ์.
1. ๋ค์์คํ์ด์ค์์ ConfigMap ์์ kube-system
:
kubectl -n kube-system edit cm kubeadm-config
- ๊ต์ data.ClusterConfiguration.networking.podSubnet
์ ์๋ธ๋ท์ผ๋ก 10.55.0.0/16
.
kubectl -n kube-system edit cm kube-proxy
- ๊ต์ data.config.conf.clusterCIDR: 10.55.0.0/16
.
2. ์ปจํธ๋กค๋ฌ-๊ด๋ฆฌ์ ๋งค๋ํ์คํธ๋ฅผ ์์ ํฉ๋๋ค.
vim /etc/kubernetes/manifests/kube-controller-manager.yaml
- ๊ต์ --cluster-cidr=10.55.0.0/16
.
3. ํ์ฌ ๊ฐ์น๋ฅผ ์ดํด๋ณด์ธ์ .spec.podCIDR
, .spec.podCIDRs
, .InternalIP
, .status.addresses
๋ชจ๋ ํด๋ฌ์คํฐ ๋
ธ๋์ ๋ํด:
kubectl get no -o json | jq '[.items[] | {"name": .metadata.name, "podCIDR": .spec.podCIDR, "podCIDRs": .spec.podCIDRs, "InternalIP": (.status.addresses[] | select(.type == "InternalIP") | .address)}]'
[
{
"name": "kube-2-master",
"podCIDR": "10.244.0.0/24",
"podCIDRs": [
"10.244.0.0/24"
],
"InternalIP": "192.168.199.2"
},
{
"name": "kube-2-master",
"podCIDR": "10.244.0.0/24",
"podCIDRs": [
"10.244.0.0/24"
],
"InternalIP": "10.0.1.239"
},
{
"name": "kube-2-worker-01f438cf-579f9fd987-5l657",
"podCIDR": "10.244.1.0/24",
"podCIDRs": [
"10.244.1.0/24"
],
"InternalIP": "192.168.199.222"
},
{
"name": "kube-2-worker-01f438cf-579f9fd987-5l657",
"podCIDR": "10.244.1.0/24",
"podCIDRs": [
"10.244.1.0/24"
],
"InternalIP": "10.0.4.73"
}
]
4. etcd๋ฅผ ์ง์ ๋ณ๊ฒฝํ์ฌ podCIDR์ ๊ต์ฒดํฉ๋๋ค.
./etcdhelper -cacert /etc/kubernetes/pki/etcd/ca.crt -cert /etc/kubernetes/pki/etcd/server.crt -key /etc/kubernetes/pki/etcd/server.key -endpoint https://127.0.0.1:2379 change-pod-cidr 10.55.0.0/16
5. podCIDR์ด ์ค์ ๋ก ๋ณ๊ฒฝ๋์๋์ง ํ์ธํด ๋ณด๊ฒ ์ต๋๋ค.
kubectl get no -o json | jq '[.items[] | {"name": .metadata.name, "podCIDR": .spec.podCIDR, "podCIDRs": .spec.podCIDRs, "InternalIP": (.status.addresses[] | select(.type == "InternalIP") | .address)}]'
[
{
"name": "kube-2-master",
"podCIDR": "10.55.0.0/24",
"podCIDRs": [
"10.55.0.0/24"
],
"InternalIP": "192.168.199.2"
},
{
"name": "kube-2-master",
"podCIDR": "10.55.0.0/24",
"podCIDRs": [
"10.55.0.0/24"
],
"InternalIP": "10.0.1.239"
},
{
"name": "kube-2-worker-01f438cf-579f9fd987-5l657",
"podCIDR": "10.55.1.0/24",
"podCIDRs": [
"10.55.1.0/24"
],
"InternalIP": "192.168.199.222"
},
{
"name": "kube-2-worker-01f438cf-579f9fd987-5l657",
"podCIDR": "10.55.1.0/24",
"podCIDRs": [
"10.55.1.0/24"
],
"InternalIP": "10.0.4.73"
}
]
6. ๋ชจ๋ ํด๋ฌ์คํฐ ๋ ธ๋๋ฅผ ํ๋์ฉ ์ฌ๋ถํ ํด ๋ณด๊ฒ ์ต๋๋ค.
7. ํ๋ ์ด์์ ๋ ธ๋๋ฅผ ํํดํ๋ ๊ฒฝ์ฐ ์ด์ PodCIDR, ๊ทธ๋ฌ๋ฉด kube-controller-manager๋ฅผ ์์ํ ์ ์์ผ๋ฉฐ ํด๋ฌ์คํฐ์ Pod๊ฐ ์์ฝ๋์ง ์์ต๋๋ค.
์ค์ ๋ก podCIDR ๋ณ๊ฒฝ์ ํจ์ฌ ๋ ๊ฐ๋จํ๊ฒ ์ํํ ์ ์์ต๋๋ค(์: spec.clusterIP
.)
ํฉ๊ณ
์ด ๊ธฐ์ฌ์์๋ etcd์ ๋ฐ์ดํฐ๋ก ์ง์ ์์ ํ ์ ์๋ ๊ฐ๋ฅ์ฑ์ ๋ํด ์ค๋ช ํฉ๋๋ค. Kubernetes API๋ฅผ ์ฐํํฉ๋๋ค. ๋๋๋ก ์ด ์ ๊ทผ ๋ฐฉ์์ ์ฌ์ฉํ๋ฉด "๊น๋ค๋ก์ด ์์ "์ ์ํํ ์ ์์ต๋๋ค. ์ค์ K8s ํด๋ฌ์คํฐ์์ ํ ์คํธ์ ์ ๊ณต๋ ์์ ์ ํ ์คํธํ์ต๋๋ค. ๊ทธ๋ฌ๋ ๋๋ฆฌ ์ฌ์ฉํ๊ธฐ ์ํ ์ค๋น ์ํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. PoC(๊ฐ๋ ์ฆ๋ช ). ๋ฐ๋ผ์ ํด๋ฌ์คํฐ์์ ์์ ๋ ๋ฒ์ ์ etcdhelper ์ ํธ๋ฆฌํฐ๋ฅผ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ์ด์ ๋ํ ์ฑ ์์ ์ฌ์ฉ์์๊ฒ ์์ต๋๋ค.
PS
๋ธ๋ก๊ทธ์์๋ ์ฝ์ด๋ณด์ธ์.
- ยซ
etcd 3.4.3: ์คํ ๋ฆฌ์ง ์์ ์ฑ ๋ฐ ๋ณด์ ์ฐ๊ตฌ "; - ยซ
Kubernetes ๋คํธ์ํน์ ์ํ Calico: ์๊ฐ ๋ฐ ์ฝ๊ฐ์ ๊ฒฝํ "; - ยซ
์ฟ ๋ฒ๋คํฐ์ค ์ด์์ ์ฌ๋ฏธ์๋ ์์คํ ๋ฒ๊ทธ 6๊ฐ์ง [๋ฐ ํด๋น ์๋ฃจ์ ] "; - ยซ
Kubernetes ๋ฌธ์ ํด๊ฒฐ์ ์ํ ์๊ฐ์ ๊ฐ์ด๋ ".
์ถ์ฒ : habr.com