Understanding Container Architecture

Bedliner Review Reply June 21, 2019

Hello, my name is Brian Grace, Lee analysts with wiki Bond and on today's wiki bond whiteboards, we're gon na begin to understand. Container architectures containers are really the big technology talked about these days, especially for infrastructure teams. There'S a component of it. That'S both application and infrastructure, but in this whiteboard we're really going to understand the basics of how it applies to the infrastructure and we're going to try and put it in the context of things that most infrastructure teams understand today, which is virtualization. So let's go ahead and begin what we've done and again. This is for context. We'Ve tried to take a standard environment that people are used to seeing for virtualization and in this case we're going to use VMware as the example, because, obviously broadest market share and a lot of people understand what they do. So let's talk about the basics of what happens here. People understand what happens at the host level. I'Ve got servers within each server. I'Ve got a hypervisor so in VMware's case ESX or ESXi. Within that hypervisor I'm going to go ahead and create virtual machines. So every single virtual machine has a copy of the full operating system and then, within that virtual machine, I've got a an operating, an application itself for multiple applications. So everybody understands that pretty well now, how I manage those hype with those hypervisors and virtual machines is through a centralized control, plane and that's called V Center and V Center may be a single instance. It may be a clustered instance, but think of it as the thing that's going to manage the scheduling of the resources and the management of those resources, and it's really only focused on virtual machines. Okay, now, above that, we're going to have if we're deploying applications, I can either deploy them by hand, or I may begin to deploy them through application templates. So I may deploy the same type of application over and over again a web server, a sequel database. Something else do that consistently: I'm going to use some sort of typically a templating function, and a lot of that can come in the management flame framework from something like V realize VMware via realized, and then on top of that, I'm going to have my applications. Whatever those might be sequel, databases, s, AP, Oracle, Microsoft applications, whatever those things might be. So the key things I want you to understand is at the host level, its hypervisor virtual machine, full operating system and application and at the control plane it's this sort of structured format of V Center cluster V Center is going to make sure that virtual machines get Deployed on to those hosts, and it's going to keep track of where they are and make sure that they stay alive using things like VMware H, a VM or V motion and VMware fault tolerance. Okay, so now that we have that basic context in place, let's take a look at how the container ecosystem is beginning to evolve and in this example, we're gon na use docker because similar to VMware right now, docker is the most frequently used container technology. There are other ones in the marketplace, but we're going to use docker just as an example. The rest of what we talked about will be applicable, whether it's docker core OS rocket or a number of the other container technologies that are out there. So, let's begin down at the host level, just like we did over here in the simplest form, I'm gon na have a host. I'M gon na have a server we're not going to have a hypervisor we're just going to have the operating system today in most container environments, that operating system is going to be Linux. Now, there's a lot going on in the marketplace where this will eventually be Linux and Windows. Microsoft is, is working quite a bit on this, but for right now, let's just say that operating system is Linux. Ok, I'm going to have my container runtime, which in this case is his docker and you can think about that as sort of being like a hypervisor. But it's almost a lightweight hypervisor and then that container runtime is going to create my containers themselves and each one of those containers now what's unique about this, that's different from this environment is each one of those containers only uses they all share the same operating system. So again, all of your containers within a single host have to run the same operating system either all Linux or eventually would be all Windows they're going to use the bits that they need from that operating system. So the net-net of it is it's a lighter-weight footprint. I should be able to boot them quicker and the reason people get very very fixated on I can boot a container fast is because, in this container environment the types of applications that I'm building tend to be more, what they call ephemeral pieces of them are going To go away, they're going to come back, I'm gon na want to spin them up quickly. If I have a scalable application, spin them up or spin them down, and so what you're looking for is a operating environment that will come up very very quickly, so just to put that in context to spin up a virtual machine. It may take three four minutes because of the operating system coming up to spin up a container usually is on the order of a second or a couple of seconds. So big, you know order of difference between there now. The second piece - that's really important - and this is where a lot of people kind of get confused about what's going on in the container ecosystem is what happens at that control plane, and the first thing to understand is when we talked about you know: virtualized applications. We tend to talk about very stateful, sometimes they're called platform. Two sometimes they're called legacy applications, but they're more or less stateful. So the expectation is once you deploy them other than maybe Vee motioning them around for availability, you're, not scaling them up and down. You don't expect them to fail frequently, and so the scalability needed at the control plane is fairly well-defined. Maybe it's a thousand hosts or 10,000 hosts when we start dealing with containers the types of applications we deploy tend to be more, what they call 12 factor applications. Sometimes you hear them call modular applications, cloud native applications, the idea being they're much more modular. They tend to be more state less, so the idea of maintaining state tends to get pushed somewhere else, but they're designed for scale they're designed for mobile applications for real-time data applications, and so the control plane, unlike here, which tends to be somewhat stateful and more confined In terms of scale has to be designed to be a distributed, control plane, it has to be designed to scale much much larger, and so, as part of that, what we see is we're seeing technologies come out that sort of break up the things that were functions Inside of a vCenter control plane into sort of distinct technologies that number one tend to scale more, because they're written in distributed manner and number two they've got a certain amount of sort of mix-and-match that you can have with them. Depending on what your applications gon na. Do so, let's talk through the basic things that are in here, the first layer that you'll often hear about is clustering. How do I cluster together sets of container hosts? An example of this is docker swarm technology. Another example of this is something like Etsy D from core OS. It'S a technology to sort of figure out where my clusters of hosts are going to be. The next layer is what's called service discovery. If I'm deploying hundreds and hundreds or thousands of devices I want to you know containers, I want to be able to figure out what services are available. Queuing services database services you know notification services, the things that are out there. I need to do that dynamically and automatically the next piece is going to be scheduling. Those containers, just like vCenter, is going to put it on the right host to make sure that it's load balanced properly. There'S a scheduling function to make sure that containers get deployed to the right container and then the next piece is what they call application scheduling. So in these environments, I don't tend to schedule my applications in these environments. They could be a mix of batch applications, Hadoop applications, long running applications short running applications. I need a more advanced, intelligent scheduler to make sure that I'm getting the containers and the applications deployed on the right place and as efficient as possible, and then on top of that I have my actual applications. So the takeaway from this is at the host level. Some difference between how heavy a virtualized environment is going to be versus a container environment and that you want that to match how your application requirements are and if the control plane a more structured model for doing the functions that you need to manage the environment. In a container model, a more distributed model, so with that I'm gon na go ahead and wrap that up we're going to get into some more depth in other videos. We hope you enjoy these once again. This has been a wiki bound, whiteboard video. You can find more information about all of our research and all the information about these technologies at wiki bond com and again, if you want to follow me again, my name is brian grace lee i'm at be grace lee on twitter or you can follow at wiki. Bon on twitter as well, thank you and have a great day.

Post a Comment

Text Widget



Search This Blog



Popular Posts