Ian Wright
Client Technical Sales Engineer
Greetings True Believers,
I wanted to write a blog about IBM Cloud Private (and that is coming soon), but it occurred to me that many people out there may not have a full understanding of what one of the underlying technologies (that would be Containers and Kubernetes) are. And some of the other related technologies as well, so I thought that I’d start from that level.
So, first off, let’s answer the basic question: what is a container?
Well, a container may be the technology that’s coming to replace your VMs in the future (not that fast, I’m sure that you have time to plan). Typically, people link Containers to Docker. The reality is that they’ve been used in tech companies like Google, for some time now, ever since they took advantage of cgroups in the Linux kernel1.
A container is a way of bundling everything that you need for a given application. This includes the OS (companies like Red Hat have even been building a light weight version of Linux called Atomic specifically for this purpose), the customizations that you need for that OS level, and the application itself. All stored in a tight code bundle. The container is then deployed above the operating system of the host.
The great thing about this is, because you’re putting everything together, it makes standardizing rollouts of applications and doing DevOps that much easier. When you put together a container in Development; then you pass it along to test; and eventually roll it out to users in Production, you’re not worrying about what OS level the servers are using. You’re not concerned about whether you’re going to run into a compatibility issue. The container that existed in Dev has the same OS, customizations and app level in Test as it does in Production. So, it has the potential to make things super-efficient in those areas.
But, of course, nothing is ever as simple as that. With the ability to deploy containers so easily, how do you manage them? How do you make sure that users are on the correct version and that things flow properly? This is where you need an orchestration system.
Now, there have been multiple orchestration systems; but, from all of the discussions and reading that I’ve done, the only one with a solid future in front of it is Kubernetes (although I’ll address Cloud Foundry some in my next blog). Kubernetes comes to us from the “Don’t Be Evil” minds at Google! They developed it and turned it out to the opensource community (you can find it at https://kubernetes.io). It is a tool that serves to manage a container environment.
This means that while you settle into using containers to deploy applications (including, you will find, applications that serve up storage to other applications!) you will use a tool like Kubernetes to ensure that your container versions are properly deployed and the environment scales, to manage your dev/test cycle, and also to restart containers that fail within your environment. That would be quite a bit of work to handle manually. Thankfully, we have the right tool to start with!
Of course, because we’re talking about Linux here, we know that IBM systems are a great place to take advantage of container technology, which will also take us into the idea of building your own cloud and even managing your move into Public Clouds.
Please contact your Mainline Account Executive directly, or click here to contact us with any questions.
Citations:
1 – Google: ‘EVERYTHING at Google runs in a container‘