Pokud jste pracovali s Kubernetes (K8s) a pokoušeli se naučit některé z jeho vnitřních funkcí, ať už v práci nebo na školení, museli jste se naučit něco o kontejnerovém síťovém rozhraní (CNI). Tento článek demystifikuje, co CNI znamená a co dělá.
Co je CNI?
Zásuvný modul CNI je zodpovědný za vložení síťového rozhraní do jmenného prostoru kontejnerové sítě (např. jeden konec virtuálního ethernetového páru (veth) a provedení všech nezbytných změn na hostiteli (např. připojení druhého konce veth k mostu). ). Poté přiřadí IP adresu rozhraní a nastaví trasy v souladu se sekcí Správa IP adres vyvoláním příslušného pluginu IP Address Management (IPAM).
[ Také by se vám mohlo líbit: Příručka správce systému k základním komponentám Kubernetes ]
Kam patří CNI?
CNI používají běhová prostředí kontejnerů, jako je Kubernetes (jak je uvedeno níže), stejně jako Podman, CRI-O, Mesos a další.
Kontejner/pod zpočátku nemá žádné síťové rozhraní. Runtime kontejneru volá plugin CNI pomocí sloves jako ADD , DEL , ZKONTROLUJTE , atd. ADD vytvoří nové síťové rozhraní pro kontejner a podrobnosti o tom, co má být přidáno, jsou předány CNI prostřednictvím datové části JSON.
Z čeho se skládá projekt CNI?
- Specifikace CNI – Dokumentuje, jaký je formát konfigurace, když zavoláte plugin CNI, co by měl udělat s těmito informacemi a výsledek, který by měl plugin vrátit.
- Sada referenčních a ukázkových pluginů – Mohou vám pomoci pochopit, jak napsat nový plugin nebo jak mohou fungovat stávající pluginy. Jsou cloud-agnostici. Jedná se o pluginy s omezenou funkčností a jsou pouze pro informaci.
Specifikace CNI
- Specifikace neutrální vůči dodavateli
- Používají Mesos, CloudFoundry, Podman, CRI-O
- Definuje základní tok provádění a formát konfigurace
- Snažte se udržet věci jednoduché a zpětně kompatibilní
Tok spouštění zásuvných modulů CNI
- Když runtime kontejneru očekává, že bude provádět síťové operace na kontejneru, (jako kubelet v případě K8) zavolá plugin CNI s požadovaným příkazem.
- Běhové prostředí kontejneru poskytuje pluginu také související konfiguraci sítě a data specifická pro kontejner.
- Plugin CNI provede požadované operace a nahlásí výsledek.
K8s (kubelet) volá CNI dvakrát, aby nastavil loopback a eth0 rozhraní pro modul.
Poznámka :Zásuvné moduly CNI jsou spustitelné a podporují příkazy ADD, DEL, CHECK, VERSION, jak je uvedeno výše.
Proč existuje více pluginů?
CNI poskytuje specifikace pro různé pluginy. A jak víte, vytváření sítí je složité téma s různými potřebami uživatelů. Existuje tedy několik zásuvných modulů CNI, které dělají věci jinak, aby uspokojily různé případy použití.
[ Naučte se základy používání Kubernetes v tomto bezplatném cheatu. ]
Sbalit
S Kubernetes existuje mnoho aspektů orchestrace a správy kontejnerů. Právě jste se dozvěděli něco o použití CNI pro vytváření sítí v rámci Kubernetes. Další informace najdete na stránce projektu CNI na GitHubu.