Why is Kubernetes so popular?

The Kubernetes platform for running containerized workloads plays a significant role when developing and deploying cloud-native applications. Naturally, developing and deploying cloud-native applications has become extremely popular. There are clear advantages to a process that allows for rapid deployment and continuous delivery of bug fixes and new features, but no one talks about the chicken and egg problem: How to achieve this? Building the infrastructure and development processes to develop and maintain cloud-native applications from scratch is a non-trivial and time-consuming task.

Why is Kubernetes so popular? Why is Kubernetes so popular?

Kubernetes is a relatively new platform for running containerized workloads that solves these problems. Originally a project within Google, Kubernetes was donated to the Cloud Native Computing Foundation in 2015 and attracted developers from open source communities around the world. Kubernetes is designed based on Google's 15 years of experience operating production and development environments. Since it is open source, anyone can download and use it and realize the benefits it brings.

So why is Kubernetes such a big surprise? I think it strikes the best balance between the resources of an Infrastructure as a Service (IaaS) like OpenStack and a full Platform as a Service (PaaS), where the underlying runtime implementation is fully controlled by the vendor. Kubernetes offers two advantages: an abstraction for managing infrastructure, and the tools and capabilities to troubleshoot deep into the bare metal.

IaaS and PaaS

OpenStack is classified by most as an IaaS solution, where a pool of physical resources (such as processors, network, and storage) are allocated and shared among different users. It uses traditional hardware-based virtualization to achieve isolation between users.

OpenStack's REST API allows for automated infrastructure creation using code, but here's the problem. IaaS products also export infrastructure. Once it was created, there weren't many service ways to support and manage that more infrastructure. To the extent that OpenStack produces the underlying infrastructure, such as servers and IP addresses, it becomes a management priority. A well-known result is the proliferation of virtual machines (VMs), but the same happens with networks, encryption keys, and storage volumes. This way, developers spend less time building and maintaining applications.

Like other cluster-based solutions, Kubernetes operates at the level of an individual server to enable horizontal scaling. It makes it easy to add new servers and instantly schedule loads on new hardware. Similarly, servers can be removed from the cluster when they are not being effectively utilized or require maintenance. Other tasks that Kubernetes can handle automatically are orchestration activities such as job scheduling, health monitoring, and maintaining high availability.

Networking is another area that can be difficult to orchestrate reliably in an IaaS environment. Communicating between microservices via IP addresses can be tricky. Kubernetes implements IP address management, load balancing, service discovery, and DNS name registration to provide a painless, transparent networking environment within the cluster.

Designed for deployment

Once you create an environment to run your application, deployment is a piece of cake. Reliably deploying an application is a task easier said than done—it's not the easiest. A huge advantage of Kubernetes over other environments is that deployments are first-class citizens.

Use a separate Kubernetes commandline interface (CLI)command< a i=4>, the application can be described and installed on the cluster. Kubernetes enables the entire application lifecycle from initial deployment, rolling out new versions, and rolling back when a critical feature breaks down. Running deployments can also be paused and resumed. Having ready-made, built-in tools and support for application deployment, rather than having to build a deployment system yourself, is an advantage that shouldn't be underestimated. Kubernetes users neither have to reinvent the wheel of application deployment nor find it a daunting task.

Kubernetes can also monitor the status of running deployments. While you could write this functionality just like a deployment process in an IaaS environment, it's a very difficult task, and there are many cases like this.

Designed for DevOps

As you gain more experience developing and deploying Kubernetes applications, you'll follow the same path as Google and others who came before you. You'll find that there are several Kubernetes features that are important for effective development and troubleshooting of multi-service applications.

First, Kubernetes' ability to easily inspect running services via logs or SSH (secure shell) is important. With a single command line call, administrators can inspect the logs of services running under Kubernetes. This may sound like a simple task, but in an IaaS environment, it's not easy unless you've already done some work. Large applications often have hardware and personnel dedicated to log collection and analysis. Logging in Kubernetes may not replace a full-featured logging and metrics solution, but it is enough to provide basic troubleshooting.

Second, Kubernetes provides built-in key management. Another problem teams that have developed their own deployment systems from scratch know is that securely deploying sensitive data, such as passwords and API tokens, to virtual machines is difficult. By making key management a first-class citizen, Kubernetes prevents your team from inventing their own insecure, faulty key distribution systems or deploying scripts 2> Hardcode credentials in .

Finally, Kubernetes has features for automating scaling, load balancing, and restarting applications. Again, these are features developers would have to write themselves when using IaaS or bare metal. Scaling and health checks for your Kubernetes application are declared in the service definition, and Kubernetes ensures that the correct number of instances are running healthily.

Summarize

The differences between IaaS and PaaS systems are huge, and including PaaS can save a lot of development and debugging time. As a PaaS, Kubernetes implements powerful and effective capabilities to help you develop, deploy, and debug cloud-native applications. Its architecture and design represent decades of rare experience, and your team gets that advantage for free.


About the Author:

Tim Potter - Tim is a Senior Software Engineer at Hewlett Packard Enterprise. He has been working on free and open source software for nearly two decades, including projects such as Samba, Wireshark, OpenPegasus, and Docker. Tim blogs at elegantinfrastructure.com – Just another WordPress site , about Docker, Kubernetes, and other infrastructure related topics.

Guess you like

Origin blog.csdn.net/yaxuan88521/article/details/134711403