TL, DR: Kube-Router болон Kube-OVN-ээс бусад бүх CNI нь байх ёстой байдлаараа ажилладаг бол MTU автомат илрүүлэлтийг эс тооцвол Calico нь хамгийн шилдэг нь юм.
Миний өмнөх шалгалтын нийтлэлийн шинэчлэл (
Бид хэмжигдэхүүн рүү орохоосоо өмнө ...
2019 оны дөрөвдүгээр сараас хойш шинэ зүйл юу байна?
- Өөрийн кластер дээрээ тест хийх боломжтой: Та манай хэрэгслийг ашиглан өөрийн кластер дээрээ тест хийж болно Kubernetes Network Benchmark:
кнб - Шинэ гишүүд гарч ирлээ
- Шинэ хувилбарууд: Одоогийн шалгалтууд нь "Pod-to-Pod" сүлжээний гүйцэтгэлийн туршилтыг явуулдаг бөгөөд бодит нөхцөл байдалд ойртуулах туршилтуудыг явуулдаг "Pod-to-Service" шинэ скрипт нэмсэн. Практикт таны API бүхий Pod нь Pod IP хаягаар биш харин үндсэн үйлчилгээтэй ажилладаг (мэдээж бид TCP болон UDP хоёр хувилбарын аль алиныг нь шалгадаг).
- Нөөцийн хэрэглээ: туршилт бүр өөрийн нөөцийн харьцуулалттай болсон
- Хэрэглээний тестүүдийг устгах: Нийгэмлэг болон CNI-ийн засварлагчидтай хийсэн үр дүнтэй хамтын ажиллагааны үр дүнд CNI эхлүүлэх (Pod-ийн эхний хэдэн секунд) саатсаны улмаас TCP-ээс iperf үр дүн болон curl үр дүнгийн хооронд зөрүү байгааг олж илрүүлсэн тул бид HTTP, FTP болон SCP тестүүдийг хийхээ больсон. эхлүүлэх, энэ нь бодит нөхцөлд ердийн зүйл биш юм).
- Нээлттэй эх сурвалж: бүх тестийн эх сурвалжууд (скриптүүд, yml тохиргоо болон анхны "түүхий" өгөгдөл) боломжтой
энд
Лавлах туршилтын протокол
Протоколыг дэлгэрэнгүй тайлбарласан болно
Үнэлгээнд зориулж CNI сонгох
Энэхүү туршилт нь нэг yaml файлаар тохируулсан CNI-г харьцуулах зорилготой (тиймээс VPP болон бусад скриптүүдээр суулгасан бүх програмыг хассан болно).
Харьцуулах зорилгоор манай сонгосон CNI-ууд:
- Antrea v.0.9.1
- Calico v3.16
- Canal v3.16 (Flannel network + Calico Network Policies)
- Cilium 1.8.2
- Фланел 0.12.0
- Хамгийн сүүлийн үеийн Kube чиглүүлэгч (2020-08-25)
- WeaveNet 2.7.0
CNI-д зориулсан MTU-г тохируулж байна
Юуны өмнө бид MTU автомат илрүүлэлтийн TCP гүйцэтгэлд үзүүлэх нөлөөг шалгана.
MTU-ийн TCP гүйцэтгэлд үзүүлэх нөлөө
UDP ашиглах үед илүү том цоорхой гарч ирдэг:
MTU-ийн UDP гүйцэтгэлд үзүүлэх нөлөө
Туршилтаар илэрсэн гүйцэтгэлийн асар их нөлөөллийг харгалзан бид CNI-ийн бүх ажилтнуудад итгэл найдварын захидал илгээхийг хүсч байна: CNI-д автомат MTU илрүүлэлтийг нэмнэ үү. Та зулзага, ганц эвэрт, тэр байтугай хамгийн хөөрхөн нь болох бяцхан Девопыг аврах болно.
Гэсэн хэдий ч, хэрэв та автомат MTU илрүүлэх дэмжлэггүйгээр CNI ашиглах шаардлагатай бол гүйцэтгэлийг авахын тулд гараар тохируулах боломжтой. Энэ нь Calico, Canal болон WeaveNet-д хамааралтай болохыг анхаарна уу.
Дагалдан яваа CNI-д хандан миний бяцхан хүсэлт...
CNI тест: Түүхий өгөгдөл
Энэ хэсэгт бид CNI-ийг зөв MTU-тай харьцуулах болно (автоматаар тодорхойлох эсвэл гараар тохируулах). Энд байгаа гол зорилго бол түүхий өгөгдлийг графикаар харуулах явдал юм.
Өнгөний домог:
- саарал - дээж (жишээ нь, нүцгэн төмөр)
- ногоон - 9500 Mbps-ээс дээш зурвасын өргөн
- шар - 9000 Mbps-ээс дээш зурвасын өргөн
- улбар шар - 8000 Mbps-ээс дээш зурвасын өргөн
- улаан - 8000 Mbps-ээс доош зурвасын өргөн
- цэнхэр - төвийг сахисан (зурвасын өргөнтэй холбоогүй)
Ачаалалгүй нөөцийн хэрэглээ
Юуны өмнө кластер "унтаж" байх үед нөөцийн зарцуулалтыг шалгана уу.
Ачаалалгүй нөөцийн хэрэглээ
Pod-to-Pod
Энэ хувилбарт үйлчлүүлэгч Pod нь IP хаягаа ашиглан серверийн Pod-той шууд холбогддог гэж үздэг.
Pod-to-Pod хувилбар
TCP
Pod-to-Pod TCP үр дүн ба холбогдох нөөцийн хэрэглээ:
UDP
Pod-to-Pod UDP үр дүн ба холбогдох нөөцийн хэрэглээ:
Pod-to-Service
Энэ хэсэг нь бодит хэрэглээний тохиолдлуудад хамааралтай бөгөөд клиент Pod нь ClusterIP үйлчилгээгээр дамжуулан серверийн Pod-той холбогддог.
Pod-to-Service скрипт
TCP
Pod-to-Service TCP үр дүн болон холбогдох нөөцийн хэрэглээ:
UDP
Pod-to-Service UDP үр дүн болон холбогдох нөөцийн хэрэглээ:
Сүлжээний бодлогын дэмжлэг
Дээр дурдсан бүхний дотроос улс төрийг дэмждэггүй цорын ганц хүн бол Фланел юм. Бусад нь дотогшоо болон гадагш чиглэсэн сүлжээний бодлогыг зөв хэрэгжүүлдэг. Сайн ажил!
CNI шифрлэлт
Шалгасан CNI-уудын дунд Pod хоорондын сүлжээний солилцоог шифрлэх боломжтой байдаг.
- IPsec ашиглан Antrea
- Calico утас хамгаалагч ашиглан
- IPsec ашиглан Cilium
- IPsec ашиглан WeaveNet
Зурвасын өргөн
Цөөхөн CNI үлдсэн тул бүх хувилбаруудыг нэг графикт оруулъя:
Нөөцийн хэрэглээ
Энэ хэсэгт бид TCP болон UDP дээр Pod-to-Pod холболтыг боловсруулахад ашигласан нөөцийг үнэлэх болно. Нэмэлт мэдээлэл өгөхгүй тул Pod-to-Service график зурах нь утгагүй юм.
Бүгдийг нь нийлүүлж байна
Бүх графикуудыг давтахыг хичээцгээе, бид энд бага зэрэг субьектив байдлыг нэвтрүүлж, бодит утгыг "vwry fast", "бага" гэх мэт үгсээр сольсон.
Дүгнэлт ба миний дүгнэлт
Би үр дүнгийн талаархи өөрийн тайлбарыг хүргэж байгаа тул энэ нь бага зэрэг субъектив юм.
Шинэ CNI гарч ирсэнд баяртай байна, Antrea сайн ажилласан, олон функцууд эхний хувилбаруудад ч хэрэгжсэн: автомат MTU илрүүлэх, шифрлэлт, хялбар суулгах.
Хэрэв бид гүйцэтгэлийг харьцуулж үзвэл Kube-OVN болон Kube-Router-ээс бусад бүх CNI сайн ажилладаг. Kube-Router нь мөн MTU-г илрүүлж чадаагүй тул би үүнийг баримт бичгийн аль ч хэсэгт тохируулах аргыг олсонгүй (
Нөөцийн хэрэглээний хувьд Cilium нь бусадтай харьцуулахад илүү их RAM ашигладаг хэвээр байгаа ч үйлдвэрлэгч нь том кластеруудыг онилж байгаа нь гурван зангилааны кластер дээрх туршилттай адилгүй нь тодорхой юм. Kube-OVN нь CPU болон RAM-ийн нөөцийг их хэмжээгээр хэрэглэдэг боловч Open vSwitch дээр суурилсан залуу CNI юм (Antrea гэх мэт энэ нь илүү сайн ажиллаж, бага зарцуулдаг).
Фланелээс бусад нь сүлжээний бодлоготой. Зорилго нь уурын манжингаас энгийн тул тэр тэднийг хэзээ ч дэмжихгүй байх магадлалтай: хөнгөн байх тусмаа сайн.
Түүнчлэн, бусад зүйлсийн дунд шифрлэлтийн гүйцэтгэл нь гайхалтай юм. Calico бол хамгийн эртний CNI-ийн нэг боловч шифрлэлт хэдхэн долоо хоногийн өмнө нэмэгдсэн. Тэд IPsec-ийн оронд wireguard-ыг сонгосон бөгөөд энгийнээр хэлэхэд энэ нь туршилтын энэ хэсэгт бусад CNI-г бүрэн гүйцэд гүйцэлдүүлж, гайхалтай бөгөөд гайхалтай ажилладаг. Мэдээжийн хэрэг, нөөцийн хэрэглээ нь шифрлэлтийн улмаас нэмэгддэг, гэхдээ олж авсан дамжуулах чадвар нь үнэ цэнэтэй юм (Калико нь хоёрдугаарт ордог Cilium-тай харьцуулахад шифрлэлтийн туршилтыг зургаа дахин сайжруулсан). Түүнчлэн, та Calico-г кластерт суулгасны дараа хүссэн үедээ wireguard-г идэвхжүүлж болох бөгөөд хэрэв хүсвэл богино хугацаанд эсвэл бүрмөсөн идэвхгүй болгож болно. Энэ нь гайхалтай тохиромжтой, гэхдээ! Calico одоогоор MTU-г автоматаар илрүүлэхгүй байгааг сануулж байна (энэ функцийг ирээдүйн хувилбаруудад ашиглахаар төлөвлөж байна) тиймээс хэрэв таны сүлжээ Jumbo Frames (MTU 9000) дэмждэг бол MTU-г тохируулахаа мартуузай.
Бусад зүйлсийн дотор Cilium нь кластерийн зангилааны хооронд (зөвхөн Pod хооронд биш) траффикийг шифрлэх боломжтой бөгөөд энэ нь нийтийн кластерийн зангилаанд маш чухал байж болохыг анхаарна уу.
Дүгнэж хэлэхэд би дараах тохиолдлуудыг ашиглахыг санал болгож байна.
- Маш жижиг кластерт CNI хэрэгтэй ЭСВЭЛ надад хамгаалалт хэрэггүй: хамтран ажиллах Flannel, хамгийн хөнгөн бөгөөд тогтвортой CNI (Тэр бол хамгийн эртний хүмүүсийн нэг бөгөөд домогт түүнийг Хомо Кубернаутус эсвэл Хомо Контайторус зохион бүтээсэн.). Та бас хамгийн ухаалаг төслийг сонирхож магадгүй юм
кХНУМХ , шалгана уу! - Ердийн кластерт CNI хэрэгтэй: Калико - таны сонголт, гэхдээ шаардлагатай бол MTU-г тохируулахаа бүү мартаарай. Та сүлжээний бодлоготой хялбар бөгөөд байгалийн жамаар тоглох, шифрлэлтийг асаах, унтраах гэх мэт боломжтой.
- (маш) том хэмжээний кластерт CNI хэрэгтэй: За, тест нь том кластеруудын зан төлөвийг харуулахгүй байна, би тест хийхдээ баяртай байх болно, гэхдээ бидэнд 10Gbps холболттой хэдэн зуун сервер байхгүй байна. Тиймээс хамгийн сайн сонголт бол хамгийн багадаа Calico болон Cilium ашиглан өөрийн зангилаанууд дээр өөрчилсөн тестийг ажиллуулах явдал юм.
Эх сурвалж: www.habr.com