MALE SPEAKER: Welcome, everybody.
We're here at the Devoxx 2014 conference.
And I'm here with Brian.
Hi, Brian.
And we're here to talk about cloud and the Google Cloud
Platform obviously.
And maybe we want to start with Compute Engine, because that's
what maybe a lot of people are familiar with,
at least the concept, so tell us more
what Google Cloud Compute Engine is?
Then we'll talk about Docker and even Kubernetes.
Really exciting, I think.
BRIAN DORSEY: Awesome.
OK.
So Compute Engine is Google's virtual machines as a service.
So it's basically a virtual machine
running Linux or Windows, then running
that on Google's infrastructure.
So you get very reliable consistent performance.
You get very, very good network access.
You know, we're running in the same data centers
that Google runs its own software in,
and so you can run your software right next to our software
and have it live on the internet very closely.
MALE SPEAKER: So one thing I really
like about Compute Engine, and many things
I think that people would like about
Compute Engine, but the API.
Yeah, so what does the API allow, and why would
people should even care?
BRIAN DORSEY: Yeah, so I'll take a step up.
So we have command line tools, and web app tools,
and third-party tools, and all of them
talk to Compute Engine, the service, via this API.
And so it's a REST JSON API that's available over HTTP.
We, of course, have clients in about a dozen
different programming languages, but it's straight REST.
So you can get it off token and then
just talk to it directly over HTTP.
MALE SPEAKER: So Compute Engine is great.
It has all those great features, but all you
have is a machine at the end of the day.
It's just like really low level stuff.
So at some point, you need to build the infrastructure
on top of that.
So there is this thing that everybody's
talking about including here at Devoxx, which is Docker.
And the promise of Docker is to be something that's
relevant to developers, to production,
and solve a number of problems.
So what are we doing with Docker?
And does that play even well with Compute Engine?
BRIAN DORSEY: Yeah absolutely.
Yes and yes, of course.
And Google is basically all in on containers.
We've been doing containers for a while.
We contributed some of the early patches to a Linux kernel,
the [? C ?] group stuff.
We're continuing to work with the Docker folks
on a libcontainer.
But containers are basically this way of packaging up
your application and all of its environment and OS level
resources.
So they'd always seize the same environment
wherever you run it.
So you can run it via your laptop.
You can run it in the cloud.
It's always the same.
And I think this is super powerful, because like Compute
Engine is absolutely a fantastic service,
but one way of looking at it is that it's
basically re-implementing as software APIs all the things we
used to do physically in the data center.
So you go to the data center, and you plug a machine in,
you hook drive up, you connect it to the network,
you boot it up, you turn it on, and we
have APIs for all of that.
And it's great, because you can be automate it.
It's way more efficient.
But containers, this abstraction they give you, the isolation
that they give you is really allowing
us to build abstractions that are higher
and let us think about software on its own terms,
rather than how it fits into a particular physical box.
MALE SPEAKER: So containers are great, Docker in particular.
We would encourage people to try it out.
They will have some magical moment I think.
I hope.
But even though you're using Docker, at the end of day,
you have like this one container,
and it does great things, but we have a great load balancer.
We probably want to scale.
That's kind of what we do and what a lot of people
should do probably, offer great services to their users.
So how do we solve the problem of not reinventing the wheel
in terms of load balancing a cluster of containers?
BRIAN DORSEY: Totally.
So yeah, we're super excited about that.
In fact, to solve that exact problem,
we've started an open source project called Kubernetes.
So you can visit kubernetes.io and find out all about it.
But in short, you have this container,
and it creates this isolated world for a given process
to run.
And I think it's easiest to think about them
just as processes that always have their own stuff with them,
right?
And so it works very well to start
a bunch of those up on one computer.
It's great.
You can be like, OK, I'm all in on containers
like, I believe it.
This is going to work great.
I'll run containers across 500 of my machines right.
And I'll run 50 containers on each machine.
And pretty soon, you've got quite a lot
of containers running.
It becomes challenging to figure out
how they should talk to each other,
how to do version upgrades between things,
how to like you say load balance and keep
this whole system healthy.
And so Kubernetes is directly an extraction
of Google's experience like running
large container-based systems.
Some of the same engineers who've
worked on multiple generations of internal scheduling tools
at Google are working on Kubernetes.
MALE SPEAKER: So it's probably worth
mentioning that Kubernetes is a greenfield project.
I mean they started from scratch with a lot of experience that
went into this, but it is a fully open source project.
The community that's pretty much driving
at this point with a lot of people on board
and using this in lots of different context.
BRIAN DORSEY: And we're doing the whole thing in the open.
We're working very, very hard to make sure
that it runs everywhere.
Like you can actually run Kubernetes on just your laptop
or you can run it on machines you own.
You can run it on multiple different cloud providers.
We've got partners like-- it's happening on GitHub,
and so many people are participating.
We've got thousands of stars, like hundreds of contributors.
And that's everything from individual developers
kind of working on their own time excited about this stuff
to some very large companies, including Microsoft,
Red Hat, CoreOS, Docker themselves-- a whole list
of folks that are participating in this project.
MALE SPEAKER: And obviously as Google, we
have a number of things that maybe we
could do extra in terms of not just providing the bits,
but maybe running this.
BRIAN DORSEY: Yeah, so then if you
run Kubernetes on Google Cloud Platform,
it runs extremely well.
You get all the benefits of our years
of building this infrastructure.
It taps in very nicely like you say
to our load balancer and other things.
And we just announced recently an actual hosted version
of Kubernetes.
So if you don't want to go to GitHub and like build the thing
and install it and whatever, you can kind of
go to our web console, create a cluster,
and just start using it immediately.
MALE SPEAKER: And everything's taken care of.
BRIAN DORSEY: All the cluster and like management of itself.
MALE SPEAKER: The networking, the container,
and keeping nodes alive, and--
BRIAN DORSEY: And actually, that's a really key point.
One of the key differences with Kubernetes,
as opposed to many other approaches
to kind of managing a cluster of containers,
is that it's declarative, and it's actively
maintaining the state of your environment.
So when you start a container what you do
is you don't actually say, start this container,
you say, I want this container to be running.
And Kubernetes watches the health,
make sure it stays running.
And if ever anything happens to it,
it will replace it with another copy of that container.
And that's true for your entire system.
So if you create--
MALE SPEAKER: How do you express that?
Is that declarative?
Is that an API?
BRIAN DORSEY: Yeah, it's a declarative JSON document.
So you create a tree of configuration,
and you push that up to the API.
And then it will keep the system--
it will set up the system to look that way,
and then it'll keep it looking that way
until you tell it otherwise.
And then when you want to scale, you just
say, Oh, I want more of those.
And you resubmit the document, and you get more.
MALE SPEAKER: So what is the status of Kubernetes
as such and maybe the container engine that you just mentioned,
which is the hosted version?
BRIAN DORSEY: And both of these things are very, very new.
The entire container ecosystem Docker and all the people
contributing to that, Kubernetes itself, are all very new.
So this is moving very, very quickly.
And to be honest, there's a few rough edges still.
So if you play with Kubernetes today,
you'll probably find some challenges.
If you do find those issues, please let us know.
On kubernetes.io, we are active on IRC.
We're of course active on GitHub,
email lists, and the like.
Let us know what works for you, what doesn't work.
If you find things you can't do, you
run into it some of these rough edges, let us know,
and we'll make it better.
MALE SPEAKER: Awesome.
Thank you Brian.
Think containers-- cloud is an awesome place to be in.
It's super exciting.
BRIAN DORSEY: Containers everywhere.
MALE SPEAKER: Do try all of that on the cloud platform,
on your laptop, anywhere.
Just build awesome apps.
Cheers.
BRIAN DORSEY: Go build awesome stuff.
Thank you very much.