ืื ืืขืืืื ืฉืื
ืงืืื ืื, ืื ื ืจืืฆื ืืืืืืช ืืฆืืืช Cilium: ืืืืจ'ื ืขืืจื ืื ืืืืืง ืืืชืงื ืืช ืืชืกืจืืืื ืื ืืืืจ ืืืืื.
ืื ืืฉืชื ื ืืื ื ืืืืืจ 2018
ืื ื ืื ืฉืืฉืชื ื ืืื (ืื ืืชื ืืขืื ืืื):
ืคืื ื ื ืืชืจ ืืืฉืง ื-CNI ืืืืืจ ืืืคืฉืื ืืืืชืจ, ืื ืขืืืื ืืื ื ืชืืื ืืืืื ืืืช ืจืฉืช ืืืฆืคื ื.
ืจืืื ื ืืืจ ืื ื ืชืืืช, ืื ืืกืจื ื ืืืชื ืืืืื.
WeaveNet ืชืืื ืืขืช ืืืืื ืืืช ืจืฉืช ืขืืืจ Ingress ื-Egress! ืืื ืืคืจืืื ืืจื.
ื-Calico, ืืชื ืขืืืื ืฆืจืื ืืืืืืจ ืืืืคื ืืื ื ืืช ืืืื ืืื ืืช ืืืจืื (MTU) ืืืืฆืืขืื ืืืืืื ืืืืชืจ. Calico ืืฆืืขื ืฉืชื ืืคืฉืจืืืืช ืืืชืงื ืช CNI, ืื ืฉืชืืื ืืืกืชืืจ ืืื ืืืืจ ETCD ื ืคืจื:
- ืืฆื ืืืกืื ืืืืฉืง ื-API ืฉื Kubernetes ืืืืืจ ื ืชืื ืื (ืืืื ืืฉืืื < 50 ืฆืืชืื);
- ืืฆื ืืืกืื ื-Kubernetes API ืืืืืจ ื ืชืื ืื ืขื ืคืจืืงืกื Typha ืืื ืืืงื ืขื ืืขืืืก ืขื K8S API (ืืืื ืืฉืืื > 50 ืฆืืชืื).
Calico ืืืืืขื ืขื ืชืืืื
Cilium ืชืืื ืืขืช ืืืฆืคื ื! Cilium ืืกืคืงืช ืืฆืคื ื ืขื ืื ืืจืืช IPSec ืืืฆืืขื ืืืืคื ืืจืฉืช WeaveNet ืืืืฆืคื ืช. ืืื WeaveNet ืืืืจื ืืืชืจ ื-Cilium ืืฉืืืฆืคื ื ืืืคืขืืช.
ืืขืช ืงื ืืืชืจ ืืคืจืืกื ืฉื Cilium ืืืืืช ืืืืคืจืืืจ ETCD ืืืืื ื.
ืฆืืืช Cilium ื ืืกื ืืืคืืืช ืืฉืงื ืื-CNI ืฉืื ืขื ืืื ืืคืืชืช ืฆืจืืืช ืืืืืจืื ืืขืืืืืช ืืืขืื, ืื ืืืชืืจืื ืฉืื ืขืืืื ืงืืื ืืืชืจ.
ืืงืฉืจ ืื ืฆ'ืืจืง
ืืืฉืืืื ืืืคืขืืช ืขื ืฉืืืฉื ืฉืจืชื Supermicro ืฉืืื ื ืืืจืืืืืืื ืขื ืืชื Supermicro ืฉื 10 ื'ืืื-ืืืื. ืืฉืจืชืื ืืืืืจืื ืืฉืืจืืช ืืืชื ืืืืฆืขืืช ืืืื DAC SFP+ ืคืกืืืืื ืืืืืืจืื ืขื ืืืชื VLAN ืขื ืืกืืจืืช ื'ืืื (MTU 9000).
Kubernetes 1.14.0 ืืืชืงื ืืืืืื ืื 18.04 LTS ืขื Docker 18.09.2 (ืืจืกืช Docker ืืจืืจืช ืืืืื ืืืืืืจื ืื).
ืืื ืืฉืคืจ ืืช ืืืืืช ืืฉืืืืจ, ืืืืื ื ืืืืืืจ ืชืืื ืืช ืืืืกืืจ ืืฆืืืช ืืจืืฉืื, ืืืงื ืืช ืืืง ืืฉืจืช ืฉื ื-benchmark ืืฉืจืช ืืฉื ื, ืืืช ืืืง ืืืงืื ืืฉืืืฉื. ืืฉื ืื, ืื ื ืืฉืชืืฉืื ื-NodeSelector ืืคืจืืกืืช Kubernetes.
ื ืชืืจ ืืช ืชืืฆืืืช ืืืฉืืืื ืืกืืื ืืื:
ืืืืจืช CNI ืขืืืจ ืืื
ืืื ืืืช ืืืื ืจืง ืขืืืจ CNI ืืืจืฉืืื ืืกืขืืฃ
ื ืฉืืื ืืช ื-CNIs ืืืืื:
- Calico v3.6
- Canal v3.6 (ืืขืฆื ืคืื ื ืืจืฉืช + Calico ืืืืื)
- Cilium 1.4.2
- ืคืื ื 0.11.0
- ืงืืื-ื ืชื 0.2.5
- WeaveNet 2.5.1
ืืชืงื ื
ืืื ืฉืืืื ืงื ืืืชืจ ืืืชืงืื ืืช ื-CNI, ืื ืืจืืฉื ืืจืืฉืื ื ืฉืื ื ืืืื ืืื ืืืชืจ. ืื ื-CNIs ืืืืื ืงืืื ืืืื ืืืชืงื ื (ืขื ืคืงืืื ืืืช ืื ืฉืชืืื).
ืืคื ืฉืืืจื ื, ืืฉืจืชืื ืืืืชื ืืืืืจืื ืขื ืืกืืจืืช ื'ืืื ืืืคืขืืืช (ืืืืจื ื ืืช ื-MTU ื-9000). ื ืฉืื ืื CNI ืืงืืข ืืืืืืืืช ืืช ื-MTU ืืืชืืกืก ืขื ืชืฆืืจืช ืืืชืืืื. ืขื ืืืช, ืจืง Cilium ื- Flanell ืืฆืืืื ืืื. ืืฉืืจ ื-CNIs ืืฉ ืืงืฉืืช ื-GitHub ืืืืกืืฃ ืืืืื MTU ืืืืืืื, ืื ืื ื ื ืืืืจ ืืืช ืืืืคื ืืื ื ืขื ืืื ืฉืื ืื ConfigMap ืขืืืจ Calico, Canal ื-Kube-ื ืชื, ืื ืืขืืจืช ืืฉืชื ื ืกืืืื ืขืืืจ WeaveNet.
ืื ืืืขืื ืขื MTU ืฉืืื? ืืืืืจืื ืื ืืฆืืื ืืช ืืืืื ืืื WeaveNet ืขื ืืจืืจืช ืืืืื ืฉื MTU ืืืกืืจืืช ื'ืืื ืืืคืขืืืช:
ืืืฆื MTU ืืฉืคืืข ืขื ืืชืคืืงื?
ืจืืื ื ืืื ืืฉืื MTU ืืืืฆืืขืื, ืขืืฉืื ืืืื ื ืจืื ืืื ื-CNI ืฉืื ื ืงืืืขืื ืืืช ืืืืคื ืืืืืืื:
CNI ืืืื ืืืืืืืืช MTU
ืืืจืฃ ืืจืื ืฉืขืืื ืืืืืืจ ืืช ื-MTU ืขืืืจ Calico, Canal, Kube-Roter ื-WeaveNet ืืืืฆืืขืื ืืืืืืื. Cilium ื-Flannel ืืฆืืืื ืืงืืืข ื ืืื ืืช ื-MTU ืืขืฆืื ืืื ืื ืืืืจืืช.
ืืืืื
ื ืฉืืื ืืช ืืืืืช CNI ืืฉื ื ืืืืืื: ืืืืืืช ืืืฆืคืื ื ืชืื ืื ืืฉืืืจืื ืืืืืขืช ืืืื ืืืช ืจืฉืช Kubernetes (ืืืืกืกืช ืขื ืืืืงืืช ืืืืชืืืช, ืื ืชืืขืื).
ืจืง ืฉื ื CNIs ืืฆืคืื ืื ื ืชืื ืื: Cilium ื-WeaveNet. ืืฆืคื ื WeaveNet ืืืคืขื ืขื ืืื ืืืืจืช ืกืืกืืช ืืืฆืคื ื ืืืฉืชื ื ืกืืืืช CNI. IN
ืืืฉืจ ืืืืฉืื ืืืื ืืืช ืืจืฉืช, ืื ืืฆืืืื Calico, Canal, Cilium ื-WeaveNet, ืฉืื ืืชื ืืืื ืืืืืืจ ืืืื Ingress ื-Egress. ื ืงืืื-ื ืชื ืืฉ ืืืืื ืจืง ืขืืืจ Ingress, ื ืคืึธื ึถื ืืื ืืืื ืืืช ืจืฉืช ืืืื.
ืืืื ืืชืืฆืืืช ืืืืืืืช:
ืชืืฆืืืช ืืืฆืืขื ืืืืืืช
ืคืจืืืืงืืืืืืช
ืืืช ืืืื ืื ืืฆืืื ืืช ืืชืคืืงื ืืืืืฆืขืช ืืืืจื ืฉืืืฉ ืจืืฆืืช ืืคืืืช ืฉื ืื ืืืืงื. ืื ื ืืืืงืื ืืช ืืืืฆืืขืื ืฉื TCP ื-UDP (ืืืืฆืขืืช iperf3), ืืืฉืืืื ืืืืชืืื ืืื HTTP (ืขื Nginx ื-curl) ืื FTP (ืขื vsftpd ื-curl) ืืืืกืืฃ ืืืฆืืขื ืืคืืืงืฆืืืช ืืืืฆืขืืช ืืฆืคื ื ืืืืกืกืช SCP (ืืืืฆืขืืช ืืงืื ืืฉืจืช OpenSSH).
ืขืืืจ ืื ืืืืืงืืช, ืืืฆืขื ื ืืื ืืชืืช ืืฉืืฃ (ืงื ืืจืืง) ืืื ืืืฉืืืช ืืื ืืืฆืืขื CNI ืืืืฆืืขื ืจืฉืช ืืงืืืืื. ืืื ืื ื ืืฉืชืืฉืื ืืืืชื ืกืืื, ืืื ืืฆืืข:
- ืฆืืื = ืืื ืืืื
- ืืชืื = ืืื
- ืืืื = ืื-ืื
- ืืืื = ืจืข
ืื ื ืืงื CNIs ืฉืืืืืจื ืืฆืืจื ืฉืืืื ืื ืจืื ืจืง ืชืืฆืืืช ืขืืืจ CNIs ืขื ื-MTU ืื ืืื. (ืืขืจื: Cilium ืื ืืืฉื ื ืืื ืืช ื-MTU ืื ืชืคืขืื ืืฆืคื ื, ืื ืชืฆืืจื ืืืคืืืช ืืช ื-MTU ืืืืคื ืืื ื ื-8900 ืืืจืกื 1.4. ืืืจืกื ืืืื, 1.5, ืขืืฉื ืืืช ืืืืคื ืืืืืืื.)
ืื ื ืืชืืฆืืืช:
ืื ื-CNIs ืืฆืืื ืืืื ืืืื ื-TCP. CNI ืขื ืืฆืคื ื ืืคืืจ ืืจืื ืืืืืจ ืืืืืื ืฉืืืฆืคื ื ืืงืจื.
ืื ืืื ืื ื-CNI ืืฆืืืืื. CNI ืขื ืืฆืคื ื ืืจืื ืืืขื ืืช ืืืชื ืชืืฆืื. Cilium ืงืฆืช ืืืืืจื ืืืชืืจืื, ืืื ืื ืจืง 2,3% ืฉื ืืชืืช ืืฉืืคื, ืื ืื ืชืืฆืื ืื ืจืขื. ืื ืชืฉืื ืฉืจืง Cilium ื-Flannel ืงืืขื ืืช ื-MTU ืืฆืืจื ื ืืื ื ืืขืฆืื, ืืืื ืืชืืฆืืืช ืฉืืื ืืื ืื ืชืฆืืจื ื ืืกืคืช.
ืื ืืืื ืืคืืืงืฆืื ืืืืชืืช? ืืคื ืฉืืชื ืืืื ืืจืืืช, ืืืืฆืืขืื ืืืืืืื ืขืืืจ HTTP ืื ืืขื ื ืืืืื ืืืชืจ ืืืฉืจ ืขืืืจ TCP. ืื ืื ืืชื ืืฉืชืืฉ ื-HTTP ืขื TCP, ืืืืจื ื ืืช iperf3 ืืืืื TCP ืืื ืืื ืืข ืืชืืื ืืืืืช ืฉืชืฉืคืืข ืขื ืืื HTTP. ืืืื ืขืฉื ืืื ืขืืืื ืืืื. ื-Kube-Roter ืืฉ ืืชืจืื ืืจืืจ, ืืื WeaveNet ืื ืืฆืืืื: ื-20% ืืจืืขืื ืืืชืจ ืืืชืืช ืืฉืืคื. Cilium ื-WeaveNet ืขื ืืฆืคื ื ื ืจืืื ืืืฉ ืขืฆืืืื.
ืขื FTP, ืคืจืืืืงืื ื ืืกืฃ ืืืืกืก TCP, ืืชืืฆืืืช ืืฉืชื ืืช. Flanell ื-Kube-Roter ืขืืฉืื ืืช ืืขืืืื, ืืื Calico, Canal ื-Cilium ื ืืฆืืื ืงืฆืช ืืคืืืืจ ืืื ืืืืืื ืื-10% ืืืชืืช ืืฉืืคื. WeaveNet ื ืืฆืืช ืืคืืืืจ ืฉื ืขื 17%, ืืื WeaveNet ืืืืฆืคื ืช ืืงืืืื ื-40% ืืช Cilium ืืืืฆืคื ืช.
ืขื SCP ื ืืื ืืจืืืช ืืื ืืื ืขืืื ืื ื ืืฆืคื ืช SSH. ืืืขื ืื ื-CNI ืืฆืืืืื, ืืื WeaveNet ืืคืืจืช ืฉืื. Cilium ื-WeaveNet ืขื ืืฆืคื ื ืฆืคืืืื ืืืืืช ืืืจืืขืื ืืืืชืจ ืืืื ืืฆืคื ื ืืคืืื (SSH + CNI).
ืืืื ืืืืช ืกืืืื ืขื ืืชืืฆืืืช:
ืฆืจืืืช ืืฉืืืื
ืืขืช ื ืฉืืื ืืืฆื CNI ืฆืืจื ืืฉืืืื ืืขืืืกืื ืืืืื (ืืืืื ืืขืืจืช TCP, 10 Gbps). ืืืืื ื ืืืฆืืขืื ืื ื ืืฉืืืื CNI ืขื ืืชืืช ืืฉืืคื (ืงื ืืจืืง). ืืฆืจืืืช ืืฉืืืื, ืืืื ื ืจืื Kubernetes ืืืืจ (ืงื ืกืืื) ืืื CNI ืื ืจืื ืืื ืืฉืืืื ื ืืกืคืื CNI ืฆืืจื.
ื ืชืืื ืืืืืจืื. ืื ื ืืขืจื ืืืืืฆืข ืฉื ืืืืจืื RAM ืฉื ืฆืืชืื (ืื ืืืื ืืืืจืื ืืืืืื) ื-MB ืืืืื ืืืขืืจื.
Flanell ื-Kube-ืจืืืืจ ืืจืื ืชืืฆืืืช ืืฆืืื ืืช - ืจืง 50 MB. ื-Calico ืื-Canal ืืฉ 70 ืื ืืืช. WeaveNet ืฆืืจืืช ืืืืจืืจ ืืืชืจ ืืืืืจืื - 130 ืืื-ืืืื, ื-Cilium ืืฉืชืืฉ ื-400.
ืขืืฉืื ืืืื ื ืืืืง ืืช ืฆืจืืืช ืืื ืืืขืื. ืจืืื ืืฆืืื: ืืชืจืฉืื ืื ืืฆืื ืืืืืื, ืืื ppm, ืืืืืจ, 38 ppm ืขืืืจ "ืืจืื ืืฉืืฃ" ืืื 3,8%. ืืืื ืืชืืฆืืืช:
Calico, Canal, Flannel ื-Kube-Roter ืืขืืืื ืืืื ืืืขืื - ืจืง 2% ืืืชืจ ื-Kubernetes ืืื CNI. WeaveNet ืืคืืจืช ืืจืืง ืืืืืจ ืขื ืชืืกืคืช ืฉื 5%, ืืืืจืื Cilium ื-7%.
ืืืื ืกืืืื ืฉื ืฆืจืืืช ืืฉืืืื:
ืชืืฆืืืช ืฉื
ืืืื ืขื ืื ืืชืืฆืืืช:
ืชืืฆืืืช ืื ืฆ'ืืจืง ืืืืืืช
ืืกืงื ื
ืืืืง ืืืืจืื ืืืืข ืืช ืืขืชื ืืกืืืืืงืืืืืช ืขื ืืชืืฆืืืช. ืืืืจ ืฉืจืฃ ืื ืืืืง ืจืง ืืช ืืชืคืืงื ืฉื ืืืืืจ ืืืื ืขื ืืฉืืื ืงืื ืืืื (3 ืฆืืชืื). ืื ืื ืื ืขื ืืฉืืืืืช ืืืืืื (<50 ืฆืืชืื) ืื ืืืืืจืื ืืงืืืืื.
ืื ื ืืืืืฅ ืืืฉืชืืฉ ื-CNI ืืืืื ืืืชืื ืืชืจืืืฉ:
- ืืื ืืฉ ืื ืืืฉืืื ืฉืื ืฆืืชืื ืขื ืืขื ืืฉืืืื (ืืกืคืจ ื'ืืื-ืืืื ืฉื ืืืืจืื RAM, ืืกืคืจ ืืืืืช) ืืืชื ืื ืฆืจืื ืชืืื ืืช ืืืืื - ืืืจ ืคืึธื ึถื. ืืื ืืื ื-CNIs ืืืกืืื ืืื ืืืืชืจ. ืืืื ืชืืื ืืืืืื ืจืื ืฉื ืืจืืืืงืืืจืืช (amd64, arm, arm64 ืืื'). ืื ืืกืฃ, ืืื ืืื ืืฉื ื (ืืฉื ื ืืื Cilium) CNI ืฉืืืื ืืงืืืข ืืืืคื ืืืืืืื ืืช ื-MTU, ืื ืฉืื ืชืฆืืจื ืืืืืืจ ืฉืื ืืืจ. ื ืชื Kube ืืชืืื ืื ืืื, ืืื ืืื ืื ืืกืื ืืจื ืืชืฆืืจื ืืืืืืจ ืืื ืืช ืืช ื-MTU.
- ืืืืืช ืืฆืืจื ืืืฆืคืื ืืช ืืจืฉืช ืืืชืจ ืืืืืื, ืงื WeaveNet. ืื ืชืฉืื ืืฆืืื ืืช ืืืื ื-MTU ืื ืืชื ืืฉืชืืฉ ืืืกืืจืืช ื'ืืื, ืืืืคืฉืจ ืืฆืคื ื ืขื ืืื ืฆืืื ืกืืกืื ืืืืฆืขืืช ืืฉืชื ื ืกืืืื. ืืื ืขืืืฃ ืืฉืืื ืืืืืฆืืขืื - ืื ืขืืืช ืืืฆืคื ื.
- ืขืืืจ ืฉืืืืฉ ืจืืื ัะพะฒะตััั ืงืืืืงื. CNI ืื ื ืืฆื ืืฉืืืืฉ ื ืจืื ืืืื ืคืจืืกื ืฉืื ืื ืฉื Kubernetes (Kops, Kubespray, Rancher ืืื'). ืืื ื-WeaveNet, ืืงืคื ืืืืืืจ ืืช ื-MTU ื-ConfigMap ืื ืืชื ืืฉืชืืฉ ืืืกืืจืืช ื'ืืื. ืืื ืืื ืจื ืชืคืงืืื ืืขืื ืืืืื ืช ืฆืจืืืช ืืฉืืืื, ืืืฆืืขืื ืืืืืื.
ืืืืกืืฃ, ืื ื ืืืืืฅ ืื ืืขืงืื ืืืจ ืืืชืคืชืืืช ืกืืืืื. ื-CNI ืืื ืืฉ ืฆืืืช ืืืื ืคืขืื ืฉืขืืื ืืจืื ืขื ืืืืฆืจ ืฉืืื (ืชืืื ืืช, ืืืกืืื ืืืฉืืืื, ืืืฆืืขืื, ืืืืื, ืืฉืืืืืช...) ืืืฉ ืืื ืชืืื ืืืช ืืืื ืืขื ืืื ืืช.
ืชืจืฉืื ืืืืชื ืืืืืจืช CNI
ืืงืืจ: www.habr.com