Het ging mij dan ook vooral om het stukje betaald. Wat is het voordeel van fusion kind dan nog ten opzichte van standaard kubernetes node?
Die vraag kun je ook stellen voor hetgeen er standaard met Docker wordt meegeleverd. Dat Kubernetes is niet louter alleen maar iets voor containers, je kunt er veel meer mee doen (dat is ook het hele idee). Het probleem is echter dat het nou niet bepaald een klein stukje software is. Wat velen, waaronder Docker, VMware maar ook Rancher Labs, doen is een uitgedunde versie gebruiken die grotendeels wel compatible is met de gewone vanilla Kubernetes versie. Rancher Labs heeft de hare zo ver uitgekleed dat je het op een kassasysteem in de winkel kunt draaien, ze noemen het k3s (ipv k8s).
Zoals ik al heb uitgelegd kiest VMware er voor om niet alleen maar containers of virtuele machines te doen. De markt bewoog eerst naar hybride cloud oplossingen en nu naar een hybride wat betreft virtualisatie en containerisatie. VMware beweegt gewoon met de markt mee. Waarschijnlijk is er dan ook een technische reden om te kiezen voor Kind die deze strategie beter ondersteund dan dat bijv. Kubernetes dat zou doen.
Het grootste voordeel van de implementatie van Kubernetes in Docker en in Fusion zit hem in het feit dat je niet alles zelf hoeft uit te vinden. Je hoeft geen vm te maken, niet op te snorren welke Linux distro je het beste kunt gebruiken (en die ook te onderhouden!) en ook niet helemaal zelf de installatie van Kubernetes te doorlopen. Het is veelal de optie voor Kubernetes aanvinken en gaan. Doordat je het makkelijk in en uit kunt schakelen kun je op resource besparen wanneer je het niet nodig hebt. Het laat ook zien dat dit echt puur voor testing, training, etc. is. Houdt er rekening mee dat consultants, docenten en beheerders ook gebruik maken van dit soort dingen om een ander wat aan te leren of een bepaald idee te pitchen. Zoals je op de website van Kind kunt lezen helpt Kind hierbij door te fungeren als een Kubernetes installatie tool.
Onder windows heb je met wsl2 geen virtuele machine meer nodig overigens.
Je haalt WSL1 en 2 door elkaar. WSL1 heeft geen virtuele machine, WSL2
is een virtuele machine. Beiden kun je prima naast elkaar draaien; er zijn namelijk redenen waarom je voor WSL1 zou willen gaan (WSL2 kan niet bij allerlei devices waar WSL1 wel bij kan). In de
officiële documentatie staat het volgende:
WSL 2 is a major overhaul of the underlying architecture and uses virtualization technology and a Linux kernel to enable its new features.
Btw, wil je WSL2 in een virtuele machine met Windows draaien dan kan dat wanneer je hypervisor nested virtualization ondersteund (moet je het alleen ook nog wel even aan zetten natuurlijk).
Mac is nu nog de enige die dat heeft (en derhalve dus ook geen fatsoenlijke host network support).
Neen. Docker for Windows werkt exact zoals die voor de Mac dat ook doet: met een vm. Het enige wat ze nu hebben aangepast is dat ze gebruik maken van dezelfde technologie als waar WSL2 gebruik van maakt. Ze hebben in Windows namelijk niet alleen maar Hyper-V als virtualisatie optie, er zijn nog een stuk of 2 anderen (Hypervisor Platform, Virtual Machine Platform, naast de standaard Hyper-V rol die je op Windows Pro hebt). Dit zijn, zoals ik het heb begrepen, API's om Hyper-V heen. Applicaties kunnen van 1 van deze API's gebruik maken en dat is exact wat zowel WSL2 als Docker for Windows doen. Bij deze laatste is het wel een vinkje die je moet aan zetten als je het installeert (weet niet meer of dat achteraf ook nog aan te passen is).
De reden waarom WSL2 hiervan gebruik maakt zit hem in een aantal voordelen zoals het kunnen gebruiken van een echte Linux kernel, betere performance en betere compatibiliteit van de Linux tooling (ze praten immers met een echte Linux kernel, niet met een of ander vertaallaagje zoals bij WSL1). De verschillen tussen WSL1 en 2 staan bij Microsoft op een rijtje:
https://docs.microsoft.co...dows/wsl/compare-versions
Die host network support is ook al niet Mac specifiek maar komt doordat Docker allerlei proxies moet gebruiken zodat de vm beter integreert met het host OS. Ik verwacht dan ook niet dat Docker for Windows hier ook maar enigszins anders in zal zijn.
Daarnaast is het ook goed om te weten dat er ook nog een Docker versie is met specifieke Windows containers. Deze containers maken gebruik van de Windows kernel ipv Linux kernel. Dat komt in containerwereld niet zo veel voor dus dat heb ik bewust even buiten beschouwing gelaten.
Ik denk juist dat dit een move is omdat specifieke de niet hippe start-ups, maar juist de grote jongens als de belastingdienst overgaan naar die cloud platformen. Die raakt vmware anders kwijt.
Dat zeg ik. De hippe startups gooien alles al in containers bij AWS o.i.d. en hebben dus niets anders dan containers. Het gros van de bedrijven is niet zo. Die zullen nog zitten met bare metal, virtuele machines, lokale cloud, externe cloud en nu ook containers. VMware richt zich juist op dit soort bedrijven en geeft ze tools waardoor hybride cloudoplossingen mogelijk zijn en je zowel containers als virtuele machines kunt draaien.
Wat cloudoplossingen a la AWS betreft is die markt eigenlijk wel vol. IBM heeft niet voor niets Red Hat overgenomen. Het heeft dan ook geen zin om je hier alsnog in te lopen mengen dus kiest VMware voor wat anders.
Het bedrijf waar ik werk zit ook een beetje aan de hybride oplossing. We zetten onze eigen virtuele machines op in de cloud en op die machines rollen we onze microservices uit. Dit zijn containers die we middels Docker draaien. Niet een manier die heel raar is, zo doen velen het. Je kunt echter ook van cloudplatformen de container service afnemen. Dan elimineer je je eigen virtuele machines. In werkelijkheid doe je dat niet. Al die platformen draaien gewoon op bare metal dat met hypervisors aan elkaar geknoopt is en waarop uiteindelijk virtuele machines draaien die weer iets als Docker (of een andere containerd service zoals Podman) of Kubernetes + Docker draaien. Dat deel krijg je als klant niet te zien en hoef je je ook niet druk over te maken. Dat is waar het voordeel zit: uitbesteding van een deel van je beheer.
Voor mij komt het over alsof men een VM heeft en daarin een container virtualiseert waarin je dan weer je node hebt draaien. Dat is een extra laag in de implementatie of mis ik iets?
8<
En hoe zit die hosting dan? Voor zover ik het nu begrijp vanuit de documentatie is dat dus twee lagen diep.
Ik heb deze twee even bij elkaar gezet. Het is eigenlijk vrij makkelijk: VMware Fusion is desktop virtualisatie software. Het meest makkelijke is om dan te doen wat Docker for Mac ook doet: een super kale vm met daarin alleen maar een OS dat maar 1 ding kan: het draaien van containers. Met dat laatste heeft VMware ook al ruime ervaring, ze hebben namelijk al een tijdje hun eigen CoreOS concurrent genaamd Photon OS. Hoef je zelf niet een complete vm aan te maken en alles in te richten. Je tikt "vctl system start" in en als je op enter drukt dan wordt alles voor je opgezet.
Kort gezegd is het gewoon een ingebouwde Docker for Mac die meelift op de virtualisatietechnologie die al in VMware Fusion zit. Het grote voordeel voor VMware is dat ze hiermee vctl voor zowel virtuele machines als containers kunnen gebruiken.
Als je echt wil weten waar het grote voordeel zit dan moet je maar eens hypervisor.framework en Docker for Mac naast elkaar gebruiken. Of Docker for Mac en iets als Parallels, Virtualbox of Fusion. Je hebt nu twee totaal aparte tools die niet met elkaar integreren. Container volumes worden met Nautilus gewoon op je desktop gemount (het zit onder ~/.vctl/storage/containerd, met het "vctl describe" commando kun je zien waar exact, idem voor de vm) en kun je dan ook via Finder benaderen. Dat is met Docker for Mac een stuk lastiger om te doen (met Finder kan het volgens mij niet, je zult dan met het docker cp commando op de cli moeten gaan werken).
Overigens zie je de container vm niet in Fusion zelf (je ziet alleen je eigen vm's) dus die kun je niet eenvoudig bewerken (en dat moet je ook helemaal niet willen).
Meh, andere bewoording denk ik. Ik vraag me gewoon af waarom je dit nog zou moeten willen anders dan binnen gecontracteerde on-premise omgeving waar je nog een paar jaar mee moet doen. Dan snap ik hem ook wel.
Voor een ontwikkelaar of een consultant bij een bedrijf waar zowel met bare metal/virtuele machines wordt gewerkt als met containers is het handig om 1 tool te hebben waarmee je beide kunt. Steeds meer software wordt als microservice ontwikkelt waarbij componenten in een container worden gestopt. Dit is echter niet voor alles de oplossing. Bare metal en virtuele machines kunnen een betere oplossing zijn.
Een belangrijke horde in dit soort systemen is scaling. Als je hard moet kunnen schalen loop je vaak tegen limieten aan in dergelijke omgevingen.
Daar heb je hier geen last van. Dit is vooral bedoeld voor demo's, trainingen, pitchen van ideetjes, lokaal development, etc. Het echte werk zal op een serverpark gebeuren waar bijv. VMware vSphere draait of iets wat een combinatie is van vSphere en bijv. AWS.
Het allerbelangrijkste is realiseren dat er eigenlijk niet zoiets is als een Docker container. Het hele gebeuren maakt veel gebruik van open standaarden. Dat zorgt er voor dat iedereen zo zijn eigen containerd variatie kan maken die het beste met hun eigen producten integreert. Doordat het op open standaarden drijft is er ook meer compatibiliteit onderling. Dat is wat VMware hier ook gedaan heeft. Daardoor kun je dus ook prima images van Docker Hub plukken en die met VMware Fusion draaien (de Nautilus documentatie doet exact dit trouwens).
Hier kleeft echter ook een groot nadeel aan: er zijn zo vreselijk veel tools die op elkaar lijken dat het echt moeilijk is om door de bomen het bos nog te zien.
Edit: net even gekeken met "vctl execvm" (je kunt via "vctl describe" achterhalen wat het exacte commando is om een shell in de vm die de container draait te krijgen). Als je na inloggen op de vm een "uname -a" doet dan zie je het volgende: "Linux 4.19.84-1.ph3-esx #1-photon SMP Tue Nov 19 00:39:50 UTC 2019 x86_64". Er wordt dus inderdaad gebruik gemaakt van VMware's Photon OS.
Er draait geen docker daemon in de vm, wel iets met de naam spherelet en crxrun (er wordt dus CRX ipv Docker gebruikt). Voor beiden heeft VMware documentatie:
vSphere 7 – Introduction to the vSphere Pod Service. Daarin staat, denk ik, een ander antwoord op je vraag "waarom niet gewoon Kubernetes?":
vSphere Pods provide unique security and operational advantages such as leveraging the proven ESXi isolation techniques that may, at this time, be interesting to some unique/particular workloads. vSphere Pods don’t allow direct access to hardware, another security advantage.
Die laatste zin is een belangrijk punt. Doordat er een virtualisatielaag tussen zit heb je geen directe hardware toegang vanuit de pod/container.
[Reactie gewijzigd door ppl op 23 augustus 2020 22:43]