24 Days of Kubernetes - Kristina Devochko Interview
Published on
At Aknostic, we believe that building a greener cloud starts with knowledge, innovation, and community. That’s why we’re bringing insights from thought leaders in Kubernetes and sustainability. Today, for the Day 3 of 24 Days of Kubernetes, the spotlight is on Kristina Devochko! Kristina is a CNCF ambassador, organiser of Green Software Oslo Meetup, recently appointed Developer of the Year at the Nordic Women in Tech Awards 2024, podcast host on Kubernetes, speaking at numerous conferences, sustainability and K8s fan as well as cat lover!
How do you see Kubernetes playing a vital role in advancing sustainability within cloud-native ecosystems?
Kubernetes is one of the most adopted projects in the cloud native ecosystem. Many companies build their platforms and deploy their applications on top of Kubernetes. In addition, Kubernetes provides you with multiple opportunities to configure when, where, and how to run your applications. You can scale applications to zero, define how many replicas of the application to run and how many resources each replica of the app can consume, as well as do things like spatial (location-based) and temporal (time-based) workload shifting.
The granularity of such configuration and the speed at which we can dynamically adjust the total amount of the resources and the extent of the resource utilization is, what I believe, the advantage that Kubernetes provides for us in terms of building more sustainable and efficient platforms and workloads that run on those platforms.
As Chair of the Environmental Sustainability Technical Advisory Group, what Kubernetes-specific initiatives or practices have the group prioritized to reduce environmental impact?
The most important initiative we are currently focusing on in the TAG ENV is the proof of concept that the Green Reviews Working Group is building - a workflow that can be used to assess the sustainability footprint of CNCF projects. I believe that in many ways this is also a research project - I don't think that anyone has done something like this before, therefore a lot of work in this group is based on trial and error, but also on tight collaboration among driven TAG ENV contributors.
I also think that, in the long run, all the learnings from this working group and the workflow being built can be used as an inspiration source, a blueprint, to implement similar sustainability assessments for projects outside of the CNCF landscape. Kudos to everyone who has contributed to the Green Reviews Working Group so far - you're paving the way to define how sustainability footprint can be assessed in the cloud native and open source space! If anyone is interested in learning more about the work we do in the Green Reviews Working Group, please check out the group's GitHub repository.
What are the biggest challenges Kubernetes users face when trying to optimize clusters for energy efficiency and sustainability? How can they overcome these?
I see a few challenges when it comes to optimizing for sustainability in context of Kubernetes. One of the challenges is the fear of deleting resources, turning off, consolidating things, which is strongly driven by the "What If...?" questions.
- What if we still need this service?
- What if the load suddenly increases?
- What if this service is being used during the night and outside of working hours?
These fears can prevent you from utilizing resources efficiently, and you can potentially be paying for things that aren't really in use. Some tools and routines can help you overcome these fears. We in the TAG ENV will publish a series of blog posts on the topic, so stay tuned or just reach out to us to learn more about how such scenarios can be approached!
Another challenge I see is related to measurement—what to measure in Kubernetes regarding sustainability? How to measure? With what tools? How to approach collected data?
If you're using a managed Kubernetes service in the public cloud there are also challenges with accessing up-to-date, representative data on the emissions of cloud services. Unfortunately, it's also tricky to measure the sustainability footprint accurately at this point. Tools like Kepler or Scaphandre and standards like Software Carbon Intensity (SCI) from Green Software Foundation can help you get as close to the real-life picture of your footprint as possible based on currently available resources. But it would require you to know (or learn) how to integrate such tools into your platform since such tools are not yet accessible out-of-the-box on any Kubernetes distribution, for example.
In addition, you may need to get backing from the company to use the time to research, experiment, and implement the proper tooling and measurement. It can be a challenge in itself if the company doesn't have a definitive strategy for optimizing its IT systems and software for sustainability.
When this is the case I feel that joining global communities like TAG ENV, as well as local green tech communities can be of value - such forums can help you get a grip on what arguments you can use to get support from you company to do sustainability-related tasks in your role. These communities are also a great place to share tips and tricks, exchange knowledge and experience with others regarding what tools and patterns work best or what challenges may arise when adopting different tools/standards.
What innovations or tools in the Kubernetes ecosystem excite you most for their potential to drive greener cloud-native operations?
I can't say I'm only excited about a single tool in this space. But I can say that I'm excited about steadily increasing engagement for environmental sustainability in the tech community and the constant release of new tools and methodologies to help engineers assess and improve resource utilization and sustainability footprint throughout the whole software development lifecycle - from design to deployment and operations.
To give you just a few examples:
- SCI specification from GSF becoming an ISO standard which strengthens its trustworthiness to be a common protocol for measuring and reducing software's carbon footprint.
- Eco CI project for measuring and estimating the energy cost of CI/CD pipelines.
- We have all the options to build truly slim and efficient container images for our applications that only include what they need and utilize resources efficiently through things like layer caching and rebuilding only what's needed, like Buildpacks does, for instance. By the way, we have a blog about Buildpacks on the TAG ENV website, which was written by one of the community contributors.
- Cost optimization tools provide you insights into important aspects like cluster efficiency, the utilization rate of a chosen Node/VM in comparison to what's being utilized by Pods running on that Node, etc. In addition, some of these tools are now also integrating automation around using this data to automatically adjust the state of your cluster by consolidating workloads to reduce the amount of Nodes, dynamically update requests and resource limits, etc.
- Experimentations from the community around introducing sustainability-related functionality into the existing Kubernetes toolset, such as Carbon-Aware KEDA Operator and Carbon-Aware mode in Karpenter.
What practical steps can developers take today to make their Kubernetes deployments more sustainable? Are there any overlooked practices you’d recommend?
I always prefer to start with the easiest steps first. In reality, the first steps that you can take now don't need to be the most complicated ones.
I would challenge every one of you reading this article to take a look at your current setup, at your Kubernetes clusters, for instance, and pose some of the following questions:
- Is this service(s) actually in use? Are any meaningful requests coming in regularly to this service(s)? If no, can it be deleted or scaled down/in? If I am unsure about the answer, who can I confirm this with regarding this service(s)? Can I perform a scream test (aka delete a service and see if anyone screams) on this service?
- Can this cluster be turned off outside of working hours/during the night? Can it be scaled down? What apps can be scaled to zero or turned off during the night? What Nodes are underutilized and can be consolidated? Can we integrate tools that can help us automate the collection of this data and provide recommendations on optimization? Maybe our current cost optimization tool has such functionality that we haven't benefitted from yet.
- What region or data center can I be running my clusters in? Is this region powered by renewable energy sources? Are there greener alternatives to choose from?
Once the questions have been asked, and you've gained some answers, the next step is to act upon those! For some, it may be a larger set of steps; for some, it will be a smaller change, but the point here is to do something. Making even small optimizations gradually and step by step will significantly improve over time. A good idea here may be to collect data on resource (under)utilization, cost, etc., before and after optimization changes for a more data-driven and accurate comparison.
One more thing I would like to mention is what we have done in the Kubernetes Sustainability Best Practices project in the TAG ENV. We defined the focus areas for optimization in Kubernetes under which different tools and practices can fall: Reduce-Refuse-Resize-Reschedule-Repeat-Repair. These six concepts illustrate actions that can be done inside Kubernetes to optimize resource utilization of the clusters themselves but also the workloads that are running on those clusters. We shared some highlights around this during our presentation at the NDC Oslo Community Tuesday event in June this year, and you can find the slides here if you're interested in learning a bit more about it.
As I mentioned earlier, we will also explore this topic in more detail in the blog post series that we'll be working on in the TAG ENV next year, so stay tuned for more information.
Looking ahead, how would you like to see Kubernetes evolve to support global sustainability goals better? What role should the CNCF and its community play in achieving this?
As in any other industry, when it comes to sustainability in tech, we all have a role to play. I believe that it comes down to being curious and motivated to see what you can do where you work or in the areas where your interests lie to improve for sustainability.
I would love to see the TAG ENV and Kubernetes community collaborate closer to identify if there are ways the sustainability footprint of Kubernetes itself can be improved. For example, are there options to make system components use fewer resources? Can something be improved and optimized when Kubernetes is used ata larger scale? Can we create educational content for the community on fine-tuning their platform for better resource utilization? Many opportunities exist here to improve and collaborate across cloud native communities.
No one can make such changes alone. There must be drive and motivation in the community—the more engagement and motivation there is, the more impact we can create together. I believe that CNCF as a whole also has a role to play.
If the work that's being done in the community to improve sustainability of the cloud native space, including the CNCF landscape, isn't supported, encouraged and highlighted by the organizations like CNCF, it will be more challenging to gain progress, create useful resources for the community, and even to make larger community, like project adopters and end users, understand why we, as engineers, should care about the topic of sustainability, and what impact our decisions have on the constantly increasing amount of emissions the tech industry generates.
With support from organizations with such a wide reach, like CNCF, we can gain more contributors and more opinions; from this diversity, innovation happens. Innovation leads to new ideas and fosters passion to collaborate on more projects that can make an impact in areas like decreasing the sustainability footprint of CNCF projects. That's how the Green Reviews Working Group was formed and why it has progressed as far as it did in such a short time.
Last but not least, what's your Kubernetes wish for the next year?
Thank you for the interview, Kristina. Let’s make the cloud greener, together.