Latest / The Pragmatic Engineer / How Kubernetes is Built with Kat Cosgrove
Transcript
- 0:00SPEAKER_01: What is Kubernetes?
- 0:01Kubernetes is a tool that makes it easier to manage and scale
- 0:05an application that
- 0:06SPEAKER_00: exists as a swarm of containers.
- 0:09SPEAKER_00: So it will handle things for you like automatically scaling up resources,
- 0:13SPEAKER_00: whether that's networking or storage or whatever,
- 0:17SPEAKER_00: based on demand.
- 0:18SPEAKER_00: And it handles that for you without you having to think about it.
- 0:22SPEAKER_00: You define upper limits,
- 0:23SPEAKER_00: for a particular type of resource, and it'll go up to that as needed.
- 0:27SPEAKER_00: It scales automatically.
- 0:28This is particularly useful if you're trying to keep costs down
- 0:32and keep availability high.
- 0:34The rise in complexity of applications built as microservices
- 0:38is what necessitated
- 0:39SPEAKER_00: something like Kubernetes.
- 0:41SPEAKER_00: You could do all of this before the scaling of applications running as
- 0:45SPEAKER_00: microservices in clusters or swarms.
- 0:47Before we had Kubernetes,
- 0:48it was just very difficult and it was very manual.
- 0:51Kubernetes is just an abstraction on something that we used to
- 0:55do manually.
- 0:56Kubernetes is the second largest open source project in the
- 0:58world after Linux.
- 1:00SPEAKER_01: So what is it, why is it so popular, and how is it built?
- 1:03SPEAKER_01: Today I sit down with Cass Cosgrove,
- 1:05SPEAKER_01: who is the leader of the Kubernetes Release Team subproject.
- 1:09Cass started off as a software engineer specializing in
- 1:11embedded Linux and got
- 1:12SPEAKER_01: involved with Kubernetes by learning K3S,
- 1:15SPEAKER_01: a minimized version of Kubernetes that is designed for smaller,
- 1:18SPEAKER_01: memory-limited embedded devices.
- 1:19Kat was a contributor to Kubernetes for years before becoming a
- 1:22lead on different
- 1:23SPEAKER_01: parts of the project.
- 1:24SPEAKER_01: In our conversation,
- 1:25SPEAKER_01: we cover the architecture of Kubernetes and what Kubernetes pods are,
- 1:29why Kat thinks Kubernetes won and became the de facto
- 1:32infrastructure management solution,
- 1:34SPEAKER_01: in part because of its strong focus on documentation,
- 1:37SPEAKER_01: how to propose changes to Kubernetes via the KEP process,
- 1:40SPEAKER_01: and how Kubernetes release happens in the span of 12 to 14 weeks.
- 1:44SPEAKER_01: and many more topics.
- 1:45If you're interested in backend infrastructure or how a
- 1:48well-organized large open
- 1:49SPEAKER_01: source project operates,
- 1:50SPEAKER_01: then this episode is for you.
- 1:52If you enjoyed the show,
- 1:53please subscribe to the podcast on any podcast platform and on YouTube.
- 1:56SPEAKER_01: Kat, first of all, just welcome to the podcast.
- 1:58SPEAKER_00: Thank you for having me.
- 2:00Unless you're a Kubernetes infrastructure person who actually
- 2:06deals with Kubernetes
- 2:07SPEAKER_01: day in,
- 2:07SPEAKER_01: day out,
- 2:08SPEAKER_01: most software developers,
- 2:09SPEAKER_01: including myself,
- 2:10SPEAKER_01: I've never dealt Kubernetes directly.
- 2:13SPEAKER_01: However,
- 2:14SPEAKER_01: so many of the systems that I deploy to,
- 2:16SPEAKER_01: a lot of the APIs that run today are probably on Kubernetes.
- 2:20SPEAKER_01: I'm pretty sure, for example, use Render.
- 2:22SPEAKER_01: I'm assuming they're going to use Kubernetes.
- 2:24At Uber,
- 2:25we use Kubernetes,
- 2:26and apparently they're one of the biggest deployments.
- 2:29SPEAKER_01: What is Kubernetes?
- 2:32SPEAKER_01: What is the relationship with Docker, if there is any?
- 2:37SPEAKER_01: And as an average developer, when would you be exposed to it, if ever?
- 2:41SPEAKER_00: So I think the average developer,
- 2:43SPEAKER_00: especially if you're a web developer or an application developer,
- 2:46SPEAKER_00: you don't need to worry about what Kubernetes is.
- 2:49SPEAKER_00: You're never going to have to touch it directly.
- 2:52SPEAKER_00: And it's a specialization.
- 2:55Being like a Kubernetes cluster admin or an SRE or something,
- 3:00that's a specialization.
- 3:02And I don't think that the average developer needs to know or
- 3:06care what Kubernetes is.
- 3:08SPEAKER_00: You certainly don't need to know how to use it.
- 3:09SPEAKER_00: You can know what it is, but you don't need to know how to use it.
- 3:12SPEAKER_00: There's so much going on.
- 3:14SPEAKER_00: It's complex.
- 3:16SPEAKER_00: It's notoriously difficult to learn.
- 3:18I don't think that there is a reason to dive into it super deep
- 3:22as an average developer,
- 3:23SPEAKER_00: unless you're trying to make a career switch into Kubernetes,
- 3:28SPEAKER_00: which I couldn't blame you for because it's very lucrative.
- 3:31But Kubernetes is a tool that makes it easier to manage and
- 3:37scale an application
- 3:39SPEAKER_00: that exists as a swarm of containers.
- 3:41SPEAKER_00: Yeah.
- 3:43SPEAKER_00: So it will handle things for you like automatically scaling up resources,
- 3:47SPEAKER_00: whether that's networking or storage or whatever based on demand.
- 3:55SPEAKER_00: And it handles that for you without you having to think about it.
- 3:59You define upper limits for a particular type of resource and
- 4:04it'll go up to that as needed.
- 4:06SPEAKER_00: It scales automatically.
- 4:08SPEAKER_00: This is particularly useful if you're trying to like
- 4:11SPEAKER_00: keep costs down and keep availability high, for instance.
- 4:16SPEAKER_00: So this is direct from the Kubernetes documentation,
- 4:20SPEAKER_00: and this is what Kubernetes components look like.
- 4:23SPEAKER_00: This is a very, very simple...
- 4:27SPEAKER_00: cluster.
- 4:28SPEAKER_00: This box over here on the left is your control plane,
- 4:32SPEAKER_00: and you aren't going to interact directly with this a ton.
- 4:38SPEAKER_00: This is mostly automated.
- 4:41Over here on the right,
- 4:41where it says node,
- 4:43node,
- 4:44node,
- 4:44those are all pods.
- 4:47And within these pods run the kubelet,
- 4:51which is another little control thing.
- 4:53It's interacting with the Kubernetes API to stand up and down
- 4:59all of your containers.
- 5:00SPEAKER_00: And all of your containers exist within here too.
- 5:03SPEAKER_00: So if one goes down, like a pod fails for whatever reason, whether it
- 5:11SPEAKER_00: the code itself,
- 5:12SPEAKER_00: the application crashes,
- 5:14SPEAKER_00: or it runs out of resources or something else weird happens,
- 5:17SPEAKER_00: your deployment will stand it up again,
- 5:20SPEAKER_00: automatically for you.
- 5:21SPEAKER_00: You won't notice it, your users won't notice it, probably.
- 5:24SPEAKER_01: This episode was brought to you by WorkOS.
- 5:26SPEAKER_01: If you're building a SaaS app,
- 5:28at some point your customers will start asking for enterprise
- 5:30features like SAML authentication,
- 5:32SPEAKER_01: SKIM provisioning,
- 5:33SPEAKER_01: and fine-grained authorization.
- 5:35SPEAKER_01: That's where WorkOS comes in,
- 5:36SPEAKER_01: making it fast and painless to add enterprise features to your app.
- 5:40Their APIs are easy to understand and you can ship quickly and
- 5:42get back to building
- 5:43SPEAKER_01: other features.
- 5:45WorkOS also provides a free user management solution called
- 5:48AuthKit for up to 1
- 5:49SPEAKER_01: million monthly active users.
- 5:51It's a drop-in replacement for Auth0 and comes standard with
- 5:53useful features like
- 5:54SPEAKER_01: domain verification,
- 5:55SPEAKER_01: role-based access control,
- 5:57SPEAKER_01: bot protection,
- 5:58SPEAKER_01: and MFA.
- 5:59SPEAKER_01: It's powered by Radix components, which means zero compromises in design.
- 6:02You get limited customizations as well as modular templates
- 6:05designed for quick integrations.
- 6:07SPEAKER_01: Today,
- 6:08SPEAKER_01: hundreds of fast-growing startups are powered by WorkOS,
- 6:10SPEAKER_01: including ones you probably know,
- 6:12SPEAKER_01: like Cursor,
- 6:12SPEAKER_01: Vercel,
- 6:13SPEAKER_01: and Perplexity.
- 6:14SPEAKER_01: Check it out at workos.com to learn more.
- 6:17SPEAKER_01: That is workos.com.
- 6:21This episode is brought to you by Modal,
- 6:22the cloud platform that makes AI development simple.
- 6:25SPEAKER_01: Need GPUs without the headache.
- 6:28SPEAKER_01: With Modal,
- 6:28SPEAKER_01: just add one line of code to any Python function and boom,
- 6:31SPEAKER_01: it's running in the cloud on your choice of CPU or GPU.
- 6:34SPEAKER_01: And the best part, you only pay for what you use.
- 6:38With sub-second container starts and instant scaling to
- 6:40thousands of GPUs,
- 6:42SPEAKER_01: it's no wonder companies like Suno,
- 6:43SPEAKER_01: RAMP,
- 6:44SPEAKER_01: and Substack already trust Modal for their AI applications.
- 6:47SPEAKER_01: Getting an H100 is just a pip install away.
- 6:50SPEAKER_01: Go to modal.com slash pragmatic to get $30 in free credits every month.
- 6:55SPEAKER_01: That is modal.com slash pragmatic.
- 6:59And then so how does a pod and let's say virtual machine
- 7:02connect or like in this case,
- 7:03SPEAKER_01: when we say container,
- 7:04SPEAKER_01: it's probably a virtual machine,
- 7:06SPEAKER_01: right?
- 7:06SPEAKER_00: Nope, there is a difference between a container and a virtual machine.
- 7:12Containers are virtualizing the operating system and
- 7:16applications running within it.
- 7:18A virtual machine is larger and beefier,
- 7:21and it is likely also virtualizing hardware.
- 7:27SPEAKER_00: There are different types of virtualization,
- 7:30SPEAKER_00: and Kubernetes relies on many types of virtualization.
- 7:35Virtual memory is probably the most recent breakthrough in virtualization,
- 7:42SPEAKER_00: I guess,
- 7:43SPEAKER_00: and we cracked that in the 60s,
- 7:46SPEAKER_00: but that's what allows things like containers to exist,
- 7:49SPEAKER_00: virtualized memory.
- 7:51SPEAKER_00: Um, but yeah, a container is a type of virtualization.
- 7:54SPEAKER_00: A virtual machine is a type of virtualization.
- 7:56SPEAKER_00: It's just much, much easier.
- 7:58SPEAKER_00: Um, you, you can run Kubernetes inside of a VM.
- 8:02Like there's nothing stopping you from doing that,
- 8:04but,
- 8:05uh,
- 8:05containers are not VMs themselves.
- 8:08SPEAKER_00: They're, they're smaller, they're more lightweight.
- 8:09SPEAKER_00: They're easier to share around.
- 8:11SPEAKER_00: Um, they're, they're much more configurable as well.
- 8:14SPEAKER_01: Right.
- 8:14SPEAKER_00: Yeah.
- 8:15SPEAKER_00: Yeah.
- 8:15SPEAKER_00: They're, they're,
- 8:16SPEAKER_00: You can just chuck one.
- 8:19The popularity of Docker is largely because of the shareability
- 8:24of Docker files and
- 8:26SPEAKER_00: things like the Docker registry.
- 8:27SPEAKER_00: And now there's a million and one container registries.
- 8:31But shareability,
- 8:33the small compact size of containers is what makes them so attractive.
- 8:36SPEAKER_00: It's why we generally,
- 8:39SPEAKER_00: not always,
- 8:39SPEAKER_00: develop applications as microservices now rather than monoliths.
- 8:43SPEAKER_00: That's the...
- 8:45SPEAKER_00: Containers is what allow us to do that.
- 8:48SPEAKER_00: And the rise in complexity of applications built as microservices is what
- 8:54SPEAKER_00: necessitated something like Kubernetes.
- 8:57SPEAKER_00: You could do all of this before the scaling of applications running as
- 9:03SPEAKER_00: microservices in clusters or swarms.
- 9:05Before we had Kubernetes,
- 9:07it was just very difficult and it was very manual.
- 9:10Kubernetes is just an abstraction on something that we used to
- 9:13do manually.
- 9:15SPEAKER_00: And now since we are automating a lot of it with a very,
- 9:19SPEAKER_00: very complex overlord like Kubernetes,
- 9:23SPEAKER_00: we can scale our applications much larger,
- 9:25SPEAKER_00: much faster.
- 9:26And we can build much more complex applications as much more
- 9:30complex chunks of
- 9:31SPEAKER_00: microservices instead of having to throw a monolith in.
- 9:35So this is like most advances in technology since the ENIAC
- 9:41machine in the 1950s.
- 9:43Kubernetes is just an abstraction layer on something that we
- 9:46used to do by hand
- 9:48SPEAKER_00: that sucked,
- 9:49SPEAKER_00: that was hard to do by hand.
- 9:51SPEAKER_00: And now we've automated it.
- 9:52SPEAKER_00: And the tradeoff there is...
- 9:56SPEAKER_00: When you dig into it, it's confusing.
- 9:58SPEAKER_00: It is confusing.
- 10:00SPEAKER_01: Can we talk about the history?
- 10:01SPEAKER_01: What happened?
- 10:02SPEAKER_01: What was before Kubernetes?
- 10:04SPEAKER_01: And as I understand, the roots are somewhere with Google, right?
- 10:07SPEAKER_01: Because I think it's good to understand what is it that,
- 10:10SPEAKER_01: you know,
- 10:10SPEAKER_01: either sysadmins or other people were doing.
- 10:13SPEAKER_01: And then,
- 10:14SPEAKER_01: you know,
- 10:15SPEAKER_01: why we decided or why some engineers decided like,
- 10:17SPEAKER_01: all right,
- 10:17SPEAKER_01: let's actually build a better tool.
- 10:19SPEAKER_01: And now the whole world just seems to have caught on saying,
- 10:21SPEAKER_01: actually,
- 10:22SPEAKER_01: yeah,
- 10:22SPEAKER_01: we actually want more of this.
- 10:23Yeah,
- 10:24so Google has a history and a reputation of over-engineering things,
- 10:28right?
- 10:29SPEAKER_00: They do.
- 10:31So internal to Google,
- 10:33a long,
- 10:33long time ago,
- 10:34there was a tool called Borg.
- 10:37SPEAKER_00: That is a Star Trek reference, right?
- 10:39SPEAKER_00: You will be assimilated.
- 10:40SPEAKER_00: It's still around.
- 10:41SPEAKER_00: It's still around.
- 10:43And Borg was used internal to Google to manage their own clusters,
- 10:48their own microservices.
- 10:50SPEAKER_00: And somebody decided one day, ooh,
- 10:55SPEAKER_00: this is really good.
- 10:55SPEAKER_00: I think we're onto something.
- 10:58SPEAKER_00: We should open source this.
- 11:00SPEAKER_00: And so they did,
- 11:02and they talked to the Linux Foundation who stood up the Cloud
- 11:05Native Computing
- 11:06SPEAKER_00: Foundation as a directed fund of the LF.
- 11:09And Kubernetes was the first project donated to the Cloud
- 11:12Native Computing Foundation.
- 11:13SPEAKER_00: That was in July, almost 11 years ago.
- 11:17SPEAKER_00: And the first commit was by Joe Beta.
- 11:20SPEAKER_00: A fun thing on the name Kubernetes.
- 11:24SPEAKER_00: It means helmsman in Greek and a typical ship's wheel.
- 11:30Our logo has eight spokes,
- 11:33but ours has seven as a reference to seven of nine from Star Trek.
- 11:40SPEAKER_00: It's like a nod to Borg, the original name.
- 11:44SPEAKER_01: Yeah.
- 11:44SPEAKER_00: Yeah.
- 11:46SPEAKER_00: But it took off pretty quickly.
- 11:48SPEAKER_00: Before that, there were other ways to manage clusters, right?
- 11:51SPEAKER_00: There's Mesosphere and there was Docker Swarm and a couple of others.
- 11:56SPEAKER_00: Like this was very clearly something that the market wanted,
- 11:59SPEAKER_00: that developers needed,
- 12:00SPEAKER_00: that SREs needed,
- 12:03SPEAKER_00: that we didn't really have SRE as a term back then.
- 12:06SPEAKER_00: Back then.
- 12:07Yeah.
- 12:08SPEAKER_00: We certainly do now.
- 12:09SPEAKER_00: SRE is just like a super fancy sysadmin now.
- 12:12But yeah,
- 12:14it was born out of Google solving their own problems and going,
- 12:19you know what?
- 12:20SPEAKER_00: no, people need this, and they decided to ship it for free.
- 12:24And now we're the second largest open source project in the
- 12:27world behind Linux,
- 12:30SPEAKER_01: which we rely on.
- 12:32SPEAKER_01: And as a fun history,
- 12:34SPEAKER_01: I talked with Dave O'Connor,
- 12:35who was one of the first SREs inside of Google when it was
- 12:38internally called like that,
- 12:39SPEAKER_01: but externally the term wasn't popular until much later.
- 12:42SPEAKER_01: And he said this interesting story of how
- 12:45SPEAKER_01: At the time when he joined Google,
- 12:47SPEAKER_01: they already were managing thousands or tens of thousands of servers.
- 12:51And the problems that they were facing is they went to a
- 12:54hosting provider where
- 12:56SPEAKER_01: they wanted to host their servers.
- 12:57SPEAKER_01: And they told them how many they need to manage.
- 13:00SPEAKER_01: And the hosting provider was used to manage maybe 100 at max.
- 13:02SPEAKER_01: And it was very manual.
- 13:04And then he said that they just needed to create the processes,
- 13:07the tools,
- 13:07etc.
- 13:08SPEAKER_01: So my...
- 13:09Is it fair that the understanding is that we had this explosion
- 13:12in both physical servers,
- 13:14SPEAKER_01: then we had virtualization virtual servers,
- 13:16SPEAKER_01: Google figured out how to do it,
- 13:18SPEAKER_01: and then they just turned around and said,
- 13:20SPEAKER_01: okay,
- 13:21SPEAKER_01: let's open it up.
- 13:22SPEAKER_00: Pretty much.
- 13:23SPEAKER_00: Yeah, that's pretty much what happened.
- 13:28SPEAKER_01: Right now,
- 13:28SPEAKER_01: I think it's a really positive thing on Google,
- 13:30SPEAKER_01: but why do you think the motivation might have been for Google?
- 13:33It is amazing that they did it,
- 13:35and the industry has greatly benefited from it.
- 13:37SPEAKER_01: But they could have just said,
- 13:38SPEAKER_01: okay,
- 13:38SPEAKER_01: let's just keep doing what we're doing with Borg and not bother too much.
- 13:43SPEAKER_01: Because they still have Borg, right?
- 13:44SPEAKER_01: Yeah.
- 13:44SPEAKER_00: They do still have Borg.
- 13:46SPEAKER_00: As far as I know, they still have Borg.
- 13:47SPEAKER_00: I haven't asked a Google engineer about the state of Borg in a minute.
- 13:50SPEAKER_00: They have.
- 13:50SPEAKER_00: I recently asked.
- 13:52SPEAKER_00: As far as I know, it's still a thing.
- 13:53SPEAKER_00: Do you mean like why didn't they just like productize Borg and sell it?
- 13:58Either that or just why did they think this would benefit the
- 14:02industry and maybe
- 14:03SPEAKER_01: also their business?
- 14:06SPEAKER_01: Now that we have Google Cloud,
- 14:07SPEAKER_01: I can see how,
- 14:08SPEAKER_01: for example,
- 14:09SPEAKER_01: Kubernetes might have indirectly helped.
- 14:11SPEAKER_01: But I'm just thinking just from a selfish perspective,
- 14:14SPEAKER_01: this is a really unselfish thing from a corporation to do.
- 14:18SPEAKER_01: I'm trying to understand.
- 14:18SPEAKER_01: There's usually a longer term motivation potentially.
- 14:21Or maybe it was just engineers being geeky and thinking this is really,
- 14:25really helpful.
- 14:27I know those engineers quite well,
- 14:28and they are massive dweeps,
- 14:31and I love them.
- 14:32SPEAKER_00: Awesome.
- 14:34SPEAKER_00: So yeah,
- 14:35I totally get how people would think that open sourcing
- 14:38something as successful as
- 14:40SPEAKER_00: Kubernetes may not be a smart business decision.
- 14:45But look at the sheer amount of influence Google has gained
- 14:51over the cloud native
- 14:52SPEAKER_00: space over that.
- 14:54They still have employees sitting on the technical oversight
- 14:57committee for the CNCF.
- 14:58SPEAKER_00: They have Linux Foundation governing board members.
- 15:01SPEAKER_00: They have CNCF governing board members.
- 15:03They have people...
- 15:04I don't think they have somebody sitting on...
- 15:06Oh,
- 15:06no.
- 15:06They do have somebody currently sitting on the Kubernetes
- 15:08steering committee.
- 15:09SPEAKER_00: They still have a degree of control.
- 15:12SPEAKER_00: The way we govern ourselves as a project,
- 15:16no one company can have more than two representatives on the
- 15:19steering committee.
- 15:19SPEAKER_00: So they can't wrest control of the project from the people.
- 15:23SPEAKER_00: anymore, like any more than AWS or Microsoft or Red Hat can.
- 15:28SPEAKER_00: But it has given them a pretty extreme degree of influence.
- 15:34SPEAKER_00: I mean,
- 15:34we're here on this podcast talking about the fact that Google
- 15:38gave us Kubernetes,
- 15:39SPEAKER_00: Google's directly responsible.
- 15:41SPEAKER_01: That's fair.
- 15:42I'm trying to understand because I think it's great that this
- 15:45is happening.
- 15:45SPEAKER_01: And I think the more we understand what the benefits are and why other
- 15:49companies potentially should follow for example spotify that
- 15:52was backstage their
- 15:54developer portal and what they told me is they think it will
- 15:57make it cheaper on the
- 15:58long term for them to actually maintain themselves because now
- 16:01they're going to get
- 16:02other developers from other companies or independent engineers
- 16:06bringing the ideas
- 16:07and also standardization is is another thing so yeah if your
- 16:11project is good people
- 16:13SPEAKER_00: will come contribute to it um i
- 16:17SPEAKER_00: We open source maintainers have mixed feelings about this,
- 16:19SPEAKER_00: but it is a way to get free labor,
- 16:23SPEAKER_00: right?
- 16:23SPEAKER_00: Nobody pays me to maintain Kubernetes.
- 16:27SPEAKER_00: It's not my job.
- 16:29I don't have a cloud provider writing me a paycheck for running
- 16:31the Kubernetes releases.
- 16:33SPEAKER_00: So we do do all of this work for free.
- 16:38Another benefit is that open source software is inherently more
- 16:42secure than closed
- 16:43SPEAKER_00: source proprietary software.
- 16:46SPEAKER_00: That security angle is real hard to argue with.
- 16:50SPEAKER_00: Kubernetes just addressed a nasty CVE very recently in Ingress Nginx,
- 16:56and that would be much slower to address on proprietary
- 17:01software with a smaller
- 17:03SPEAKER_00: team that can't work around the clock.
- 17:05You can't force your employees to work around the clock if it's
- 17:09a small group of
- 17:10SPEAKER_00: people that are all in one time zone.
- 17:12SPEAKER_00: And open source projects,
- 17:13SPEAKER_00: especially one as large as Kubernetes,
- 17:15SPEAKER_00: we can respond around the clock.
- 17:18SPEAKER_01: And how large is Kubernetes,
- 17:21SPEAKER_01: both in terms of the widespread in the industry,
- 17:25SPEAKER_01: the complexity of the software and the team,
- 17:27SPEAKER_01: as you refer to?
- 17:32SPEAKER_00: First,
- 17:33I think I need to explain the different types of people
- 17:35involved in an open source project.
- 17:38SPEAKER_00: Generally, you have users who are people who just consume your tool.
- 17:42SPEAKER_00: You have contributors who are writing code or writing documentation
- 17:47Or in the case of the release team doing some like project
- 17:51management type of role,
- 17:53but they don't have any control over the future or direction of
- 17:57the project and
- 17:59SPEAKER_00: have like maybe limited permissions within repositories or orgs.
- 18:03SPEAKER_00: Maintainers have titles within a project.
- 18:07So SigDocs,
- 18:08Technical Lead,
- 18:09Release Team,
- 18:09Subproject Lead are both titles.
- 18:12You exist in an owner's file and you have control over
- 18:15governance and policy
- 18:16SPEAKER_00: decisions about the project that affect everybody.
- 18:21SPEAKER_00: There are a couple dozen SIGs within Kubernetes,
- 18:26SPEAKER_00: all with two to three chairs and two to four technical leads.
- 18:34SPEAKER_00: Those people would all be considered maintainers.
- 18:37then sub-project owners exist below that before you get down to
- 18:41regular contributors.
- 18:42SPEAKER_00: So there's probably... It's a large project.
- 18:45SPEAKER_00: And everybody in SIG leadership is a project manager, functionally.
- 18:49SPEAKER_00: We're all doing administrative work.
- 18:51SPEAKER_00: We're all managing people.
- 18:54We're all affecting the direction of our various areas of the
- 18:58Kubernetes project.
- 18:59SPEAKER_00: And there's probably...
- 19:02SPEAKER_00: 150,
- 19:03200 people who would be classed as maintainers and then more
- 19:08than a thousand
- 19:09SPEAKER_00: contributors a month.
- 19:10SPEAKER_01: It is a month.
- 19:12SPEAKER_01: Wow.
- 19:12SPEAKER_00: It's massive.
- 19:13SPEAKER_01: So about like a few dozen, let's say like 20 to 40 SIGs.
- 19:19SPEAKER_01: leaders, about 150, 200 maintainers, and like a little pyramid almost.
- 19:23SPEAKER_01: And then the contributors who are,
- 19:25SPEAKER_01: I'm assuming contributors,
- 19:27SPEAKER_01: some of them will be regular,
- 19:28SPEAKER_01: some of them will be just one-off.
- 19:29SPEAKER_00: Yeah, some of them are one-off.
- 19:30SPEAKER_00: Sometimes we get drive-by contributions like any other big project,
- 19:34SPEAKER_00: and some people just stick around as contributors.
- 19:37SPEAKER_00: And you go through what we call a contributor ladder.
- 19:40SPEAKER_00: So you show up as a contributor at first,
- 19:42you work as a contributor for a while in whatever area
- 19:45interests you most,
- 19:46SPEAKER_00: and
- 19:47And if you stick around long enough and you want it,
- 19:49you will eventually become a maintainer.
- 19:51You'll end up leading a sub project or you'll end up as a
- 19:56technical lead or a SIG chair.
- 19:58SPEAKER_00: That's what happened to me.
- 19:59I was on the Kubernetes release team for three years and then I
- 20:04led a release myself.
- 20:06SPEAKER_00: Kubernetes version 130 was my release.
- 20:09SPEAKER_00: And after that, the SIG release chairs offered me the sub project.
- 20:15SPEAKER_00: And now I just keep running them.
- 20:17SPEAKER_00: And now I'm a maintainer.
- 20:18And because I had run the docs sub team for the Kubernetes
- 20:24release a couple of times,
- 20:25SPEAKER_00: SIG docs asked me to be a technical lead.
- 20:27SPEAKER_00: And that's just, that's how it works.
- 20:29SPEAKER_00: Anybody can show up.
- 20:30SPEAKER_00: Anybody can open an issue.
- 20:32SPEAKER_00: Anybody can...
- 20:35SPEAKER_00: Open a pull request and dive in and help out.
- 20:39SPEAKER_00: You don't even really have to be a Kubernetes expert to be useful.
- 20:42You just have to know how software works or know how to write
- 20:45documentation or know
- 20:47SPEAKER_00: how to manage a team.
- 20:50SPEAKER_01: So Kubernetes,
- 20:52SPEAKER_01: widespread-wise,
- 20:53SPEAKER_01: as I understand,
- 20:54SPEAKER_01: most of the large infrastructure runs on Kubernetes.
- 20:58SPEAKER_01: If it's large, it's the one that makes the most sense.
- 21:01I'm not even sure there's a competitor that is open source that
- 21:05is equally capable.
- 21:09SPEAKER_00: Not that I would say is equally capable.
- 21:11SPEAKER_00: There are certainly other ways to manage clusters.
- 21:14SPEAKER_00: Docker swarm is still a thing.
- 21:16SPEAKER_00: Mesos is still a thing,
- 21:18SPEAKER_00: but yeah,
- 21:19like your people are most commonly using some kind of managed
- 21:23Kubernetes service.
- 21:25SPEAKER_00: Like, um,
- 21:26SPEAKER_00: anything on AWS or GKE, right?
- 21:30SPEAKER_00: Or like Azure has their own service too.
- 21:32SPEAKER_00: I'm pretty sure Oracle does.
- 21:34SPEAKER_00: Red Hat certainly does.
- 21:36SPEAKER_00: And then there are flavors of Kubernetes like VMware's Tanzu, right?
- 21:43And so given that this project is so successful,
- 21:47how does the funding work?
- 21:48SPEAKER_01: I'm going to assume that some of the contributors,
- 21:51SPEAKER_01: as you mentioned,
- 21:52are actually paid full time working at certain companies who
- 21:55have critical
- 21:56SPEAKER_01: infrastructure running on Kubernetes.
- 21:58And these companies figure,
- 21:59well,
- 21:59it's cheaper for us to pay a contributor to...
- 22:03SPEAKER_01: ensure that our use cases are met.
- 22:05SPEAKER_01: But for example,
- 22:06SPEAKER_01: in your case and some of the other contributors,
- 22:09SPEAKER_01: how does it make sense to spend a considerable amount of your time?
- 22:12We're talking about software engineers who are highly skilled
- 22:17spending here,
- 22:17SPEAKER_01: and there will be some goodwill,
- 22:19SPEAKER_01: but what are other ways that the project remains as sustainable as it is?
- 22:27SPEAKER_00: Unfortunately, for a lot of us, this is a hobby, right?
- 22:32SPEAKER_00: I enjoy it.
- 22:35SPEAKER_00: Many of my friends are other maintainers or other contributors.
- 22:39SPEAKER_00: Some of my closest friends are also maintainers.
- 22:43SPEAKER_00: I flew to New York just to hang out with two of them a couple weeks ago.
- 22:46SPEAKER_00: No reason.
- 22:47SPEAKER_00: Not work.
- 22:48SPEAKER_00: Just hanging out with them.
- 22:49SPEAKER_00: And that's not too terribly uncommon.
- 22:54SPEAKER_00: People just think it's fun.
- 22:56SPEAKER_00: Some people also do it as a career bump.
- 22:59This is something that the Kubernetes project doesn't really
- 23:01love to admit,
- 23:03SPEAKER_00: but we are a very,
- 23:04SPEAKER_00: very large and very,
- 23:05SPEAKER_00: very influential project.
- 23:08SPEAKER_00: And having it on your resume can be a career bump,
- 23:11especially for people who are fresh out of college or very
- 23:14early in their career,
- 23:15SPEAKER_00: which is why
- 23:16Shadowing on the Kubernetes release team is such a popular
- 23:19entry point for contributors.
- 23:21We get hundreds of applications for the Kubernetes release team
- 23:24every cycle,
- 23:25SPEAKER_00: and about half of them are students.
- 23:29SPEAKER_00: And that's pretty common, too.
- 23:30SPEAKER_00: They want the career experience.
- 23:33SPEAKER_01: That is encouraging to hear, by the way.
- 23:35SPEAKER_00: Yeah, it's a lot of students.
- 23:37SPEAKER_00: It is so many students.
- 23:39SPEAKER_00: And we do get students onto the team.
- 23:42SPEAKER_00: Obviously,
- 23:42SPEAKER_00: I can't overload the release team with people who have no experience,
- 23:46SPEAKER_00: but we try to fit a handful of them in every single cycle.
- 23:51SPEAKER_00: Which feels good.
- 23:52SPEAKER_00: It's a good entry point for people.
- 23:53So we get to watch them grow up through the project until
- 23:56ultimately they go get a
- 23:58SPEAKER_00: job and leave and we never hear from them again,
- 24:00which is fine and doesn't make us feel bad because we really
- 24:02have more contributors
- 24:04SPEAKER_00: on the release team side than we know what to do with.
- 24:06SPEAKER_00: We cannot have them all on the team.
- 24:10But as for people who are paid for it,
- 24:14that's usually cloud vendors,
- 24:16actually.
- 24:18The big clouds pay a lot of people just to be contributors or
- 24:24just to be maintainers,
- 24:25either because they need something done or they want the
- 24:28influence or because they
- 24:30SPEAKER_00: want the clout.
- 24:32Some people get hired by some company just because they have a
- 24:35maintainer title
- 24:36SPEAKER_00: within the project.
- 24:38SPEAKER_00: And that's it.
- 24:39SPEAKER_00: It's purely clout.
- 24:40SPEAKER_00: And I don't object to that either,
- 24:42as long as somebody's getting paid to do this instead of doing
- 24:45it for free.
- 24:46SPEAKER_00: But the CNCF doesn't pay us.
- 24:48SPEAKER_00: The Linux Foundation doesn't.
- 24:49SPEAKER_00: doesn't pay us.
- 24:51SPEAKER_00: The CNCF does pay our infrastructure costs.
- 24:53So we're not starting a GoFundMe or putting money out of our
- 24:57own pockets to pay for
- 24:58SPEAKER_00: our testing or whatever.
- 25:00SPEAKER_00: The CNCF pays that.
- 25:01SPEAKER_00: That's part of what you get when you donate a project to the CNCF.
- 25:05SPEAKER_00: They take on some of your infrastructure costs,
- 25:07SPEAKER_00: depending on where you are in the sandbox incubating graduated scale.
- 25:12SPEAKER_00: But yeah, most of us do this for fun.
- 25:16SPEAKER_00: Which is not the most healthy thing in the world.
- 25:19SPEAKER_00: And you have to set like really, really, really firm boundaries.
- 25:23SPEAKER_01: Well, yeah, there's that thing that comes into mind.
- 25:26And also there's this famous XKCD comic where there's this big
- 25:29pile of rocks and
- 25:30SPEAKER_01: there's this small thing which says someone's side project.
- 25:33SPEAKER_01: So given how critical Kubernetes is becoming...
- 25:37SPEAKER_01: Globally, I think it's a bit of a mixed feelings.
- 25:41SPEAKER_01: On one end,
- 25:42I think it is cool to hear that it sounds like it is a very
- 25:46independent project
- 25:47SPEAKER_01: that doesn't really have any one vendor going over it.
- 25:51SPEAKER_01: On the other, there is this downside of like, well, you know, like...
- 25:57SPEAKER_00: Yeah, it just makes feelings.
- 26:00It makes me wince for small projects,
- 26:03but everybody starts as a small project.
- 26:05However,
- 26:05Kubernetes is so large and so influential and we have so much momentum.
- 26:09SPEAKER_00: That XKCD comic is not going to become a problem.
- 26:13There is a queue of people waiting in the wings who would love
- 26:18to replace me.
- 26:19SPEAKER_00: And part of our,
- 26:20SPEAKER_00: as a project,
- 26:21our philosophy is that part of our job as maintainers is to be
- 26:25looking for somebody
- 26:27SPEAKER_00: to mentor into replacing us.
- 26:30SPEAKER_00: We have a lot of anti-burnout policies in place.
- 26:33um leading a release like being being the actual point person
- 26:37for a release the the
- 26:38person who ultimately reports reports to me is a very stressful
- 26:42very public
- 26:44miserable job to do it is 14 weeks of having to manage and 14
- 26:49weeks that's the
- 26:50release cycle that's the release cycles yeah like 14 to 16
- 26:53weeks it depends on when
- 26:54SPEAKER_00: it is in the year but 14 to 16 weeks is about how long it takes us
- 26:58And it's 14 weeks of directly managing an unruly group of like
- 27:0430 people who are
- 27:06trying to manage interactions with potentially hundreds of
- 27:10contributors between them.
- 27:12SPEAKER_00: And it sucks.
- 27:13SPEAKER_00: And by the end of it, you are so tired.
- 27:15So we don't allow you to be involved in the release cycle after
- 27:20you leave one.
- 27:21SPEAKER_00: You've got to take a cycle off.
- 27:24SPEAKER_00: Also, SIG release's charter dictates that we will delay a release.
- 27:29SPEAKER_00: We will push it back before we make our team work nights or weekends.
- 27:34We're never going to ask you to work more than you are
- 27:37comfortable working.
- 27:39SPEAKER_00: And we're very supportive of stepping back if you can't handle it.
- 27:43SPEAKER_00: It doesn't affect your place in the project.
- 27:45SPEAKER_00: You can come back the next cycle or whenever you're ready.
- 27:49SPEAKER_00: We're very encouraging of taking breaks.
- 27:52So we don't really like to allow the burnout to build up to a
- 27:56point where we might
- 27:57SPEAKER_00: topple over like that XKCD comic.
- 27:58SPEAKER_00: Yeah.
- 27:59SPEAKER_00: Um, we're always replacing each other.
- 28:01SPEAKER_01: So like eventually this part is, is just very encouraging to hear.
- 28:06SPEAKER_01: And this is something that I would,
- 28:08I would assume that a lot of commercial companies like a
- 28:11commercial setup would,
- 28:13SPEAKER_01: uh,
- 28:14let me just say hesitate in,
- 28:16in,
- 28:17in many cases again,
- 28:18because of that thing.
- 28:18SPEAKER_01: So,
- 28:19SPEAKER_01: so I guess maybe we're seeing two parts of it,
- 28:21SPEAKER_01: but this is just,
- 28:22SPEAKER_01: it's the first time I'm actually hearing for such a large,
- 28:26SPEAKER_01: such a critical project to actually have it in place,
- 28:28SPEAKER_01: which is just music to my ears.
- 28:30SPEAKER_00: We're unusually well-structured for an open source project.
- 28:34We're,
- 28:34we're unusually well-structured for like an actual product
- 28:38within a company.
- 28:39SPEAKER_00: Actually, we,
- 28:41SPEAKER_00: are very,
- 28:41very well organized by necessity because we're massive and we
- 28:45deal with so many
- 28:46SPEAKER_00: people coming in and out constantly.
- 28:48SPEAKER_00: We have no choice but to be super, super well organized.
- 28:52SPEAKER_01: So why do you think Kubernetes,
- 28:56SPEAKER_01: you've seen the story mostly from the inside and starting from the side,
- 29:00SPEAKER_01: why do you think Kubernetes is one so big?
- 29:02SPEAKER_01: Why has it become the de facto choice from any medium size,
- 29:07SPEAKER_01: sometimes even small size infrastructure,
- 29:09SPEAKER_01: by the way?
- 29:09SPEAKER_01: I've talked with Linear and they chose Kubernetes very early on.
- 29:13SPEAKER_01: Apparently,
- 29:15SPEAKER_01: they thought,
- 29:15SPEAKER_01: you know,
- 29:16SPEAKER_01: some people thought this would be like overkill,
- 29:18SPEAKER_01: but it actually turned out to be a great decision for them.
- 29:20SPEAKER_00: Yeah.
- 29:22SPEAKER_01: What do you think this project specifically won?
- 29:25SPEAKER_01: What did Kubernetes do so well?
- 29:27SPEAKER_00: I think we caught on early because of hype, right?
- 29:32Because of the Google name brand behind us and the association
- 29:37with Docker,
- 29:37SPEAKER_00: which was already very popular.
- 29:40It was a familiar company donating a project that relied on a
- 29:44tool many were
- 29:45SPEAKER_00: already familiar with.
- 29:46SPEAKER_00: And that got us initial, like,
- 29:49SPEAKER_00: hype cycle, right?
- 29:50But then I'm going to toot my own horn and say that the
- 29:54continued popularity of
- 29:55Kubernetes is at least in part due to our truly exceptional documentation.
- 30:01SPEAKER_00: If Kubernetes does something that you can touch as a user,
- 30:06SPEAKER_00: as a cluster admin,
- 30:07SPEAKER_00: we have documented it.
- 30:09Kubernetes uses something in the release cycle called a
- 30:12Kubernetes enhancement proposal,
- 30:14a KEP.
- 30:15SPEAKER_00: This was inspired by Python's PEPs, right?
- 30:18And one of the things we require for a KEP to be considered
- 30:21complete and thus
- 30:23includable in a particular release is that if it has a
- 30:26user-facing change,
- 30:28SPEAKER_00: at all.
- 30:28Even if it's just a feature flag,
- 30:31it must be documented or we do not allow it in the release.
- 30:34Today,
- 30:34as we're recording this,
- 30:36is actually the docs freeze for Kubernetes version 1.33.
- 30:40So today,
- 30:41a lot of camp owners will either merge documentation or I will
- 30:46revert their PRs.
- 30:48SPEAKER_01: Wow.
- 30:49SPEAKER_01: That sounds like tyranny.
- 30:52SPEAKER_01: Does it?
- 30:53SPEAKER_01: Does it?
- 30:54You're never left digging through Kubernetes code to figure out
- 30:57what this is?
- 30:59SPEAKER_01: It sounds amazing as a user and as a developer.
- 31:02SPEAKER_01: I'm cringing.
- 31:03SPEAKER_01: You know, as a dev, like you really just don't want.
- 31:06SPEAKER_01: There's so many excuses we make up for not writing documents.
- 31:09SPEAKER_01: A code will document itself.
- 31:11SPEAKER_01: If it's the documentation, it's not, we're rich and et cetera.
- 31:14SPEAKER_01: No, I'm really impressed.
- 31:16SPEAKER_00: Seriously.
- 31:17SPEAKER_00: Yeah, I know the devs hate it.
- 31:18SPEAKER_00: I know.
- 31:19SPEAKER_00: But our priority isn't making the devs happy.
- 31:24It's building a usable,
- 31:27sustainable project that people want to keep using.
- 31:31SPEAKER_00: That means we got to document that.
- 31:33SPEAKER_00: I hated writing docs when I was an engineer, too.
- 31:36SPEAKER_00: I did.
- 31:37SPEAKER_00: I've slung some truly horrendous code that was entirely undocumented.
- 31:42And I myself looking at it probably could not tell you what on
- 31:45earth it's doing.
- 31:47SPEAKER_00: So we can't have that in a project this large.
- 31:50SPEAKER_01: Yeah, and the problem is that this is complex, right?
- 31:53SPEAKER_01: So it sounds like you're managing to balance.
- 31:55Because what I understand is Kubernetes is just going to become
- 31:57more and more complex.
- 31:58SPEAKER_01: It does.
- 32:00SPEAKER_01: You can tell them more about it,
- 32:01SPEAKER_01: but there's going to be more edge cases,
- 32:03SPEAKER_01: more hardware,
- 32:03SPEAKER_01: more setup,
- 32:04SPEAKER_01: more exotic this and that.
- 32:07SPEAKER_01: But when you have proper documentation, at least that helps with it.
- 32:10SPEAKER_01: If you don't have it, there's no chance.
- 32:12SPEAKER_00: Yeah, there's absolutely no chance.
- 32:14SPEAKER_00: And so that has gotten us over the hump of Kubernetes is hard to use.
- 32:18SPEAKER_00: It is hard to use.
- 32:19SPEAKER_00: It's hard to learn, but it could be so much worse.
- 32:22SPEAKER_00: And the availability of good documentation is...
- 32:26SPEAKER_00: I give a lot of credit to that.
- 32:30SPEAKER_00: Also, GKE has really great tutorials for learning Kubernetes.
- 32:35SPEAKER_01: GKE is Google Kubernetes Engine, right?
- 32:37SPEAKER_01: It's their hosted solution?
- 32:38SPEAKER_00: Yeah, it's their hosted solution.
- 32:40And they absolutely have the most feature-rich
- 32:43Kubernetes-hosted option by virtue of having had.
- 32:47SPEAKER_00: several years of a head start on that.
- 32:51SPEAKER_00: But yeah, they're tutorials.
- 32:52They're just like how to learn Kubernetes are actually quite
- 32:55good for just dipping
- 32:57SPEAKER_00: your toes in the water and our own documentation,
- 33:02SPEAKER_00: our own quick start guides.
- 33:03SPEAKER_00: That's another benefit also of being an open source project.
- 33:07SPEAKER_00: Just like an open source project, the software is more secure.
- 33:09SPEAKER_00: Our documentation can be better.
- 33:11We have a small army of people contributing to it and improving
- 33:16our documentation.
- 33:17SPEAKER_00: on a constant basis.
- 33:19SPEAKER_00: So we don't really tend to slip.
- 33:23SPEAKER_01: I'm not sure if this applies,
- 33:24SPEAKER_01: correct me if I'm not,
- 33:25SPEAKER_01: but a lot of open source projects say like,
- 33:27SPEAKER_01: look,
- 33:28SPEAKER_01: if you want to start contributing and you're not sure just yet,
- 33:31SPEAKER_01: you can always just start with the documentation.
- 33:33SPEAKER_00: Yes.
- 33:34SPEAKER_00: It's an incredible entry point.
- 33:35SPEAKER_01: Which is a win-win.
- 33:36SPEAKER_00: Yeah.
- 33:37Docs are a pretty typical entry point for people who are
- 33:40nervous about contributing
- 33:41SPEAKER_00: to open source for the first time,
- 33:43SPEAKER_00: which is a fear I absolutely get.
- 33:44SPEAKER_00: I was terrified the first time I opened a PR in a Kubernetes repo.
- 33:50SPEAKER_00: It's nerve-wracking, especially if you're super early in your career.
- 33:53You know that you've got all of these people with way more
- 33:55experience than you
- 33:56SPEAKER_00: laser-focused on what you just did.
- 33:59SPEAKER_00: And did you apply a label incorrectly?
- 34:01SPEAKER_00: Are you going to get chewed out for that?
- 34:04SPEAKER_00: But yeah, docs are an easier entry point for that.
- 34:07SPEAKER_00: It feels like a little bit less pressure.
- 34:08And that's pretty common across open source projects,
- 34:11not just Kubernetes.
- 34:13The unique thing about Kubernetes and getting started is the
- 34:16release team.
- 34:17SPEAKER_00: We will let absolutely anybody apply to be on the release team.
- 34:23SPEAKER_00: And it's...
- 34:24SPEAKER_00: 20, 25 spots every cycle, three times a year.
- 34:29SPEAKER_00: So it's pretty competitive, but we will let absolutely anybody apply.
- 34:35SPEAKER_00: You don't have to have contributed to Kubernetes at all before.
- 34:39Every cycle,
- 34:39I've got to add two or three people to the org because they've never...
- 34:43SPEAKER_01: But just to emphasize, do I understand correctly?
- 34:48SPEAKER_01: For example,
- 34:49we recently had an episode with Linux where in order for you to
- 34:54lead a release,
- 34:56SPEAKER_01: you will need to put in many,
- 34:57SPEAKER_01: many years outstanding contributions and so on.
- 35:00SPEAKER_01: And there's no guarantee of doing so.
- 35:01SPEAKER_01: Correct.
- 35:02But for other open source projects,
- 35:03it is also common to have this kind of tenure-based thing.
- 35:07SPEAKER_01: Because what you've said, I've not heard it.
- 35:09And any other projects say,
- 35:11like,
- 35:11we will actually open up the spots and you can apply.
- 35:14And taking up people with little tone of experience sounds like
- 35:19an approach I've
- 35:20SPEAKER_01: just not heard before.
- 35:22The application process we have and the way the release team
- 35:25works is unusual for
- 35:27SPEAKER_00: an open source project.
- 35:29SPEAKER_00: No, tell me more.
- 35:29SPEAKER_00: So we talk about that a lot.
- 35:32SPEAKER_00: I will absolutely talk about the structure of the release team.
- 35:34SPEAKER_00: So the Kubernetes release team has two halves.
- 35:37SPEAKER_00: There's the release team, which I manage, and release engineering.
- 35:42SPEAKER_00: Release engineering is doing the actual cutting of the releases.
- 35:47But the part of the team I manage is made up of several sub
- 35:51teams and a release lead.
- 35:54The sub teams are communications,
- 35:56which is responsible for handling things like feature blogs.
- 35:59So that's working with cap owners or sig leads to make sure
- 36:04that a particularly
- 36:04interesting feature that will make it into that release has a
- 36:08blog that goes out on
- 36:10SPEAKER_00: the Kubernetes blog on a certain schedule.
- 36:12SPEAKER_00: Oh, nice.
- 36:13SPEAKER_00: Yeah, it's very cool.
- 36:14SPEAKER_00: We usually have like between eight to 12 every cycle that end up.
- 36:18SPEAKER_00: And release comms does not write that blog.
- 36:20SPEAKER_00: They're just responsible for managing that it happens.
- 36:24They're also responsible for managing interactions with the
- 36:27Cloud Native Computing
- 36:28Foundation to schedule the release webinar and with the media
- 36:32to handle the webinar.
- 36:34SPEAKER_00: Yeah, we have a release webinar.
- 36:36We also have to manage the media to deal with press embargoes
- 36:40and schedule media
- 36:41SPEAKER_00: interviews for the release lead and anybody else.
- 36:44SPEAKER_01: This sounds like a publicly traded company doing its earnings call.
- 36:48SPEAKER_01: It does, doesn't it?
- 36:48SPEAKER_01: Yeah.
- 36:50SPEAKER_00: We also have release docs.
- 36:51SPEAKER_01: I'm so impressed.
- 36:52SPEAKER_00: Yeah, it's a lot.
- 36:54Release docs manages making sure that every one of those caps
- 36:58that has user facing
- 36:59SPEAKER_00: changes has documentation by its deadline.
- 37:03SPEAKER_00: Enhancements.
- 37:04Manages all of those caps and makes sure that they have met all
- 37:09of the requirements,
- 37:10SPEAKER_00: the checkboxes in the cap,
- 37:11SPEAKER_00: which is like,
- 37:12SPEAKER_00: has the lead opted in?
- 37:14SPEAKER_00: Is your code complete?
- 37:15SPEAKER_00: Is it tested?
- 37:17SPEAKER_00: Did you get a production readiness review?
- 37:19SPEAKER_00: That kind of thing.
- 37:20SPEAKER_00: And release signal,
- 37:23which is responsible for watching our CI signal boards and
- 37:28chasing down SIGs and
- 37:29cap owners to squash bugs to make sure that we don't have a
- 37:32master blocking test
- 37:33SPEAKER_00: failing right before we cut beta 2.
- 37:37They're also responsible for the go-no-go signal on whether or
- 37:40not we can cut a release.
- 37:41SPEAKER_00: And this requires...
- 37:45SPEAKER_00: 20 to 30 people every single cycle.
- 37:48SPEAKER_00: Five of them are leads and are selected.
- 37:52Then the rest are shadows that go through the application
- 37:56process and get pulled in.
- 37:58SPEAKER_00: That is unusual.
- 37:59SPEAKER_00: Most open source projects do not operate that way.
- 38:03SPEAKER_00: Most open source projects, I think, don't need to.
- 38:05That's a consequence of the fact that the project is so large
- 38:08and we have so many contributors.
- 38:10We couldn't manage this with a consistent group of like five to
- 38:1410 people without
- 38:15SPEAKER_00: catastrophically burning them all out.
- 38:18SPEAKER_00: We just simply couldn't do it.
- 38:21SPEAKER_00: And even with the rotating cast,
- 38:23the release team can be a burnout factory because it's so much
- 38:27people management.
- 38:28SPEAKER_00: It's so much project management.
- 38:29It's so much arguing with people and juggling like maybe
- 38:32conflicting priorities between teams.
- 38:35SPEAKER_00: So we don't like people to stay on the release team for too long.
- 38:39We want to see you move up through the ranks a little,
- 38:41maybe lead a sub team and then leave.
- 38:43SPEAKER_00: Find somewhere else in the project to go.
- 38:45SPEAKER_00: Because if you stick around, you will burn out.
- 38:48SPEAKER_00: I did not, obviously, which is why they gave me the bigger hat.
- 38:53It is very interesting for me to reflect on how much project
- 38:57management and just
- 38:57SPEAKER_01: how much work management is happening within Kubernetes.
- 39:00Whereas when we did the deep dive with the Linux kernel,
- 39:04it was a bit of the opposite.
- 39:05SPEAKER_01: But again,
- 39:05SPEAKER_01: it was pretty clear there that in the case of Linux kernel,
- 39:09a lot of this work that you're mentioning is happening at the
- 39:11actual releases.
- 39:12SPEAKER_01: Let's say, you know, like Red Hat and whoever picks it up.
- 39:16But I think it's just a good reminder of this work for any
- 39:20large project.
- 39:21SPEAKER_01: It's there.
- 39:21SPEAKER_01: You could shift it here and there, and you can play with it.
- 39:26SPEAKER_00: It has to happen.
- 39:29No project with more than two people contributing to it is
- 39:33getting by without some
- 39:34SPEAKER_00: kind of project management work.
- 39:36SPEAKER_00: It's just that we don't have the title project manager.
- 39:38SPEAKER_00: All maintainers are project managers to some degree.
- 39:42We all have some administrative or governance policy position
- 39:50within the project.
- 39:51SPEAKER_00: It is project management.
- 39:52SPEAKER_00: If you are a maintainer, we just don't call them that.
- 39:56SPEAKER_00: Yeah.
- 39:56SPEAKER_00: So, like, the Linux kernel has them, too.
- 39:58SPEAKER_00: Like, somebody is doing that work.
- 40:00SPEAKER_00: They're just not.
- 40:01SPEAKER_01: They don't like that word, I think.
- 40:04SPEAKER_01: That was my sense.
- 40:05SPEAKER_00: Yeah, they don't.
- 40:06I think a lot of engineers are resistant to doing work that
- 40:12they don't consider
- 40:13SPEAKER_00: real engineering.
- 40:14SPEAKER_00: Yeah.
- 40:14SPEAKER_00: You know, get over it.
- 40:17SPEAKER_01: We're kind of seeing this,
- 40:18SPEAKER_01: by the way,
- 40:18SPEAKER_01: like now,
- 40:20SPEAKER_01: you know,
- 40:20SPEAKER_01: like software engineers,
- 40:21SPEAKER_01: like we don't like to say that we do product work,
- 40:23SPEAKER_01: but now product engineer is becoming a thing,
- 40:25SPEAKER_01: which is a software engineer who will talk with customers as well.
- 40:29SPEAKER_01: And who and, you know, same thing.
- 40:31SPEAKER_01: I think there used to be a time,
- 40:32SPEAKER_01: not these days,
- 40:33SPEAKER_01: but maybe 10 or 15 years ago,
- 40:35SPEAKER_01: testing was we had dedicated,
- 40:37SPEAKER_01: you know,
- 40:38SPEAKER_01: testers or whoever and then.
- 40:40SPEAKER_00: Yeah.
- 40:42SPEAKER_01: engineers wouldn't or would object to do testing.
- 40:44SPEAKER_01: But then we would write unit tests and then integration and automate.
- 40:48SPEAKER_01: And they're dispersed.
- 40:49SPEAKER_01: So I think there's clearly a play with words.
- 40:51SPEAKER_01: And what I'm personally seeing is a competent tech professional,
- 40:57SPEAKER_01: may that be a software engineer or someone who is elsewhere,
- 41:00SPEAKER_01: will just take on more and more responsibilities.
- 41:02SPEAKER_01: A great product manager these days will know how or will understand code.
- 41:06SPEAKER_01: They might not code by choice.
- 41:08SPEAKER_01: But they can read it.
- 41:10SPEAKER_01: Same thing,
- 41:10SPEAKER_01: but even just talking with you,
- 41:12SPEAKER_01: you've been a software engineer,
- 41:13SPEAKER_01: you've actually built critical infrastructure,
- 41:15SPEAKER_01: and now you're doing something where we're doing less of that.
- 41:19SPEAKER_00: Yeah, I haven't written a line of code in months.
- 41:22SPEAKER_00: I don't have a reason to.
- 41:24you could if you wanted to or if you needed to yeah like for
- 41:28fun sometimes like
- 41:29i'll do some hobby projects at home or whatever but i don't
- 41:32have a reason to write
- 41:32code i used to be an engineer i can read and understand it just
- 41:35fine i can write it
- 41:36if i need to um but it's not it's not part of my job anymore
- 41:40and like we you see
- 41:42this within engineering at real companies right the more senior
- 41:45your engineering
- 41:46title is the less code writing you're actually doing a
- 41:49principal engineer should
- 41:50SPEAKER_00: not have their
- 41:51fingers in the code nearly as much as somebody who's like an SDE2,
- 41:57right?
- 41:58SPEAKER_00: Like they don't.
- 41:59They're making architectural decisions about the product or
- 42:03they're mentoring juniors.
- 42:06SPEAKER_00: So like same deal within an open source project.
- 42:09SPEAKER_00: I'm the open source project equivalent of a principal engineer.
- 42:13SPEAKER_00: I don't write code anymore.
- 42:15SPEAKER_00: I make decisions about how we get this thing out the door.
- 42:17SPEAKER_01: This episode is brought to you by Cortex.io.
- 42:20SPEAKER_01: Still tracking your services and production readiness in a spreadsheet.
- 42:23SPEAKER_01: Real Microservices is named after TV show characters.
- 42:26SPEAKER_01: You aren't alone.
- 42:27SPEAKER_01: Being woken up at 3 a.m.
- 42:29for an incident and trying to figure out who owns what service,
- 42:31that's no fun.
- 42:33SPEAKER_01: Cortex is the internal developer portal that solves service ownership and
- 42:36SPEAKER_01: accelerates the path to engineering excellence.
- 42:39SPEAKER_01: Within minutes,
- 42:40SPEAKER_01: determine who owns each service with Cortex's AI service ownership model,
- 42:44SPEAKER_01: even across thousands of repositories.
- 42:46SPEAKER_01: Clear ownership means faster migrations,
- 42:48SPEAKER_01: quicker resolutions to critical issues like Lock4J,
- 42:51SPEAKER_01: and fewer add-here pings during incidents.
- 42:54SPEAKER_01: Cortex is trusted by leading engineering organizations like Affirm,
- 42:57SPEAKER_01: TripAdvisor,
- 42:58SPEAKER_01: Grammarly,
- 42:59SPEAKER_01: and SoFi.
- 43:00Solve service ownership and unlock your team's full potential
- 43:03with Cortex.
- 43:04SPEAKER_01: Visit cortex.io slash pragmatic to learn more.
- 43:08SPEAKER_01: That is C-O-R-T-X dot I-O slash pragmatic.
- 43:12SPEAKER_01: Yeah,
- 43:12SPEAKER_01: we used to have a joke internally within,
- 43:16SPEAKER_01: I think,
- 43:16SPEAKER_01: my team or my broader team back when I was a viewer.
- 43:19SPEAKER_01: It just went around.
- 43:20SPEAKER_01: What's the difference between a junior or an entry-level engineer,
- 43:24SPEAKER_01: a senior engineer,
- 43:26SPEAKER_01: and a staff engineer?
- 43:27SPEAKER_01: It's like you get a code review, entry-level engineer comes in,
- 43:30SPEAKER_01: And says, oh, you know, the order is not alphabetized as per our rules.
- 43:35SPEAKER_01: Like, we should change the order of the variables.
- 43:38SPEAKER_01: Senior engineering goes in and on the same call line leaves the comment,
- 43:42SPEAKER_01: actually,
- 43:43we should probably move this out into its own class because it
- 43:47should be encapsulated.
- 43:48SPEAKER_01: The staff engineering comes in.
- 43:50SPEAKER_01: Why are we even doing this?
- 43:52SPEAKER_01: There's a service that does exactly this thing.
- 43:54SPEAKER_01: You should be using that one.
- 43:55SPEAKER_00: And,
- 43:56SPEAKER_01: you know,
- 43:58SPEAKER_01: the thing that goes back to that,
- 43:59SPEAKER_01: the earlier career,
- 44:01SPEAKER_01: you should focus on the code for sure.
- 44:04SPEAKER_01: But after a while, you need to see the bigger pictures.
- 44:06And I often saw some of the most impactful engineers on my team
- 44:10in a given,
- 44:11SPEAKER_01: let's say,
- 44:12SPEAKER_01: quarter,
- 44:12SPEAKER_01: if I had to use a business value,
- 44:13SPEAKER_01: they did not by writing code,
- 44:15sometimes by deleting code or sometimes pointing out the work
- 44:17we should just avoid by,
- 44:19SPEAKER_01: I don't know,
- 44:20SPEAKER_01: like merging with something or just saying no,
- 44:23SPEAKER_01: pushing back on product,
- 44:24SPEAKER_01: et cetera,
- 44:24SPEAKER_01: et cetera,
- 44:24SPEAKER_01: et cetera.
- 44:25SPEAKER_00: Yeah, no one wants to say no is a skill, for sure.
- 44:28SPEAKER_01: Yeah, but it's a baseline, right?
- 44:29SPEAKER_01: You need to know that, but there's a lot more afterwards.
- 44:33SPEAKER_01: So in Kubernetes,
- 44:36SPEAKER_01: if I'm a software engineer or contributor who has an idea,
- 44:41SPEAKER_01: is contributing some code,
- 44:42SPEAKER_01: what does that look in terms of release?
- 44:44SPEAKER_01: How will it eventually get released?
- 44:47SPEAKER_01: That's one part of my question.
- 44:48SPEAKER_01: And the other part is...
- 44:51Does Kubernetes work in a similar way to some other open source
- 44:54project where you
- 44:54SPEAKER_01: kind of open up and you depend on what contributions are?
- 44:57SPEAKER_01: Or do you have a roadmap saying,
- 44:59SPEAKER_01: hey,
- 44:59we'd like to encourage people to build this functionality or
- 45:03solve for this problem?
- 45:05SPEAKER_00: Yeah,
- 45:06SPEAKER_00: so Kubernetes,
- 45:06SPEAKER_00: like I mentioned earlier,
- 45:07SPEAKER_00: has a process called a KEP,
- 45:11SPEAKER_00: Kubernetes Enhancement Proposal.
- 45:12And if there is a feature that you want within Kubernetes,
- 45:16you go open a KEP.
- 45:19It's just an issue in the Kubernetes enhancements proposal or
- 45:23enhancements repo.
- 45:24SPEAKER_00: And there's a template for it.
- 45:26You go open your cap and then a discussion will ensue with
- 45:30whatever SIG owns that.
- 45:31SPEAKER_00: So if it is something within, I don't know.
- 45:37SPEAKER_00: If it's a storage thing,
- 45:39SIG Storage will own that cap and they will come way in and
- 45:43we'll have a discussion
- 45:44SPEAKER_00: about whether or not this is actually useful,
- 45:47SPEAKER_00: whether or not this is viable,
- 45:49SPEAKER_00: whether or not we have the resources to try to get this done right now,
- 45:53which is going to depend on other contributors looking at your
- 45:55proposal and going,
- 45:56SPEAKER_00: oh,
- 45:56SPEAKER_00: yeah,
- 45:57SPEAKER_00: I would like to work on that.
- 45:58SPEAKER_01: And when you say discussion, is it email?
- 46:01SPEAKER_01: Is it async?
- 46:02SPEAKER_01: Is it actually like video call?
- 46:05SPEAKER_00: So because we're an open source project,
- 46:07we prefer to do everything in public in a place where everybody
- 46:10can see it.
- 46:11So that discussion will happen on the GitHub issue or in Slack
- 46:15in a public channel.
- 46:17We very much discourage things from happening behind closed
- 46:20doors unless it's very sensitive,
- 46:22SPEAKER_00: like extremely sensitive in a security type of way,
- 46:26SPEAKER_00: or it could negatively impact somebody's career.
- 46:29SPEAKER_00: So code of conduct stuff is always handled behind closed doors.
- 46:33SPEAKER_00: But discussions about features, that is all very public.
- 46:36SPEAKER_00: GitHub issue or the Slack channel for, for instance, stake storage.
- 46:42SPEAKER_00: If the decision is, yeah, we would like to do this, then work begins.
- 46:49SPEAKER_00: your SIG lead will need to opt in.
- 46:52SPEAKER_00: It's just adding a label,
- 46:54SPEAKER_00: SIG lead opt in to the KEP,
- 46:56SPEAKER_00: and that tracks it for inclusion in a release,
- 46:59SPEAKER_00: at which point you have a whole bunch of deadlines that you have to hit.
- 47:04SPEAKER_00: Code freeze is the big one, obviously.
- 47:06SPEAKER_00: That's, is your code in?
- 47:09Then if it needs documentation or whatever,
- 47:13there's documentation freeze,
- 47:14there's test freeze.
- 47:16SPEAKER_00: These deadlines all exist across the span of 14 weeks.
- 47:20And if you hit all of those marks,
- 47:22your feature is included in the release as an alpha at first.
- 47:27SPEAKER_00: We do allow iterative stages.
- 47:29So you don't have to get the whole thing MVP out the door with
- 47:34your first alpha.
- 47:35SPEAKER_00: You can have an alpha too.
- 47:37Alpha features are off by default,
- 47:39but can be turned on with a feature flag.
- 47:42SPEAKER_00: Once you meet certain requirements to graduate your feature to beta,
- 47:46like you're expecting minimal architectural changes to the way
- 47:49it functions and
- 47:50SPEAKER_00: interacts with the rest of Kubernetes,
- 47:52SPEAKER_00: we'll graduate you to beta.
- 47:54SPEAKER_00: And you are on by default, but can be turned off with a feature flag.
- 48:00Once it's very stable,
- 48:01very usable,
- 48:02and you feel like you're ready to go GA,
- 48:05we graduate to GA.
- 48:06SPEAKER_01: General availability, right?
- 48:07Yeah,
- 48:08we move it to GA in the next release,
- 48:10and it is on by default and cannot be disabled.
- 48:14SPEAKER_01: And then by that time, feature flag is removed, right?
- 48:16SPEAKER_00: Yeah, there's no feature flag at that point.
- 48:19At any given point in time,
- 48:20roughly how many feature flags does Kubernetes have?
- 48:23SPEAKER_01: Is it going to be in the hundreds or thousands?
- 48:26SPEAKER_00: Yeah.
- 48:28SPEAKER_00: At minimum, dozens.
- 48:29SPEAKER_00: I can go look.
- 48:31Let me share my screen and I will show you all of the feature
- 48:34gates we have.
- 48:34SPEAKER_01: I love it.
- 48:36SPEAKER_01: This is what I love about open source.
- 48:38SPEAKER_01: You couldn't do this with commercial closed software.
- 48:42SPEAKER_00: No, not at all.
- 48:44SPEAKER_00: So all of our feature gates are documented.
- 48:45This is usually all the documentation that an alpha requires
- 48:49because it's just like
- 48:50SPEAKER_00: turning a thing off or on.
- 48:52SPEAKER_00: Um, uh, you can, you can see here what the default is.
- 48:56SPEAKER_00: So whether it's functional,
- 48:57SPEAKER_00: whether it's alpha or beta,
- 48:59SPEAKER_00: uh,
- 48:59SPEAKER_00: when it was introduced and,
- 49:01SPEAKER_00: uh,
- 49:02SPEAKER_00: until when,
- 49:04SPEAKER_00: um,
- 49:04SPEAKER_00: some of these are,
- 49:05SPEAKER_00: you know,
- 49:05SPEAKER_00: deprecated and will be removed in the future.
- 49:08SPEAKER_00: Some of them, uh, haven't been graduated since then, but there are, uh,
- 49:14SPEAKER_00: Uh, quite a lot.
- 49:16SPEAKER_00: It doesn't look like hundreds, but it looks like several dozens.
- 49:20SPEAKER_01: It looks, wow.
- 49:22SPEAKER_01: And so those are all features that are,
- 49:25SPEAKER_01: that are big enough to eventually,
- 49:28SPEAKER_01: some of them will graduate.
- 49:29SPEAKER_01: Uh, hopefully most of them will graduate eventually.
- 49:32SPEAKER_00: Yep.
- 49:33And these are all graduated or deprecated and will be removed
- 49:36at some point.
- 49:38SPEAKER_00: Um,
- 49:39SPEAKER_00: Yeah, so it's quite a lot.
- 49:41SPEAKER_00: We talk about what the feature stages mean here.
- 49:44SPEAKER_00: Really, every aspect of this project is so well documented.
- 49:48Even the way the release team runs,
- 49:50the way the project is governed,
- 49:52it's all documented.
- 49:53SPEAKER_00: We don't keep anything as tribal knowledge.
- 49:59SPEAKER_00: We write everything down so that there's no arguing about it.
- 50:03SPEAKER_00: But yeah, there's a ton of them.
- 50:06SPEAKER_01: Also,
- 50:07SPEAKER_01: you documenting this much,
- 50:08it just gives me the idea that if anyone wants to get a bit of
- 50:13a cheat of how a
- 50:16SPEAKER_01: well-run project this size runs for further inspiration,
- 50:20SPEAKER_01: you can just check it out.
- 50:21SPEAKER_01: You can rip off the ideas that make sense.
- 50:24And also you can adjust it for your size or for,
- 50:28again,
- 50:28you can experiment,
- 50:29right?
- 50:29SPEAKER_01: I feel you always want to experiment,
- 50:30SPEAKER_01: but getting inspiration of something that works is a good starting point.
- 50:33SPEAKER_00: Yeah, please do.
- 50:34SPEAKER_00: I mean,
- 50:34SPEAKER_00: and just like,
- 50:35SPEAKER_00: you know,
- 50:35SPEAKER_00: not all products,
- 50:37SPEAKER_00: not all applications need to run on Kubernetes at first.
- 50:40SPEAKER_00: That can very much be overkill from an infrastructure standpoint.
- 50:45Not all open source projects need to be run like Kubernetes to
- 50:48begin with.
- 50:49There are some things that are just good practice that you
- 50:51should ingrain from the
- 50:52SPEAKER_00: very beginning.
- 50:53SPEAKER_00: If it's a user-facing change, it needs documentation.
- 50:56SPEAKER_00: But you don't need a structured release team.
- 50:59the way we have it for your four-person open source project
- 51:04that is releasing one
- 51:07SPEAKER_00: minor update a year.
- 51:09SPEAKER_00: That's unnecessary.
- 51:10SPEAKER_00: And you've got a couple dozen users.
- 51:12But for something the size of Kubernetes or close to the size
- 51:15of Kubernetes,
- 51:15SPEAKER_00: yeah,
- 51:16SPEAKER_00: that's super useful.
- 51:18SPEAKER_00: Rip us off.
- 51:19SPEAKER_00: Absolutely rip us off.
- 51:19SPEAKER_00: That's part of why we document it all.
- 51:23SPEAKER_01: Exactly.
- 51:23SPEAKER_01: This is beautiful, like having this win.
- 51:26SPEAKER_01: And also you don't really need to explain it again and again.
- 51:28SPEAKER_00: Correct.
- 51:29SPEAKER_00: We can just point people at the docs.
- 51:30SPEAKER_00: Yeah.
- 51:31The way every role on the release team has to be run is
- 51:34exhaustively documented.
- 51:35So every single role has a handbook that goes week by week and
- 51:39tells you what to do.
- 51:41SPEAKER_00: which is part of why our releases are so smooth.
- 51:44If something goes wrong,
- 51:45probably it's documented and we know how to solve it.
- 51:51SPEAKER_00: Of course,
- 51:51SPEAKER_00: every release,
- 51:51SPEAKER_00: we get something new and exciting that goes wrong to document,
- 51:55SPEAKER_00: but that's happening less and less over time as we run out of edge cases.
- 52:00SPEAKER_00: So...
- 52:01SPEAKER_01: One thing I'd like to ask you,
- 52:05SPEAKER_01: because I'm really interested on how I was going,
- 52:08SPEAKER_01: how do you think the Gen.AI tools,
- 52:10SPEAKER_01: LLMs that more and more engineers are using to write code,
- 52:14SPEAKER_01: help them write code,
- 52:16SPEAKER_01: will impact how...
- 52:18SPEAKER_01: Kubernetes is developed.
- 52:20SPEAKER_01: Because it's so extensively documented on one end,
- 52:22SPEAKER_01: I'm sure these tools can ingest a lot of things.
- 52:26SPEAKER_01: I wonder if they could be useful.
- 52:28SPEAKER_01: Are you seeing them being useful in,
- 52:31SPEAKER_01: let's say,
- 52:32using features or for the release team to build your own tools
- 52:35to do some of your
- 52:36SPEAKER_01: work easier?
- 52:36SPEAKER_01: Okay,
- 52:38SPEAKER_00: so my personal opinion,
- 52:40SPEAKER_00: I'm going to stress the word personal there,
- 52:43SPEAKER_00: is that the overwhelming majority of Gen.ai tools are a scam.
- 52:48SPEAKER_00: They are a scam.
- 52:50They are designed to filch money out of VCs or the public or
- 52:55whoever else.
- 52:56SPEAKER_01: The people who fund the VCs, the liquidity partner or LPs.
- 53:01SPEAKER_01: Yeah.
- 53:01SPEAKER_00: The investors.
- 53:02SPEAKER_00: I think most of them are a scam.
- 53:04SPEAKER_00: I think a very small minority of them are genuinely useful.
- 53:08SPEAKER_00: And the rest are just, it's a nothing burger.
- 53:11SPEAKER_00: Yeah.
- 53:13As a maintainer within SIG release,
- 53:17we have no use for generative AI or LLM tools.
- 53:21SPEAKER_00: Most of the issues we are dealing with are people problems.
- 53:24SPEAKER_00: Gen AI and LLMs are not going to resolve that.
- 53:28SPEAKER_00: We're people managers.
- 53:29SPEAKER_00: That's what we're doing.
- 53:31SPEAKER_00: So generative AI, not useful there.
- 53:34SPEAKER_00: With my SIG docs hat on,
- 53:37we actually explicitly have a policy of you are not allowed to
- 53:40use tools like that.
- 53:41SPEAKER_00: Um,
- 53:42SPEAKER_00: we caught somebody submitting a blog that had been written with some,
- 53:46some kind of chat GPT tooling and we pulled it and told them
- 53:50not to do that again.
- 53:51SPEAKER_00: Uh,
- 53:51SPEAKER_00: we got a drive by PR from a paid product that claimed to simplify,
- 53:58SPEAKER_00: um,
- 53:59SPEAKER_00: writing documentation,
- 54:00SPEAKER_00: maintaining documentation and
- 54:03SPEAKER_00: handling things like style guide compliance.
- 54:05SPEAKER_00: Kubernetes does have a documentation style guide.
- 54:08SPEAKER_00: We got a drive-by PR from them that stipulated,
- 54:11SPEAKER_00: hey,
- 54:11SPEAKER_00: if you accept this,
- 54:13we grant you a free license for this tool as long as we can use
- 54:16your logo.
- 54:18SPEAKER_00: But here's the thing, it didn't work.
- 54:21It was making changes to a bunch of generated files that a
- 54:23human should never touch.
- 54:25SPEAKER_00: And it wasn't actually enforcing style guide compliance.
- 54:29SPEAKER_00: It made a bunch of mistakes.
- 54:31SPEAKER_00: So even, even when the tool sounds useful,
- 54:36um it it is often not like it doesn't actually do what it says
- 54:39it's doing on the
- 54:40tin and also drive by pr um in exchange for a logo on that
- 54:46doesn't seem right that
- 54:48is that's really poor behavior if there if you own a product
- 54:50and you're listening
- 54:51to this do not do that please we hate it so much because it
- 54:55creates more work for
- 54:56us because we have to have a discussion as leadership about
- 54:58what we're going to do
- 54:59SPEAKER_00: with that like you caused three meetings please don't do that to me
- 55:04However,
- 55:05where I do want to see it is in things that are just toil for us.
- 55:11SPEAKER_00: So things like application of GitHub labels on issues or PRs.
- 55:16SPEAKER_00: I would like something to automatically, if the wrong language works,
- 55:21SPEAKER_00: label gets added to a PR,
- 55:23I would like a tool that removes that label and applies the
- 55:26correct linguistic
- 55:27SPEAKER_00: label or the correct area label,
- 55:30SPEAKER_00: or it probably can't make assumptions about priority.
- 55:34SPEAKER_00: But things like handling labeling,
- 55:36that's really annoying work that we have to do on just about
- 55:41every PR if a new
- 55:43SPEAKER_00: contributor doesn't understand how our labels work.
- 55:46They may not apply any of them,
- 55:47and somebody like me has to go in and do it.
- 55:50So tooling like that would be useful,
- 55:52but we haven't found somebody offering that to us.
- 55:59SPEAKER_01: Yeah,
- 56:00SPEAKER_01: just to add another perspective on the scam part,
- 56:04SPEAKER_01: I understand where you're coming from,
- 56:05SPEAKER_01: by the way,
- 56:05SPEAKER_01: in terms of it is overhyped.
- 56:07I think it's overhyped in so many ways,
- 56:09and I'm a little frustrated that we're
- 56:11We're talking so much about what it could do one day instead of
- 56:14what it is happening.
- 56:15SPEAKER_01: I'm very much focused on how we're using it today.
- 56:17An interesting input I got from John Osterhout,
- 56:20the author of Philosophy of Software Design.
- 56:22SPEAKER_01: He's a professor at Stanford.
- 56:24SPEAKER_01: And he is actually contributing to the Linux kernel.
- 56:27SPEAKER_01: He's implementing a protocol that one of his PhD students came up with.
- 56:32And he told me,
- 56:33I asked him if he uses Gen.AI much,
- 56:35and he said he doesn't accept...
- 56:38he said it was really helpful for him to start contributing to
- 56:42Linux because he
- 56:43SPEAKER_01: said it's so under-documented.
- 56:45His criticism was that there's so little documentation that he
- 56:48actually turned to
- 56:49SPEAKER_01: ChatGPT to try to make sense of it,
- 56:50SPEAKER_01: and it helped him.
- 56:51SPEAKER_01: And his takeaway was...
- 56:54SPEAKER_01: He actually said,
- 56:55SPEAKER_01: I don't really want to popularize this,
- 56:57but I wish they would have added some more comments because
- 57:00then I could have done
- 57:01SPEAKER_01: it without the tool.
- 57:03SPEAKER_01: So I'm actually getting the sense of Kubernetes is very well documented,
- 57:06SPEAKER_01: which will obviously help people who are using these tools to learn.
- 57:12SPEAKER_01: I mean, you can probably just go to the source, to be fair.
- 57:14SPEAKER_00: You can, but I totally get using something like ChatGPT to explain...
- 57:20SPEAKER_00: something complex to you.
- 57:22SPEAKER_00: That is a good use of an LLM to me.
- 57:26SPEAKER_01: Yeah.
- 57:26SPEAKER_00: It's one of the most widespread uses with devs.
- 57:29SPEAKER_00: No, that's great.
- 57:31I don't think you should be using it to generate a blog article
- 57:33or generate the documentation.
- 57:35SPEAKER_00: You certainly shouldn't be using it to translate your docs.
- 57:38The Kubernetes documentation is localized into a couple dozen
- 57:41different languages.
- 57:42SPEAKER_00: And that's all done by humans, right?
- 57:45SPEAKER_00: So I do not think that you should be using generative AI to do that.
- 57:49But using it to explain a complex topic or like look at some
- 57:53code and give you an
- 57:54SPEAKER_00: idea of where it's going,
- 57:56SPEAKER_00: like what it does,
- 57:57SPEAKER_00: that's useful.
- 57:58SPEAKER_00: Like that's a great way to use generative AI to me.
- 58:01SPEAKER_01: when do you think Kubernetes is a great choice to use?
- 58:04SPEAKER_01: And when do you think it can actually be an overkill?
- 58:07SPEAKER_01: I get this a lot where especially small startups are thinking,
- 58:11should we start with Kubernetes or will it just be such an
- 58:14infrastructure overkill
- 58:15SPEAKER_01: that we shouldn't use it?
- 58:16So where would you draw that line or how do you see teams
- 58:20making this decision?
- 58:23SPEAKER_00: I would say that you should think about
- 58:27how quickly do you think you're going to need to scale rapidly,
- 58:31like really rapidly?
- 58:34SPEAKER_00: If you think that you're going to need to do that pretty abruptly,
- 58:37then I would use Kubernetes earlier because migrating over to
- 58:43it can be a pain.
- 58:45SPEAKER_00: What you need to really think about is not so much the
- 58:50SPEAKER_00: Is Kubernetes itself as an infrastructure tool overkill?
- 58:53SPEAKER_00: It's can you afford the people you need to manage it correctly?
- 58:59SPEAKER_00: A mismanaged Kubernetes cluster is a very dangerous thing.
- 59:03SPEAKER_00: Kubernetes is not secure by default.
- 59:05SPEAKER_00: You do require an expert.
- 59:08So my best piece of advice for running Kubernetes early is do
- 59:13not roll your own cluster.
- 59:15SPEAKER_00: Don't do that.
- 59:16SPEAKER_00: Do not do that.
- 59:18Use some kind of managed Kubernetes service that handles a lot
- 59:21of the work for you.
- 59:22And then hire an SRE with experience with GKE or AKS or
- 59:29whatever tooling you're using.
- 59:31SPEAKER_00: But just don't roll your own cluster.
- 59:33SPEAKER_00: Kubernetes is easier to use than it was before.
- 59:36SPEAKER_00: I don't think it's as much easier.
- 59:40overkill early as it used to be like obviously obviously if
- 59:44you're just running a
- 59:45blog or something putting that on kubernetes is ridiculous my
- 59:49personal website does
- 59:50run on kubernetes but that's it's a bit right like i don't need
- 59:54it to right it's a
- 59:58SPEAKER_01: pet project
- 59:59SPEAKER_00: Yeah, it's a pet project.
- 1:00:00SPEAKER_00: It's fun.
- 1:00:00SPEAKER_00: It's easy for me to deploy something to a cluster.
- 1:00:03SPEAKER_00: I can do that faster than I can do it with EC2.
- 1:00:07SPEAKER_00: But that's because that's where my experience is.
- 1:00:09SPEAKER_00: For most people, that's not true.
- 1:00:11SPEAKER_00: So run it on some kind of managed service.
- 1:00:16And if you think that there is a point where you're ever going
- 1:00:19to need to scale
- 1:00:20SPEAKER_00: super fast,
- 1:00:21SPEAKER_00: migrate to Kubernetes before that happens.
- 1:00:24SPEAKER_01: I think the addition there is if you need to scale super fast,
- 1:00:29you can always choose to just stay on a cloud provider and just
- 1:00:32pay massive amounts.
- 1:00:34SPEAKER_01: You will be overcharged for it.
- 1:00:36So I guess Kubernetes makes sense when you actually want to
- 1:00:38control your costs a
- 1:00:40SPEAKER_01: lot more,
- 1:00:40SPEAKER_01: right?
- 1:00:41SPEAKER_00: Yeah, because it's scalable.
- 1:00:44SPEAKER_00: It's not like...
- 1:00:45SPEAKER_00: It scales up and down, right?
- 1:00:47SPEAKER_00: Like your costs aren't going to be consistent.
- 1:00:51SPEAKER_00: And that can make things a little bit difficult to predict.
- 1:00:54But there are companies and tools that help you manage that
- 1:00:57aspect of running Kubernetes.
- 1:00:59But it won't be consistently high,
- 1:01:02at least,
- 1:01:02because of that up and down scalability.
- 1:01:05SPEAKER_00: But yeah, just do it earlier rather than later for me.
- 1:01:10SPEAKER_00: But if it's just a blog,
- 1:01:11SPEAKER_00: if it's just a website or whatever,
- 1:01:13SPEAKER_00: it's just a web application,
- 1:01:15SPEAKER_00: you probably do not need Kubernetes if it's just a web app.
- 1:01:20And so for those who are interested in getting started with
- 1:01:22Kubernetes for building
- 1:01:23SPEAKER_01: their own things as a user,
- 1:01:25SPEAKER_01: where would you recommend them to look?
- 1:01:27And what about for people who would be interested in dipping
- 1:01:30their toes and contributing?
- 1:01:31SPEAKER_01: What's a good place to start?
- 1:01:33For starting to use it,
- 1:01:34I very much recommend our own documentation and GKE's tutorials.
- 1:01:40GKE's tutorials come with a little sandbox so that you can
- 1:01:43actually do the thing,
- 1:01:45SPEAKER_00: which is very helpful.
- 1:01:46SPEAKER_00: That's the way I prefer to learn.
- 1:01:47Personally,
- 1:01:48I need to be told how to do the thing and then actually do it.
- 1:01:52That's not true for everybody,
- 1:01:53but that was a really,
- 1:01:56really great resource for me early on.
- 1:01:58And our own documentation has quick start guides for a variety
- 1:02:01of ways of getting
- 1:02:03SPEAKER_00: going with Kubernetes.
- 1:02:05SPEAKER_00: So I have always just used Minikube.
- 1:02:08There are many ways to get a cluster going and it'll walk you
- 1:02:11through most of them.
- 1:02:13SPEAKER_00: If you would like to get started contributing to Kubernetes,
- 1:02:17you can come talk to me in the Kubernetes Slack and I will be
- 1:02:21happy to help you
- 1:02:22SPEAKER_00: find a place.
- 1:02:23SPEAKER_00: But I will probably recommend that you start with
- 1:02:26SPEAKER_00: documentation in an area that is of specific interest to you.
- 1:02:30SPEAKER_00: So if you're particularly interested in storage or networking,
- 1:02:32I will hand you a storage or networking piece of documentation
- 1:02:35that I think needs updating.
- 1:02:38SPEAKER_00: If you like more of a people-managey thing,
- 1:02:41SPEAKER_00: I will be happy to talk to you about the Kubernetes release team.
- 1:02:44However,
- 1:02:45again,
- 1:02:45we get hundreds of applications and there's like 25 spots.
- 1:02:48So I would not write on that exclusively as a way to get
- 1:02:52involved in the project.
- 1:02:53SPEAKER_00: But yeah,
- 1:02:54SPEAKER_00: come talk to me on the Kubernetes Slack workspace,
- 1:02:57SPEAKER_00: Kat Cosgrove,
- 1:02:58SPEAKER_00: and I am more than happy to help you personally.
- 1:03:01SPEAKER_01: What wonderful.
- 1:03:02SPEAKER_01: And we've already talked,
- 1:03:03SPEAKER_01: I think,
- 1:03:04about the professional benefits that can easily come by being
- 1:03:08associated with a
- 1:03:09SPEAKER_01: project Kubernetes in terms of an active contributor or maintainer.
- 1:03:15SPEAKER_00: Yeah, it's definitely a thing.
- 1:03:18Release team members put Kubernetes release team comms shadow
- 1:03:23on their resume.
- 1:03:24SPEAKER_00: It's on people's LinkedIn.
- 1:03:25If you look at the number of people on LinkedIn who say they
- 1:03:27work at Kubernetes,
- 1:03:29SPEAKER_00: myself included,
- 1:03:30SPEAKER_00: mine says I work at Kubernetes.
- 1:03:32SPEAKER_01: You do, right?
- 1:03:33SPEAKER_00: I do.
- 1:03:33SPEAKER_00: Yeah.
- 1:03:34SPEAKER_00: Yeah, I maintain the thing.
- 1:03:35SPEAKER_00: So I do work there.
- 1:03:37SPEAKER_00: But yeah, people put it on their resumes.
- 1:03:40SPEAKER_00: It's
- 1:03:41SPEAKER_00: It's popular,
- 1:03:42especially if you're a student about to graduate or you're very
- 1:03:45early in your career.
- 1:03:46SPEAKER_00: It can definitely give you a resume boost.
- 1:03:48SPEAKER_00: But what it also gives you is access to a very,
- 1:03:52very large network of people with significantly more experience
- 1:03:55than you who are
- 1:03:57SPEAKER_00: generally quite friendly.
- 1:03:58SPEAKER_00: So it's a really good networking opportunity.
- 1:04:00SPEAKER_00: We all hang out a lot.
- 1:04:01SPEAKER_00: We all talk to each other a lot.
- 1:04:05SPEAKER_00: Right before CubeCon,
- 1:04:07SPEAKER_00: our big conference that we have twice a year,
- 1:04:09SPEAKER_00: there is a maintainer summit.
- 1:04:11And we all get together and hang out and talk to each other for
- 1:04:15a whole day.
- 1:04:16SPEAKER_00: That's our own little miniature conference.
- 1:04:18SPEAKER_00: So there is also the networking opportunity there too.
- 1:04:20SPEAKER_00: It's not just the resume fodder.
- 1:04:23SPEAKER_01: Yeah,
- 1:04:23and I like that you say networking because I feel people are
- 1:04:27starting to realize,
- 1:04:28engineers are starting to realize with the job market becoming
- 1:04:30a bit more frosty that,
- 1:04:32SPEAKER_00: oh,
- 1:04:32SPEAKER_01: having a network could be useful.
- 1:04:34SPEAKER_01: And then there's a question of how do you get a network?
- 1:04:36And just my two cents is the best network I've ever had is it's
- 1:04:39not people who are
- 1:04:40SPEAKER_01: kind of like,
- 1:04:41SPEAKER_01: I know them with drive-by.
- 1:04:42SPEAKER_01: It's people who I actually worked with.
- 1:04:43SPEAKER_01: Like did something together and,
- 1:04:45SPEAKER_01: and,
- 1:04:46SPEAKER_01: you know,
- 1:04:46you can either do it at your full-time job as just assuming you
- 1:04:49have one or on a
- 1:04:50SPEAKER_01: project where you spend extended time and solve the problems,
- 1:04:53SPEAKER_01: which project like Kubernetes or different open source project.
- 1:04:57SPEAKER_00: Yeah, for sure.
- 1:04:58SPEAKER_00: If I've worked with you on the Kubernetes project for a little while,
- 1:05:01SPEAKER_00: I am happy to connect you with anybody else I know.
- 1:05:05If you're looking for a job at Docker or at AWS or Microsoft or whatever...
- 1:05:14SPEAKER_00: I know executives there by virtue of having done this for so long.
- 1:05:19SPEAKER_00: And I'm happy to make connections.
- 1:05:21SPEAKER_00: If I've worked with you for a while, I will not.
- 1:05:22SPEAKER_01: And if that person has actually just, you know, good, solid work.
- 1:05:28SPEAKER_01: So I think it's just one more thing.
- 1:05:30If just don't do anything half ass,
- 1:05:31just like,
- 1:05:31yeah,
- 1:05:32don't have a whole ass.
- 1:05:33SPEAKER_00: Everything.
- 1:05:34Yeah.
- 1:05:36SPEAKER_01: I think the earlier people realize that, the better.
- 1:05:40SPEAKER_01: So to wrap up,
- 1:05:42I've just asked some rapid questions and I'll shoot and then
- 1:05:45you tell me what comes
- 1:05:47SPEAKER_01: to mind.
- 1:05:48SPEAKER_01: What is your favorite framework or programming language?
- 1:05:52SPEAKER_00: Python,
- 1:05:54SPEAKER_00: which I shouldn't say because I'm managing the Kubernetes project,
- 1:05:56SPEAKER_00: which is written in Go,
- 1:05:57SPEAKER_00: but it's Python.
- 1:05:58SPEAKER_01: That was really fast.
- 1:05:59SPEAKER_01: How come?
- 1:06:01It was not the first language I learned,
- 1:06:03but it was one of the earlier ones.
- 1:06:06And I like that even if it's not good at everything,
- 1:06:10I can make it do just about anything.
- 1:06:14SPEAKER_00: So that versatility is really valuable to me as a prototyping tool.
- 1:06:18SPEAKER_00: So I will prototype something in Python.
- 1:06:20And if Python is not the best tool in my toolbox for that
- 1:06:25particular application,
- 1:06:26SPEAKER_00: I'll then go actually rebuild it and go on.
- 1:06:29SPEAKER_00: Or whatever is most applicable.
- 1:06:32SPEAKER_01: I'm coming around to Python.
- 1:06:33SPEAKER_01: I never really use Python.
- 1:06:35SPEAKER_01: I use other languages, C Sharp, JavaScript, etc.
- 1:06:38SPEAKER_01: But you know what's getting me around to Python?
- 1:06:40It's now that I'm going to a lot of the getting started guides on,
- 1:06:44let's say,
- 1:06:44AI tools,
- 1:06:45etc.
- 1:06:45SPEAKER_01: They usually have it in all languages, like from Python.
- 1:06:48SPEAKER_01: Usually Python is the first one.
- 1:06:49SPEAKER_01: And what I've noticed is Python is the...
- 1:06:52the the least verbose and the easiest to read and i just liked
- 1:06:58reading it so now i
- 1:06:58just set up my my thing so i'm i'm actually changing my mind on
- 1:07:01that slowly i'm
- 1:07:03starting to see the the pull yeah you can almost just write
- 1:07:06pseudocode and that's
- 1:07:07like very close to valid python yeah which which rules so it's
- 1:07:12awesome yeah you got
- 1:07:13to do something quick and dirty python what is a book that you
- 1:07:16would recommend
- 1:07:18SPEAKER_00: Well, so I don't read workbooks at all.
- 1:07:23I actually have a personal policy of not reading books for
- 1:07:28anything other than fun.
- 1:07:29SPEAKER_00: Like I only read for pleasure and I read quite a lot.
- 1:07:33SPEAKER_00: Right now,
- 1:07:34SPEAKER_00: I'm rereading A Fire Upon the Deep by Werner Vinge,
- 1:07:37SPEAKER_00: which is very weird,
- 1:07:39SPEAKER_00: very,
- 1:07:40SPEAKER_00: very,
- 1:07:40SPEAKER_00: very strange,
- 1:07:41SPEAKER_00: hard science fiction.
- 1:07:42SPEAKER_00: It's one of my favorite books.
- 1:07:43SPEAKER_00: I would absolutely recommend that if you like hard sci-fi.
- 1:07:48SPEAKER_01: Well,
- 1:07:49SPEAKER_01: Kat,
- 1:07:49SPEAKER_01: thank you so much for going into the details of,
- 1:07:52SPEAKER_01: I guess,
- 1:07:53talking through the surprisingly open nature of Kubernetes and
- 1:07:56very well-documented
- 1:07:57SPEAKER_01: nature of it.
- 1:07:58SPEAKER_01: Thank you.
- 1:07:59SPEAKER_01: Happy to.
- 1:08:00SPEAKER_01: I hope you enjoyed this deep dive into how Kubernetes is built,
- 1:08:03SPEAKER_01: how releases work,
- 1:08:04and all the organizational work that goes into keeping a
- 1:08:06project like this running.
- 1:08:07I found it particularly interesting to learn just how well
- 1:08:10everything in Kubernetes
- 1:08:11SPEAKER_01: is documented,
- 1:08:12SPEAKER_01: including how the project is organized and run.
- 1:08:14SPEAKER_01: If you ever find yourself inside a large project,
- 1:08:16SPEAKER_01: feel free to steal ideas on how to organize things from Kubernetes.
- 1:08:21SPEAKER_01: Thanks a lot for Cap for sharing all these details.
- 1:08:23SPEAKER_01: You can connect with her on the links listed in the show notes below.
- 1:08:26We previously did a deep dive into how Linux was built and into
- 1:08:29a few other related topics.
- 1:08:31You can find all of these The Pragmatic Engineer deep dives in
- 1:08:33the show notes linked below.
- 1:08:35SPEAKER_01: If you've enjoyed the podcast,
- 1:08:36SPEAKER_01: please do subscribe on your favorite podcast platform and on YouTube.
- 1:08:39This helps more people discover the podcast and a special
- 1:08:42thanks if you leave a rating.
- 1:08:44SPEAKER_01: Thanks and see you in the next one.