What is Kubernetes?
Kubernetes is an open source platform for automated container deployment, expansion, and management for clusters, providing a container-centric infrastructure.
With Kubernetes, you can quickly and efficiently respond to customer requests for:
- Dynamic, precise deployment of applications
- Dynamic extension of the application
- Seamless rollout of new features
- Optimize the use of hardware resources on demand
Our goal is to provide an ecosystem of components and tools that ease the burden of running applications on public or private clouds.
Kubernetes is:
Portable: public cloud, private cloud, hybrid cloud, multi-cloud Scalable: modular, plug and play, hook, composition automatic repair: Kubernetes project is launched by Google in 2014, Kubernetes is based on Google’s 15 years of production environment experience, combined with some of the best ideas and practices of the community.
Ready to get started?
Two, why use containers?
Find out why you use containers?
Traditional method is deploying applications make use of the operating system installed on a package manager to host applications, a drawback of this approach is the application, configuration, support library and life cycle are often intertwined with the host operating system, of course you can also build a virtual machine images to realize the controlled release, but the virtual machine is heavy quantization and its portability is not good.
The new approach to deploying containers is based on virtualization at the operating system level rather than at the hardware level. These containers are isolated from each other and from hosts: they have their own file systems and share computing resources, but they do not see each other. Containers are also easier to build than virtual machines, and because they are not platform and file system dependent, portability can be achieved across cloud and operating system distributions.
Because containers are small and fast, an application can be packaged as a container image, and the one-to-one correspondence between applications and images takes full advantage of containers.
- Permanent container images can be built during the development phase of an application, rather than remaining in the deployment phase, because each application does not need to be modified at other stages of its life cycle or when it is formally delivered to production, making the development and production environments highly consistent.
- Containers are more transparent than virtual machines and are easier to monitor and manage, especially if the process cycle of the container is managed by the management platform rather than by super processes hidden in the container.
- One application has one container. Container management is equivalent to application management.
The advantages of containers can be summed up as:
- Agile application building and deployment: Container management is easier and more efficient than virtual machine management.
- Continuous development, integration, and deployment: Fast rollback enables reliable and frequent container image builds and deployments (based on image permanence).
- Development and operations can be considered separately: container images of the application are created during the build/release phase rather than the deployment phase, thus decoupling the application from the infrastructure.
- Consistency in development, test, and production environments: Running on a laptop is as good as running in the cloud.
- Cloud and OS portability: Run freely on Unbuntu, RHEL, CoreOS, ON-Prem, Google Container Engine, and others.
- Application-centric management raises the level of abstraction from running the operating system on virtual hardware to running applications directly on the operating system using its logical resources.
- Loosely coupled, resilient, distributed, microserviced: Applications are divided into small, independent slices that can be deployed and managed dynamically without having to run a fat stack on a large, single-purpose host.
- Resource isolation: Predictable program performance.
- Maximum utilization of resources: high performance, high density.
Why do I need Kubernetes and what can it do?
Kubernetes can schedule and run containers on physical or virtual clusters, but it can do much more.
In order to take full advantage of containers and bypass traditional application deployment methods, containers need to be deployed and operated independently of the infrastructure.
However, when a particular container is no longer tied to a particular host, host-centric infrastructure is no longer appropriate either: load balancing, automatic scaling, and so on, hence the need for a container-centric architecture, which Kubernetes provides.
Kubernetes addresses some common requirements for an application in a production environment, such as:
- Co-location helper processes utilize complex application deployment while maintaining a single-container single-application model
- Mount the storage system
- Distributed encryption Management
- Apply a health check
- Application Instance Copy
- Horizontal automatic expansion
- Naming and discovery
- Load balancing
- Rolling upgrade
- Resource monitoring
- Log fetching and injection
- Supports introspection and debugging as well
- Authentication and Authorization
These capabilities provide the simplicity of platform as a Service (PaaS) and the flexibility of infrastructure as a service (IaaS), facilitating cross-infrastructure migration.
Why and how did Kubernetes become a platform?
While Kubernetes offers a lot of functionality, there are always new application scenarios that require new features, application-related workflows can be pipelinized to speed up development, and Ad Hoc mechanisms originally designed often require more flexible automation when extended. This is why Kubernetes is designed as a platform to build an ecosystem of components and tools that make it easier to deploy, scale, and manage applications.
Tags empower users to organize their resources as needed, annotations enable users to add custom information to a particular resource to facilitate its workflow, and provide a solution to the status checking of management tools.
In addition, Kubernetes control panel is based on API construction, these APIS for developers and users alike, users can write their own controller based on this, scheduler, etc., and even targeted with their own API to write some general command line tools.
This design allows users to build other systems on top of Kubernetes.
Kubernetes is not:
Kubernetes is not a traditional all-encompassing Paas system, and we reserve user choice in some important areas.
- Kubernetes does not limit application types, specify application frameworks (e.g., Wildfly), support locales (e.g., Java, Python, Ruby), cater to 12-factor applications, and distinguish between “applications” and “services”. Kubernetes is designed to support as many different types of workloads as possible, including stateful, stateless, data-processing workloads, as long as the application can run in a container, Kubernetes will run well.
- Kubernetes does not provide middleware (such as message bus), data processing frameworks (such as Spark), databases (such as mysql), nor cluster storage systems (such as Ceph), which run on Kubernetes.
- Kubernetes does not have a click-and-deploy service front end.
- Kubernetes does not provide source-mirror processing space, it does not deploy source code and does not build your application. Continuous Integration: CI) workflows require users and projects to have their own requirements and options, so we support layered CI workflows without specifying how the workflow should work.
- Kubernetes allows users to choose between logging, monitoring, and alarm systems. (Although integration is also provided as a proof of concept)
- Kubernetes does not provide or specify a comprehensive application configuration language/system (such as Jsonnet).
- Kubernetes does not provide or employ any comprehensive system for machine configuration, maintenance, management, or self-repair.
On the other hand, many PaaS systems run on Kubernetes, such as Openshift, Deis, and Gondor. You can also customize your Own PaaS, integrate a CI system, or just use Kubernetes and deploy container images directly on Kubernetes.
Because Kubernetes works at the application layer rather than just at the hardware layer, it provides some of the common features that Paas can provide, such as deployment, scaling, load balancing, logging, and monitoring, but Kubernetes is not a whole, and these features are optional and pluggable.
In addition, Kubernetes is not A business process system, it eliminates the need for business processes that perform tasks according to predefined workflows, A then B then C. Instead, Kubernetes includes A set of independent, composable control processes that continuously drive the current state to the desired state, regardless of how you get from A to C. Central control is also not required, this approach is more like a dance, which makes the system easier to use, but also more powerful, robust, resilient and scalable.
5. What does Kubernetes mean? K8s?
The word Kubernetes comes from The Greek word meaning helmsman or pilot, and is the source of sateroy or cybernetics. (Hesitated from Greek, meaning “helmsman” or “pilot”, And is the root of “Governor” and “cybernetic”). K8s is the result of shortening the middle eight letters by eight.