K8s

My observations and frustrations with Kubernetes

In the modern digital landscape, the need for a small organization to maintain a data center for providing an externally facing client experience is rapidly dwindling, if not entirely extinct. The age of exclusive ownership of computer hardware and resources is fading away, being largely replaced by third-party cloud services. The niche for maintaining privately owned hardware now belongs primarily to specialized organizations that require specific services that cannot be met by mainstream providers. For instance, extremely competitive, profitable, and proprietary trading firms that deal with sensitive data may find it more beneficial to have complete control over their own hardware, software and operating environment.

A prime example of this shift towards third-party managed services is Netflix, a company known for its compute and data-intensive operations. As documented in their technical blog, Netflix has extensively leveraged Amazon's Simple Storage Service (S3), a third-party cloud service. This decision by such a large-scale, data-centric organization accentuates a growing trend: viewing computing resources in the same light as municipal services like water, electricity, or sewage.

In this new paradigm, an organization that wants to accomplish something merely needs to turn to the cloud. Major providers such as Amazon Web Services, Microsoft Azure, and Google Cloud Platform will handle the nitty-gritty of managing hardware, storage, and connectivity. They do this more efficiently and economically than most in-house IT departments could, primarily due to their vast scale and specialization in this field.

This transition to cloud services has brought down many barriers to entry that were traditionally associated with the need for significant capital expenditure on IT infrastructure. It allows businesses to focus more on their core competencies and less on the operational burdens of IT management.

However, it does introduce a new set of challenges. One of the primary ones is the efficient management of applications deployed on these cloud platforms. As the number and complexity of cloud services increase, organizations often find it challenging to manage and optimize their use. This requires new skills and tools, such as those for cloud cost management, cloud security, and DevOps practices like continuous integration and continuous delivery (CI/CD).

Moreover, as data and services move to the cloud, issues around data sovereignty and compliance with various regulatory standards will become a significant issue sooner than expected for many organizations. Therefore, while the cloud offers many benefits, it's critical for organizations to approach this transition with a well-informed strategy that considers these challenges.

NOW FOR THE RANT

Let's state some of the obvious painpoints (examples will follow)

  1. Complexity: Kubernetes has a steep learning curve, with a complex architecture and a wide range of concepts to understand. The more features you use, the more complexity you introduce.
  2. Configuration : Kubernetes requires numerous configuration files for different services and resources. Creating and managing these files can be tedious and error-prone. I spent almost two years researching k8's related network flow barriers and couldn't create a easy solution.
  3. Networking: Kubernetes has its own networking model that can be difficult to set up and manage, especially in terms of load balancing, network policies, and service discovery. I'll provide details on this in a future rant.
  4. Storage : Persistent storage is a common challenge in Kubernetes, especially when running stateful applications. Kubernetes supports many storage systems, but integrating them can be complex. More to come.
  5. System Resources: While Kubernetes helps make better use of resources, it can itself be resource-intensive. This can lead to issues in environments where resources are constrained.
  6. Security:  Securing a Kubernetes cluster is complex. It involves securing the control plane, the worker nodes, the network, the containers themselves, and the application code. Misconfigurations can lead to serious security risks.
  7. Monitoring and Logging: Built-in tools for monitoring and logging may not provide the level of detail required for troubleshooting and performance tuning, necessitating third-party solutions.
  8. Updates and upgrades: Updating Kubernetes and its associated components can be a complex process, potentially leading to downtime or backwards compatibility issues.
  9. Multi-tenancy challenges: While Kubernetes supports multi-tenancy, it can be difficult to securely isolate tenants, allocate resources fairly, and manage separate authentication and authorization policies. In a nutshell. Don't bother unless you are a maschoshist. 
  10. Cost management: Especially in cloud-based deployments, you can easily have signifcant cost overruns if your cloud compute resources are not closely managed and monitored.
  11. Interoperability with existing systems: Integrating Kubernetes with existing systems, databases, and legacy applications can be challenging and may require significant architectural changes.
  12. Talent: Kubernetes expertise is in high demand and there's a shortage of experienced professionals, which can slow down implementation and increase costs.
Although Kubernetes provides some significant hurdles to overcome, it is far better to deal with issues like:
  • Scalability
  • System heath and healing
  • Service discovery and load balancing
  • Automated deployments and roll backs
  • Horizontal scaling: provided your server has the needed capacity
  • Portabilty: Rolling your own environment requires signifcant dicipline to ensure system hygiene and homogeneity. Life is so much easier when you can create an identical enviornment with a configuration file.

Important links

References

Some potentially useful papers

  • C. Carrión, “Kubernetes Scheduling: Taxonomy, ongoing issues and challenges,” ACM Comput. Surv., p. 3539606, Jun. 2022, doi: 10.1145/3539606 "
  • J. Esposito, “2020 DZone Kubernetes Survey: Key Research Findings,” p. 19. "
  • E. Truyen, D. V. Landuyt, D. Preuveneers, B. Lagaisse, and W. Joosen, “A Comprehensive Feature Comparison Study of Open-Source Container Orchestration Frameworks,” Applied Sciences, vol. 9, no. 5, p. 931, Mar. 2019, doi: 10.3390/app9050931. "
  • J. Shah and D. Dubaria, “Building Modern Clouds: Using Docker, Kubernetes & Google Cloud Platform,” in 2019 IEEE 9th Annual Computing and Communication Workshop and Conference (CCWC), Las Vegas, NV, USA: IEEE, Jan. 2019, pp. 0184–0189. doi: 10.1109/CCWC.2019.8666479. "