I recently sat down with Sebastien Goasguen, Senior Director of Cloud Technologies at Bitnami, to talk about Kubernetes and its ecosystem—why the tool is becomingly increasingly popular, the tools you can use to support it, and how to adopt containerized architectures at your organization. Here are some highlights from our talk.
Why is Kubernetes so popular?
I am a big believer that you need to try things yourself to form an opinion about them, but many people who try Kubernetes like it right away. The system is not really complicated or different from other cluster management systems; what’s surprising is how difficult it is to kill your application after you’ve deployed it. There are many built-in levels of fault tolerance that make your application resilient and scalable. If you like APIs and solid clients, you will appreciate the Kubernetes API as well. So the bottom line is: try it, and I bet you will be hooked.
What other tools work well with Kubernetes?
Google is really investing for the long term with Kubernetes; they realized right away that they needed to build a true ecosystem of partners if the project was to be a success. They ended up donating it to the Cloud Native Foundation (CNCF), a non-profit foundation hosted by the Linux foundation with the aim to help with governance, awareness and community activities. Now CNCF has grown to encompass more cloud native software projects like Prometheus, Fluentd, OpenTracing, and Containerd. We can expect other projects to join in the future. That means that naturally—through a sort of “CNCF osmosis”—Prometheus is used with Kubernetes for monitoring, Fluentd for log aggregation. In addition, Kubernetes has its own incubator where you can find projects like kompose, kargo, and Helm, which recently graduated from the incubator. That said, there are also non-CNCF tools, such as Ansible and Terraform, that work well with Kubernetes, but you can expect a natural affinity between the various CNCF projects.
What are some unresolved challenges with the Kubernetes project?
There is a challenge with the speed of innovation and scale of the project, both from a technical and governance standpoint. There are multiple efforts to break up the main repository to help speed up pull request reviews and bring attention to issues. There are currently over 5,000 issues and over 600 pull requests. The project needs to find a way to sustain momentum, allow new contributors to help, and at the same time maintain code quality. So far everything has been evolving in an ad-hoc manner, and now a clear governance model needs to be put in place. Luckily, some key project instigators are hard at work to make this happen.
Do you have any tips for companies that want to adopt containerized architectures? Any pitfalls to avoid?
My general philosophy is that nothing is a silver bullet. Reflect on whether a containerized architecture is truly a good fit for your company. If you’re operating under the notion that everyone is doing it and so you should too, or you believe your application is going to magically scale if your run it in containers, then you’re adopting this architecture for the wrong reasons. Look out, too, for the common pitfall of adopting containers but sticking with an old architecture. This can often lead people away from the important principle of one process per container.
Strangely, one of the biggest challenges we have in our industry is the sheer amount of choice available to us. Open source software is everywhere these days; there are a dozen tools available for every task and making the right pick can be a challenge. I always recommend that you actually try the tools and see if they fit your company, your skills and ways of working. If you’re a Python shop, you may be more inclined to use Python-based tools (instead of Golang-based, for example).
Don’t shoot for the moon right away. Instead, build one service, hook it up to your CI pipeline, test, get feedback from your developers, and figure out how to put it in production. Be mindful, embrace change, and start experimenting.
You’re speaking at the O’Reilly Velocity Conference in San Jose this June. What presentations are you looking forward to attending while there?
I am going to use my time at Velocity to catch up on service mesh and distributed tracing. To that end I will attend the talk on service mesh (by Matt Klein of Lyft) and the talk on distributed tracing (by Suman Karumuri at Pinterest). I will also attend the talk on Spanner (by Miles Ward at Google) because I am really curious and haven’t looked very deeply into the technical details.
I will wrap up with talks that are closer to home, like the one on serverless architectures (by Sangeeta Narayanan from Netflix) because I am developing a serverless solution on top of Kubernetes (Kubeless) and am sure to get a few good ideas. I’m also interested in this user story about cloud migration at Shutterfly.