What does Kubernetes really do?

Kubernetes is declared as a scheduler / orchestrator cluster container, but I have no idea what that means. After reading the Kubernetes site and the (vague) GitHub wiki, I can say that it somehow determines which virtual machines are available / able to run your Docker container, and then deploys them there. But this is only my guess, and I did not see any specific words in their documentation to support this.

So what is Kubernetes, and what specific problems does it solve?

+101
docker kubernetes
Jan 22 '15 at 10:41
source share
3 answers

The goal of Kubernetes is to simplify the organization and schedule of your application through a fleet of vehicles. At a high level, this is the operating system for your cluster.

Basically, this allows you not to worry about which particular machine in your data center works in each application. In addition, it provides general primitives for verifying the health and replication of your application on these machines, as well as services for connecting your application to microservices so that each layer in your application is separated from other layers so that you can scale / update / maintain them independently apart from each other.

Although at the application level you can perform many of these functions, such solutions are usually one-time and fragile, it is much better to have a separation of problems when the orchestration system is worried about how to run the application and you are worried about the code that makes up your application.

+82
Jan 22 '15 at 18:03
source share

As you read from the Github page :

Kubernetes is an open source system for managing containerized applications on multiple hosts that provides the basic mechanisms for deploying, maintaining, and scaling applications.

Kubernetes is:

lean: lightweight, simple, accessible portable: public, private, hybrid, multi cloud extensible: modular, pluggable, hookable, composable self-healing: auto-placement, auto-restart, auto-replication 

Kubernetes builds on a decade and a half of Google’s experience in scaling workloads with best-in-class community ideas and practices.

For me, Kubernetes is a container orchestration tool from Google. Thanks to its design, you can implement compatibility with any container engine, but I think it is now limited to Docker. There are several important concepts in its architecture:

Kubernetes works with the following concepts:

Clusters are the computing resources on the basis of which your containers are created. Kubernetes can run anywhere! See the Getting Started Guides for instructions on the various services.

Modules is an integrated group of Docker containers with shared volumes. These are the smallest deployable units you can create, plan, and manage with Kubernetes. Modules can be created individually, but it is recommended that you use a replication controller even when creating a single module. More about pods.

Replication controllers manage the module life cycle. They ensure that a certain number of modules work at any given time, creating or killing modules as needed. Learn more about replication controllers.

Services provide a single, stable name and address for a set of modules. They act as primary load balancers. More about services.

Labels are used to organize and select groups of objects based on key: value pairs. Learn more about shortcuts.

So, you have a group of computers that forms a cluster in which your containers work. Yo can also define a group of containers that provide the service, similar to how you do it with other tools such as fig (i.e. the webapp module can be a rails server and a postgres database). You also have other tools to ensure the simultaneous launch of several containers / service modules, a storage of key values, a kind of built-in load balancer ...

If you know something about Coreos, this is a very similar solution, but from Google. Algo Kubernetes has good integration with the Google Cloud Engine.

+13
Jan 22 '15 at 11:37
source share

Kubernetes provides most of the same functionality as the infrastructure, like service APIs, but targets dynamically scheduled containers, not virtual machines, and as platform systems as services, but with more flexibility, including:

  • installation of storage systems,
  • hand out secrets
  • check application health,
  • Duplication of application instances
  • horizontal automatic scaling,
  • naming and discovery
  • load balancing,
  • updatable updates,
  • resource monitoring
  • access to the magazine and swallowing,
  • support for introspection and debugging, as well as
  • identity and permission.

If you already use other mechanisms for service discovery, secret distribution, load balancing, monitoring, etc., of course, you can continue to use them, but we strive to simplify the transition to Kubernetes from existing IaaS and PaaS systems by providing this functionality.

https://kubernetes.io/docs/concepts/overview/what-is-kubernetes/#why-do-i-need-kubernetes-and-what-can-it-do

+5
Nov 16 '15 at 18:26
source share



All Articles