Pro pochopení a správné fungování Kubernetes, je důležitá příprava Vaší instance, aby jste měli naprostou kontrolu nad celým systémem. Bude k tomu zapotřebí funkce pro intel vt-d a vt-x a pro amd-v.
Doporučení:
1. Připravte si čistou Linuxovou distribuci nazvanou control-center, nejlépe formou virtualizace.
Pro virtualizaci na Windows můžete použít WSL, Hyper-V a nebo jiný hypervizor. Doporučuji použít vmware.
Pro virtualizaci na Linux doporučuji použít /dev/kvm s nástrojem virt.
Nedoporučuji pro virtualizaci linux používat docker obrazy.
2. V případě, že je Váš výchozí systém Windows a použili jste hypervizor vmware, tak ještě před vytvořením virtualizace deaktivujte features windows subsystem linux, hyper-v a machine virtualization. Tím docílíte toho, že můžete provádět vnořenou virtualizaci na linuxové distribuci.
3. Jakmile máte připravenou čistou distribuci, proveďte zálohu pro okamžité a rychlé obnovení v případě failu.
4. Po nasazení control-center, vytvořte vnořenou virtualizaci na linuxové distribuci pomocí KVM, tím docílíte izolace vrstvy kubernetes clusteru.
Toto řešení je vhodné pro izolaci síťového rozhraní Vašeho uzlu.
Pokud máte dostatek jader a ram pamětí, tak doporučuji vytvořit DEV,TEST,PROD. Tím získáte více uzlů a můžete testovat vývoj až do produkčního prostředí.
5. Nainstalujte nástroj ansible a vytvořte ansible playbooky pro instalaci kubernetes clusteru a pro nasazování projektů.
Na github existuje mnoho hotových playbooků a případnou úpravu nebo konfiguraci můžete přízpůsobit vlastním potřebám.
Proč doporučuji toto komplikované řešení pro vývoj v kubernetes ?
Lépe porozumíte fungování kubernetes a rovnou při nasazování Vašich projektů získáte přehled o tom, jak složitá je produkce.
Použít řešení docker, docker-compose je sice fajn a tisíckrát jednodušší, ale je to strašně na hony vzdálené od produkčního prostředí a pro produkci to nedoporučuji.
Pokud chcete, aby Váš produkt běžel v moderním produkčním prostředí, je nutné mít představu o detailním fungování kubernetes.
Pro nasazování nedoporučuji používat HELM.
Helm Vám to zjednoduší, ale zase Vám úplně zkreslí možnosti konfigurace kubernetes deploymentů.
V HELM jsem se setkal s nestabilitou a při častém nasazování nedokázal zničit běžící pody. Pak vyžadoval ruční zásah a ta automatizace pro mě ztratila potenciál. Raději čisté deployments aplikované pomocí kubectl 100% stabilita, funkčnost a možnost vlastní automatizace konfigurace.
Pokud máte případné dotazy, jsem Vám k dispozici.
Aktuálně se zaměřuji hlavně na produkční nasazení infrastruktury do vnořené virtualizace.
Argo CD pro testování pravděpodobně nasadím na vrstvu 3.
Aktuálně testuji pro produkci toto vrstvení.
Vrstva 1 - Baremetal (Windows)
Fyzická infrastruktura s deaktivovanými features - WSL, Hyper-V a Virtual machine platform.
Vrstva 2 - Fyzická síťová infrastruktura a routování
Vrstva 3 - VMware - Hypervizor (Linux)
Vrstva 4 - Virtuální síťová infrastruktura a routování.
Vrstva 5 - Vnořená virtualizace libvirt a vSphere
Vrstva 6 - Vnořená virtuální síťová infrastruktura a routování.
Vrstva 7 - Kubernetes nad úrovní vnořené virtualizace.
Vrstva 8 - Izolovaná virtuální síťová infrastruktura kubernetes a routování.
Vrstva 9 - Aplikační vrstva