I have a cluster of machines running windows server 2012R2.
I would like to manage them with mesos.
To the best of my knowledge, microsoft is actively contributing to mesos (DC/OS) and will support containers natively on windows server 2016. Furthermore, it looks like there is another type of container flavour using hyper-v.
I can run my mesos masters on linux hosts. However I need my slaves on windows server 2012R2 hosts. It is not clear to me which technologies are already available (and production-ready) for my windows server version.
What are my options to use mesos to manage the resources of my windows server machines ?
Is the mesos-agent for windows (server 2012 R2) production ready ?
Can I use containers (hyper-v or docker) ? If not, is the resource isolation working in Windows (in linux you can use cgroups) ?
Can I run any framework I like or there are some not compatible with windows ?
Mesos version 1.0.0 was recently released that allows you to run the slave and launcher on windows. Not the master unfortunately. Its still Linux, but it doesn't really ever need to be Windows? The slave was the important bit for bringing Windows machines into the Mesos domain.
I've just been investigating using the Mesos-Slave on windows. Pleased to say that it appears to be working OK (this opinion is subject to change as I'm still testing it). Production ready is something any business would have to decide for themselves.
Mesos have always had their own isolation technology, interestingly they have redone their own containerizer implementation and this now takes a number of container image formats, so you can use your Docker images as well as a few others, so this is going to suit you. There was a good presentation on this at MesosCon https://www.youtube.com/watch?v=rHUngcGgzVM
Docker's been stealing the show to some extent. But if you use Mesos-Agent, Windows 2016 and its container technology (Docker) isn't needed and therefore it should run on Windows 2012. I've not got around to trying this yet but its definitely a test worth trying, it opens up deployment options. Anyone?
One thing to remember about containers, they are not VM's. The guest image must be a derivative of the hosts OS, you can't run a Linux image on a Windows machine. Causing me a headache, I can't use servernano at the moment, so my image sizes are 4Gb+, the initial deploy time is hours.
Related
I'm currently using a VM hosted on-site by the company I work for. The VM is pretty slow, and we're looking at doing something about it. The choices are to get people off of VMs and onto physical hardware, upgrade our VM host or potentially move to Amazon Workspaces.
One of the challenges we're hitting on our current host is that we're running into problems having nested virtualization to run Docker on our workspaces.
Obviously, if we were to move to physical hardware, we would not have the problem with nested virtualization. If we upgrade our current hardware to be faster/better, we may not solve the underlying issue with nested virtualization.
It would be ideal if Amazon Workspaces supported Windows 10 with Docker for Windows allowing nested virtualization.
Does anybody on here use AWS workspaces with Windows? Do you use Docker?
Any other alternatives(other than AWS workspaces) that can be used to run Docker on Windows VM?
The answer to this is now documented in the Amazon WorkSpaces troubleshooting guide. As of Jan, 2021 Docker is now supported on Linux but not supported on Windows.
Nested virtualization (including the use of Docker) is not supported on Windows WorkSpaces.
Not sure if you're still interested, but we hit the same issue. The Windows image for WorkSpaces is still Windows Server 2016, which does support Docker but only Windows containers unless you're willing to install an out-of-date project to convert. WS 2019 does support it, so whenever Amazon upgrades their images, Docker will be supported on Windows.
For now, we just use Amazon Linux 2 and Docker works.
My understanding is that Kubernetes is more efficient UI for managing large clusters of containers, otherwise you're stuck with the command line. As of August 2018, It seems multi-platform support on Docker for Windows is still experimental (https://github.com/moby/moby/issues/33850, https://github.com/docker/for-win/issues/2079). Running any Linux image with the --isolation hyperv after pulling with the --platform linux switches doesn't work if not running on expermintal flag. How to enable to experimental flag on Docker for Windows Server core isn't documented. So setting up a single node kubernetes cluster on Windows Server 1803+ for QA purposes probably isn't well supported or even documented. Being an exclusive Windows shop, having to use a Kubernetes on Linux doesn't seem to make sense especially when the whole point of using Docker is to automate environments. What's the point of making environment configuration automatic when you still need to administer a Linux server.
How do you setup Kubernetes on Windows Server Core 1803 as a single node cluster?
You can quite easily set up one node Kubernetes cluster on Windows using minikube. You can use a native hypervisor (Hyper-V) if you want, but it is more recommended to use VirtualBox at this time.
In both cases, a Linux virtual machine will run on your server, and you will be able to access it with the native version of kubectl to manage the cluster.
Here are two manuals that can help you to do that (I can guess it will work on the Windows Server in the same way):
Tutorial : Getting Started with Kubernetes on your Windows Laptop with Minikube
Minikube on Windows 10 with Hyper-V
Here is an explanation of how you can use Windows server as a worker node in Kubernetes:
Using Windows Server Containers in Kubernetes
Kubernetes on Windows
Microsoft announces that the next version of Windows Server will have better support of Kubenetes and it's ready for testing:
Windows Server 2019 will feature Linux and Kubernetes support
I'm using dockers on a Windows server 2016, to run all sorts of Windows applications/tasks.
There are several solutions to manage dockers, such as swarm and marathon, but they don't work on Windows (or do work on Windows but via virtual box vm, which is problematic for my needs).
In the future mesos and dc/os will support Windows, but in the meanwhile,
is there an alternative that can work for Windows?
I'd suggest setting up a docker container to manage the rest of your docker.
A couple containers which do exactly that:
http://portainer.io/
DockerUI
If you don't like that you could use a (local) gui to manage it, the only one I know of is:
simple-docker-ui
If I create a container with windows image on it, is it possible to use a remote connection to actually see the desktop and , for example, play minesweeper?
My use case is this:
I have hundreds of users. Each user need to create their our infrastructure consisting in about 6 machines linked together. After creating, the user will open some desktop gui apps on each one using a remote desktop connection.
No, this isn't something you will be able to do.
There are currently two Windows container images, microsoft/windowsservercore and microsoft/nanoserver
nanoserver
This blog post about TP4 (one of the earlier releases) says
The only option available when logging into console of a virtual machine running Nano Server or connecting a crash cart to a physical Nano Server is this very plain emergency console
This section on managing Nano server also states
Nano Server is managed remotely. There is no local logon capability at all, nor does it support Terminal Services.
There is also this article, admittedly not from Microsoft, about Windows Nano server
Nano Server strips back the operating system further still, dropping things like the GUI stack, 32-bit Win32 support, local logins, and remote desktop support.
Nano Server is designed for two kinds of workload: cloud apps built on runtimes such as .NET, Java, Node.js, or Python, and cloud infrastructure, such as hosting Hyper-V virtual machines.
servercore
Docker blog has a pretty interesting entry
Introducing Docker for Windows Server 2016. This part addresses the question of GUI apps
The Windows Server Core image comes with a mostly complete userland with the processes and DLLs found on a standard Windows Server Core install. With the exception of GUI apps and apps requiring Windows Remote Desktop, most apps that run on Windows Server can be dockerized to run in an image based on microsoft/windowsservercore with minimal effort.
If you wanted to set up that kind of an environment, one option is to use something like Vagrant to orchestrate starting and provisioning regular windows VMs. Though 6 windows VMs will not be easy on memory.
I need a virtual server for web development, it'll host Apache+Postgres+Ruby+something else.
What's the most effective software to run such a server? (ie with least virtualization overhead)
Is there a way to run Linux as as service?
I use VirtualBox at the moment, but it's inconvenient in some ways, such as it needs an emulator window open which also captures keyboard input when alttabbed into.
(Also, coLinux hangs at boot on my machine, so it's probably not an option)
Check out the features of VMWare Server. It's free, you just have to register.
I've never found VMware to be much of a performance hog unless running 3+ virtual machines.
The latest free server version (VMware Server 2) runs as a service IIRC, so you can set up your dev server to start up and shut down when your PC does, and you can either log on to the VM's console through the web interface, or create a shortcut on your desktop so it's fairly non-obtrusive.
There is a very convenient utility that hides VirtualBox from the foreground completely: vboxctrl. With vboxctrl you can run a Linux server on your Windows machine, make it automatically go to sleep when Windows shuts down or hibernates; then use any SSH client to log in to the server. Or you can use Xming to open graphical windows from the Linux server; I've worked quite a lot of time in GVim open through Xming.
If anyone needs more details, leave a comment, I may write an article about this.