Chinese translation of kubernetes documents-What is Kubernetes (What is Kubernetes)-Alibaba Cloud Developer Community

  • review history
  • why do you need Kubernetes and what can it do for us
  • Kubernetes inappropriate scenarios
  • the next content

Kubernetes is a portable and scalable open-source platform for managing containerized scenarios and services, Kubernetes facilitating declarative configuration and automated O & M. Kubernetes has a huge and fast-developing ecosystem. Kubernetes has a wide range of services, supports, and tools. The name of Kubernetes originates from Greece, which means helmsman and pilot. google opened the project in 2014. The Kubernetes is built on google's 15-year experience in the deployment and maintenance of large-scale production environments, combining with the creativity and experience of the community.

by reviewing history, we explain why Kubernetes meaning. Traditional application deployment: In the early days, enterprises deployed applications on physical machines. In this deployment mode, applications cannot use the resources of physical machines and cause resource allocation problems. For example, if multiple applications are running on a physical machine, one application may occupy too many physical machine resources, resulting in performance degradation of other applications. The solution to this problem is to run each application on different physical machines. In this way, the resource utilization rate is low, and cannot be expanded. The maintenance cost of a large number of physical machines maintained by enterprises is high.

Virtual Machine Deployment: to solve the problems caused by traditional application deployment, virtualization solutions are introduced. It allows you to run multiple virtual machines on a single physical machine. Virtualization can isolate multiple virtual machines and provide a certain degree of security, so that different virtual machines cannot freely access each other. Virtualization makes better use of physical machine resources and provides scalability because it is more convenient to add and update applications while reducing hardware costs. Each VM runs all components on hardware virtualization, including its own operating system.

Containerized deployment: containers are similar to VMS, but they have loose isolation properties and can share the operating system between applications. Therefore, containers are considered lightweight. Similar to a VM, a container has its own file system, CPU, memory, and process space. Containers are separated from the underlying infrastructure and can be migrated across the cloud and operating systems. Containers are becoming more and more popular. They can bring you many benefits. The following are some of the advantages of containers:

  • agile Application construction and deployment. Compared with VM images, it is easier and more convenient to build container images.
  • Continuous development, integration, and deployment. Quick and easy rollback provides reliable and quick container construction and deployment.
  • Consider the separation of dev and ops. Container images are created during build and release to separate applications from the infrastructure.
  • Observability. Not only OS-level monitoring indicators, but also display the health status and other information of the application.
  • The environment consistency of development, testing, and production. Running on a laptop is the same as running on the cloud.
  • The portability of cloud and OS releases. It can be run on Ubuntu, RHEL, CoreOS, on-prem, Google Kubernetes Engine, etc.
  • Application-centric management. Improve the abstraction level, from running the operating system on virtualized hardware to running applications on the OS using logical resources
  • loosely coupled, distributed, elastic, and open microservices. Applications are split into smaller independent units that can be dynamically deployed and managed, rather than standalone applications.
  • Resource isolation. Predictable application performance
  • resource Utilization: use resources efficiently and with high density.

containers are a good way to run applications. In a production environment, you need to manage the containers that run applications and ensure that they do not go down. If a container goes down, you must start another container. If the system handles this situation, will it make the operation and maintenance of the production environment easier? Kubernetes provides an elastic distributed system architecture. Kubernetes is responsible for your application expansion requirements, failover, and deployment modes. For example, Kubernetes can easily manage canary deployment. Kubernetes provides the following features:

  • service Discovery and server load balancer Kubernetes can expose services to the public through the DNS name or the IP address of the container. If the number of requests is large, server load balancer and server load balancer can Kubernetes distribute requests to ensure stable deployment.
  • The storage orchestration Kubernetes allows you to automatically mount storage systems of your choice, such as local storage and public cloud providers.
  • Automatic Deployment and rollback you can use Kubernetes to describe the desired state of your application deployment and change the actual state to the desired state at a controlled rate. For example, you can automatically ask Kubernetes to create new containers for your deployment, remove existing containers, and use all resources for the new containers.
  • The automatic container Kubernetes allows you to specify the CPU and memory requirements of each container. When the container specifies a resource request, Kubernetes can better manage the container resources.
  • The self-recovery Kubernetes restarts the faulty container, replaces the container, and kills the container that cannot respond to user-defined health checks.
  • The key and configuration management Kubernetes allows you to store and manage sensitive information, such as passwords, OAuth tokens, and ssh keys. You can deploy and update application configurations without rebuilding container images or exposing your keys in your massive configurations.

Kubernetes is not a traditional and all-inclusive Paas system, because Kubernetes runs at the container level rather than the hardware level. It provides some common functions of Paas products, such as deployment, expansion, load balancing, logs and monitoring. However, Kubernetes is not a huge system. These default functions are optional and pluggable, Kubernetes provide the optional ability to build a developer platform, the choice and flexibility of users are retained in important places. Kubernetes:

  • Kubernetes does not limit the types of applications supported, Kubernetes aims to support various running scenarios, including stateless application scenarios, stateful application scenarios, and data processing application scenarios, if the application can run in a container, it should run well in the Kubernetes.
  • The workflow of continuous integration, delivery, and deployment (CI/CD) without deploying source code and building your applications is determined by the agreed rules and technical requirements of the enterprise.
  • It does not provide application-level services, such as middleware (such as message bus), data processing framework (such as spark), Database (such as mysql), cache, and distributed storage (such as Ceph). As a built-in Service, these components can be run in Kubernetes, or through convenient mechanisms (such as Open Service Broker), containers running in Kubernetes can be accessed.
  • It does not specify log, monitoring, and alarm systems. It provides integrated components of some concepts and a mechanism to collect and expose indicators.
  • Not provided, let alone a configuration language. It provides a declarative API that is implemented through any form of declarative specifications.
  • No comprehensive machine configuration, maintenance, management or self-repair system is provided or adopted.
  • In addition, Kubernetes is not just an orchestration system. In fact, it eliminates the need for orchestration. The technical definition of orchestration is the workflow defined by execution. First do A, then do B, and finally do C. On the contrary, Kubernetes consists of a set of independent and combinable control processors. These control processors change the current state of the container to the desired state. You don't have to care if from A to C. Centralized control system is unnecessary, which makes the system easier to use, more powerful, more robust, more elastic and scalable.
Selected, One-Stop Store for Enterprise Applications
Support various scenarios to meet companies' needs at different stages of development

Start Building Today with a Free Trial to 50+ Products

Learn and experience the power of Alibaba Cloud.

Sign Up Now