Introduction
The history of computer science can be characterized by the development of abstractions that aim at reducing complexity and empowering people to create more sophisticated applications. However, the development of scalable and reliable applications is still more challenging than it should be. To reduce the complexity, containers and container orchestration APIs such as Kubernetes have been introduced as crucial abstractions that radically simplify the development of scalable and reliable systems. Though orchestrators and containers are in the process of being absorbed into the mainstream, they do a great job at enabling the developers to create and deploy applications with agility, reliability, and, above all, speed.
Kubernetes has become the de-facto platform used for deploying and managing cloud native applications. Evidently, the adoption of Kubernetes has developed to be used in more complex and mission-critical applications. As such, enterprise operations teams ought to be conversant with Kubernetes to effectively manage any challenges that may arise. Note that developer experience, operator experience, and multi-tenancy are the core challenges that Kubernetes users encounter. Though the complexity of using and operating Kubernetes may be a huge concern, enterprises that manage to overcome the challenges enjoy different benefits, such as increased release frequencies, faster recovery from failures, quicker adoption of cloud technologies, and an improved customer experience that, in turn, offers a myriad of business advantages. The good news is that developers have the freedom to ensure faster innovations, while the operations teams ensure that resources are utilized efficiently and compliance is upheld.
This book focuses on explaining the management and design of Kubernetes clusters. As such, it covers in detail the capabilities and services that are provided by Kubernetes for both developers and daily users. The following chapters will take the reader through the deployment and application of Kubernetes, while taking into consideration the different user cases and environments. The reader will then gain extensive knowledge about how Kubernetes is organized, when it is best to apply various resources, and how clusters can be implemented and configured effectively. In the following chapters, you will gain an in-depth understanding of the Kubernetes architecture, the clusters, and how they are installed, how they operate, and how the software can be deployed through applying the best practices possible.
If you are new to Kubernetes, this book offers in-depth information that helps in understanding Kubernetes, its benefits, and why you need it. For instance, the following chapters give a detailed introduction to Kubernetes, containers, and development of containerized applications. It will further describe the Kubernetes cluster orchestrator and how tools and APIs are used to improve the delivery, development, and maintenance of distributed applications. You will understand how to move container applications into production by applying the best practices, and you will also learn how Kubernetes fits into your daily operations, ensuring that you prepare for production-ready container application stacks. This book aims at helping the reader comprehend the Kubernetes technology, along with educating on how to use the Kubernetes tooling efficiently and effectively, with the aim of developing and deploying apps to Kubernetes clusters.