๋ฉ๋ชจ. ๋ฒ์ญ: LinkedIn์ SRE ์์ง๋์ด๊ฐ ์์ฑํ ์ด ๊ธฐ์ฌ์์๋ ๋ค์ Pod์ IP ์ฃผ์๋ฅผ ํ ๋นํด์ผ ํ ๋ ๋ฐ์ํ๋ Kubernetes์ ๋ด๋ถ ๋ง๋ฒ, ๋ ์ ํํ๊ฒ๋ CRI, CNI ๋ฐ kube-apiserver์ ์ํธ ์์ฉ์ ๋ํด ์์ธํ ์ค๋ช ํฉ๋๋ค.
๊ธฐ๋ณธ ์๊ตฌ ์ฌํญ ์ค ํ๋
์ฒ์ Kubernetes ์์
์ ์์ํ์ ๋ ํฌ๋๊ฐ IP ์ฃผ์๋ฅผ ์ ํํ ์ด๋ป๊ฒ ์ป๋์ง ์์ ํ ๋ช
ํํ์ง ์์์ต๋๋ค. ๊ฐ๋ณ ๊ตฌ์ฑ ์์๊ฐ ์ด๋ป๊ฒ ์๋ํ๋์ง ์ดํดํ๋๋ผ๋ ์ด๋ค์ด ํจ๊ป ์๋ํ๋ ๊ฒ์ ์์ํ๊ธฐ๋ ์ด๋ ค์ ์ต๋๋ค. ์๋ฅผ ๋ค์ด, CNI ํ๋ฌ๊ทธ์ธ์ด ๋ฌด์์ธ์ง๋ ์์์ง๋ง ์ ํํ ์ด๋ป๊ฒ ํธ์ถ๋๋์ง๋ ๋ชฐ๋์ต๋๋ค. ๋ฐ๋ผ์ ์ ๋ ๋ค์ํ ๋คํธ์ํฌ ๊ตฌ์ฑ ์์์ ๋ํ ์ง์๊ณผ ์ด๋ฌํ ๊ตฌ์ฑ ์์๊ฐ Kubernetes ํด๋ฌ์คํฐ์์ ์ด๋ป๊ฒ ํจ๊ป ์๋ํ๋์ง ๊ณต์ ํ๊ธฐ ์ํด ์ด ๊ธฐ์ฌ๋ฅผ ์์ฑํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์ด๋ฅผ ํตํด ๊ฐ ํฌ๋๋ ๊ณ ์ ํ IP ์ฃผ์๋ฅผ ์ป์ ์ ์์ต๋๋ค.
์ปจํ
์ด๋์ ๋ค์ํ ๋ฐํ์ ์ต์
์ด ์๋ ๊ฒ์ฒ๋ผ Kubernetes์์ ๋คํธ์ํน์ ๊ตฌ์ฑํ๋ ๋ฐฉ๋ฒ๋ ๋ค์ํฉ๋๋ค. ์ด ๊ฐํ๋ฌผ์
๋ช ๊ฐ์ง ๊ธฐ๋ณธ ๊ฐ๋
์ปจํ ์ด๋์ ๋คํธ์ํฌ: ๊ฐ๋ตํ ๊ฐ์
์ปจํ ์ด๋๊ฐ ๋คํธ์ํฌ๋ฅผ ํตํด ์๋ก ํต์ ํ๋ ๋ฐฉ๋ฒ์ ์ค๋ช ํ๋ ํ๋ฅญํ ์ถํ๋ฌผ์ด ์ธํฐ๋ท์ ๋ง์ด ์์ต๋๋ค. ๋ฐ๋ผ์ ๊ธฐ๋ณธ ๊ฐ๋ ์ ๋ํ ์ผ๋ฐ์ ์ธ ๊ฐ์๋ง ์ ๊ณตํ๊ณ Linux ๋ธ๋ฆฌ์ง ์์ฑ ๋ฐ ํจํค์ง ์บก์ํ์ ๊ด๋ จ๋ ํ ๊ฐ์ง ์ ๊ทผ ๋ฐฉ์์ผ๋ก ์ ํํ๊ฒ ์ต๋๋ค. ์ปจํ ์ด๋ ๋คํธ์ํน ์ฃผ์ ์์ฒด๋ ๋ณ๋์ ๊ธฐ์ฌ๋ก ๋ค๋ฃจ์ด์ผ ํ๋ฏ๋ก ์์ธํ ๋ด์ฉ์ ์๋ตํฉ๋๋ค. ํนํ ํต์ฐฐ๋ ฅ ์๊ณ ๊ต์ก์ ์ธ ์ถํ๋ฌผ์ ๋ํ ๋งํฌ๊ฐ ์๋์ ์ ๊ณต๋ฉ๋๋ค.
ํ๋์ ํธ์คํธ์ ์๋ ์ปจํ ์ด๋
๋์ผํ ํธ์คํธ์์ ์คํ๋๋ ์ปจํ
์ด๋ ๊ฐ์ IP ์ฃผ์๋ฅผ ํตํ ํต์ ์ ๊ตฌ์ฑํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ Linux ๋ธ๋ฆฌ์ง๋ฅผ ๋ง๋๋ ๊ฒ์
๋๋ค. ์ด๋ฅผ ์ํด Kubernetes(๋ฐ Docker)์ ๊ฐ์ ์ฅ์น๊ฐ ์์ฑ๋ฉ๋๋ค.
๋์ผํ ํธ์คํธ์ ๋ชจ๋ ์ปจํ ์ด๋์๋ veth์ ํ์ชฝ ๋์ด ๋ธ๋ฆฌ์ง์ ์ฐ๊ฒฐ๋์ด ์์ผ๋ฉฐ ์ด๋ฅผ ํตํด IP ์ฃผ์๋ฅผ ํตํด ์๋ก ํต์ ํ ์ ์์ต๋๋ค. Linux ๋ธ๋ฆฌ์ง์๋ IP ์ฃผ์๋ ์์ผ๋ฉฐ ๋ค๋ฅธ ๋ ธ๋๋ก ํฅํ๋ ํฌ๋์ ์ก์ ํธ๋ํฝ์ ๋ํ ๊ฒ์ดํธ์จ์ด ์ญํ ์ ํฉ๋๋ค.
๋ค๋ฅธ ํธ์คํธ์ ์ปจํ ์ด๋
ํจํท ์บก์ํ๋ ์๋ก ๋ค๋ฅธ ๋
ธ๋์ ์๋ ์ปจํ
์ด๋๊ฐ IP ์ฃผ์๋ฅผ ์ฌ์ฉํ์ฌ ์๋ก ํต์ ํ ์ ์๋๋ก ํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์
๋๋ค. Flannel์์๋ ๊ธฐ์ ์ด ์ด๋ฌํ ๊ธฐํ๋ฅผ ๋ด๋นํฉ๋๋ค.
Kubernetes ํด๋ฌ์คํฐ์์ Flannel์ vxlan ์ฅ์น๋ฅผ ์์ฑํ๊ณ ๊ทธ์ ๋ฐ๋ผ ๊ฐ ๋ ธ๋์ ๊ฒฝ๋ก ํ ์ด๋ธ์ ์ ๋ฐ์ดํธํฉ๋๋ค. ๋ค๋ฅธ ํธ์คํธ์ ์ปจํ ์ด๋๋ก ํฅํ๋ ๊ฐ ํจํท์ vxlan ์ฅ์น๋ฅผ ํต๊ณผํ๊ณ UDP ํจํท์ ์บก์ํ๋ฉ๋๋ค. ๋ชฉ์ ์ง์์๋ ์ค์ฒฉ๋ ํจํท์ด ์ถ์ถ๋์ด ์ํ๋ ํฌ๋๋ก ์ ๋ฌ๋ฉ๋๋ค.
์ฐธ๊ณ : ์ด๋ ์ปจํ
์ด๋ ๊ฐ์ ๋คํธ์ํฌ ํต์ ์ ๊ตฌ์ฑํ๋ ํ ๊ฐ์ง ๋ฐฉ๋ฒ์ผ ๋ฟ์
๋๋ค.
CRI๋ ๋ฌด์์ ๋๊น?
CNI๋ ๋ฌด์์ธ๊ฐ์?
ํฌ๋์ IP ์ฃผ์๋ฅผ ํ ๋นํ๊ธฐ ์ํด ๋ ธ๋์ ์๋ธ๋ท ํ ๋น
ํด๋ฌ์คํฐ์ ๊ฐ ํฌ๋์๋ IP ์ฃผ์๊ฐ ์์ด์ผ ํ๋ฏ๋ก ์ด ์ฃผ์๊ฐ ๊ณ ์ ํ์ง ํ์ธํ๋ ๊ฒ์ด ์ค์ํฉ๋๋ค. ์ด๋ ๊ฐ ๋ ธ๋์ ๊ณ ์ ํ ์๋ธ๋ท์ ํ ๋นํ๊ณ ํด๋น ๋ ธ๋์ ํฌ๋์ IP ์ฃผ์๋ฅผ ํ ๋นํจ์ผ๋ก์จ ๋ฌ์ฑ๋ฉ๋๋ค.
๋ ธ๋ IPAM ์ปจํธ๋กค๋ฌ
์ธ์ nodeipam
ํ๋๊ทธ ๋งค๊ฐ๋ณ์๋ก ์ ๋ฌ๋จ --controllers
Kubernetes ๋ ธ๋๋ ํด๋ฌ์คํฐ์ ์ฒ์ ๋ฑ๋ก๋ ๋ podCIDR์ด ํ ๋น๋ฉ๋๋ค. ๋ ธ๋์ podCIDR์ ๋ณ๊ฒฝํ๋ ค๋ฉด ๋ ธ๋๋ฅผ ๋ฑ๋ก ์ทจ์ํ ๋ค์ ๋ค์ ๋ฑ๋กํ๊ณ ๊ทธ ์ฌ์ด์ Kubernetes ์ ์ด ๊ณ์ธต ๊ตฌ์ฑ์ ์ ์ ํ๊ฒ ๋ณ๊ฒฝํด์ผ ํฉ๋๋ค. ๋ค์ ๋ช ๋ น์ ์ฌ์ฉํ์ฌ ๋ ธ๋์ podCIDR์ ํ์ํ ์ ์์ต๋๋ค.
$ kubectl get no <nodeName> -o json | jq '.spec.podCIDR'
10.244.0.0/24
Kubelet, ์ปจํ ์ด๋ ๋ฐํ์ ๋ฐ CNI ํ๋ฌ๊ทธ์ธ: ๋ชจ๋ ์๋ ๋ฐฉ์
๋ ธ๋๋น ํฌ๋๋ฅผ ์์ฝํ๋ ค๋ฉด ๋ง์ ์ค๋น ๋จ๊ณ๊ฐ ํ์ํฉ๋๋ค. ์ด ์น์ ์์๋ ํฌ๋ ๋คํธ์ํฌ ์ค์ ๊ณผ ์ง์ ์ ์ผ๋ก ๊ด๋ จ๋ ํญ๋ชฉ์๋ง ์ค์ ์ ๋ ๊ฒ์ ๋๋ค.
ํน์ ๋ ธ๋์ ๋ํ Pod๋ฅผ ์์ฝํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ์ด๋ฒคํธ ์ฒด์ธ์ด ํธ๋ฆฌ๊ฑฐ๋ฉ๋๋ค.
FAQ :
์ปจํ ์ด๋ ๋ฐํ์๊ณผ CNI ํ๋ฌ๊ทธ์ธ ๊ฐ์ ์ํธ ์์ฉ
๊ฐ ๋คํธ์ํฌ ์ ๊ณต์
์ฒด์๋ ์์ฒด CNI ํ๋ฌ๊ทธ์ธ์ด ์์ต๋๋ค. ์ปจํ
์ด๋์ ๋ฐํ์์ ์ด๋ฅผ ์คํํ์ฌ ํฌ๋๊ฐ ์์๋ ๋ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. Containerd์ ๊ฒฝ์ฐ ํ๋ฌ๊ทธ์ธ์ ์ํด CNI ํ๋ฌ๊ทธ์ธ์ด ์คํ๋ฉ๋๋ค.
๋ํ ๊ฐ ๊ณต๊ธ์์๋ ์์ฒด ์์ด์ ํธ๊ฐ ์์ต๋๋ค. ๋ชจ๋ Kubernetes ๋ ธ๋์ ์ค์น๋๋ฉฐ Pod์ ๋คํธ์ํฌ ๊ตฌ์ฑ์ ๋ด๋นํฉ๋๋ค. ์ด ์์ด์ ํธ๋ CNI ๊ตฌ์ฑ์ ํฌํจ๋๊ฑฐ๋ ๋ ธ๋์ ๋ ๋ฆฝ์ ์ผ๋ก ์์ฑ๋ฉ๋๋ค. ๊ตฌ์ฑ์ CRI ํ๋ฌ๊ทธ์ธ์ด ํธ์ถํ CNI ํ๋ฌ๊ทธ์ธ์ ์ค์ ํ๋ ๋ฐ ๋์์ด ๋ฉ๋๋ค.
CNI ๊ตฌ์ฑ์ ์์น๋ ์ฌ์ฉ์ ์ ์ํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก๋ /etc/cni/net.d/<config-file>
. ํด๋ฌ์คํฐ ๊ด๋ฆฌ์๋ ๊ฐ ํด๋ฌ์คํฐ ๋
ธ๋์ CNI ํ๋ฌ๊ทธ์ธ์ ์ค์นํ๋ ์ผ๋ ๋ด๋นํฉ๋๋ค. ์์น๋ ๋ง์ถค ์ค์ ํ ์ ์์ต๋๋ค. ๊ธฐ๋ณธ ๋๋ ํ ๋ฆฌ - /opt/cni/bin
.
Containerd๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ํ๋ฌ๊ทธ์ธ ๊ตฌ์ฑ ๋ฐ ๋ฐ์ด๋๋ฆฌ์ ๊ฒฝ๋ก๋ฅผ ์น์
์์ ์ค์ ํ ์ ์์ต๋๋ค. [plugins.ยซio.containerd.grpc.v1.criยป.cni]
ะฒ
Flannel์ ๋คํธ์ํฌ ๊ณต๊ธ์๋ก ์ฌ์ฉํ๊ณ ์์ผ๋ฏ๋ก Flannel ์ค์ ์ ๋ํด ์กฐ๊ธ ์ด์ผ๊ธฐํด ๋ณด๊ฒ ์ต๋๋ค.
- Flanneld(Flannel์ ๋ฐ๋ชฌ)๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์์ ์ฌ์ฉํ์ฌ ํด๋ฌ์คํฐ์ DaemonSet์ผ๋ก ์ค์น๋ฉ๋๋ค.
install-cni
์ผ๋ก์ปจํ ์ด๋ ์ด๊ธฐํ . Install-cni
์ฐฝ์กฐCNI ๊ตฌ์ฑ ํ์ผ (/etc/cni/net.d/10-flannel.conflist
) ๊ฐ ๋ ธ๋์.- Flanneld๋ vxlan ์ฅ์น๋ฅผ ์์ฑํ๊ณ , API ์๋ฒ์์ ๋คํธ์ํฌ ๋ฉํ๋ฐ์ดํฐ๋ฅผ ๊ฒ์ํ๊ณ , Pod ์ ๋ฐ์ดํธ๋ฅผ ๋ชจ๋ํฐ๋งํฉ๋๋ค. ์์ฑ๋๋ฉด ํด๋ฌ์คํฐ ์ ์ฒด์ ๋ชจ๋ ํฌ๋์ ๊ฒฝ๋ก๋ฅผ ๋ฐฐํฌํฉ๋๋ค.
- ์ด๋ฌํ ๊ฒฝ๋ก๋ฅผ ํตํด ํฌ๋๋ IP ์ฃผ์๋ฅผ ํตํด ์๋ก ํต์ ํ ์ ์์ต๋๋ค.
Flannel ์์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ณด๋ ค๋ฉด ๊ธฐ์ฌ ๋ ๋ถ๋ถ์ ์๋ ๋งํฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
๋ค์์ Containerd CRI ํ๋ฌ๊ทธ์ธ๊ณผ CNI ํ๋ฌ๊ทธ์ธ ๊ฐ์ ์ํธ ์์ฉ์ ๋ํ ๋ค์ด์ด๊ทธ๋จ์ ๋๋ค.
์์์ ๋ณผ ์ ์๋ฏ์ด kubelet์ Containerd CRI ํ๋ฌ๊ทธ์ธ์ ํธ์ถํ์ฌ ํฌ๋๋ฅผ ์์ฑํ ๋ค์ CNI ํ๋ฌ๊ทธ์ธ์ ํธ์ถํ์ฌ ํฌ๋์ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ์ด๋ฅผ ํตํด ๋คํธ์ํฌ ๊ณต๊ธ์์ CNI ํ๋ฌ๊ทธ์ธ์ ๋ค๋ฅธ ํต์ฌ CNI ํ๋ฌ๊ทธ์ธ์ ํธ์ถํ์ฌ ๋คํธ์ํฌ์ ๋ค์ํ ์ธก๋ฉด์ ๊ตฌ์ฑํฉ๋๋ค.
CNI ํ๋ฌ๊ทธ์ธ ๊ฐ์ ์ํธ ์์ฉ
ํธ์คํธ์ ์ปจํ ์ด๋ ๊ฐ ๋คํธ์ํฌ ํต์ ์ ์ค์ ํ๋ ๋ฐ ๋์์ ์ฃผ๋ ๋ค์ํ CNI ํ๋ฌ๊ทธ์ธ์ด ์์ต๋๋ค. ์ด ๊ธฐ์ฌ์์๋ ๊ทธ ์ค ์ธ ๊ฐ์ง๋ฅผ ๋ค๋ฃฐ ๊ฒ์ ๋๋ค.
CNI ํ๋ฌ๊ทธ์ธ ํ๋๋ฌ
Flannel์ ๋คํธ์ํฌ ๊ณต๊ธ์๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Containerd CRI ๊ตฌ์ฑ ์์๋ ๋ค์์ ํธ์ถํฉ๋๋ค. /etc/cni/net.d/10-flannel.conflist
.
$ cat /etc/cni/net.d/10-flannel.conflist
{
"name": "cni0",
"plugins": [
{
"type": "flannel",
"delegate": {
"ipMasq": false,
"hairpinMode": true,
"isDefaultGateway": true
}
}
]
}
Flannel CNI ํ๋ฌ๊ทธ์ธ์ Flanneld์ ํจ๊ป ์๋ํฉ๋๋ค. ์์ํ๋ ๋์ Flanneld๋ API ์๋ฒ์์ podCIDR ๋ฐ ๊ธฐํ ๋คํธ์ํฌ ๊ด๋ จ ์ธ๋ถ ์ ๋ณด๋ฅผ ๊ฒ์ํ์ฌ ํ์ผ์ ์ ์ฅํฉ๋๋ค. /run/flannel/subnet.env
.
FLANNEL_NETWORK=10.244.0.0/16
FLANNEL_SUBNET=10.244.0.1/24
FLANNEL_MTU=1450
FLANNEL_IPMASQ=false
Flannel CNI ํ๋ฌ๊ทธ์ธ์ ๋ค์์ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค. /run/flannel/subnet.env
CNI ๋ธ๋ฆฌ์ง ํ๋ฌ๊ทธ์ธ์ ๊ตฌ์ฑํ๊ณ ํธ์ถํฉ๋๋ค.
CNI ํ๋ฌ๊ทธ์ธ ๋ธ๋ฆฌ์ง
์ด ํ๋ฌ๊ทธ์ธ์ ๋ค์ ๊ตฌ์ฑ์ผ๋ก ํธ์ถ๋ฉ๋๋ค.
{
"name": "cni0",
"type": "bridge",
"mtu": 1450,
"ipMasq": false,
"isGateway": true,
"ipam": {
"type": "host-local",
"subnet": "10.244.0.0/24"
}
}
์ฒ์ ํธ์ถ๋๋ฉด ๋ค์์ ์ฌ์ฉํ์ฌ Linux ๋ธ๋ฆฌ์ง๋ฅผ ์์ฑํฉ๋๋ค. ยซnameยป: ยซcni0ยป
, ์ด๋ ๊ตฌ์ฑ์ ํ์๋ฉ๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ฐ ํฌ๋์ ๋ํด veth ์์ด ์์ฑ๋ฉ๋๋ค. ํ์ชฝ ๋์ ์ปจํ
์ด๋์ ๋คํธ์ํฌ ๋ค์์คํ์ด์ค์ ์ฐ๊ฒฐ๋๊ณ ๋ค๋ฅธ ์ชฝ ๋์ ํธ์คํธ ๋คํธ์ํฌ์ Linux ๋ธ๋ฆฌ์ง์ ํฌํจ๋ฉ๋๋ค.
veth ์ ์ค์ ์ ๋ง์น ํ Bridge ํ๋ฌ๊ทธ์ธ์ ํธ์คํธ-๋ก์ปฌ IPAM CNI ํ๋ฌ๊ทธ์ธ์ ํธ์ถํฉ๋๋ค. IPAM ํ๋ฌ๊ทธ์ธ ์ ํ์ CRI ํ๋ฌ๊ทธ์ธ์ด Flannel CNI ํ๋ฌ๊ทธ์ธ์ ํธ์ถํ๋ ๋ฐ ์ฌ์ฉํ๋ CNI ๊ตฌ์ฑ์์ ๊ตฌ์ฑํ ์ ์์ต๋๋ค.
ํธ์คํธ-๋ก์ปฌ IPAM CNI ํ๋ฌ๊ทธ์ธ
๋ธ๋ฆฌ์ง CNI ํตํ
{
"name": "cni0",
"ipam": {
"type": "host-local",
"subnet": "10.244.0.0/24",
"dataDir": "/var/lib/cni/networks"
}
}
ํธ์คํธ-๋ก์ปฌ IPAM ํ๋ฌ๊ทธ์ธ (IP A์ ddress M๊ด๋ฆฌ - IP ์ฃผ์ ๊ด๋ฆฌ) ์๋ธ๋ท์์ ์ปจํ
์ด๋์ IP ์ฃผ์๋ฅผ ๋ฐํํ๊ณ ์น์
์ ์ง์ ๋ ๋๋ ํฐ๋ฆฌ์ ํธ์คํธ์ ํ ๋น๋ IP๋ฅผ ์ ์ฅํฉ๋๋ค. dataDir
- /var/lib/cni/networks/<network-name=cni0>/<ip>
. ์ด ํ์ผ์๋ ์ด IP ์ฃผ์๊ฐ ํ ๋น๋ ์ปจํ
์ด๋์ ID๊ฐ ํฌํจ๋์ด ์์ต๋๋ค.
ํธ์คํธ-๋ก์ปฌ IPAM ํ๋ฌ๊ทธ์ธ์ ํธ์ถํ๋ฉด ๋ค์ ๋ฐ์ดํฐ๊ฐ ๋ฐํ๋ฉ๋๋ค.
{
"ip4": {
"ip": "10.244.4.2",
"gateway": "10.244.4.3"
},
"dns": {}
}
๊ฐ์
Kube-controller-manager๋ ๊ฐ ๋ ธ๋์ podCIDR์ ํ ๋นํฉ๋๋ค. ๊ฐ ๋ ธ๋์ Pod๋ ํ ๋น๋ PodCIDR ๋ฒ์์ ์ฃผ์ ๊ณต๊ฐ์์ IP ์ฃผ์๋ฅผ ์์ ํฉ๋๋ค. ๋ ธ๋์ podCIDR์ ๊ฒน์น์ง ์์ผ๋ฏ๋ก ๋ชจ๋ Pod๋ ๊ณ ์ ํ IP ์ฃผ์๋ฅผ ๋ฐ์ต๋๋ค.
Kubernetes ํด๋ฌ์คํฐ ๊ด๋ฆฌ์๋ kubelet, ์ปจํ ์ด๋ ๋ฐํ์, ๋คํธ์ํฌ ๊ณต๊ธ์ ์์ด์ ํธ๋ฅผ ๊ตฌ์ฑ ๋ฐ ์ค์นํ๊ณ CNI ํ๋ฌ๊ทธ์ธ์ ๊ฐ ๋ ธ๋์ ๋ณต์ฌํฉ๋๋ค. ์์ํ๋ ๋์ ๋คํธ์ํฌ ๊ณต๊ธ์ ์์ด์ ํธ๋ CNI ๊ตฌ์ฑ์ ์์ฑํฉ๋๋ค. ํฌ๋๊ฐ ๋ ธ๋์ ์์ฝ๋๋ฉด kubelet์ CRI ํ๋ฌ๊ทธ์ธ์ ํธ์ถํ์ฌ ํฌ๋๋ฅผ ์์ฑํฉ๋๋ค. ๋ค์์ผ๋ก, Containerd๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ Containerd CRI ํ๋ฌ๊ทธ์ธ์ CNI ๊ตฌ์ฑ์ ์ง์ ๋ CNI ํ๋ฌ๊ทธ์ธ์ ํธ์ถํ์ฌ ํฌ๋์ ๋คํธ์ํฌ๋ฅผ ๊ตฌ์ฑํฉ๋๋ค. ๊ฒฐ๊ณผ์ ์ผ๋ก ํฌ๋๋ IP ์ฃผ์๋ฅผ ์์ ํฉ๋๋ค.
์ด๋ฌํ ๋ชจ๋ ์ํธ ์์ฉ์ ๋ชจ๋ ๋ฏธ๋ฌํจ๊ณผ ๋์์ค๋ฅผ ์ดํดํ๋ ๋ฐ๋ ์๊ฐ์ด ์ข ๊ฑธ๋ ธ์ต๋๋ค. ์ด ๊ฒฝํ์ด Kubernetes์ ์๋ ๋ฐฉ์์ ๋ ์ ์ดํดํ๋ ๋ฐ ๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ์ ๊ฐ ํ๋ฆฐ ๋ถ๋ถ์ด ์์ผ๋ฉด ์ ์๊ฒ ์ฐ๋ฝ์ฃผ์ธ์.
์ฐธ์กฐ
์ปจํ ์ด๋ ๋ฐ ๋คํธ์ํฌ
ํ๋๋ฌ์ ์ด๋ป๊ฒ ์๋ํ๋์?
CRI ๋ฐ CNI
๋ฒ์ญ๊ฐ์ ์ถ์
๋ธ๋ก๊ทธ์์๋ ์ฝ์ด๋ณด์ธ์.
- ยซ
Kubernetes ๋คํธ์ํน์ ์ํ Calico: ์๊ฐ ๋ฐ ์ฝ๊ฐ์ ๊ฒฝํ "; - "Kubernetes์ ๋คํธ์ํน์ ๋ํ ๊ทธ๋ฆผ ๊ฐ์ด๋":
ํํธ 1 ๋ฐ 2(๋คํธ์ํฌ ๋ชจ๋ธ, ์ค๋ฒ๋ ์ด ๋คํธ์ํฌ) ,3๋ถ(์๋น์ค ๋ฐ ํธ๋ํฝ ์ฒ๋ฆฌ) ; - ยซ
CNI(์ปจํ ์ด๋ ๋คํธ์ํน ์ธํฐํ์ด์ค) - Linux ์ปจํ ์ด๋์ฉ ๋คํธ์ํฌ ์ธํฐํ์ด์ค ๋ฐ ํ์ค ".
์ถ์ฒ : habr.com