ááľáłááť. áľáááá LinkedIn á SRE áááá˛áľ á¨á°ááá áá á˝áá á Kubernetes ááľáĽ áŤááá "ááľáŁá á áľááľ" á áááá ááá¨ááŤá - á áľááá ᣠᨠCRI ᣠCNI áĽá kube-apiserver ááľá°ááĽá - ááŁáŠ ááľ á¨á áá á áľáŤáť á˛á°áĽ áá áá¨á°áłáá˘
á¨áá á¨áłá ááľáááśá˝ á ááą
á¨áŠá áááľáľ áá áááááŞáŤ áá ááĽáŤáľ áľááá ááľáá˝ á¨á á á á áľáŤáťá¸áá áĽáá´áľ áĽáá°ááŤáá áá á áá ááá˝ á ááá ááŠáᢠá¨ááá°áŚá˝ á áŤááľ áĽáá´áľ áĽáá°áá አá áá¨áłáľ áĽááłá á áĽá¨á áĽáá°áá አááááľ á¨áŁáľ áá áᢠáááłá, ᨠCNI ááááá˝ áá áĽáá°áá á áá áá á, ááá áá á áľááá áĽáá´áľ áĽáá°áá አá ááá
á áá á. áľááá
, áĽá áá
á á˝áá áááťá áá°áአá¨á°ááŤáŠ á¨á ááłá¨ áá¨áĽ áááá˝ áĽá áĽáá´áľ á Kubernetes áááľá°á ááľáĽ á áĽá¨á áĽáá°áá°áŠ, áá
á áĽáŤááłááą ááľ á¨áŤáą á¨áá áአIP á áľáŤáť áĽáá˛áŤáá áŤáľá˝ááá.
á áŠá áááľáľ ááľáĽ ááľáááá ááá°áŤááľ á¨á°ááŤáŠ ááááśá˝ á á - áá áĽáá° á¨á°ááŤáŠ á¨áĽá ááŤá á ááŤáŽá˝á˘ áá
ááĽá áá ááá
á ááłááľ áá á¨áłá á˝áá°-ááłáŚá˝
áŽáá´áááŽá˝ áĽá á ááłá¨áá¨áĽ á á¨á¨ááł
áŽáá´áááŽá˝ á á ááłá¨ áá¨áĄ áá áĽáá´áľ áĽááľá ááľ áĽáá°áááŁáĄ á¨ááŤáĽáŤáŠ á áŁá áĽááľ áĽáŠ ááĽáá˝ á áľá áá á áᢠáľááá á¨áá á¨áłá á˝áá°-ááłáŚá˝á á á ááá áĽááł áĽáť áĽá°áŁáá áĽá áĽáŤá´á á á ááľ á ááŤá¨áĽ áĽáť áĽááľáŁáá, áá á á¨ááááľ áľááľá ááá á áĽá ááŹáá˝á ááŤá°áľá áŤáŤáľáłá. á¨ááŤáŁ á ááłá¨áá¨áĽ áááľ áŤáą á¨á°áᨠááŁáĽá áľááááŁá áááአá°áľáˇáᢠá á°áá áá¨á á°á áĽá áá¨á á°áŞ á áľááśá˝á á¨áááľáą á áááá˝ á¨áá á áłá˝ ááá ááá˘
á á°ááłáłá á áľá°ááá áá áŤá ááŤáŁáá˝
á á°ááłáłáŠ á áľá°ááá
áá á áá°áŠ áŽáá´áááŽá˝ ááŤá¨á á¨á áá á áľáŤáť áááááľá ááá°áŤááľ á ááą ááááľ á¨ááááľ áľááľá ááá áá áŤáŤáľáłáᢠáá
áá áááľá¨á, Kubernetes (áĽá Docker) áááŁá ááłáŞáŤáá˝á áááĽáŤá
á á ááľ á áľá°ááá áá áŤá ááá áŽáá´áááŽá˝ á á áá á áľáŤáťáá˝ áĽááľ á ááľ á¨áááŁáĄá áľ á¨áľááľá áá á¨á°ááá á ááľ á¨áŹáľ áŤá á áá¸á. á¨ááááľ áľááľá áĽáá˛á á¨á á á á áľáŤáť á áá áĽá áááá˝ á áááá˝ á¨á°ááááľ ááľáá˝ áááᥠ(á¨áááŁ) áľáŤáá ááá˘áŤ á á áá áŤáááááá˘
á á°ááŤáŠ á áľá°áááá˝ áá ááŤáŁáá˝
ááŹáľ áá¸á á á°ááŤáŠ á áľá°áááá˝ áá áŤá áŽáá´áááŽá˝ á¨á áá á áľáŤáťáá˝á á áá áá áĽááľ á ááľ á¨áááŁáĄá áľ á ááą ááááľ ááᢠá Flannel, á´áááá áá
áá á¨ááťá áŤá°áááá.
á Kubernetes áááľá°á ááľáĽáŁ áááá á¨vxlan ááŁáŞáŤá áááĽáŤá áĽá á áá áá á¨áľ á áĽáŤááłááą ááľááá ááááľ áá áŤááá á¨ááááľ á á¨á´á áŤááááᢠá áá á áľá°ááá áá áááŤáŁ á¨á°áá°áá áĽáŤááłááą ááŹáľ á vxlan ááłáŞáŤá ááľáĽ áŤááá áĽá á UDP ááŹáľ ááľáĽ á°á¸áááᢠá ááľá¨áťá áá, á¨ááá ááŹá á°á°ááľáŽ áá° áľááááá ááľ áááŤáá.
ááłá°á˘áŤáĄ áá
á ááŤáŁáá˝ ááŤá¨á ááľáááá á¨áá°áŤááľ á ááą ááááľ ááá˘
CRI áááľá áá?
CNI áááľá áá?
á¨á áá á áľáŤáťáá˝á áá° ááľ áááá°áĽ ááĄáľááľ á áľá°áááá˝
á áááľá°á ááľáĽ áŤáá áĽáŤááłááą ááľ á¨á á á á áľáŤáť ááá¨á áľááááŁáŁ áá á áľáŤáť áአáááá áá¨ááἠá áľááá ááᢠáá á¨áááá ááĽáŤááłááą ááľááá ááááľ áአáááľ áá¨áĽ á ááá°áĽ á˛áá á¨á፠á ááľááá ááááľ áá áŤááľ ááśá˝ á¨á áá á áľáŤáťáá˝ ááá°áŁá á˘
ááľááá IPAM áááŁá áŞáŤ
ááź nodeipam
áĽáá° áŁáá˛áŤ áááŞáŤ á ááá --controllers
á¨áŠá áááľáľ ááľááá ááááľ á ááááŞáŤ á áááľá°á á˛áááἠááľá˛á˛á á á°ááľá§áᢠá¨ááśá˝á (podCIDR) áááá¨á áĽááąá áá°á¨á áĽá á¨á፠áĽáá°áá ááááἠá ááŚáľáŁ áá á á ááŤá¨áá¸á áŁáá á¨áŠá áááľáľ áááŁá áŞáŤ ááĽááĽá áá á áá á°áá˘áá ááἠááľá¨áᢠá¨ááľááá ááááľá podCIDR á áá¨á°áá áľááá ááłá¨áľ áá˝áááĄ
$ kubectl get no <nodeName> -o json | jq '.spec.podCIDR'
10.244.0.0/24
áŠá¤ááľáŁ á¨ááŤáŁ á ááľ áá áĽá á¨CNI á°á°áŞáá˝áĄ ááá áĽáá´áľ áĽáá°áá°áŤ
ááľ áá° ááľááá ááááľ áááľ áĽá á¨ááá áľ áľáŤáá˝á áá¨ááá áŤáŤáľáłá. á áá ááá á¨ááľ ááľáááá á¨áááááľ áá ááĽá°á áááááľ áŁáá¸á áá áĽáť á á°áŠáŤááá˘
ááľ áá° ááľááá ááááľ áááľ á¨áá¨á°ááľá á¨ááľá°áśá˝ á°áá°ááľ áŤáľááłáá˘
áĽáá:
á ááŤáŁ á ááľ áá áĽá á á˛á¤áá á á°á°áŞáá˝ ááŤá¨á áŤá ááľá°ááĽá
áĽáŤááłááą á¨á ááłá¨ áá¨áĽ á á
áŤá˘ á¨áŤáą CNI á°á°áŞ á ááᢠá¨ááŤáŁá á ááľ áá á˛ááá áááą ááľáááá ááááá áŤáááłá
á°ááᢠá ááŤáŁá ááľáĽ ᣠᨠCNI á°á°áŞá á á°á°áŞá á°áááŻáá˘
á¨áá á á áá áĽáŤááłááą á á áŤá˘ á¨áŤáą ááŞá á áá. á ááá á¨áŠá áááľáľ ááśá˝ ááľáĽ á°ááá áĽá áááłáá˝ á ááłá¨áá¨áĽ áá á á°á áŤá ááᢠáá ááŞá ᨠCNI áá á áá á áĽáŽ áááŁá ááá á áŤáą á ááľááá ááááľ áá áááĽáŤáᢠá áááአᨠCRI áááá á¨áľááá á¨CNI áááá áá°áá áĽááłáá áľ áááá°á áá¨áłáá˘
ᨠCNI áá
á¨áľ ááá áŚáł áá á
áá˝áá; á ááŁáŞááľ ááľáĽ áá /etc/cni/net.d/<config-file>
. á¨áááľá°á á áľá°áłáłáŞáá˝ á áĽáŤááłááą á¨áááľá°á ááľááá ááááľ áá á¨CNI ááááá˝á á¨ááŤá áááááľ á ááŁá¸áᢠáŚáłá¸áá áááá á¨áá˝á áá; ááŁáŞ áá፠- /opt/cni/bin
.
ááŤáŁ (áŽáá´ááá) á áá ááá áľ áá á¨ááááŞáŤá áĽá á¨áááá áááľáŽá˝ ááááśá˝ á ááá ááľáĽ áááá áá˝ááᢠ[plugins.ÂŤio.containerd.grpc.v1.criÂť.cni]
в
ááááá áĽáá° ááľááá á á áŤá˘á˝á áĽá¨á°á ááá áľááá áľááááá áľáá˝ áĽááááááĄ-
- Flanneld (Flannel's daemon) áĽááá áá áĽáá° DaemonSet á áááľá°á ááľáĽ ááŤáá ᨠáá
install-cni
áĽáá°init ááŤáŁ . Install-cni
áááĽáŤáᨠCNI áá á ááá (/etc/cni/net.d/10-flannel.conflist
) á áĽáŤááłááą ááľááá ááááľ.- áááááľ á¨vxlan ááŁáŞáŤá áááĽáŤáᣠá¨á¤áá á á áááá á¨á ááłá¨ áá¨áĽ ááłáłáłá áŤááŁá áĽá á¨ááľ ááááá˝á áááŁá áŤáᢠá ááá áŠá áľ áá, á áĽá á ááľáĽ áá° ááá ááľáá˝ ááááśá˝á áŤá°áŤáŤá.
- áĽááá ááľááŽá˝ ááśá˝ á á áá á áľáŤáťáá˝ áĽááľ á ááľ áĽáá˛ááŁáĄ áŤáľá˝áá¸áá.
áľá Flannel áľáŤ á¨á áá áá¨á áááááľ á á áááš áá¨á¨áť áá áŤááľá á áááá˝ áĽáá˛á áá áĽáááŤáá.
á Containerd CRI áááá áĽá á CNI á°á°áŞáá˝ ááŤá¨á áŤáá ááľá°ááĽá á˛áŤááŤá áá¸áááĄ
á¨áá áĽáá°ááłá¨á áŠá¤ááą ááľ áááá á áá° áŽáá´ááá CRI áááá áá°áááᣠáá
á á áľááľá á¨ááľ ááľáááá áááááᾠᨠCNI áááá áá áŤáᢠá áá
á ááŁá á¨á ááłá¨ áá¨áĽ á á
áŤá˘á CNI áááá á¨á ááłá¨ áá¨áĽá á¨á°ááŤáŠ áá˝áłáá˝ ááááá ááá˝ áá ᨠCNI á°á°áŞáá˝á áá áŤáá˘
á CNI á°á°áŞáá˝ ááŤá¨á ááľá°ááĽá
á¨á°ááŤáŠ ᨠCNI ááááá˝ á á, á°ááŁáŤá¸á á á áľá°ááá áá á ááŤáŁáá˝ ááŤá¨á á¨á ááłá¨ áá¨áĽ áááááľá ááááááľ áááłáľ áá. áá áááľ áľá áŚáľáą ááĽáŤáŤáá˘
Flannel 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 áá á áĽáŽ áá°áŤáᢠá áááłá áľ áá áááááľ ááľá˛á˛á áá áĽá ááá˝ á¨á ááłá¨ áá¨áĽ áá á¨á°áŤáŤá ááááŽá˝á á¨á¤áá á á áááá á ááĽáś áá° ááá áŤáľáááŁá¸ááᢠ/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"
}
}
áááááŞáŤ áá á˛á ፠á¨ááááľ áľááľá áááĽáŤá ÂŤnameÂť: ÂŤcni0Âť
, á áááá ááľáĽ á¨á°ááá¸á. á¨ááŤá ááĽáŤááłááą ááľ á¨áŹáľ áĽááľ ááá áŤá. á áá°áá áŤá á¨áĽá ááŤáŁá á¨á ááłá¨ áá¨áĽ áľá áŚáł áá ááááá, áááá áŤá á á áľá°ááá á ááłá¨áá¨áĽ áá áŤáá á¨ááááľ áľááľá áá ááááá.
á áá´ á¨áŹáľ áĽááľ á¨á°ááᨠá¨áĽáŞá áááá á áľá°ááá -á áŤáŁá˘áŤá 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 Address Má áľá°áłá°á - á¨á áá á áľáŤáť á áľá°áłá°á) áááŤáŁá á¨á áá á áľáŤáťáá á¨ááĄáľ ááľááá ááááłá áĽá á¨á°áá°á áá á áá á á áľá°ááá áá á ááá ááľáĽ á á°á áá°á áá፠ááľáĽ áŤá¨ááťá dataDir
- /var/lib/cni/networks/<network-name=cni0>/<ip>
. áá
ááá á¨á°á°á á á áá á áľáŤáť á¨á°áá°á á áľá ááŤáŁ ááłáá፠áááá˘
á¨á áľá°ááá -á áŤáŁá˘áŤá IPAM á°á°áŞá á˛á°áá á¨áá¨á°ááá ááἠááááłááĄ-
{
"ip4": {
"ip": "10.244.4.2",
"gateway": "10.244.4.3"
},
"dns": {}
}
áá áááŤ
áŠá¤-á°ááŁáŁáŞ-á áľá°áłáłáŞ ááĽáŤááłááą ááľááá ááááľ podCIDR áááľáŁáᢠá¨áĽáŤáá˛áá° ááľááá áááá´ áá´áá˝ á á°ááá¨á°á á¨áá˛á˛á˛á á ááá ááľáĽ á¨áááá á¨á áľáŤáť áŚáł á áá á áľáŤáťáá˝á áŤáááᢠá¨á ááááš podCIDRs áľáááá°áŤá¨áĄ ááá ááśá˝ áአá¨á áá á áľáŤáťáá˝á áŤáááá˘
á¨áŠá áááľáľ áááľá°á á áľá°áłáłáŞ áŠá¤ááľáᣠáŽáá´ááá á ááľ áááᣠá¨ááľááá á á áŤá˘ ááŞáá áŤáá áŤá áĽá áááá áĽá á¨CNI ááááá˝á áá° áĽáŤááłááą ááľááá ááááľ áááłáᢠá áááłá áľ áá á¨á ááłá¨ áá¨áĽ á á áŤá˘á ááŞá ᨠCNI áá á áááĽáŤáᢠááľ áá° ááľááá ááááľ á˛áłááľ áŠá¤ááą áááá á CRI áááá áá°áááᢠá ááá á áŽáá´ááá áĽá á áá á¨áááŁá¨áŽáá´ááá CRI áááá á¨ááľ ááľáááá ááááááľ á CNI áá á á¨á°ááá¸áá á¨CNI áááá áá áŤáᢠá áá¤áąá, ááą á¨á áá á áľáŤáťá áŤááá.
á¨áĽááá
á áá ááľá°ááĽáŽá˝ áľáá áĽá áĽáá
á áááŽá˝ ááá¨áłáľ á¨á°áá°á áá ááľáśáĽááᢠáŤááá áááľ áŠá áááľáľ áĽáá´áľ áĽáá°áá°áŤ á á°áťá ááá¨áłáľ áá¨áłááłá áĽáŹ á°áľá á á°ááááᢠáľáááááá ááá á¨á°áłáłáľáŠ áĽáŁáá
á áá á áááá˘
ááŁááťáá˝
áŽáá´áááŽá˝ áĽá á ááłá¨áá¨áĽ
á¨ááŤáŁ á ááłá¨ áá¨áĽ á á ááá áĽááł á¨áĽá ááŤá˘áŤ ááľáááá ááĽááľ
Flannel áĽáá´áľ áĽáá°áá°áŤ
CRI áĽá CNI
PS á¨á°ááá
á áĽááá˝á áá áŤááĽáĄáĄ-
- ÂŤ
Calico á Kubernetes ááľáĽ áá ááłá¨áá¨áĽ: ááá˘áŤ áĽá áľáá˝ áááľ "; - "á áŠá áááľáľ ááľáĽ áá ááłá¨áá¨áĽ á¨á°áĽáŤáŤ áááŞáŤ"áĄ-
ááá 1 áĽá 2 (á¨ááľááá áá´á ᣠá°á°áŤá˘ á ááłá¨ áá¨áŚá˝) ,ááá 3 (á áááááľ áĽá á¨áľáŤáá áá°áľ) ; - ÂŤ
áŽáá´ááá á ááłá¨áá¨áĽ á áááá˝ (á˛á¤áá á) - á¨á ááłá¨ áá¨áĽ á áááá˝ áĽá áááááľ ááŤáŁáá˝ áá°á á Âť.
ááá: hab.com