Kubernetes The Documentary PART 1

Show video

All right thank you. Sounds okay. Do I look  at you? Look at the camera? I think the reason   that the cloud was so important, around 2013,  was every company was an internet company. The environment of Silicon Valley in 2013, you're  kind of on the heels of the devops movement.

We're moving from just pure virtualization   into infrastructure as a service  AKA the cloud. And so at that point,   automation tools are all the rave. People  are now trying to abstract away the servers. Cloud was starting to become important at Google.  

We realized this was a space  that we had to participate in. Cloud was becoming real in a very material way. We're starting to see the ascendance of Amazon  as certainly something that was becoming   mainstream enterprise technology.

AWS was this behemoth that  was on everybody's mind. By far you know AWS is the dominant, you know,   cloud provider. They were early into the game  with S3. They built a great ecosystem - like,   nailed it, you know. It's a great kind  of business at the end of the day.

The main issue is they were so dominant that  other people were like, 'hmm, maybe we should   have potentially a cloud-based business,'  right? Whether it's like Google or Microsoft   or other companies out there. The problem  was they were so kind of ahead that you...   if you want to change the game, you  know strategically, like what do you do? We knew that we had really good computer   technology because everything that  we had been doing was cloud first. Everybody was kind of feeling  like, 'hey, yeah, no that's cool.' They got a, they got a head start, right?  Okay cool, we're out here to compete. Incrementalism wasn't gonna actually make  Google successful with GCE. How do we   change things up? How do we shake the snow  globe in a way that, you know, may not be   all about Google, but at least gives Google a  fighting chance to be able to start grabbing some   of these customers and to start being that balance  against the dominance that AWS had at the time? Google was looking for ways to apply its  internal infrastructure expertise to the cloud.

If we could leverage that  expertise in that technology,   then that would accelerate our  entry into the cloud space. So around 2013, I think the world was kind  of primed for some new abstractions. This   kind of set the stage for things like Docker,  containerization and eventually Kubernetes. Docker is pretty special because almost  immediately it got a lot of buzz, right.  

People got really excited about it. I personally  am really excited about Docker. I think it's,   you know, probably the most important project I've  worked on, but because of the buzz, because of   the excitement, I get a lot of questions. People  come to me and they say, 'what the what the hell   is Docker in the first place? I heard about it.  I don't get it, you know. What's the big deal?' It is a big deal. I'll start by saying that  and I think containers - the concept of   containers and the implementation behind  it - will be a big deal for all of us.

I think it will affect the way we  work, the way we create software,   the way we distribute it in big ways in the  coming months and years, and I think that's   really exciting. So that all has to do with the  problem of shipping software, specifically... The vision for Docker, the vision of Solomon Hykes  for Docker, was always to be about building tools   for mass innovation. Back then there was already a  lot of frameworks languages that allowed engineers   to build stuff on their own in their own basement  and do something that could really, really matter,   but the next step was really getting those  things into production in a way that would scale. You know, to the Google scale or Uber  scale and those things were not accessible   to anyone. Really, this was really the unfair  advantage of any sizeable company that had the   expertise to run this kind of services at  scale. And this was the idea behind Docker.

I also get this other question which is basically,  'what the hell is a container? why should I care?'   Before Docker many companies  knew about containers,   but that was kind of the secret  sauce. It's the kind of stuff that   the 90% of engineers would never know about,  but it actually was running the big names.   It was it was running under the hood at  Google, at Heroku, at all those companies. Google for example have been using  containers for, I don't know,   15 years and they had this system called Borg  that was actually the inspiration for Kubernetes.   What I think was really unique at that time is  that Docker Inc, created Docker and it made this   technology of containers so accessible,  so easy to use with immediate benefits. The whole idea was, 'how can we build the OS  that will allow people to program the cloud   in a way that abstracts away  the differences? In a way that   basically puts all the power in their hands,  without having to bother with the hardware?' What Docker did that was innovative was  it took all those different mechanisms you   needed and kind of bundled  it up into a single tool   that you could run locally, or you could  run it in a data center or in the cloud.

For me, coming from the configuration management  world, treating infrastructure as code but without   the right abstractions, and you see Docker for  the first time, you look at that container image   as a universal solution to the building  and packaging of an application problem. Docker succeeded in bridging  the gap between dev and ops. It's a tool that had attracted both people with an  ops background and people with a dev background,   and that was, I think, something  that was very very new.

Docker containers totally changed  container technology. People's   perspective on container  technology. It used to be like,   some bunch of the nerds had to create  something, and now it's kind of,  'oh it's so easy to use and we  can deploy,' but what's next? As Docker was catching up success, commercial  interest all over the world started looking   at this. Why? Because we were starting to gain  the mindsets of the engineers both dev and ops. Docker gathered a lot of momentum. It presented  a developer experience that was really unique   and really clean and really  simple, and so you couldn't   read Hacker News on any given week  without finding some article on Docker.

As we started looking at technologies like Docker   we were like impressed by the strength of  what they'd accomplished in solving a very   specific problem which was packaging  up software and making it accessible. But just having a recognition or a realization  that a lot more was going to be required, that,   as we thought about this future  of being able to start creating   more progressive ways of organizing,  operating and managing workloads,   there was more there. We didn't know  what it felt like yet. We didn't know   at the time what it really meant, but  we knew there was something there. What a incredible year. It is really hard  to believe how much has happened in the past  

year. I feel really privileged to be at a company  that is changing the world, making a huge change. So solomon, I think we're on to  something. I think it this is good How do you explain containers? Yeah, so if you take some real  world examples around us...

Let's say, the holidays are coming up and you want  to ship something to a loved one as a present.   So let's invent the post office. And the post office says: 'we can ship things,  but we don't want you to bring loose things   to us. We don't want loose books and jewelry  and money. No no. You need to put in a box.' So if we extend this analogy,  let's put an envelope.

Now there's going to be a cost for me  to move this from one place to another,   and depending on how far it is and how  much it weighs, I'm gonna give you a price   and you can think about that like your stamp. Now, whatever you put inside of it is up to you. So the container can support  any programming language. Ruby,  

Python, Java, Golang, it doesn't matter. To make Kubernetes efficient as the post  office, we need to ask you to put it in the box. Now, the key is you now have to describe where  it needs to go. We need to put an address on it.

Where does it run, who's it destined  for and how long would you like   to take, or are willing to  wait for it to get there? And so, if you think about it, the post  office abstracts all that away from you.   You show up with your envelope  and your stamp and the address,   and they'll tell you, 'well, this  will get there in two or three days'. Planes can break down. Cars can break down,   but no one at the post office calls  you when any of those things happen. They make a promise to you, right? They  promise that this letter will get there   in two days. How they do it is not a concern.   So Kubernetes is built on this thing  we call 'promise theory'. Even though  

you have lots of machines in your Kubernetes  cluster, any of them can break at any time, but Kubernetes' job is to make sure that  application is always running, just like the   post office's job is to make sure that letter  keeps moving until it gets to its destination. Kubernetes does that for infrastructure. We abstract away all the details and allow  developers to just put their app in a box,   give us an address and, if they can  afford the postage, we'll run it for them. I don't think Kubernetes was  possible without Docker. 100%.

If Solomon hadn't done that demo in 2013,  if Google hadn't needed to catch up to AWS,   if core OS hadn't believed that, you know,  Linux needed a good kick to the cloud,   if Red Hat hadn't needed to think  about what comes next after Linux... There's a lot of what-ifs. It looks inevitable in retrospect. It did not feel  that way at all, throughout the entire process. So Google getting into cloud was an  interesting experience in and of itself,   and the story of cloud has really  been answering that question of,   'Now what? Now that I have a machine,  how do I make that machine useful?' With all of the containerized platforms, with  Borg, that have been built up for so long,   we knew that there was a better  way to offer developer platforms. If we built the orchestration technology  that would enable you to build real-world   distributed systems, as Docker was  becoming a well-used and well-known thing, we could create something quite  powerful and for me it was really just   perfectly. I'm always more the business guy. I  was always more the business voice in the room   but a recognition that we needed to  disrupt that, for us to be able to   make inroads against Amazon's leadership  in the sort of raw computer space,   and that sort of strength of ecosystem, I really  knew we had to find that - that innovation   step that would allow us to bring something  to market, that we didn't have to control   but that we could really make shine on Google's  kind of more sophisticated infrastructure.

Our idea was you know, can we create a  Borg-ike system in a way that applies to cloud? And the question there was one question around,  do we use Borg itself or do we do something new, or do we adapt an open source project that's  already out there, something like Mesos? We're playing with these ideas around what  container orchestration would look like. We were   playing with the idea of Docker. One of the key moments, the most distinct moments  in my mind at least, was asking Brendan to just   put together a little demo, because he was such  a a fast mover. Like, Brendan could, you know,  

you could ask him to do something and the next day  he'd come back and you know something would exist. I'm Brendon Burns. I'm one of the co-founders  of the Kubernetes open source project. I think Brendon is a creative genius. Like  if you spend two days with Brendan, he will   throw off 10 ideas any of which could actually  change the world. Like he's a very creative soul.   Brendon stitched together something  which I looked at and I was like,   'holy smokes you've created a personal Borg cell'.  It was just scripts and whatnot, but I could feel   it at that point. And for me that was that moment  of recognition that there was something here.

We started working together on these ideas and   you know I don't know which of the two  it was that had the crazy idea of, like,   well what would it look like if we  built this as an open source technology? What if we actually built the  whole orchestration system   as an open source project? What if we made  that the thing that people could then deploy   and use? What if it wasn't only available  on Google but was available everywhere? Building a community via open source was going to   be our best way to essentially  establish a de facto standard. I just wanted an opportunity to put  forth an open source community that would   generate a lot of attention  and garner a lot of support   and then I wanted to be able to  run it better than anyone else. I wanted to build out you know GKE as being an  industry-leading destination for workloads, but I   knew that the preconditions for media having some  success there were to get the whole programming   model accepted by the industry, really garner  innovation and strength around the the technology.   The idea behind open source is the fact  that everything should be available for   anybody to go ahead and use and,  more importantly, also to modify. Let's say you buy a piece  of software off the shelf,   right? You go in and you buy,  like I don't know, Angry Birds.

Then you're like, well I kind of love the game,  but I would like there to be another bird. I want to, I'm going to write my  own bird. I'm going to call it   Jigglypuff. Okay great, that's a trademark.  That's Pokemon, I think, but anyways,   I want to go and add another bird into the  game, right? And you really can't do that   because you basically buy the software,  you buy the right to use the software.

With the open source, right, that's where  the developers sit down and write the code,   right? That is what makes the software go. And so with the open source the  idea is that anybody can go ahead   and, you know, download or get the source  code, and then they can also modify it. Many times, especially in the  thriving open source projects,   there's a lot of contributors who  actually work on that all the time,   so it's not just like, 'okay, well  here's the software. It's done,' right? There might be bugs. There might be  new features you want to put into it,  

so these contributors then come together and they  go ahead and improve things all the time. So the   open source basically means that you have  the ability to view and modify the software - you know the source code, right,  again, what makes it software - and then be able to go ahead  and use it however you see fit. An interesting thing to understand  is each of us brought our own kind   of vision and goals to what we were trying  to do, and also our own ideas and proposals.   So there was an initial prototype. It was just  Brendan, Joe and Ville that worked on that.   Yeah, so those three of us hacking on it.  So Joey and Brendan there's only so much,   you know, three developers can do so we're kind  of like showing it around the company, just kind   of like getting some feedback on it. Like, 'what  do you think about this one? Take it for a spin'.

The Mountain View team was where Borg was  centered, and the Seattle team is where cloud   was centered, and so we started communicating on  a regular basis and bringing the unique experience   of the cloud folks, who know how to build that  product and work within that technology stack, and   the unique experience of the Borg people, who knew  how Borg worked, and meld those things together. We did need to have a credible plan   for a cloud product, thus we needed  a credible plan for differentiation,   and we needed to assure management that  we weren't enabling the competition. The Seattle folks had written this  prototype that they called Seven - and it was it was a very much a prototype - going to someone like Urs and saying, 'we want  to open source this'. Urs is very analytical.   He said, 'why? What do we get out of this? What  is the advantage that this brings to Google?'   and so his initial response was,  I don't think we need to do this. We, you know, we went through a series  of reviews with the executive team   where we pitched and they were,  like, 'you're crazy. You're crazy.' Getting a big company like Google to do something  new is always really difficult. Things work on  

sort of, like, well, we'll have a meeting next  week. We'll have a meeting the week after. It was stressful because you're, you know,   it's obvious. It was obvious to the  three of us what needed to be done. There were new projects, new ideas, coming  out every week and so there's this real fear   that if we didn't get on this, if we didn't get it  out there, then the world was gonna pass us by and   we're gonna be trying to adapt to something  that we didn't have a lot of influence on. Leadership of course had  real concerns about Google   funding our competitors through open source. We knew what we could accomplish if unlocked to  do this. There were a couple of kind of points   in time I think that were really important  you know for the success of the project.

One was a bus ride. We were doing an offsite summit with  a lot of the leadership group around   Google's technical infrastructure teams, and had   a chance to address the team around  you know cloud and what it meant etc. Ironically on the way back, I  was sitting behind Eric Brewer   and you know I was basically just  framing up what we were trying to do. Craig and I were discussing this  on a bus ride from an off site   at least the beginning Kubernetes felt too  core - like too precious to open source - so I would say the starting position was no.

I was, like, you know this is the vision,  this is what we can accomplish, et cetera,   and he got it. Like, he got it quite deeply. One of the big reasons to open source it is  this change in the industry that we want,   which is to shift the agenda of cloud - huge agenda - Google is not big enough to  do that by itself to pull off. To pull off that agenda, you have  to have a lot of fellow travelers,   right? And open source is the way to do that,  if you can get people to actually participate.

We hadn't yet got to a point where there  was a sort of critical mass of influential   individuals that got it enough to dissuade  the kind of consensus of the executive group,   and at that point it really looked like Google  wasn't going to okay it. It really looked like,   you know, there was too much uncertainty about  what this whole open source thing would mean   and how were we gonna monetize it by  the end of it. Like, it was funny. Like   we put together the sort of last final attempt  and we were gonna have a meeting with Urs down in   Mountain View, and I was at a point where I was,  like, 'look, I'm not even in travel for this.   Like I know how this is going to go,  so I'm going to be in Seattle. I'll be   providing moral support.' I think actually  Brendan led the conversation with Urs. Brendan and I flew down there to have a  meeting with some of the senior leadership and,   if I remember correctly, there  were two other folks in the room: the decision maker at the time  which was Urs and another VP,   who was pretty, pretty senior. And that VP was  very much against us open sourcing this stuff.

I was actually on the video conferencing session  and i saw Urs just like playing on his, playing on   his phone for most of the talk, and I was like  holy smokes. We actually, like, we've got it. There was a turning point in the meeting where  it's clear that you know Urs was going to do it.   If he disagreed with us, he'd be like educating us  like you know telling us why he disagreed with us.   And so I did not see that one coming.  It was a pretty high moment actually.   We were surprised and we were able to  get it out there. And then afterwards,   you know, we don't get that  much sun up here in Seattle, so   it was nice to be able to go and relax in the  sunshine and just you know think about, okay,   now what do we do and start that whole planning  phase now that we got the the okay to go ahead.

Finally. It's such a right thing  to do that I think it was just   more of a relief where I was like, 'okay, good.' We got the go-ahead to open source it and   then we had to scramble to actually get  the thing ready and get it out there. Once our plans were relatively concrete,  we needed approval relatively quickly   or to be able to launch at Dockercon. It took us about six months to  get approval and then we had about   three months between approval and  actually announcing it at Dockercon.

By the time we actually had it  announced, we had 27 Googlers'   fingerprints on it. Actually took us less time  to build the dot one release of it than it did   to get approval to release it. We may have been  working on it a little bit before we got approval,   but I think we formally had about  seven people assigned to the project,   but it was sufficiently exciting that  people just wanted to participate. We needed more people to join on so we  reached out around our organization found   some some people who were loose, grabbed  them, brought them into the project.

We just got excited and everyone  just jumped in to do the development. Now it was time to actually start  getting the thing ready to release, so   we did a rewrite of the of the thing in Go.  And then some of the early work that we did   was creating a declarative layer on top  of Docker that was written by Tim Hockin   and that was part of the scramble of  getting stuff ready for Kubernetes.

As you all know, the hardest problem  in computer science is naming, right? So here we are, again, we have this project that  we're trying to name it and yada yada yada... So Seven M9 is basically a spin-off of Borg,   right, because again we were looking  at the the kind of user experience. It was impossible to release with that name.

Honestly we were desperately looking for a name  and it was Craig, I think, said he was driving,   and with the steering wheel, and was like  you know, 'hey maybe there's some sort of   other language for you know "pilot" or   somebody "steering". And we ended  up picking Kubernetes out of that. Kubernetes. Kubernetes. Kubernetes was the name that came out because it  ticked all the boxes in a sense that if you're   punching Kubernetes into Google at the time,  it's not like you're going to get a lot of hits. Early on Tim Hockin actually  created the Kubernetes logo.   We asked our marketing department, they're  like, 'open source? We don't give a crap,   just do whatever you want.' I think they  used more colorful language than that. And so Tim, who actually has a degree in  graphic design I believe, actually did the logo.

So we were off to the races.

2022-01-23

Show video