Kubernetes

Kubernetes, often abbreviated as K8s, is an open-source container orchestration system for automating software deployment, scaling, and management. Originally designed by Google and now maintained by the Cloud Native Computing Foundation, Kubernetes has become a standard for deploying and managing containerized applications at scale.

Kubernetes helps in managing containers (like [[Docker]] [[containers]]), which are lightweight, portable, and self-sufficient units for running applications. It automates the deployment, scaling, and operations of these containers.

Kubernetes operates in a cluster environment. A cluster consists of at least one master node (which controls and manages the cluster) and multiple worker nodes (where the containers are run).

The basic deployable units in Kubernetes are "Pods." A Pod is a group of one or more containers, with shared storage/network resources, and a specification for how to run the containers.

Kubernetes provides services that abstract pod IP addresses from consumers. This not only allows for load balancing traffic to the pods but also enables dynamic replacement of pods without disrupting the application.

Kubernetes supports horizontal scaling automatically based on traffic or other metrics. It also ensures self-healing by restarting failed containers, replacing, and rescheduling containers when nodes die, and killing containers that don't respond to user-defined health checks.

Kubernetes allows you to roll out changes to your application or its configuration, while monitoring the application's health to ensure it doesn't kill all your instances at the same time. If something goes wrong, Kubernetes can rollback the change for you.

Kubernetes lets you store and manage sensitive information, such as passwords, OAuth tokens, and SSH keys. You can deploy and update secrets and application configuration without rebuilding your container images and without exposing secrets in your stack configuration.

Kubernetes automatically mounts the storage system of your choice, whether from local storage, a public cloud provider, or a network storage system. Kubernetes has a large, rapidly growing ecosystem. Its services, support, and tools are widely available, making it a widely adopted platform in the cloud-native community.

Kubernetes runs on various cloud providers, bare-metal servers, and even hybrid or multi-cloud environments, making it a versatile choice for different infrastructure needs.